diff --git a/.gitignore b/.gitignore
index ff9a3bc59..14f1c1399 100644
--- a/.gitignore
+++ b/.gitignore
@@ -119,4 +119,5 @@ watchedFolders/
*.db
/build
-/.vscode
\ No newline at end of file
+/.vscode
+/.idea
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b81b..000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/README.md b/README.md
index 771702452..4bf49a7ef 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,7 @@ Feel free to request any features or bug fixes either in github issues or our [D
## **PDF Features**
### **Page Operations**
+- View and modify PDFs (current support is for annotating, drawing, and adding images).
- Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
- Merge multiple PDFs together into a single resultant file.
- Split PDFs into multiple files at specified page numbers or extract all pages as individual files.
@@ -144,7 +145,7 @@ services:
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md
## Want to add your own language?
-Stirling PDF currently supports 18!
+Stirling PDF currently supports 19!
- English (English) (en_GB)
- English (US) (en_US)
- Arabic (العربية) (ar_AR)
@@ -163,6 +164,7 @@ Stirling PDF currently supports 18!
- Basque (Euskara) (eu_ES)
- Japanese (日本語) (ja_JP)
- Dutch (Nederlands) (nl_NL)
+- Greek (el_GR)
If you want to add your own language to Stirling-PDF please refer
https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md
@@ -257,7 +259,6 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
- Folder support with auto scanning to perform operations on
- Redact text (Via UI not just automated way)
- Add Forms
-- Annotations
- Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing
- Fill forms mannual and automatic
diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
index 6c9342909..51b43c3c4 100644
--- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
+++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java
@@ -1,18 +1,9 @@
package stirling.software.SPDF.controller.web;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
@@ -21,11 +12,14 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import io.swagger.v3.oas.annotations.Hidden;
-import io.swagger.v3.oas.annotations.tags.Tag;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
@Controller
@Tag(name = "General", description = "General APIs")
@@ -80,7 +74,13 @@ public class GeneralWebController {
model.addAttribute("currentPage", "merge-pdfs");
return "merge-pdfs";
}
-
+
+ @GetMapping("/view-pdf")
+ @Hidden
+ public String ViewPdfForm2(Model model) {
+ model.addAttribute("currentPage", "view-pdf");
+ return "view-pdf";
+ }
@GetMapping("/multi-tool")
@Hidden
diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties
index 715d63a1b..d81ac1fac 100644
--- a/src/main/resources/messages_el_GR.properties
+++ b/src/main/resources/messages_el_GR.properties
@@ -127,6 +127,9 @@ adminUserSettings.submit=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\
#############
home.desc= \u0397 \u03C4\u03BF\u03C0\u03B9\u03BA\u03AC \u03C6\u03B9\u03BB\u03BF\u03BE\u03B5\u03BD\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 one-stop-shop \u03C3\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03AC\u03B3\u03BA\u03B5\u03C2 \u03C3\u03B1\u03C2 \u03C3\u03B5 PDF.
+home.viewPdf.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 PDF
+home.viewPdf.desc=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7, \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C7\u03B5\u03B4\u03AF\u03BF\u03C5, \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD
+viewPdf.tags=view,read,annotate,text,image
home.multiTool.title=PDF \u03A0\u03BF\u03BB\u03C5\u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03BF
home.multiTool.desc=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7, \u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE, \u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03BA\u03B1\u03B9 \u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties
index bc712951a..b6ef5500c 100644
--- a/src/main/resources/messages_en_US.properties
+++ b/src/main/resources/messages_en_US.properties
@@ -126,6 +126,9 @@ adminUserSettings.submit=Save User
# HOME-PAGE #
#############
home.desc=Your locally hosted one-stop-shop for all your PDF needs.
+home.viewPdf.title=View PDF
+home.viewPdf.desc=View, annotate, add text or images
+viewPdf.tags=view,read,annotate,text,image
home.multiTool.title=PDF Multi Tool
@@ -629,7 +632,9 @@ merge.submit=Merge
pdfOrganiser.title=Page Organizer
pdfOrganiser.header=PDF Page Organizer
pdfOrganiser.submit=Rearrange Pages
-
+#view pdf
+viewPdf.title=View PDF
+viewPdf.header=View PDF
#multiTool
multiTool.title=PDF Multi Tool
diff --git a/src/main/resources/static/images/book-opened.svg b/src/main/resources/static/images/book-opened.svg
new file mode 100644
index 000000000..e642d31ae
--- /dev/null
+++ b/src/main/resources/static/images/book-opened.svg
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap
new file mode 100644
index 000000000..2655fc70a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap
new file mode 100644
index 000000000..f1ed85382
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78-H.bcmap b/src/main/resources/static/pdfjs/cmaps/78-H.bcmap
new file mode 100644
index 000000000..39e89d333
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/78-RKSJ-H.bcmap
new file mode 100644
index 000000000..e4167cb51
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/78-RKSJ-V.bcmap
new file mode 100644
index 000000000..50b1646e9
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78-V.bcmap b/src/main/resources/static/pdfjs/cmaps/78-V.bcmap
new file mode 100644
index 000000000..d7af99b5e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-H.bcmap
new file mode 100644
index 000000000..37077d01e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-V.bcmap
new file mode 100644
index 000000000..acf23231a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/83pv-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/83pv-RKSJ-H.bcmap
new file mode 100644
index 000000000..2359bc529
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/83pv-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-H.bcmap
new file mode 100644
index 000000000..af8293829
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-V.bcmap
new file mode 100644
index 000000000..780549de1
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-H.bcmap
new file mode 100644
index 000000000..bfd3119c6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-V.bcmap
new file mode 100644
index 000000000..25ef14ab4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-H.bcmap
new file mode 100644
index 000000000..02f713bb8
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-V.bcmap
new file mode 100644
index 000000000..d08e0cc5d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Add-H.bcmap b/src/main/resources/static/pdfjs/cmaps/Add-H.bcmap
new file mode 100644
index 000000000..59442acaf
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Add-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-H.bcmap
new file mode 100644
index 000000000..a3065e441
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-V.bcmap
new file mode 100644
index 000000000..040014cfc
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Add-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Add-V.bcmap b/src/main/resources/static/pdfjs/cmaps/Add-V.bcmap
new file mode 100644
index 000000000..2f816d320
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Add-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-0.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-0.bcmap
new file mode 100644
index 000000000..88ec04af4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-0.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-1.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-1.bcmap
new file mode 100644
index 000000000..03a501477
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-1.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-2.bcmap
new file mode 100644
index 000000000..2aa95141f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-3.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-3.bcmap
new file mode 100644
index 000000000..86d8b8c79
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-3.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-4.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-4.bcmap
new file mode 100644
index 000000000..f50fc6c14
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-4.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-5.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-5.bcmap
new file mode 100644
index 000000000..6caf4a831
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-5.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-6.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-6.bcmap
new file mode 100644
index 000000000..b77fb0705
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-6.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap
new file mode 100644
index 000000000..69d79a2c2
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-0.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-0.bcmap
new file mode 100644
index 000000000..36101083f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-0.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-1.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-1.bcmap
new file mode 100644
index 000000000..707bb1065
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-1.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-2.bcmap
new file mode 100644
index 000000000..f7648cc3f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-3.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-3.bcmap
new file mode 100644
index 000000000..852145890
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-3.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-4.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-4.bcmap
new file mode 100644
index 000000000..e40c63ab1
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-4.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-5.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-5.bcmap
new file mode 100644
index 000000000..d7623b500
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-5.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap
new file mode 100644
index 000000000..758652593
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-0.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-0.bcmap
new file mode 100644
index 000000000..f0e94ec19
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-0.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-1.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-1.bcmap
new file mode 100644
index 000000000..dad42c5ad
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-1.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-2.bcmap
new file mode 100644
index 000000000..090819a06
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-3.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-3.bcmap
new file mode 100644
index 000000000..087dfc155
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-3.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-4.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-4.bcmap
new file mode 100644
index 000000000..46aa9bffe
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-4.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-5.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-5.bcmap
new file mode 100644
index 000000000..5b4b65cc6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-5.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-6.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-6.bcmap
new file mode 100644
index 000000000..e77d699ab
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-6.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap
new file mode 100644
index 000000000..128a14107
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-0.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-0.bcmap
new file mode 100644
index 000000000..cef1a9985
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-0.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-1.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-1.bcmap
new file mode 100644
index 000000000..11ffa36df
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-1.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-2.bcmap
new file mode 100644
index 000000000..3172308c7
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap
new file mode 100644
index 000000000..f3371c0cb
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/B5-H.bcmap
new file mode 100644
index 000000000..beb4d2281
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/B5-V.bcmap
new file mode 100644
index 000000000..2d4f87d50
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/B5pc-H.bcmap b/src/main/resources/static/pdfjs/cmaps/B5pc-H.bcmap
new file mode 100644
index 000000000..ce0013167
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/B5pc-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/B5pc-V.bcmap b/src/main/resources/static/pdfjs/cmaps/B5pc-V.bcmap
new file mode 100644
index 000000000..73b99ff2f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/B5pc-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS-EUC-H.bcmap
new file mode 100644
index 000000000..61d1d0cb0
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/CNS-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS-EUC-V.bcmap
new file mode 100644
index 000000000..1a393a51e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/CNS-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS1-H.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS1-H.bcmap
new file mode 100644
index 000000000..f738e218a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/CNS1-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS1-V.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS1-V.bcmap
new file mode 100644
index 000000000..9c3169f0d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/CNS1-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS2-H.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS2-H.bcmap
new file mode 100644
index 000000000..c89b3527f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/CNS2-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/CNS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/CNS2-V.bcmap
new file mode 100644
index 000000000..7588cec83
--- /dev/null
+++ b/src/main/resources/static/pdfjs/cmaps/CNS2-V.bcmap
@@ -0,0 +1,3 @@
+RCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSECNS2-H
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/cmaps/ETHK-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/ETHK-B5-H.bcmap
new file mode 100644
index 000000000..cb29415de
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/ETHK-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/ETHK-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/ETHK-B5-V.bcmap
new file mode 100644
index 000000000..f09aec631
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/ETHK-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/ETen-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/ETen-B5-H.bcmap
new file mode 100644
index 000000000..c2d77462d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/ETen-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/ETen-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/ETen-B5-V.bcmap
new file mode 100644
index 000000000..89bff159e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/ETen-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/ETenms-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/ETenms-B5-H.bcmap
new file mode 100644
index 000000000..a7d69db5e
--- /dev/null
+++ b/src/main/resources/static/pdfjs/cmaps/ETenms-B5-H.bcmap
@@ -0,0 +1,3 @@
+RCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSE ETen-B5-H` ^
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/cmaps/ETenms-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/ETenms-B5-V.bcmap
new file mode 100644
index 000000000..adc5d618d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/ETenms-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/EUC-H.bcmap
new file mode 100644
index 000000000..e92ea5b3b
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/EUC-V.bcmap
new file mode 100644
index 000000000..7a7c18322
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Ext-H.bcmap b/src/main/resources/static/pdfjs/cmaps/Ext-H.bcmap
new file mode 100644
index 000000000..3b5cde44d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Ext-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-H.bcmap
new file mode 100644
index 000000000..ea4d2d97b
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-V.bcmap
new file mode 100644
index 000000000..3457c2770
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Ext-RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Ext-V.bcmap b/src/main/resources/static/pdfjs/cmaps/Ext-V.bcmap
new file mode 100644
index 000000000..4999ca404
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Ext-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GB-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GB-EUC-H.bcmap
new file mode 100644
index 000000000..e39908b98
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GB-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GB-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GB-EUC-V.bcmap
new file mode 100644
index 000000000..d5be5446a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GB-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GB-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GB-H.bcmap
new file mode 100644
index 000000000..39189c54e
--- /dev/null
+++ b/src/main/resources/static/pdfjs/cmaps/GB-H.bcmap
@@ -0,0 +1,4 @@
+RCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSE!!]aX!!]`21> pz$]"Rd-U7*
4%+ Z {/%<9Kb1]."`],"]
+"]h"]F"]$"]"]`"]>"]"]z"]X"]6"]"]r"]P"]."]"]j"]H"]&"]"]b"]@"]"]|"]Z"]8"]"]t"]R"]0"]"]l"]J"]("]"]d"]B"] "X~']W"]5"]"]q"]O"]-"]"]i"]G"]%"]"]a"]?"]"]{"]Y"]7"]"]s"]Q"]/"]
"]k"]I"]'"]"]c"]A"]"]}"]["]9
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/cmaps/GB-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GB-V.bcmap
new file mode 100644
index 000000000..310834512
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GB-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBK-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBK-EUC-H.bcmap
new file mode 100644
index 000000000..05fff7e82
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBK-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBK-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBK-EUC-V.bcmap
new file mode 100644
index 000000000..0cdf6bed6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBK-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBK2K-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBK2K-H.bcmap
new file mode 100644
index 000000000..46f6ba596
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBK2K-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBK2K-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBK2K-V.bcmap
new file mode 100644
index 000000000..d9a947984
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBK2K-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-H.bcmap
new file mode 100644
index 000000000..5cb0af687
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-V.bcmap
new file mode 100644
index 000000000..bca93b8ef
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBKp-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBT-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBT-EUC-H.bcmap
new file mode 100644
index 000000000..4b4e2d322
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBT-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBT-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBT-EUC-V.bcmap
new file mode 100644
index 000000000..38f706699
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBT-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBT-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBT-H.bcmap
new file mode 100644
index 000000000..8437ac337
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBT-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBT-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBT-V.bcmap
new file mode 100644
index 000000000..697ab4a8e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBT-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-H.bcmap
new file mode 100644
index 000000000..f6e50e893
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-V.bcmap
new file mode 100644
index 000000000..6c0d71a2d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBTpc-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-H.bcmap
new file mode 100644
index 000000000..c9edf67cf
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-V.bcmap
new file mode 100644
index 000000000..31450c97f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/GBpc-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/H.bcmap b/src/main/resources/static/pdfjs/cmaps/H.bcmap
new file mode 100644
index 000000000..7b24ea462
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKdla-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKdla-B5-H.bcmap
new file mode 100644
index 000000000..7d30c0500
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKdla-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKdla-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKdla-B5-V.bcmap
new file mode 100644
index 000000000..78946940d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKdla-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-H.bcmap
new file mode 100644
index 000000000..d829a2310
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-V.bcmap
new file mode 100644
index 000000000..2b572b50a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKdlb-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-H.bcmap
new file mode 100644
index 000000000..971a4f23f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-V.bcmap
new file mode 100644
index 000000000..d353ca256
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKgccs-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKm314-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKm314-B5-H.bcmap
new file mode 100644
index 000000000..576dc0111
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKm314-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKm314-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKm314-B5-V.bcmap
new file mode 100644
index 000000000..0e96d0e22
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKm314-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKm471-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKm471-B5-H.bcmap
new file mode 100644
index 000000000..11d170c75
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKm471-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKm471-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKm471-B5-V.bcmap
new file mode 100644
index 000000000..54959bf9e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKm471-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKscs-B5-H.bcmap b/src/main/resources/static/pdfjs/cmaps/HKscs-B5-H.bcmap
new file mode 100644
index 000000000..6ef7857ad
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKscs-B5-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/HKscs-B5-V.bcmap b/src/main/resources/static/pdfjs/cmaps/HKscs-B5-V.bcmap
new file mode 100644
index 000000000..1fb2fa2a2
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/HKscs-B5-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Hankaku.bcmap b/src/main/resources/static/pdfjs/cmaps/Hankaku.bcmap
new file mode 100644
index 000000000..4b8ec7fce
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Hankaku.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Hiragana.bcmap b/src/main/resources/static/pdfjs/cmaps/Hiragana.bcmap
new file mode 100644
index 000000000..17e983e77
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Hiragana.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-EUC-H.bcmap
new file mode 100644
index 000000000..a45c65f00
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-EUC-V.bcmap
new file mode 100644
index 000000000..0e7b21f0a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-H.bcmap
new file mode 100644
index 000000000..b9b22b678
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-Johab-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-Johab-H.bcmap
new file mode 100644
index 000000000..2531ffcf4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-Johab-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-Johab-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-Johab-V.bcmap
new file mode 100644
index 000000000..367ceb226
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-Johab-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSC-V.bcmap
new file mode 100644
index 000000000..6ae2f0b6b
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-H.bcmap
new file mode 100644
index 000000000..a8d4240e6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap
new file mode 100644
index 000000000..8b4ae18fd
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap
new file mode 100644
index 000000000..b655dbcfb
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-V.bcmap
new file mode 100644
index 000000000..21f97f65b
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCms-UHC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-H.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-H.bcmap
new file mode 100644
index 000000000..e06f361eb
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-V.bcmap b/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-V.bcmap
new file mode 100644
index 000000000..f3c9113fc
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/KSCpc-EUC-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Katakana.bcmap b/src/main/resources/static/pdfjs/cmaps/Katakana.bcmap
new file mode 100644
index 000000000..524303c4f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Katakana.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/LICENSE b/src/main/resources/static/pdfjs/cmaps/LICENSE
new file mode 100644
index 000000000..b1ad168ad
--- /dev/null
+++ b/src/main/resources/static/pdfjs/cmaps/LICENSE
@@ -0,0 +1,36 @@
+%%Copyright: -----------------------------------------------------------
+%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
+%%Copyright: All rights reserved.
+%%Copyright:
+%%Copyright: Redistribution and use in source and binary forms, with or
+%%Copyright: without modification, are permitted provided that the
+%%Copyright: following conditions are met:
+%%Copyright:
+%%Copyright: Redistributions of source code must retain the above
+%%Copyright: copyright notice, this list of conditions and the following
+%%Copyright: disclaimer.
+%%Copyright:
+%%Copyright: Redistributions in binary form must reproduce the above
+%%Copyright: copyright notice, this list of conditions and the following
+%%Copyright: disclaimer in the documentation and/or other materials
+%%Copyright: provided with the distribution.
+%%Copyright:
+%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
+%%Copyright: of its contributors may be used to endorse or promote
+%%Copyright: products derived from this software without specific prior
+%%Copyright: written permission.
+%%Copyright:
+%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+%%Copyright: -----------------------------------------------------------
diff --git a/src/main/resources/static/pdfjs/cmaps/NWP-H.bcmap b/src/main/resources/static/pdfjs/cmaps/NWP-H.bcmap
new file mode 100644
index 000000000..afc5e4b05
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/NWP-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/NWP-V.bcmap b/src/main/resources/static/pdfjs/cmaps/NWP-V.bcmap
new file mode 100644
index 000000000..bb5785e32
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/NWP-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/RKSJ-H.bcmap b/src/main/resources/static/pdfjs/cmaps/RKSJ-H.bcmap
new file mode 100644
index 000000000..fb8d298e9
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/RKSJ-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/RKSJ-V.bcmap b/src/main/resources/static/pdfjs/cmaps/RKSJ-V.bcmap
new file mode 100644
index 000000000..a2555a6c0
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/RKSJ-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/Roman.bcmap b/src/main/resources/static/pdfjs/cmaps/Roman.bcmap
new file mode 100644
index 000000000..f896dcf1c
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/Roman.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-H.bcmap
new file mode 100644
index 000000000..d5db27c5c
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-V.bcmap
new file mode 100644
index 000000000..1dc9b7a21
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UCS2-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-H.bcmap
new file mode 100644
index 000000000..961afefb6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-V.bcmap
new file mode 100644
index 000000000..df0cffe86
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF16-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-H.bcmap
new file mode 100644
index 000000000..1ab18a143
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-V.bcmap
new file mode 100644
index 000000000..ad14662e2
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-H.bcmap
new file mode 100644
index 000000000..83c6bd7c4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-V.bcmap
new file mode 100644
index 000000000..22a27e4dd
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniCNS-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-H.bcmap
new file mode 100644
index 000000000..5bd6228ce
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-V.bcmap
new file mode 100644
index 000000000..53c534b7f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UCS2-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-H.bcmap
new file mode 100644
index 000000000..b95045b40
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-V.bcmap
new file mode 100644
index 000000000..51f023e0d
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF16-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-H.bcmap
new file mode 100644
index 000000000..f0dbd14f3
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-V.bcmap
new file mode 100644
index 000000000..ce9c30a98
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-H.bcmap
new file mode 100644
index 000000000..982ca462b
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-V.bcmap
new file mode 100644
index 000000000..f78020dd4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniGB-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-H.bcmap
new file mode 100644
index 000000000..7daf56afa
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap
new file mode 100644
index 000000000..ac9975c58
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap
new file mode 100644
index 000000000..3da0a1c62
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-V.bcmap
new file mode 100644
index 000000000..c50b9ddfd
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UCS2-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-H.bcmap
new file mode 100644
index 000000000..676134463
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-V.bcmap
new file mode 100644
index 000000000..70bf90c0e
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF16-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-H.bcmap
new file mode 100644
index 000000000..7a83d53ae
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-V.bcmap
new file mode 100644
index 000000000..7a8713539
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-H.bcmap
new file mode 100644
index 000000000..9f0334cac
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-V.bcmap
new file mode 100644
index 000000000..808a94f0f
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap
new file mode 100644
index 000000000..d768bf811
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap
new file mode 100644
index 000000000..3d5bf6fb4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap
new file mode 100644
index 000000000..09eee10d4
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap
new file mode 100644
index 000000000..6c5460013
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap
new file mode 100644
index 000000000..1b1a64f50
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap
new file mode 100644
index 000000000..994aa9ef9
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap
new file mode 100644
index 000000000..643f921b6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap
new file mode 100644
index 000000000..c148f67f5
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap
new file mode 100644
index 000000000..1849d809a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap
new file mode 100644
index 000000000..a83a677c5
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap
new file mode 100644
index 000000000..f527248ad
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap
new file mode 100644
index 000000000..e1a988dc9
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap
new file mode 100644
index 000000000..47e054a96
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-H.bcmap
new file mode 100644
index 000000000..b5b94852a
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-V.bcmap
new file mode 100644
index 000000000..026adcaad
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UCS2-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-H.bcmap
new file mode 100644
index 000000000..fd4e66e81
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-V.bcmap
new file mode 100644
index 000000000..075efb705
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF16-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-H.bcmap
new file mode 100644
index 000000000..769d2142c
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-V.bcmap
new file mode 100644
index 000000000..bdab208b6
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF32-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-H.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-H.bcmap
new file mode 100644
index 000000000..6ff8674af
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-H.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-V.bcmap b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-V.bcmap
new file mode 100644
index 000000000..8dfa76a58
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/UniKS-UTF8-V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/V.bcmap b/src/main/resources/static/pdfjs/cmaps/V.bcmap
new file mode 100644
index 000000000..fdec99066
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/V.bcmap differ
diff --git a/src/main/resources/static/pdfjs/cmaps/WP-Symbol.bcmap b/src/main/resources/static/pdfjs/cmaps/WP-Symbol.bcmap
new file mode 100644
index 000000000..46729bbf3
Binary files /dev/null and b/src/main/resources/static/pdfjs/cmaps/WP-Symbol.bcmap differ
diff --git a/src/main/resources/static/pdfjs/css/viewer.css b/src/main/resources/static/pdfjs/css/viewer.css
new file mode 100644
index 000000000..162628017
--- /dev/null
+++ b/src/main/resources/static/pdfjs/css/viewer.css
@@ -0,0 +1,3603 @@
+/* Copyright 2014 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+:root {
+ --highlight-bg-color: rgba(180, 0, 170, 1);
+ --highlight-selected-bg-color: rgba(0, 100, 0, 1);
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --highlight-bg-color: Highlight;
+ --highlight-selected-bg-color: ButtonText;
+ }
+}
+
+.textLayer {
+ position: absolute;
+ text-align: initial;
+ inset: 0;
+ overflow: hidden;
+ opacity: 0.25;
+ line-height: 1;
+ -webkit-text-size-adjust: none;
+ -moz-text-size-adjust: none;
+ text-size-adjust: none;
+ forced-color-adjust: none;
+ transform-origin: 0 0;
+ z-index: 2;
+}
+
+.textLayer :is(span, br) {
+ color: transparent;
+ position: absolute;
+ white-space: pre;
+ cursor: text;
+ transform-origin: 0% 0%;
+}
+
+/* Only necessary in Google Chrome, see issue 14205, and most unfortunately
+ * the problem doesn't show up in "text" reference tests. */
+.textLayer span.markedContent {
+ top: 0;
+ height: 0;
+}
+
+.textLayer .highlight {
+ margin: -1px;
+ padding: 1px;
+ background-color: var(--highlight-bg-color);
+ border-radius: 4px;
+}
+
+.textLayer .highlight.appended {
+ position: initial;
+}
+
+.textLayer .highlight.begin {
+ border-radius: 4px 0 0 4px;
+}
+
+.textLayer .highlight.end {
+ border-radius: 0 4px 4px 0;
+}
+
+.textLayer .highlight.middle {
+ border-radius: 0;
+}
+
+.textLayer .highlight.selected {
+ background-color: var(--highlight-selected-bg-color);
+}
+
+.textLayer ::-moz-selection {
+ background: blue;
+ background: AccentColor; /* stylelint-disable-line declaration-block-no-duplicate-properties */
+}
+
+.textLayer ::selection {
+ background: blue;
+ background: AccentColor; /* stylelint-disable-line declaration-block-no-duplicate-properties */
+}
+
+/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */
+.textLayer br::-moz-selection {
+ background: transparent;
+}
+
+.textLayer br::selection {
+ background: transparent;
+}
+
+.textLayer .endOfContent {
+ display: block;
+ position: absolute;
+ inset: 100% 0 0;
+ z-index: -1;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.textLayer .endOfContent.active {
+ top: 0;
+}
+
+
+:root {
+ --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,");
+ --input-focus-border-color: Highlight;
+ --input-focus-outline: 1px solid Canvas;
+ --input-unfocused-border-color: transparent;
+ --input-disabled-border-color: transparent;
+ --input-hover-border-color: black;
+ --link-outline: none;
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --input-focus-border-color: CanvasText;
+ --input-unfocused-border-color: ActiveText;
+ --input-disabled-border-color: GrayText;
+ --input-hover-border-color: Highlight;
+ --link-outline: 1.5px solid LinkText;
+ --hcm-highligh-filter: invert(100%);
+ }
+
+ .annotationLayer .textWidgetAnnotation :is(input, textarea):required,
+ .annotationLayer .choiceWidgetAnnotation select:required,
+ .annotationLayer
+ .buttonWidgetAnnotation:is(.checkBox, .radioButton)
+ input:required {
+ outline: 1.5px solid selectedItem;
+ }
+
+ .annotationLayer .linkAnnotation:hover {
+ -webkit-backdrop-filter: var(--hcm-highligh-filter);
+ backdrop-filter: var(--hcm-highligh-filter);
+ }
+
+ .annotationLayer .linkAnnotation > a:hover {
+ opacity: 0 !important;
+ background: none !important;
+ box-shadow: none;
+ }
+
+ .annotationLayer .popupAnnotation .popup {
+ outline: calc(1.5px * var(--scale-factor)) solid CanvasText !important;
+ background-color: ButtonFace !important;
+ color: ButtonText !important;
+ }
+
+ .annotationLayer .highlightArea:hover::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-backdrop-filter: var(--hcm-highligh-filter);
+ backdrop-filter: var(--hcm-highligh-filter);
+ content: "";
+ pointer-events: none;
+ }
+
+ .annotationLayer .popupAnnotation.focused .popup {
+ outline: calc(3px * var(--scale-factor)) solid Highlight !important;
+ }
+}
+
+.annotationLayer {
+ position: absolute;
+ top: 0;
+ left: 0;
+ pointer-events: none;
+ transform-origin: 0 0;
+ z-index: 3;
+}
+
+.annotationLayer[data-main-rotation="90"] .norotate {
+ transform: rotate(270deg) translateX(-100%);
+}
+
+.annotationLayer[data-main-rotation="180"] .norotate {
+ transform: rotate(180deg) translate(-100%, -100%);
+}
+
+.annotationLayer[data-main-rotation="270"] .norotate {
+ transform: rotate(90deg) translateY(-100%);
+}
+
+.annotationLayer canvas {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+}
+
+.annotationLayer section {
+ position: absolute;
+ text-align: initial;
+ pointer-events: auto;
+ box-sizing: border-box;
+ transform-origin: 0 0;
+}
+
+.annotationLayer .linkAnnotation {
+ outline: var(--link-outline);
+}
+
+.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a {
+ position: absolute;
+ font-size: 1em;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.annotationLayer
+:is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder)
+> a:hover {
+ opacity: 0.2;
+ background-color: rgba(255, 255, 0, 1);
+ box-shadow: 0 2px 10px rgba(255, 255, 0, 1);
+}
+
+.annotationLayer .linkAnnotation.hasBorder:hover {
+ background-color: rgba(255, 255, 0, 0.2);
+}
+
+.annotationLayer .hasBorder {
+ background-size: 100% 100%;
+}
+
+.annotationLayer .textAnnotation img {
+ position: absolute;
+ cursor: pointer;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea),
+.annotationLayer .choiceWidgetAnnotation select,
+.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {
+ background-image: var(--annotation-unfocused-field-background);
+ border: 2px solid var(--input-unfocused-border-color);
+ box-sizing: border-box;
+ font: calc(9px * var(--scale-factor)) sans-serif;
+ height: 100%;
+ margin: 0;
+ vertical-align: top;
+ width: 100%;
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea):required,
+.annotationLayer .choiceWidgetAnnotation select:required,
+.annotationLayer
+.buttonWidgetAnnotation:is(.checkBox, .radioButton)
+input:required {
+ outline: 1.5px solid red;
+}
+
+.annotationLayer .choiceWidgetAnnotation select option {
+ padding: 0;
+}
+
+.annotationLayer .buttonWidgetAnnotation.radioButton input {
+ border-radius: 50%;
+}
+
+.annotationLayer .textWidgetAnnotation textarea {
+ resize: none;
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea)[disabled],
+.annotationLayer .choiceWidgetAnnotation select[disabled],
+.annotationLayer
+.buttonWidgetAnnotation:is(.checkBox, .radioButton)
+input[disabled] {
+ background: none;
+ border: 2px solid var(--input-disabled-border-color);
+ cursor: not-allowed;
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,
+.annotationLayer .choiceWidgetAnnotation select:hover,
+.annotationLayer
+.buttonWidgetAnnotation:is(.checkBox, .radioButton)
+input:hover {
+ border: 2px solid var(--input-hover-border-color);
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,
+.annotationLayer .choiceWidgetAnnotation select:hover,
+.annotationLayer .buttonWidgetAnnotation.checkBox input:hover {
+ border-radius: 2px;
+}
+
+.annotationLayer .textWidgetAnnotation :is(input, textarea):focus,
+.annotationLayer .choiceWidgetAnnotation select:focus {
+ background: none;
+ border: 2px solid var(--input-focus-border-color);
+ border-radius: 2px;
+ outline: var(--input-focus-outline);
+}
+
+.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus {
+ background-image: none;
+ background-color: transparent;
+}
+
+.annotationLayer .buttonWidgetAnnotation.checkBox :focus {
+ border: 2px solid var(--input-focus-border-color);
+ border-radius: 2px;
+ outline: var(--input-focus-outline);
+}
+
+.annotationLayer .buttonWidgetAnnotation.radioButton :focus {
+ border: 2px solid var(--input-focus-border-color);
+ outline: var(--input-focus-outline);
+}
+
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,
+.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
+ background-color: CanvasText;
+ content: "";
+ display: block;
+ position: absolute;
+}
+
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
+ height: 80%;
+ left: 45%;
+ width: 1px;
+}
+
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before {
+ transform: rotate(45deg);
+}
+
+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
+ transform: rotate(-45deg);
+}
+
+.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
+ border-radius: 50%;
+ height: 50%;
+ left: 30%;
+ top: 20%;
+ width: 50%;
+}
+
+.annotationLayer .textWidgetAnnotation input.comb {
+ font-family: monospace;
+ padding-left: 2px;
+ padding-right: 0;
+}
+
+.annotationLayer .textWidgetAnnotation input.comb:focus {
+ /*
+ * Letter spacing is placed on the right side of each character. Hence, the
+ * letter spacing of the last character may be placed outside the visible
+ * area, causing horizontal scrolling. We avoid this by extending the width
+ * when the element has focus and revert this when it loses focus.
+ */
+ width: 103%;
+}
+
+.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.annotationLayer .fileAttachmentAnnotation .popupTriggerArea {
+ height: 100%;
+ width: 100%;
+}
+
+.annotationLayer .popupAnnotation {
+ position: absolute;
+ font-size: calc(9px * var(--scale-factor));
+ pointer-events: none;
+ width: -moz-max-content;
+ width: max-content;
+ max-width: 45%;
+ height: auto;
+}
+
+.annotationLayer .popup {
+ background-color: rgba(255, 255, 153, 1);
+ box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) rgba(136, 136, 136, 1);
+ border-radius: calc(2px * var(--scale-factor));
+ outline: 1.5px solid rgb(255, 255, 74);
+ padding: calc(6px * var(--scale-factor));
+ cursor: pointer;
+ font: message-box;
+ white-space: normal;
+ word-wrap: break-word;
+ pointer-events: auto;
+}
+
+.annotationLayer .popupAnnotation.focused .popup {
+ outline-width: 3px;
+}
+
+.annotationLayer .popup * {
+ font-size: calc(9px * var(--scale-factor));
+}
+
+.annotationLayer .popup > .header {
+ display: inline-block;
+}
+
+.annotationLayer .popup > .header h1 {
+ display: inline;
+}
+
+.annotationLayer .popup > .header .popupDate {
+ display: inline-block;
+ margin-left: calc(5px * var(--scale-factor));
+ width: -moz-fit-content;
+ width: fit-content;
+}
+
+.annotationLayer .popupContent {
+ border-top: 1px solid rgba(51, 51, 51, 1);
+ margin-top: calc(2px * var(--scale-factor));
+ padding-top: calc(2px * var(--scale-factor));
+}
+
+.annotationLayer .richText > * {
+ white-space: pre-wrap;
+ font-size: calc(9px * var(--scale-factor));
+}
+
+.annotationLayer .popupTriggerArea {
+ cursor: pointer;
+}
+
+.annotationLayer section svg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.annotationLayer .annotationTextContent {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ color: transparent;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ pointer-events: none;
+}
+
+.annotationLayer .annotationTextContent span {
+ width: 100%;
+ display: inline-block;
+}
+
+.annotationLayer svg.quadrilateralsContainer {
+ contain: strict;
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+}
+
+
+:root {
+ --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,");
+ --xfa-focus-outline: auto;
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --xfa-focus-outline: 2px solid CanvasText;
+ }
+
+ .xfaLayer *:required {
+ outline: 1.5px solid selectedItem;
+ }
+}
+
+.xfaLayer {
+ background-color: transparent;
+}
+
+.xfaLayer .highlight {
+ margin: -1px;
+ padding: 1px;
+ background-color: rgba(239, 203, 237, 1);
+ border-radius: 4px;
+}
+
+.xfaLayer .highlight.appended {
+ position: initial;
+}
+
+.xfaLayer .highlight.begin {
+ border-radius: 4px 0 0 4px;
+}
+
+.xfaLayer .highlight.end {
+ border-radius: 0 4px 4px 0;
+}
+
+.xfaLayer .highlight.middle {
+ border-radius: 0;
+}
+
+.xfaLayer .highlight.selected {
+ background-color: rgba(203, 223, 203, 1);
+}
+
+.xfaPage {
+ overflow: hidden;
+ position: relative;
+}
+
+.xfaContentarea {
+ position: absolute;
+}
+
+.xfaPrintOnly {
+ display: none;
+}
+
+.xfaLayer {
+ position: absolute;
+ text-align: initial;
+ top: 0;
+ left: 0;
+ transform-origin: 0 0;
+ line-height: 1.2;
+}
+
+.xfaLayer * {
+ color: inherit;
+ font: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ font-kerning: inherit;
+ letter-spacing: -0.01px;
+ text-align: inherit;
+ text-decoration: inherit;
+ box-sizing: border-box;
+ background-color: transparent;
+ padding: 0;
+ margin: 0;
+ pointer-events: auto;
+ line-height: inherit;
+}
+
+.xfaLayer *:required {
+ outline: 1.5px solid red;
+}
+
+.xfaLayer div,
+.xfaLayer svg,
+.xfaLayer svg * {
+ pointer-events: none;
+}
+
+.xfaLayer a {
+ color: blue;
+}
+
+.xfaRich li {
+ margin-left: 3em;
+}
+
+.xfaFont {
+ color: black;
+ font-weight: normal;
+ font-kerning: none;
+ font-size: 10px;
+ font-style: normal;
+ letter-spacing: 0;
+ text-decoration: none;
+ vertical-align: 0;
+}
+
+.xfaCaption {
+ overflow: hidden;
+ flex: 0 0 auto;
+}
+
+.xfaCaptionForCheckButton {
+ overflow: hidden;
+ flex: 1 1 auto;
+}
+
+.xfaLabel {
+ height: 100%;
+ width: 100%;
+}
+
+.xfaLeft {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+.xfaRight {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: center;
+}
+
+:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton) {
+ max-height: 100%;
+}
+
+.xfaTop {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+}
+
+.xfaBottom {
+ display: flex;
+ flex-direction: column-reverse;
+ align-items: flex-start;
+}
+
+:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton) {
+ width: 100%;
+}
+
+.xfaBorder {
+ background-color: transparent;
+ position: absolute;
+ pointer-events: none;
+}
+
+.xfaWrapped {
+ width: 100%;
+ height: 100%;
+}
+
+:is(.xfaTextfield, .xfaSelect):focus {
+ background-image: none;
+ background-color: transparent;
+ outline: var(--xfa-focus-outline);
+ outline-offset: -1px;
+}
+
+:is(.xfaCheckbox, .xfaRadio):focus {
+ outline: var(--xfa-focus-outline);
+}
+
+.xfaTextfield,
+.xfaSelect {
+ height: 100%;
+ width: 100%;
+ flex: 1 1 auto;
+ border: none;
+ resize: none;
+ background-image: var(--xfa-unfocused-field-background);
+}
+
+.xfaSelect {
+ padding-inline: 2px;
+}
+
+:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect) {
+ flex: 0 1 auto;
+}
+
+.xfaButton {
+ cursor: pointer;
+ width: 100%;
+ height: 100%;
+ border: none;
+ text-align: center;
+}
+
+.xfaLink {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+.xfaCheckbox,
+.xfaRadio {
+ width: 100%;
+ height: 100%;
+ flex: 0 0 auto;
+ border: none;
+}
+
+.xfaRich {
+ white-space: pre-wrap;
+ width: 100%;
+ height: 100%;
+}
+
+.xfaImage {
+ -o-object-position: left top;
+ object-position: left top;
+ -o-object-fit: contain;
+ object-fit: contain;
+ width: 100%;
+ height: 100%;
+}
+
+.xfaLrTb,
+.xfaRlTb,
+.xfaTb {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+}
+
+.xfaLr {
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+}
+
+.xfaRl {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: stretch;
+}
+
+.xfaTb > div {
+ justify-content: left;
+}
+
+.xfaPosition {
+ position: relative;
+}
+
+.xfaArea {
+ position: relative;
+}
+
+.xfaValignMiddle {
+ display: flex;
+ align-items: center;
+}
+
+.xfaTable {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+}
+
+.xfaTable .xfaRow {
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+}
+
+.xfaTable .xfaRlRow {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: stretch;
+ flex: 1;
+}
+
+.xfaTable .xfaRlRow > div {
+ flex: 1;
+}
+
+:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea) {
+ background: initial;
+}
+
+@media print {
+ .xfaTextfield,
+ .xfaSelect {
+ background: transparent;
+ }
+
+ .xfaSelect {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ text-indent: 1px;
+ text-overflow: "";
+ }
+}
+
+/* Ignored in GECKOVIEW builds: */
+
+:root {
+ --outline-width: 2px;
+ --outline-color: #0060df;
+ --outline-around-width: 1px;
+ --outline-around-color: #f0f0f4;
+ --hover-outline-around-color: var(--outline-around-color);
+ --focus-outline: solid var(--outline-width) var(--outline-color);
+ --unfocus-outline: solid var(--outline-width) transparent;
+ --focus-outline-around: solid var(--outline-around-width) var(--outline-around-color);
+ --hover-outline-color: #8f8f9d;
+ --hover-outline: solid var(--outline-width) var(--hover-outline-color);
+ --hover-outline-around: solid var(--outline-around-width) var(--hover-outline-around-color);
+ --freetext-line-height: 1.35;
+ --freetext-padding: 2px;
+ --resizer-bg-color: var(--outline-color);
+ --resizer-size: 6px;
+ --resizer-shift: calc(
+ 0px - (var(--outline-width) + var(--resizer-size)) / 2 -
+ var(--outline-around-width)
+ );
+ --editorFreeText-editing-cursor: text;
+ --editorInk-editing-cursor: url(../images/cursor-editorInk.svg) 0 16, pointer;
+
+ --alt-text-opacity: 0.8;
+ --alt-text-add-image: url(../images/altText_add.svg);
+ --alt-text-done-image: url(../images/altText_done.svg);
+ --alt-text-bg-color: rgba(43, 42, 51, var(--alt-text-opacity));
+ --alt-text-fg-color: #fbfbfe;
+ --alt-text-border-color: var(--alt-text-bg-color);
+ --alt-text-hover-bg-color: rgba(82, 82, 94, var(--alt-text-opacity));
+ --alt-text-hover-fg-color: var(--alt-text-fg-color);
+ --alt-text-hover-border-color: var(--alt-text-hover-bg-color);
+ --alt-text-active-bg-color: rgba(91, 91, 102, var(--alt-text-opacity));
+ --alt-text-active-fg-color: var(--alt-text-fg-color);
+ --alt-text-active-border-color: var(--alt-text-hover-bg-color);
+ --alt-text-focus-outline-color: #0060df;
+ --alt-text-focus-border-color: #f0f0f4;
+ --alt-text-shadow: 0 2px 6px 0 rgba(28, 27, 34, 0.5);
+}
+
+@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 1.1dppx) {
+ :root {
+ --editorFreeText-editing-cursor: url(../images/cursor-editorFreeText.svg) 0 16,
+ text;
+ }
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --outline-color: CanvasText;
+ --outline-around-color: ButtonFace;
+ --resizer-bg-color: ButtonText;
+ --hover-outline-color: Highlight;
+ --hover-outline-around-color: SelectedItemText;
+
+ --alt-text-bg-color: Canvas;
+ --alt-text-fg-color: ButtonText;
+ --alt-text-border-color: ButtonText;
+ --alt-text-hover-bg-color: Canvas;
+ --alt-text-hover-fg-color: SelectedItem;
+ --alt-text-hover-border-color: SelectedItem;
+ --alt-text-active-bg-color: ButtonFace;
+ --alt-text-active-fg-color: SelectedItem;
+ --alt-text-active-border-color: ButtonText;
+ --alt-text-focus-outline-color: CanvasText;
+ --alt-text-focus-border-color: ButtonText;
+ --alt-text-shadow: none;
+ --alt-text-opacity: 1;
+ }
+}
+
+[data-editor-rotation="90"] {
+ transform: rotate(90deg);
+}
+
+[data-editor-rotation="180"] {
+ transform: rotate(180deg);
+}
+
+[data-editor-rotation="270"] {
+ transform: rotate(270deg);
+}
+
+.annotationEditorLayer {
+ background: transparent;
+ position: absolute;
+ inset: 0;
+ font-size: calc(100px * var(--scale-factor));
+ transform-origin: 0 0;
+ cursor: auto;
+ z-index: 4;
+}
+
+.annotationEditorLayer.waiting {
+ content: "";
+ cursor: wait;
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.annotationEditorLayer.freeTextEditing {
+ cursor: var(--editorFreeText-editing-cursor);
+}
+
+.annotationEditorLayer.inkEditing {
+ cursor: var(--editorInk-editing-cursor);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) {
+ position: absolute;
+ background: transparent;
+ z-index: 1;
+ transform-origin: 0 0;
+ cursor: auto;
+ max-width: 100%;
+ max-height: 100%;
+ border: var(--unfocus-outline);
+}
+
+.annotationEditorLayer .draggable.selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) {
+ cursor: move;
+}
+
+.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) {
+ border: var(--focus-outline);
+ outline: var(--focus-outline-around);
+}
+
+.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor)::before {
+ /*
+ This is a workaround for the lack of support for stripes(...) (see
+ https://drafts.csswg.org/css-images-4/#stripes).
+ The outline should be composed of 1px white, 2px blue and 1px white.
+ This could be achieved in different ways:
+ - using a linear-gradient;
+ - using a box-shadow;
+ - using an outline on the selected element and an outline+border on
+ the ::before pseudo-element.
+ All these options lead to incorrect rendering likely due to rounding
+ issues.
+ That said it doesn't mean that the current is ideal, but it's the best
+ we could come up with for the moment.
+ One drawback of this approach is that we use a border on the selected
+ element which means that we must take care of it when positioning the
+ div in js (see AnnotationEditor._borderLineWidth in editor.js).
+ */
+ content: "";
+ position: absolute;
+ inset: 0;
+ border: var(--focus-outline-around);
+ pointer-events: none;
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor) {
+ border: var(--hover-outline);
+ outline: var(--hover-outline-around);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor)::before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ border: var(--focus-outline-around);
+}
+
+.annotationEditorLayer .freeTextEditor {
+ padding: calc(var(--freetext-padding) * var(--scale-factor));
+ width: auto;
+ height: auto;
+ touch-action: none;
+}
+
+.annotationEditorLayer .freeTextEditor .internal {
+ background: transparent;
+ border: none;
+ inset: 0;
+ overflow: visible;
+ white-space: nowrap;
+ font: 10px sans-serif;
+ line-height: var(--freetext-line-height);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.annotationEditorLayer .freeTextEditor .overlay {
+ position: absolute;
+ display: none;
+ background: transparent;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.annotationEditorLayer .freeTextEditor .overlay.enabled {
+ display: block;
+}
+
+.annotationEditorLayer .freeTextEditor .internal:empty::before {
+ content: attr(default-content);
+ color: gray;
+}
+
+.annotationEditorLayer .freeTextEditor .internal:focus {
+ outline: none;
+ -webkit-user-select: auto;
+ -moz-user-select: auto;
+ user-select: auto;
+}
+
+.annotationEditorLayer .inkEditor {
+ width: 100%;
+ height: 100%;
+}
+
+.annotationEditorLayer .inkEditor.editing {
+ cursor: inherit;
+}
+
+.annotationEditorLayer .inkEditor .inkEditorCanvas {
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ touch-action: none;
+}
+
+.annotationEditorLayer .stampEditor {
+ width: auto;
+ height: auto;
+}
+
+.annotationEditorLayer .stampEditor canvas {
+ width: 100%;
+ height: 100%;
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers {
+ position: absolute;
+ inset: 0;
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers.hidden {
+ display: none;
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer {
+ width: var(--resizer-size);
+ height: var(--resizer-size);
+ background: content-box var(--resizer-bg-color);
+ border: var(--focus-outline-around);
+ border-radius: 2px;
+ position: absolute;
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topLeft {
+ top: var(--resizer-shift);
+ left: var(--resizer-shift);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topMiddle {
+ top: var(--resizer-shift);
+ left: calc(50% + var(--resizer-shift));
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topRight {
+ top: var(--resizer-shift);
+ right: var(--resizer-shift);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.middleRight {
+ top: calc(50% + var(--resizer-shift));
+ right: var(--resizer-shift);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomRight {
+ bottom: var(--resizer-shift);
+ right: var(--resizer-shift);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomMiddle {
+ bottom: var(--resizer-shift);
+ left: calc(50% + var(--resizer-shift));
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomLeft {
+ bottom: var(--resizer-shift);
+ left: var(--resizer-shift);
+}
+
+.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.middleLeft {
+ top: calc(50% + var(--resizer-shift));
+ left: var(--resizer-shift);
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomRight {
+ cursor: nwse-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomMiddle {
+ cursor: ns-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomLeft {
+ cursor: nesw-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.middleLeft {
+ cursor: ew-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topLeft,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomRight {
+ cursor: nesw-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topMiddle,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomMiddle,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomMiddle {
+ cursor: ew-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.topRight,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.bottomLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.bottomLeft {
+ cursor: nwse-resize;
+}
+
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.middleRight,
+.annotationEditorLayer[data-main-rotation="0"]
+:is([data-editor-rotation="90"], [data-editor-rotation="270"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="90"]
+:is([data-editor-rotation="0"], [data-editor-rotation="180"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="180"]
+:is([data-editor-rotation="270"], [data-editor-rotation="90"]) > .resizers > .resizer.middleLeft,
+.annotationEditorLayer[data-main-rotation="270"]
+:is([data-editor-rotation="180"], [data-editor-rotation="0"]) > .resizers > .resizer.middleLeft {
+ cursor: ns-resize;
+}
+
+.annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="90"],
+ [data-main-rotation="90"] [data-editor-rotation="0"],
+ [data-main-rotation="180"] [data-editor-rotation="270"],
+ [data-main-rotation="270"] [data-editor-rotation="180"]
+ ) .altText {
+ rotate: 270deg;
+}
+
+[dir="ltr"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="90"],
+ [data-main-rotation="90"] [data-editor-rotation="0"],
+ [data-main-rotation="180"] [data-editor-rotation="270"],
+ [data-main-rotation="270"] [data-editor-rotation="180"]
+ ) .altText {
+ inset-inline-start: calc(100% - 8px);
+}
+
+[dir="ltr"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="90"],
+ [data-main-rotation="90"] [data-editor-rotation="0"],
+ [data-main-rotation="180"] [data-editor-rotation="270"],
+ [data-main-rotation="270"] [data-editor-rotation="180"]
+ ) .altText.small {
+ inset-inline-start: calc(100% + 8px);
+ inset-block-start: 100%;
+}
+
+[dir="rtl"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="90"],
+ [data-main-rotation="90"] [data-editor-rotation="0"],
+ [data-main-rotation="180"] [data-editor-rotation="270"],
+ [data-main-rotation="270"] [data-editor-rotation="180"]
+ ) .altText {
+ inset-block-end: calc(100% - 8px);
+}
+
+[dir="rtl"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="90"],
+ [data-main-rotation="90"] [data-editor-rotation="0"],
+ [data-main-rotation="180"] [data-editor-rotation="270"],
+ [data-main-rotation="270"] [data-editor-rotation="180"]
+ ) .altText.small {
+ inset-inline-start: -8px;
+ inset-block-start: 0;
+}
+
+.annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="180"],
+ [data-main-rotation="90"] [data-editor-rotation="90"],
+ [data-main-rotation="180"] [data-editor-rotation="0"],
+ [data-main-rotation="270"] [data-editor-rotation="270"]
+ ) .altText {
+ rotate: 180deg;
+
+ inset-block-end: calc(100% - 8px);
+ inset-inline-start: calc(100% - 8px);
+}
+
+.annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="180"],
+ [data-main-rotation="90"] [data-editor-rotation="90"],
+ [data-main-rotation="180"] [data-editor-rotation="0"],
+ [data-main-rotation="270"] [data-editor-rotation="270"]
+ ) .altText.small {
+ inset-inline-start: 100%;
+ inset-block-start: -8px;
+}
+
+.annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="270"],
+ [data-main-rotation="90"] [data-editor-rotation="180"],
+ [data-main-rotation="180"] [data-editor-rotation="90"],
+ [data-main-rotation="270"] [data-editor-rotation="0"]
+ ) .altText {
+ rotate: 90deg;
+}
+
+[dir="ltr"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="270"],
+ [data-main-rotation="90"] [data-editor-rotation="180"],
+ [data-main-rotation="180"] [data-editor-rotation="90"],
+ [data-main-rotation="270"] [data-editor-rotation="0"]
+ ) .altText {
+ inset-block-end: calc(100% - 8px);
+}
+
+[dir="ltr"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="270"],
+ [data-main-rotation="90"] [data-editor-rotation="180"],
+ [data-main-rotation="180"] [data-editor-rotation="90"],
+ [data-main-rotation="270"] [data-editor-rotation="0"]
+ ) .altText.small {
+ inset-inline-start: -8px;
+ inset-block-start: 0;
+}
+
+[dir="rtl"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="270"],
+ [data-main-rotation="90"] [data-editor-rotation="180"],
+ [data-main-rotation="180"] [data-editor-rotation="90"],
+ [data-main-rotation="270"] [data-editor-rotation="0"]
+ ) .altText {
+ inset-inline-start: calc(100% - 8px);
+}
+
+[dir="rtl"] .annotationEditorLayer
+:is(
+ [data-main-rotation="0"] [data-editor-rotation="270"],
+ [data-main-rotation="90"] [data-editor-rotation="180"],
+ [data-main-rotation="180"] [data-editor-rotation="90"],
+ [data-main-rotation="270"] [data-editor-rotation="0"]
+ ) .altText.small {
+ inset-inline-start: calc(100% + 8px);
+ inset-block-start: 100%;
+}
+
+.altText {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-inline: 4px;
+ width: auto;
+ height: 24px;
+ min-width: 88px;
+ z-index: 1;
+ pointer-events: all;
+
+ color: var(--alt-text-fg-color);
+ font: menu;
+ font-size: 12px;
+ border-radius: 4px;
+ border: 1px solid var(--alt-text-border-color);
+ background-color: var(--alt-text-bg-color);
+ box-shadow: var(--alt-text-shadow);
+
+ position: absolute;
+ inset-block-end: 8px;
+ inset-inline-start: 8px;
+}
+
+[dir="ltr"] .altText {
+ transform-origin: 0 100%;
+}
+
+[dir="rtl"] .altText {
+ transform-origin: 100% 100%;
+}
+
+.altText.small {
+
+ inset-block-end: unset;
+ inset-inline-start: 0;
+ inset-block-start: calc(100% + 8px);
+}
+
+[dir="ltr"] .altText.small {
+ transform-origin: 0 0;
+}
+
+[dir="rtl"] .altText.small {
+ transform-origin: 100% 0;
+}
+
+.altText:hover {
+ background-color: var(--alt-text-hover-bg-color);
+ border-color: var(--alt-text-hover-border-color);
+ color: var(--alt-text-hover-fg-color);
+ cursor: pointer;
+}
+
+.altText:hover::before {
+ background-color: var(--alt-text-hover-fg-color);
+}
+
+.altText:active {
+ background-color: var(--alt-text-active-bg-color);
+ border-color: var(--alt-text-active-border-color);
+ color: var(--alt-text-active-fg-color);
+}
+
+.altText:active::before {
+ background-color: var(--alt-text-active-fg-color);
+}
+
+.altText:focus-visible {
+ outline: 2px solid var(--alt-text-focus-outline-color);
+ border-color: var(--alt-text-focus-border-color);
+}
+
+.altText::before {
+ content: "";
+ -webkit-mask-image: var(--alt-text-add-image);
+ mask-image: var(--alt-text-add-image);
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ -webkit-mask-position: center;
+ mask-position: center;
+ display: inline-block;
+ width: 12px;
+ height: 13px;
+ background-color: var(--alt-text-fg-color);
+ margin-inline-end: 4px;
+}
+
+.altText.done::before {
+ -webkit-mask-image: var(--alt-text-done-image);
+ mask-image: var(--alt-text-done-image);
+}
+
+.altText .tooltip {
+ display: none;
+}
+
+.altText .tooltip.show {
+ --alt-text-tooltip-bg: #f0f0f4;
+ --alt-text-tooltip-fg: #15141a;
+ --alt-text-tooltip-border: #8f8f9d;
+ --alt-text-tooltip-shadow: 0px 2px 6px 0px rgba(58, 57, 68, 0.2);
+
+ display: inline-flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: calc(100% + 2px);
+ inset-inline-start: 0;
+ padding-block: 2px 3px;
+ padding-inline: 3px;
+ max-width: 300px;
+ width: -moz-max-content;
+ width: max-content;
+ height: auto;
+ font-size: 12px;
+
+ border: 0.5px solid var(--alt-text-tooltip-border);
+ background: var(--alt-text-tooltip-bg);
+ box-shadow: var(--alt-text-tooltip-shadow);
+ color: var(--alt-text-tooltip-fg);
+
+ pointer-events: none;
+}
+
+@media (prefers-color-scheme: dark) {
+
+ .altText .tooltip.show {
+ --alt-text-tooltip-bg: #1c1b22;
+ --alt-text-tooltip-fg: #fbfbfe;
+ --alt-text-tooltip-shadow: 0px 2px 6px 0px #15141a;
+ }
+}
+
+@media screen and (forced-colors: active) {
+
+ .altText .tooltip.show {
+ --alt-text-tooltip-bg: Canvas;
+ --alt-text-tooltip-fg: CanvasText;
+ --alt-text-tooltip-border: CanvasText;
+ --alt-text-tooltip-shadow: none;
+ }
+}
+
+#altTextDialog {
+ --dialog-bg-color: white;
+ --dialog-border-color: white;
+ --dialog-shadow: 0 2px 14px 0 rgba(58, 57, 68, 0.2);
+ --text-primary-color: #15141a;
+ --text-secondary-color: #5b5b66;
+ --hover-filter: brightness(0.9);
+ --focus-ring-color: #0060df;
+ --focus-ring-outline: 2px solid var(--focus-ring-color);
+
+ --textarea-border-color: #8f8f9d;
+ --textarea-bg-color: white;
+ --textarea-fg-color: var(--text-secondary-color);
+
+ --radio-bg-color: #f0f0f4;
+ --radio-checked-bg-color: #fbfbfe;
+ --radio-border-color: #8f8f9d;
+ --radio-checked-border-color: #0060df;
+
+ --button-cancel-bg-color: #f0f0f4;
+ --button-cancel-fg-color: var(--text-primary-color);
+ --button-cancel-border-color: var(--button-cancel-bg-color);
+ --button-cancel-hover-bg-color: var(--button-cancel-bg-color);
+ --button-cancel-hover-fg-color: var(--button-cancel-fg-color);
+ --button-cancel-hover-border-color: var(--button-cancel-hover-bg-color);
+
+ --button-save-bg-color: #0060df;
+ --button-save-fg-color: #fbfbfe;
+ --button-save-hover-bg-color: var(--button-save-bg-color);
+ --button-save-hover-fg-color: var(--button-save-fg-color);
+ --button-save-hover-border-color: var(--button-save-hover-bg-color);
+ --button-save-disabled-bg-color: var(--button-save-bg-color);
+ --button-save-disabled-fg-color: var(--button-save-fg-color);
+ --button-save-disabled-opacity: 0.4;
+
+ font: message-box;
+ font-size: 13px;
+ font-weight: 400;
+ line-height: 150%;
+ border-radius: 4px;
+ padding: 12px 16px;
+ border: 1px solid var(--dialog-border-color);
+ background: var(--dialog-bg-color);
+ color: var(--text-primary-color);
+ box-shadow: var(--dialog-shadow);
+}
+
+@media (prefers-color-scheme: dark) {
+
+ #altTextDialog {
+ --dialog-bg-color: #1c1b22;
+ --dialog-border-color: #1c1b22;
+ --dialog-shadow: 0 2px 14px 0 #15141a;
+ --text-primary-color: #fbfbfe;
+ --text-secondary-color: #cfcfd8;
+ --focus-ring-color: #00ddff;
+ --hover-filter: brightness(1.4);
+
+ --textarea-bg-color: #42414d;
+
+ --radio-bg-color: #2b2a33;
+ --radio-checked-bg-color: #15141a;
+ --radio-checked-border-color: #00ddff;
+
+ --button-cancel-bg-color: #2b2a33;
+ --button-save-bg-color: #00ddff;
+ --button-save-fg-color: #15141a;
+ }
+}
+
+@media screen and (forced-colors: active) {
+
+ #altTextDialog {
+ --dialog-bg-color: Canvas;
+ --dialog-border-color: CanvasText;
+ --dialog-shadow: none;
+ --text-primary-color: CanvasText;
+ --text-secondary-color: CanvasText;
+ --hover-filter: none;
+ --focus-ring-color: ButtonBorder;
+
+ --textarea-border-color: ButtonBorder;
+ --textarea-bg-color: Field;
+ --textarea-fg-color: ButtonText;
+
+ --radio-bg-color: ButtonFace;
+ --radio-checked-bg-color: ButtonFace;
+ --radio-border-color: ButtonText;
+ --radio-checked-border-color: ButtonText;
+
+ --button-cancel-bg-color: ButtonFace;
+ --button-cancel-fg-color: ButtonText;
+ --button-cancel-border-color: ButtonText;
+ --button-cancel-hover-bg-color: AccentColor;
+ --button-cancel-hover-fg-color: AccentColorText;
+
+ --button-save-bg-color: ButtonText;
+ --button-save-fg-color: ButtonFace;
+ --button-save-hover-bg-color: AccentColor;
+ --button-save-hover-fg-color: AccentColorText;
+ --button-save-disabled-bg-color: GrayText;
+ --button-save-disabled-fg-color: Canvas;
+ --button-save-disabled-opacity: 1;
+ }
+}
+
+#altTextDialog::backdrop {
+ /* This is needed to avoid to darken the image the user want to describe. */
+ -webkit-mask: url(#alttext-manager-mask);
+ mask: url(#alttext-manager-mask);
+}
+
+#altTextDialog.positioned {
+ margin: 0;
+}
+
+#altTextDialog #altTextContainer {
+ width: 300px;
+ height: -moz-fit-content;
+ height: fit-content;
+ display: inline-flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+}
+
+#altTextDialog #altTextContainer *:focus-visible {
+ outline: var(--focus-ring-outline);
+ outline-offset: 2px;
+}
+
+#altTextDialog #altTextContainer .radio {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 4px;
+}
+
+#altTextDialog #altTextContainer .radio .radioButton {
+ display: flex;
+ gap: 8px;
+ align-self: stretch;
+ align-items: center;
+}
+
+#altTextDialog #altTextContainer .radio .radioButton input {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ box-sizing: border-box;
+ width: 16px;
+ height: 16px;
+ border-radius: 50%;
+ background-color: var(--radio-bg-color);
+ border: 1px solid var(--radio-border-color);
+}
+
+#altTextDialog #altTextContainer .radio .radioButton input:hover {
+ filter: var(--hover-filter);
+}
+
+#altTextDialog #altTextContainer .radio .radioButton input:checked {
+ background-color: var(--radio-checked-bg-color);
+ border: 4px solid var(--radio-checked-border-color);
+}
+
+#altTextDialog #altTextContainer .radio .radioLabel {
+ display: flex;
+ padding-inline-start: 24px;
+ align-items: flex-start;
+ gap: 10px;
+ align-self: stretch;
+}
+
+#altTextDialog #altTextContainer .radio .radioLabel span {
+ flex: 1 0 0;
+ font-size: 11px;
+ color: var(--text-secondary-color);
+}
+
+#altTextDialog #altTextContainer #overallDescription {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 4px;
+ align-self: stretch;
+}
+
+#altTextDialog #altTextContainer #overallDescription span {
+ align-self: stretch;
+}
+
+#altTextDialog #altTextContainer #overallDescription .title {
+ font-size: 13px;
+ font-style: normal;
+ font-weight: 590;
+}
+
+#altTextDialog #altTextContainer #addDescription {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ gap: 8px;
+}
+
+#altTextDialog #altTextContainer #addDescription .descriptionArea {
+ flex: 1;
+ padding-inline: 24px 10px;
+}
+
+#altTextDialog #altTextContainer #addDescription .descriptionArea textarea {
+ font: inherit;
+ width: 100%;
+ min-height: 75px;
+ padding: 8px;
+ resize: none;
+ margin: 0;
+ box-sizing: border-box;
+ border-radius: 4px;
+ border: 1px solid var(--textarea-border-color);
+ background: var(--textarea-bg-color);
+ color: var(--textarea-fg-color);
+}
+
+#altTextDialog #altTextContainer #addDescription .descriptionArea textarea:focus {
+ outline-offset: 0;
+ border-color: transparent;
+}
+
+#altTextDialog #altTextContainer #addDescription .descriptionArea textarea:disabled {
+ pointer-events: none;
+ opacity: 0.4;
+}
+
+#altTextDialog #altTextContainer #buttons {
+ display: flex;
+ justify-content: flex-end;
+ align-items: flex-start;
+ gap: 8px;
+ align-self: stretch;
+}
+
+#altTextDialog #altTextContainer #buttons button {
+ border-radius: 4px;
+ border: 1px solid;
+ font: menu;
+ font-weight: 600;
+ padding: 4px 16px;
+ width: auto;
+ height: 32px;
+}
+
+#altTextDialog #altTextContainer #buttons button:hover {
+ cursor: pointer;
+ filter: var(--hover-filter);
+}
+
+#altTextDialog #altTextContainer #buttons button#altTextCancel {
+ color: var(--button-cancel-fg-color);
+ background-color: var(--button-cancel-bg-color);
+ border-color: var(--button-cancel-border-color);
+}
+
+#altTextDialog #altTextContainer #buttons button#altTextCancel:hover {
+ color: var(--button-cancel-hover-fg-color);
+ background-color: var(--button-cancel-hover-bg-color);
+ border-color: var(--button-cancel-hover-border-color);
+}
+
+#altTextDialog #altTextContainer #buttons button#altTextSave {
+ color: var(--button-save-hover-fg-color);
+ background-color: var(--button-save-hover-bg-color);
+ border-color: var(--button-save-hover-border-color);
+ opacity: 1;
+}
+
+#altTextDialog #altTextContainer #buttons button#altTextSave:hover {
+ color: var(--button-save-hover-fg-color);
+ background-color: var(--button-save-hover-bg-color);
+ border-color: var(--button-save-hover-border-color);
+}
+
+#altTextDialog #altTextContainer #buttons button#altTextSave:disabled {
+ color: var(--button-save-disabled-fg-color);
+ background-color: var(--button-save-disabled-bg-color);
+ opacity: var(--button-save-disabled-opacity);
+ pointer-events: none;
+}
+
+:root {
+ --viewer-container-height: 0;
+ --pdfViewer-padding-bottom: 0;
+ --page-margin: 1px auto -8px;
+ --page-border: 9px solid transparent;
+ --spreadHorizontalWrapped-margin-LR: -3.5px;
+ --loading-icon-delay: 400ms;
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --pdfViewer-padding-bottom: 9px;
+ --page-margin: 8px auto -1px;
+ --page-border: 1px solid CanvasText;
+ --spreadHorizontalWrapped-margin-LR: 3.5px;
+ }
+}
+
+[data-main-rotation="90"] {
+ transform: rotate(90deg) translateY(-100%);
+}
+
+[data-main-rotation="180"] {
+ transform: rotate(180deg) translate(-100%, -100%);
+}
+
+[data-main-rotation="270"] {
+ transform: rotate(270deg) translateX(-100%);
+}
+
+#hiddenCopyElement {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 0;
+ height: 0;
+ display: none;
+}
+
+.pdfViewer {
+ /* Define this variable here and not in :root to avoid to reflow all the UI
+ when scaling (see #15929). */
+ --scale-factor: 1;
+
+ padding-bottom: var(--pdfViewer-padding-bottom);
+}
+
+.pdfViewer .canvasWrapper {
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+}
+
+.pdfViewer .page {
+ direction: ltr;
+ width: 816px;
+ height: 1056px;
+ margin: var(--page-margin);
+ position: relative;
+ overflow: visible;
+ border: var(--page-border);
+ background-clip: content-box;
+ background-color: rgba(255, 255, 255, 1);
+}
+
+.pdfViewer .dummyPage {
+ position: relative;
+ width: 0;
+ height: var(--viewer-container-height);
+}
+
+.pdfViewer.noUserSelect {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pdfViewer.removePageBorders .page {
+ margin: 0 auto 10px;
+ border: none;
+}
+
+.pdfViewer:is(.scrollHorizontal, .scrollWrapped),
+.spread {
+ margin-inline: 3.5px;
+ text-align: center;
+}
+
+.pdfViewer.scrollHorizontal,
+.spread {
+ white-space: nowrap;
+}
+
+.pdfViewer.removePageBorders,
+.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .spread {
+ margin-inline: 0;
+}
+
+.spread :is(.page, .dummyPage),
+.pdfViewer:is(.scrollHorizontal, .scrollWrapped) :is(.page, .spread) {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.spread .page,
+.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .page {
+ margin-inline: var(--spreadHorizontalWrapped-margin-LR);
+}
+
+.pdfViewer.removePageBorders .spread .page,
+.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page {
+ margin-inline: 5px;
+}
+
+.pdfViewer .page canvas {
+ margin: 0;
+ display: block;
+}
+
+.pdfViewer .page canvas .structTree {
+ contain: strict;
+}
+
+.pdfViewer .page canvas[hidden] {
+ display: none;
+}
+
+.pdfViewer .page canvas[zooming] {
+ width: 100%;
+ height: 100%;
+}
+
+.pdfViewer .page.loadingIcon::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: "";
+ width: 100%;
+ height: 100%;
+ background: url("../images/loading-icon.gif") center no-repeat;
+ display: none;
+ /* Using a delay with background-image doesn't work,
+ consequently we use the display. */
+ transition-property: display;
+ transition-delay: var(--loading-icon-delay);
+ z-index: 5;
+ contain: strict;
+}
+
+.pdfViewer .page.loading::after {
+ display: block;
+}
+
+.pdfViewer .page:not(.loading)::after {
+ transition-property: none;
+ display: none;
+}
+
+.pdfPresentationMode .pdfViewer {
+ padding-bottom: 0;
+}
+
+.pdfPresentationMode .spread {
+ margin: 0;
+}
+
+.pdfPresentationMode .pdfViewer .page {
+ margin: 0 auto;
+ border: 2px solid transparent;
+}
+
+:root {
+ --dir-factor: 1;
+ --inline-start: left;
+ --inline-end: right;
+
+ --sidebar-width: 200px;
+ --sidebar-transition-duration: 200ms;
+ --sidebar-transition-timing-function: ease;
+
+ --toolbar-icon-opacity: 0.7;
+ --doorhanger-icon-opacity: 0.9;
+
+ --main-color: rgba(12, 12, 13, 1);
+ --body-bg-color: rgba(212, 212, 215, 1);
+ --progressBar-color: rgba(10, 132, 255, 1);
+ --progressBar-bg-color: rgba(221, 221, 222, 1);
+ --progressBar-blend-color: rgba(116, 177, 239, 1);
+ --scrollbar-color: auto;
+ --scrollbar-bg-color: auto;
+ --toolbar-icon-bg-color: rgba(0, 0, 0, 1);
+ --toolbar-icon-hover-bg-color: rgba(0, 0, 0, 1);
+
+ --sidebar-narrow-bg-color: rgba(212, 212, 215, 0.9);
+ --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1);
+ --toolbar-bg-color: rgba(249, 249, 250, 1);
+ --toolbar-border-color: rgba(184, 184, 184, 1);
+ --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color);
+ --toolbar-border-bottom: none;
+ --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25),
+ 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1);
+ --toolbarSidebar-border-bottom: none;
+ --button-hover-color: rgba(221, 222, 223, 1);
+ --toggled-btn-color: rgba(0, 0, 0, 1);
+ --toggled-btn-bg-color: rgba(0, 0, 0, 0.3);
+ --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4);
+ --toggled-hover-btn-outline: none;
+ --dropdown-btn-bg-color: rgba(215, 215, 219, 1);
+ --dropdown-btn-border: none;
+ --separator-color: rgba(0, 0, 0, 0.3);
+ --field-color: rgba(6, 6, 6, 1);
+ --field-bg-color: rgba(255, 255, 255, 1);
+ --field-border-color: rgba(187, 187, 188, 1);
+ --treeitem-color: rgba(0, 0, 0, 0.8);
+ --treeitem-bg-color: rgba(0, 0, 0, 0.15);
+ --treeitem-hover-color: rgba(0, 0, 0, 0.9);
+ --treeitem-selected-color: rgba(0, 0, 0, 0.9);
+ --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25);
+ --thumbnail-hover-color: rgba(0, 0, 0, 0.1);
+ --thumbnail-selected-color: rgba(0, 0, 0, 0.2);
+ --doorhanger-bg-color: rgba(255, 255, 255, 1);
+ --doorhanger-border-color: rgba(12, 12, 13, 0.2);
+ --doorhanger-hover-color: rgba(12, 12, 13, 1);
+ --doorhanger-hover-bg-color: rgba(237, 237, 237, 1);
+ --doorhanger-separator-color: rgba(222, 222, 222, 1);
+ --dialog-button-border: none;
+ --dialog-button-bg-color: rgba(12, 12, 13, 0.1);
+ --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3);
+
+ --loading-icon: url(../images/loading.svg);
+ --treeitem-expanded-icon: url(../images/treeitem-expanded.svg);
+ --treeitem-collapsed-icon: url(../images/treeitem-collapsed.svg);
+ --toolbarButton-editorFreeText-icon: url(../images/toolbarButton-editorFreeText.svg);
+ --toolbarButton-editorInk-icon: url(../images/toolbarButton-editorInk.svg);
+ --toolbarButton-editorStamp-icon: url(../images/toolbarButton-editorStamp.svg);
+ --toolbarButton-menuArrow-icon: url(../images/toolbarButton-menuArrow.svg);
+ --toolbarButton-sidebarToggle-icon: url(../images/toolbarButton-sidebarToggle.svg);
+ --toolbarButton-backToHome-icon: url(../images/toolBarButton-home.svg);
+ --toolbarButton-secondaryToolbarToggle-icon: url(../images/toolbarButton-secondaryToolbarToggle.svg);
+ --toolbarButton-pageUp-icon: url(../images/toolbarButton-pageUp.svg);
+ --toolbarButton-pageDown-icon: url(../images/toolbarButton-pageDown.svg);
+ --toolbarButton-zoomOut-icon: url(../images/toolbarButton-zoomOut.svg);
+ --toolbarButton-zoomIn-icon: url(../images/toolbarButton-zoomIn.svg);
+ --toolbarButton-presentationMode-icon: url(../images/toolbarButton-presentationMode.svg);
+ --toolbarButton-print-icon: url(../images/toolbarButton-print.svg);
+ --toolbarButton-openFile-icon: url(../images/toolbarButton-openFile.svg);
+ --toolbarButton-download-icon: url(../images/toolbarButton-download.svg);
+ --toolbarButton-bookmark-icon: url(../images/toolbarButton-bookmark.svg);
+ --toolbarButton-viewThumbnail-icon: url(../images/toolbarButton-viewThumbnail.svg);
+ --toolbarButton-viewOutline-icon: url(../images/toolbarButton-viewOutline.svg);
+ --toolbarButton-viewAttachments-icon: url(../images/toolbarButton-viewAttachments.svg);
+ --toolbarButton-viewLayers-icon: url(../images/toolbarButton-viewLayers.svg);
+ --toolbarButton-currentOutlineItem-icon: url(../images/toolbarButton-currentOutlineItem.svg);
+ --toolbarButton-search-icon: url(../images/toolbarButton-search.svg);
+ --findbarButton-previous-icon: url(../images/findbarButton-previous.svg);
+ --findbarButton-next-icon: url(../images/findbarButton-next.svg);
+ --secondaryToolbarButton-firstPage-icon: url(../images/secondaryToolbarButton-firstPage.svg);
+ --secondaryToolbarButton-lastPage-icon: url(../images/secondaryToolbarButton-lastPage.svg);
+ --secondaryToolbarButton-rotateCcw-icon: url(../images/secondaryToolbarButton-rotateCcw.svg);
+ --secondaryToolbarButton-rotateCw-icon: url(../images/secondaryToolbarButton-rotateCw.svg);
+ --secondaryToolbarButton-selectTool-icon: url(../images/secondaryToolbarButton-selectTool.svg);
+ --secondaryToolbarButton-handTool-icon: url(../images/secondaryToolbarButton-handTool.svg);
+ --secondaryToolbarButton-scrollPage-icon: url(../images/secondaryToolbarButton-scrollPage.svg);
+ --secondaryToolbarButton-scrollVertical-icon: url(../images/secondaryToolbarButton-scrollVertical.svg);
+ --secondaryToolbarButton-scrollHorizontal-icon: url(../images/secondaryToolbarButton-scrollHorizontal.svg);
+ --secondaryToolbarButton-scrollWrapped-icon: url(../images/secondaryToolbarButton-scrollWrapped.svg);
+ --secondaryToolbarButton-spreadNone-icon: url(../images/secondaryToolbarButton-spreadNone.svg);
+ --secondaryToolbarButton-spreadOdd-icon: url(../images/secondaryToolbarButton-spreadOdd.svg);
+ --secondaryToolbarButton-spreadEven-icon: url(../images/secondaryToolbarButton-spreadEven.svg);
+ --secondaryToolbarButton-documentProperties-icon: url(../images/secondaryToolbarButton-documentProperties.svg);
+ --editorParams-stampAddImage-icon: url(../images/toolbarButton-zoomIn.svg);
+}
+
+[dir="rtl"]:root {
+ --dir-factor: -1;
+ --inline-start: right;
+ --inline-end: left;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --main-color: rgba(249, 249, 250, 1);
+ --body-bg-color: rgba(42, 42, 46, 1);
+ --progressBar-color: rgba(0, 96, 223, 1);
+ --progressBar-bg-color: rgba(40, 40, 43, 1);
+ --progressBar-blend-color: rgba(20, 68, 133, 1);
+ --scrollbar-color: rgba(121, 121, 123, 1);
+ --scrollbar-bg-color: rgba(35, 35, 39, 1);
+ --toolbar-icon-bg-color: rgba(255, 255, 255, 1);
+ --toolbar-icon-hover-bg-color: rgba(255, 255, 255, 1);
+
+ --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9);
+ --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1);
+ --toolbar-bg-color: rgba(56, 56, 61, 1);
+ --toolbar-border-color: rgba(12, 12, 13, 1);
+ --button-hover-color: rgba(102, 102, 103, 1);
+ --toggled-btn-color: rgba(255, 255, 255, 1);
+ --toggled-btn-bg-color: rgba(0, 0, 0, 0.3);
+ --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4);
+ --dropdown-btn-bg-color: rgba(74, 74, 79, 1);
+ --separator-color: rgba(0, 0, 0, 0.3);
+ --field-color: rgba(250, 250, 250, 1);
+ --field-bg-color: rgba(64, 64, 68, 1);
+ --field-border-color: rgba(115, 115, 115, 1);
+ --treeitem-color: rgba(255, 255, 255, 0.8);
+ --treeitem-bg-color: rgba(255, 255, 255, 0.15);
+ --treeitem-hover-color: rgba(255, 255, 255, 0.9);
+ --treeitem-selected-color: rgba(255, 255, 255, 0.9);
+ --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25);
+ --thumbnail-hover-color: rgba(255, 255, 255, 0.1);
+ --thumbnail-selected-color: rgba(255, 255, 255, 0.2);
+ --doorhanger-bg-color: rgba(74, 74, 79, 1);
+ --doorhanger-border-color: rgba(39, 39, 43, 1);
+ --doorhanger-hover-color: rgba(249, 249, 250, 1);
+ --doorhanger-hover-bg-color: rgba(93, 94, 98, 1);
+ --doorhanger-separator-color: rgba(92, 92, 97, 1);
+ --dialog-button-bg-color: rgba(92, 92, 97, 1);
+ --dialog-button-hover-bg-color: rgba(115, 115, 115, 1);
+
+ /* This image is used in elements, which unfortunately means that
+ * the `mask-image` approach used with all of the other images doesn't work
+ * here; hence why we still have two versions of this particular image. */
+ --loading-icon: url(../images/loading-dark.svg);
+ }
+}
+
+@media screen and (forced-colors: active) {
+ :root {
+ --button-hover-color: Highlight;
+ --doorhanger-hover-bg-color: Highlight;
+ --toolbar-icon-opacity: 1;
+ --toolbar-icon-bg-color: ButtonText;
+ --toolbar-icon-hover-bg-color: ButtonFace;
+ --toggled-hover-active-btn-color: ButtonText;
+ --toggled-hover-btn-outline: 2px solid ButtonBorder;
+ --toolbar-border-color: CanvasText;
+ --toolbar-border-bottom: 1px solid var(--toolbar-border-color);
+ --toolbar-box-shadow: none;
+ --toggled-btn-color: HighlightText;
+ --toggled-btn-bg-color: LinkText;
+ --doorhanger-hover-color: ButtonFace;
+ --doorhanger-border-color-whcm: 1px solid ButtonText;
+ --doorhanger-triangle-opacity-whcm: 0;
+ --dialog-button-border: 1px solid Highlight;
+ --dialog-button-hover-bg-color: Highlight;
+ --dialog-button-hover-color: ButtonFace;
+ --dropdown-btn-border: 1px solid ButtonText;
+ --field-border-color: ButtonText;
+ --main-color: CanvasText;
+ --separator-color: GrayText;
+ --doorhanger-separator-color: GrayText;
+ --toolbarSidebar-box-shadow: none;
+ --toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color);
+ }
+}
+
+@media screen and (prefers-reduced-motion: reduce) {
+ :root {
+ --sidebar-transition-duration: 0;
+ }
+}
+
+* {
+ padding: 0;
+ margin: 0;
+}
+
+html,
+body {
+ height: 100%;
+ width: 100%;
+}
+
+body {
+ background-color: var(--body-bg-color);
+ scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+}
+
+.hidden,
+[hidden] {
+ display: none !important;
+}
+
+#viewerContainer.pdfPresentationMode:-webkit-full-screen {
+ top: 0;
+ background-color: rgba(0, 0, 0, 1);
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ cursor: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+#viewerContainer.pdfPresentationMode:fullscreen {
+ top: 0;
+ background-color: rgba(0, 0, 0, 1);
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ cursor: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pdfPresentationMode:-webkit-full-screen section:not([data-internal-link]) {
+ pointer-events: none;
+}
+
+.pdfPresentationMode:fullscreen section:not([data-internal-link]) {
+ pointer-events: none;
+}
+
+.pdfPresentationMode:-webkit-full-screen .textLayer span {
+ cursor: none;
+}
+
+.pdfPresentationMode:fullscreen .textLayer span {
+ cursor: none;
+}
+
+.pdfPresentationMode.pdfPresentationModeControls > *,
+.pdfPresentationMode.pdfPresentationModeControls .textLayer span {
+ cursor: default;
+}
+
+#outerContainer {
+ width: 100%;
+ height: 100%;
+ position: relative;
+}
+
+#sidebarContainer {
+ position: absolute;
+ inset-block: 32px 0;
+ inset-inline-start: calc(-1 * var(--sidebar-width));
+ width: var(--sidebar-width);
+ visibility: hidden;
+ z-index: 100;
+ font: message-box;
+ border-top: 1px solid rgba(51, 51, 51, 1);
+ border-inline-end: var(--doorhanger-border-color-whcm);
+ transition-property: inset-inline-start;
+ transition-duration: var(--sidebar-transition-duration);
+ transition-timing-function: var(--sidebar-transition-timing-function);
+}
+
+#outerContainer:is(.sidebarMoving, .sidebarOpen) #sidebarContainer {
+ visibility: visible;
+}
+
+#outerContainer.sidebarOpen #sidebarContainer {
+ inset-inline-start: 0;
+}
+
+#mainContainer {
+ position: absolute;
+ inset: 0;
+ min-width: 350px;
+}
+
+#sidebarContent {
+ inset-block: 32px 0;
+ inset-inline-start: 0;
+ overflow: auto;
+ position: absolute;
+ width: 100%;
+ box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25);
+}
+
+#viewerContainer {
+ overflow: auto;
+ position: absolute;
+ inset: 32px 0 0;
+ outline: none;
+}
+
+#viewerContainer:not(.pdfPresentationMode) {
+ transition-duration: var(--sidebar-transition-duration);
+ transition-timing-function: var(--sidebar-transition-timing-function);
+}
+
+#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ inset-inline-start: var(--sidebar-width);
+ transition-property: inset-inline-start;
+}
+
+.toolbar {
+ position: relative;
+ inset-inline: 0;
+ z-index: 9999;
+ cursor: default;
+ font: message-box;
+}
+
+:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer)
+:is(input, button, select),
+.secondaryToolbar :is(input, button, a, select) {
+ outline: none;
+ font: message-box;
+}
+
+#toolbarContainer {
+ width: 100%;
+}
+
+#toolbarSidebar {
+ width: 100%;
+ height: 32px;
+ background-color: var(--sidebar-toolbar-bg-color);
+ box-shadow: var(--toolbarSidebar-box-shadow);
+ border-bottom: var(--toolbarSidebar-border-bottom);
+}
+
+#sidebarResizer {
+ position: absolute;
+ inset-block: 0;
+ inset-inline-end: -6px;
+ width: 6px;
+ z-index: 200;
+ cursor: ew-resize;
+}
+
+#toolbarContainer,
+.findbar,
+.secondaryToolbar,
+.editorParamsToolbar {
+ position: relative;
+ height: 32px;
+ background-color: var(--toolbar-bg-color);
+ box-shadow: var(--toolbar-box-shadow);
+ border-bottom: var(--toolbar-border-bottom);
+}
+
+#toolbarViewer {
+ height: 32px;
+}
+
+#loadingBar {
+ /* Define these variables here, and not in :root, to avoid reflowing the
+ entire viewer when updating progress (see issue 15958). */
+ --progressBar-percent: 0%;
+ --progressBar-end-offset: 0;
+
+ position: absolute;
+ inset-inline: 0 var(--progressBar-end-offset);
+ height: 4px;
+ background-color: var(--progressBar-bg-color);
+ border-bottom: 1px solid var(--toolbar-border-color);
+ transition-property: inset-inline-start;
+ transition-duration: var(--sidebar-transition-duration);
+ transition-timing-function: var(--sidebar-transition-timing-function);
+}
+
+#outerContainer.sidebarOpen #loadingBar {
+ inset-inline-start: var(--sidebar-width);
+}
+
+#loadingBar .progress {
+ position: absolute;
+ top: 0;
+ inset-inline-start: 0;
+ width: 100%;
+ transform: scaleX(var(--progressBar-percent));
+ transform-origin: calc(50% - 50% * var(--dir-factor)) 0;
+ height: 100%;
+ background-color: var(--progressBar-color);
+ overflow: hidden;
+ transition: transform 200ms;
+}
+
+@keyframes progressIndeterminate {
+ 0% {
+ transform: translateX(calc(-142px * var(--dir-factor)));
+ }
+ 100% {
+ transform: translateX(0);
+ }
+}
+
+#loadingBar.indeterminate .progress {
+ transform: none;
+ background-color: var(--progressBar-bg-color);
+ transition: none;
+}
+
+#loadingBar.indeterminate .progress .glimmer {
+ position: absolute;
+ top: 0;
+ inset-inline-start: 0;
+ height: 100%;
+ width: calc(100% + 150px);
+ background: repeating-linear-gradient(
+ 135deg,
+ var(--progressBar-blend-color) 0,
+ var(--progressBar-bg-color) 5px,
+ var(--progressBar-bg-color) 45px,
+ var(--progressBar-color) 55px,
+ var(--progressBar-color) 95px,
+ var(--progressBar-blend-color) 100px
+ );
+ animation: progressIndeterminate 1s linear infinite;
+}
+
+#outerContainer.sidebarResizing
+:is(#sidebarContainer, #viewerContainer, #loadingBar) {
+ /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
+ transition-duration: 0s;
+}
+
+.findbar,
+.secondaryToolbar,
+.editorParamsToolbar {
+ top: 32px;
+ position: absolute;
+ z-index: 30000;
+ height: auto;
+ padding: 0 4px;
+ margin: 4px 2px;
+ font: message-box;
+ font-size: 12px;
+ line-height: 14px;
+ text-align: left;
+ cursor: default;
+}
+
+.findbar {
+ inset-inline-start: 64px;
+ min-width: 300px;
+ background-color: var(--toolbar-bg-color);
+}
+
+.findbar > div {
+ height: 32px;
+}
+
+.findbar > div#findbarInputContainer {
+ margin-inline-end: 4px;
+}
+
+.findbar.wrapContainers > div,
+.findbar.wrapContainers > div#findbarMessageContainer > * {
+ clear: both;
+}
+
+.findbar.wrapContainers > div#findbarMessageContainer {
+ height: auto;
+}
+
+.findbar input[type="checkbox"] {
+ pointer-events: none;
+}
+
+.findbar label {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.findbar label:hover,
+.findbar input:focus-visible + label {
+ color: var(--toggled-btn-color);
+ background-color: var(--button-hover-color);
+}
+
+.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel {
+ background-color: var(--toggled-btn-bg-color) !important;
+ color: var(--toggled-btn-color);
+}
+
+#findInput {
+ width: 200px;
+}
+
+#findInput::-moz-placeholder {
+ font-style: normal;
+}
+
+#findInput::placeholder {
+ font-style: normal;
+}
+
+#findInput[data-status="pending"] {
+ background-image: var(--loading-icon);
+ background-repeat: no-repeat;
+ background-position: calc(50% + 48% * var(--dir-factor));
+}
+
+#findInput[data-status="notFound"] {
+ background-color: rgba(255, 102, 102, 1);
+}
+
+.secondaryToolbar,
+.editorParamsToolbar {
+ padding: 6px 0 10px;
+ inset-inline-end: 4px;
+ height: auto;
+ background-color: var(--doorhanger-bg-color);
+}
+
+.editorParamsToolbarContainer {
+ width: 220px;
+ margin-bottom: -4px;
+}
+
+.editorParamsToolbarContainer > .editorParamsSetter {
+ min-height: 26px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding-inline: 10px;
+}
+
+.editorParamsToolbarContainer .editorParamsLabel {
+ padding-inline-end: 10px;
+ flex: none;
+ color: var(--main-color);
+}
+
+.editorParamsToolbarContainer .editorParamsColor {
+ width: 32px;
+ height: 32px;
+ flex: none;
+}
+
+.editorParamsToolbarContainer .editorParamsSlider {
+ background-color: transparent;
+ width: 90px;
+ flex: 0 1 0;
+}
+
+.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress {
+ background-color: black;
+}
+
+.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track,
+.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track {
+ background-color: black;
+}
+
+.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb,
+.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb {
+ background-color: white;
+}
+
+#secondaryToolbarButtonContainer {
+ max-width: 220px;
+ min-height: 26px;
+ max-height: calc(var(--viewer-container-height) - 40px);
+ overflow-y: auto;
+ margin-bottom: -4px;
+}
+
+#editorStampParamsToolbar {
+ inset-inline-end: 40px;
+ background-color: var(--toolbar-bg-color);
+}
+
+#editorInkParamsToolbar {
+ inset-inline-end: 68px;
+ background-color: var(--toolbar-bg-color);
+}
+
+#editorFreeTextParamsToolbar {
+ inset-inline-end: 96px;
+ background-color: var(--toolbar-bg-color);
+}
+
+#editorStampAddImage::before {
+ -webkit-mask-image: var(--editorParams-stampAddImage-icon);
+ mask-image: var(--editorParams-stampAddImage-icon);
+}
+
+.doorHanger,
+.doorHangerRight {
+ border-radius: 2px;
+ box-shadow: 0 1px 5px var(--doorhanger-border-color),
+ 0 0 0 1px var(--doorhanger-border-color);
+ border: var(--doorhanger-border-color-whcm);
+}
+
+:is(.doorHanger, .doorHangerRight)::after,
+:is(.doorHanger, .doorHangerRight)::before {
+ bottom: 100%;
+ border: 8px solid rgba(0, 0, 0, 0);
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ opacity: var(--doorhanger-triangle-opacity-whcm);
+}
+
+.doorHanger::after {
+ inset-inline-start: 10px;
+ margin-inline-start: -8px;
+ border-bottom-color: var(--toolbar-bg-color);
+}
+
+.doorHangerRight::after {
+ inset-inline-end: 10px;
+ margin-inline-end: -8px;
+ border-bottom-color: var(--doorhanger-bg-color);
+}
+
+:is(.doorHanger, .doorHangerRight)::before {
+ border-bottom-color: var(--doorhanger-border-color);
+ border-width: 9px;
+}
+
+.doorHanger::before {
+ inset-inline-start: 10px;
+ margin-inline-start: -9px;
+}
+
+.doorHangerRight::before {
+ inset-inline-end: 10px;
+ margin-inline-end: -9px;
+}
+
+#findResultsCount {
+ background-color: rgba(217, 217, 217, 1);
+ color: rgba(82, 82, 82, 1);
+ text-align: center;
+ padding: 4px 5px;
+ margin: 5px;
+}
+
+#findMsg[data-status="notFound"] {
+ font-weight: bold;
+}
+
+:is(#findResultsCount, #findMsg):empty {
+ display: none;
+}
+
+#toolbarViewerMiddle {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+#toolbarViewerLeft,
+#toolbarSidebarLeft {
+ float: var(--inline-start);
+}
+
+#toolbarViewerRight,
+#toolbarSidebarRight {
+ float: var(--inline-end);
+}
+
+#toolbarViewerLeft > *,
+#toolbarViewerMiddle > *,
+#toolbarViewerRight > *,
+#toolbarSidebarLeft *,
+#toolbarSidebarRight *,
+.findbar * {
+ position: relative;
+ float: var(--inline-start);
+}
+
+#toolbarViewerLeft {
+ padding-inline-start: 1px;
+}
+
+#toolbarViewerRight {
+ padding-inline-end: 1px;
+}
+
+#toolbarSidebarRight {
+ padding-inline-end: 2px;
+}
+
+.splitToolbarButton {
+ margin: 2px;
+ display: inline-block;
+}
+
+.splitToolbarButton > .toolbarButton {
+ float: var(--inline-start);
+}
+
+.toolbarButton,
+.secondaryToolbarButton,
+.dialogButton {
+ border: none;
+ background: none;
+ width: 28px;
+ height: 28px;
+ outline: none;
+}
+
+.dialogButton:is(:hover, :focus-visible) {
+ background-color: var(--dialog-button-hover-bg-color);
+}
+
+.dialogButton:is(:hover, :focus-visible) > span {
+ color: var(--dialog-button-hover-color);
+}
+
+.toolbarButton > span {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+}
+
+:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled] {
+ opacity: 0.5;
+}
+
+.splitToolbarButton > .toolbarButton:is(:hover, :focus-visible),
+.dropdownToolbarButton:hover {
+ background-color: var(--button-hover-color);
+}
+
+.splitToolbarButton > .toolbarButton {
+ position: relative;
+ margin: 0;
+}
+
+#toolbarSidebar .splitToolbarButton > .toolbarButton {
+ margin-inline-end: 2px;
+}
+
+.splitToolbarButtonSeparator {
+ float: var(--inline-start);
+ margin: 4px 0;
+ width: 1px;
+ height: 20px;
+ background-color: var(--separator-color);
+}
+
+.toolbarButton,
+.dropdownToolbarButton,
+.secondaryToolbarButton,
+.dialogButton {
+ min-width: 16px;
+ margin: 2px 1px;
+ padding: 2px 6px 0;
+ border: none;
+ border-radius: 2px;
+ color: var(--main-color);
+ font-size: 12px;
+ line-height: 14px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ cursor: default;
+ box-sizing: border-box;
+}
+
+.toolbarButton:is(:hover, :focus-visible) {
+ background-color: var(--button-hover-color);
+}
+
+.secondaryToolbarButton:is(:hover, :focus-visible) {
+ background-color: var(--doorhanger-hover-bg-color);
+ color: var(--doorhanger-hover-color);
+}
+
+:is(.toolbarButton, .secondaryToolbarButton).toggled,
+.splitToolbarButton.toggled > .toolbarButton.toggled {
+ background-color: var(--toggled-btn-bg-color);
+ color: var(--toggled-btn-color);
+}
+
+:is(.toolbarButton, .secondaryToolbarButton).toggled:hover,
+.splitToolbarButton.toggled > .toolbarButton.toggled:hover {
+ outline: var(--toggled-hover-btn-outline) !important;
+}
+
+:is(.toolbarButton, .secondaryToolbarButton).toggled::before {
+ background-color: var(--toggled-btn-color);
+}
+
+:is(.toolbarButton, .secondaryToolbarButton).toggled:hover:active,
+.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+ background-color: var(--toggled-hover-active-btn-color);
+}
+
+.dropdownToolbarButton {
+ /* Define this variable here, and not in :root, to avoid reflowing the
+ entire viewer when updating the width. */
+ --scale-select-width: 140px;
+
+ width: var(--scale-select-width);
+ padding: 0;
+ background-color: var(--dropdown-btn-bg-color);
+ border: var(--dropdown-btn-border);
+}
+
+.dropdownToolbarButton::after {
+ top: 6px;
+ inset-inline-end: 6px;
+ pointer-events: none;
+ -webkit-mask-image: var(--toolbarButton-menuArrow-icon);
+ mask-image: var(--toolbarButton-menuArrow-icon);
+}
+
+.dropdownToolbarButton > select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ width: inherit;
+ height: 28px;
+ font-size: 12px;
+ color: var(--main-color);
+ margin: 0;
+ padding: 1px 0 2px;
+ padding-inline-start: 6px;
+ border: none;
+ background-color: var(--dropdown-btn-bg-color);
+}
+
+.dropdownToolbarButton > select:is(:hover, :focus-visible) {
+ background-color: var(--button-hover-color);
+ color: var(--toggled-btn-color);
+}
+
+.dropdownToolbarButton > select > option {
+ background: var(--doorhanger-bg-color);
+ color: var(--main-color);
+}
+
+.toolbarButtonSpacer {
+ width: 30px;
+ display: inline-block;
+ height: 1px;
+}
+
+:is(.toolbarButton, .secondaryToolbarButton, .treeItemToggler)::before,
+.dropdownToolbarButton::after {
+ /* All matching images have a size of 16x16
+ * All relevant containers have a size of 28x28 */
+ position: absolute;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+
+ content: "";
+ background-color: var(--toolbar-icon-bg-color);
+ -webkit-mask-size: cover;
+ mask-size: cover;
+}
+
+.dropdownToolbarButton:is(:hover, :focus-visible, :active)::after {
+ background-color: var(--toolbar-icon-hover-bg-color);
+}
+
+.toolbarButton::before {
+ opacity: var(--toolbar-icon-opacity);
+ top: 6px;
+ left: 6px;
+}
+
+.toolbarButton:is(:hover, :focus-visible)::before,
+.secondaryToolbarButton:is(:hover, :focus-visible)::before {
+ background-color: var(--toolbar-icon-hover-bg-color);
+}
+
+.secondaryToolbarButton::before {
+ opacity: var(--doorhanger-icon-opacity);
+ top: 5px;
+ inset-inline-start: 12px;
+}
+
+#sidebarToggle::before {
+ -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon);
+ mask-image: var(--toolbarButton-sidebarToggle-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+#secondaryToolbarToggle::before {
+ -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
+ mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+#backToHome::before {
+ -webkit-mask-image: var(--toolbarButton-backToHome-icon);
+ mask-image: var(--toolbarButton-backToHome-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+#findPrevious::before {
+ -webkit-mask-image: var(--findbarButton-previous-icon);
+ mask-image: var(--findbarButton-previous-icon);
+}
+
+#findNext::before {
+ -webkit-mask-image: var(--findbarButton-next-icon);
+ mask-image: var(--findbarButton-next-icon);
+}
+
+#previous::before {
+ -webkit-mask-image: var(--toolbarButton-pageUp-icon);
+ mask-image: var(--toolbarButton-pageUp-icon);
+}
+
+#next::before {
+ -webkit-mask-image: var(--toolbarButton-pageDown-icon);
+ mask-image: var(--toolbarButton-pageDown-icon);
+}
+
+#zoomOut::before {
+ -webkit-mask-image: var(--toolbarButton-zoomOut-icon);
+ mask-image: var(--toolbarButton-zoomOut-icon);
+}
+
+#zoomIn::before {
+ -webkit-mask-image: var(--toolbarButton-zoomIn-icon);
+ mask-image: var(--toolbarButton-zoomIn-icon);
+}
+
+#presentationMode::before {
+ -webkit-mask-image: var(--toolbarButton-presentationMode-icon);
+ mask-image: var(--toolbarButton-presentationMode-icon);
+}
+
+#editorFreeText::before {
+ -webkit-mask-image: var(--toolbarButton-editorFreeText-icon);
+ mask-image: var(--toolbarButton-editorFreeText-icon);
+}
+
+#editorInk::before {
+ -webkit-mask-image: var(--toolbarButton-editorInk-icon);
+ mask-image: var(--toolbarButton-editorInk-icon);
+}
+
+#editorStamp::before {
+ -webkit-mask-image: var(--toolbarButton-editorStamp-icon);
+ mask-image: var(--toolbarButton-editorStamp-icon);
+}
+
+#print::before,
+#secondaryPrint::before {
+ -webkit-mask-image: var(--toolbarButton-print-icon);
+ mask-image: var(--toolbarButton-print-icon);
+}
+
+:is(#openFile, #secondaryOpenFile)::before {
+ -webkit-mask-image: var(--toolbarButton-openFile-icon);
+ mask-image: var(--toolbarButton-openFile-icon);
+}
+
+:is(#backToHome, #secondaryBackToHome)::before {
+ -webkit-mask-image: var(--toolbarButton-backToHome-icon);
+ mask-image: var(--toolbarButton-backToHome-icon);
+}
+
+:is(#download, #secondaryDownload)::before {
+ -webkit-mask-image: var(--toolbarButton-download-icon);
+ mask-image: var(--toolbarButton-download-icon);
+}
+
+a.secondaryToolbarButton {
+ padding-top: 5px;
+ text-decoration: none;
+}
+
+a:is(.toolbarButton, .secondaryToolbarButton)[href="#"] {
+ opacity: 0.5;
+ pointer-events: none;
+}
+
+#viewBookmark::before {
+ -webkit-mask-image: var(--toolbarButton-bookmark-icon);
+ mask-image: var(--toolbarButton-bookmark-icon);
+}
+
+#viewThumbnail::before {
+ -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon);
+ mask-image: var(--toolbarButton-viewThumbnail-icon);
+}
+
+#viewOutline::before {
+ -webkit-mask-image: var(--toolbarButton-viewOutline-icon);
+ mask-image: var(--toolbarButton-viewOutline-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+#viewAttachments::before {
+ -webkit-mask-image: var(--toolbarButton-viewAttachments-icon);
+ mask-image: var(--toolbarButton-viewAttachments-icon);
+}
+
+#viewLayers::before {
+ -webkit-mask-image: var(--toolbarButton-viewLayers-icon);
+ mask-image: var(--toolbarButton-viewLayers-icon);
+}
+
+#currentOutlineItem::before {
+ -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon);
+ mask-image: var(--toolbarButton-currentOutlineItem-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+#viewFind::before {
+ -webkit-mask-image: var(--toolbarButton-search-icon);
+ mask-image: var(--toolbarButton-search-icon);
+}
+
+.pdfSidebarNotification::after {
+ position: absolute;
+ display: inline-block;
+ top: 2px;
+ inset-inline-end: 2px;
+ /* Create a filled circle, with a diameter of 9 pixels, using only CSS: */
+ content: "";
+ background-color: rgba(112, 219, 85, 1);
+ height: 9px;
+ width: 9px;
+ border-radius: 50%;
+}
+
+.secondaryToolbarButton {
+ position: relative;
+ margin: 0;
+ padding: 0 0 1px;
+ padding-inline-start: 36px;
+ height: auto;
+ min-height: 26px;
+ width: auto;
+ min-width: 100%;
+ text-align: start;
+ white-space: normal;
+ border-radius: 0;
+ box-sizing: border-box;
+ display: inline-block;
+}
+
+.secondaryToolbarButton > span {
+ padding-inline-end: 4px;
+}
+
+#firstPage::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon);
+ mask-image: var(--secondaryToolbarButton-firstPage-icon);
+}
+
+#lastPage::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon);
+ mask-image: var(--secondaryToolbarButton-lastPage-icon);
+}
+
+#pageRotateCcw::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
+ mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
+}
+
+#pageRotateCw::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon);
+ mask-image: var(--secondaryToolbarButton-rotateCw-icon);
+}
+
+#cursorSelectTool::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon);
+ mask-image: var(--secondaryToolbarButton-selectTool-icon);
+}
+
+#cursorHandTool::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon);
+ mask-image: var(--secondaryToolbarButton-handTool-icon);
+}
+
+#scrollPage::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon);
+ mask-image: var(--secondaryToolbarButton-scrollPage-icon);
+}
+
+#scrollVertical::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
+ mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
+}
+
+#scrollHorizontal::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
+ mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
+}
+
+#scrollWrapped::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
+ mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
+}
+
+#spreadNone::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon);
+ mask-image: var(--secondaryToolbarButton-spreadNone-icon);
+}
+
+#spreadOdd::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
+ mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
+}
+
+#spreadEven::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon);
+ mask-image: var(--secondaryToolbarButton-spreadEven-icon);
+}
+
+#documentProperties::before {
+ -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon);
+ mask-image: var(--secondaryToolbarButton-documentProperties-icon);
+}
+
+.verticalToolbarSeparator {
+ display: block;
+ margin: 5px 2px;
+ width: 1px;
+ height: 22px;
+ background-color: var(--separator-color);
+}
+
+.horizontalToolbarSeparator {
+ display: block;
+ margin: 6px 0;
+ height: 1px;
+ width: 100%;
+ background-color: var(--doorhanger-separator-color);
+}
+
+.toolbarField {
+ padding: 4px 7px;
+ margin: 3px 0;
+ border-radius: 2px;
+ background-color: var(--field-bg-color);
+ background-clip: padding-box;
+ border: 1px solid var(--field-border-color);
+ box-shadow: none;
+ color: var(--field-color);
+ font-size: 12px;
+ line-height: 16px;
+ outline: none;
+}
+
+.toolbarField[type="checkbox"] {
+ opacity: 0;
+ position: absolute !important;
+ left: 0;
+ margin: 10px 0 3px;
+ margin-inline-start: 7px;
+}
+
+#pageNumber {
+ -moz-appearance: textfield; /* hides the spinner in moz */
+ text-align: end;
+ width: 40px;
+ background-size: 0 0;
+ transition-property: none;
+}
+
+#pageNumber.visiblePageIsLoading {
+ background-image: var(--loading-icon);
+ background-repeat: no-repeat;
+ background-position: calc(50% - 42% * var(--dir-factor));
+ background-size: 16px 16px;
+ /* Using a delay with background-image doesn't work,
+ consequently we use background-size. */
+ transition-property: background-size;
+ transition-delay: var(--loading-icon-delay);
+}
+
+#pageNumber::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+}
+
+.toolbarField:focus {
+ border-color: #0a84ff;
+}
+
+.toolbarLabel {
+ min-width: 16px;
+ padding: 7px;
+ margin: 2px;
+ border-radius: 2px;
+ color: var(--main-color);
+ font-size: 12px;
+ line-height: 14px;
+ text-align: left;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ cursor: default;
+}
+
+#numPages.toolbarLabel {
+ padding-inline-start: 3px;
+}
+
+#thumbnailView,
+#outlineView,
+#attachmentsView,
+#layersView {
+ position: absolute;
+ width: calc(100% - 8px);
+ inset-block: 0;
+ padding: 4px 4px 0;
+ overflow: auto;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+#thumbnailView {
+ width: calc(100% - 60px);
+ padding: 10px 30px 0;
+}
+
+#thumbnailView > a:is(:active, :focus) {
+ outline: 0;
+}
+
+.thumbnail {
+ /* Define these variables here, and not in :root, since the individual
+ thumbnails may have different sizes. */
+ --thumbnail-width: 0;
+ --thumbnail-height: 0;
+
+ float: var(--inline-start);
+ width: var(--thumbnail-width);
+ height: var(--thumbnail-height);
+ margin: 0 10px 5px;
+ padding: 1px;
+ border: 7px solid transparent;
+ border-radius: 2px;
+}
+
+#thumbnailView > a:last-of-type > .thumbnail {
+ margin-bottom: 10px;
+}
+
+a:focus > .thumbnail,
+.thumbnail:hover {
+ border-color: var(--thumbnail-hover-color);
+}
+
+.thumbnail.selected {
+ border-color: var(--thumbnail-selected-color) !important;
+}
+
+.thumbnailImage {
+ width: var(--thumbnail-width);
+ height: var(--thumbnail-height);
+ opacity: 0.9;
+}
+
+a:focus > .thumbnail > .thumbnailImage,
+.thumbnail:hover > .thumbnailImage {
+ opacity: 0.95;
+}
+
+.thumbnail.selected > .thumbnailImage {
+ opacity: 1 !important;
+}
+
+.thumbnail:not([data-loaded]) > .thumbnailImage {
+ width: calc(var(--thumbnail-width) - 2px);
+ height: calc(var(--thumbnail-height) - 2px);
+ border: 1px dashed rgba(132, 132, 132, 1);
+}
+
+.treeWithDeepNesting > .treeItem,
+.treeItem > .treeItems {
+ margin-inline-start: 20px;
+}
+
+.treeItem > a {
+ text-decoration: none;
+ display: inline-block;
+ /* Subtract the right padding (left, in RTL mode) of the container: */
+ min-width: calc(100% - 4px);
+ height: auto;
+ margin-bottom: 1px;
+ padding: 2px 0 5px;
+ padding-inline-start: 4px;
+ border-radius: 2px;
+ color: var(--treeitem-color);
+ font-size: 13px;
+ line-height: 15px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ white-space: normal;
+ cursor: pointer;
+}
+
+#layersView .treeItem > a * {
+ cursor: pointer;
+}
+
+#layersView .treeItem > a > label {
+ padding-inline-start: 4px;
+}
+
+#layersView .treeItem > a > label > input {
+ float: var(--inline-start);
+ margin-top: 1px;
+}
+
+.treeItemToggler {
+ position: relative;
+ float: var(--inline-start);
+ height: 0;
+ width: 0;
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.treeItemToggler::before {
+ inset-inline-end: 4px;
+ -webkit-mask-image: var(--treeitem-expanded-icon);
+ mask-image: var(--treeitem-expanded-icon);
+}
+
+.treeItemToggler.treeItemsHidden::before {
+ -webkit-mask-image: var(--treeitem-collapsed-icon);
+ mask-image: var(--treeitem-collapsed-icon);
+ transform: scaleX(var(--dir-factor));
+}
+
+.treeItemToggler.treeItemsHidden ~ .treeItems {
+ display: none;
+}
+
+.treeItem.selected > a {
+ background-color: var(--treeitem-selected-bg-color);
+ color: var(--treeitem-selected-color);
+}
+
+.treeItemToggler:hover,
+.treeItemToggler:hover + a,
+.treeItemToggler:hover ~ .treeItems,
+.treeItem > a:hover {
+ background-color: var(--treeitem-bg-color);
+ background-clip: padding-box;
+ border-radius: 2px;
+ color: var(--treeitem-hover-color);
+}
+
+.dialogButton {
+ width: auto;
+ margin: 3px 4px 2px !important;
+ padding: 2px 11px;
+ color: var(--main-color);
+ background-color: var(--dialog-button-bg-color);
+ border: var(--dialog-button-border) !important;
+}
+
+dialog {
+ margin: auto;
+ padding: 15px;
+ border-spacing: 4px;
+ color: var(--main-color);
+ font: message-box;
+ font-size: 12px;
+ line-height: 14px;
+ background-color: var(--doorhanger-bg-color);
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ border-radius: 4px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+}
+
+dialog::backdrop {
+ background-color: rgba(0, 0, 0, 0.2);
+}
+
+dialog > .row {
+ display: table-row;
+}
+
+dialog > .row > * {
+ display: table-cell;
+}
+
+dialog .toolbarField {
+ margin: 5px 0;
+}
+
+dialog .separator {
+ display: block;
+ margin: 4px 0;
+ height: 1px;
+ width: 100%;
+ background-color: var(--separator-color);
+}
+
+dialog .buttonRow {
+ text-align: center;
+ vertical-align: middle;
+}
+
+dialog :link {
+ color: rgba(255, 255, 255, 1);
+}
+
+#passwordDialog {
+ text-align: center;
+}
+
+#passwordDialog .toolbarField {
+ width: 200px;
+}
+
+#documentPropertiesDialog {
+ text-align: left;
+}
+
+#documentPropertiesDialog .row > * {
+ min-width: 100px;
+ text-align: start;
+}
+
+#documentPropertiesDialog .row > span {
+ width: 125px;
+ word-wrap: break-word;
+}
+
+#documentPropertiesDialog .row > p {
+ max-width: 225px;
+ word-wrap: break-word;
+}
+
+#documentPropertiesDialog .buttonRow {
+ margin-top: 10px;
+}
+
+.grab-to-pan-grab {
+ cursor: grab !important;
+}
+
+.grab-to-pan-grab
+*:not(input):not(textarea):not(button):not(select):not(:link) {
+ cursor: inherit !important;
+}
+
+.grab-to-pan-grab:active,
+.grab-to-pan-grabbing {
+ cursor: grabbing !important;
+}
+
+.grab-to-pan-grabbing {
+ position: fixed;
+ background: rgba(0, 0, 0, 0);
+ display: block;
+ inset: 0;
+ overflow: hidden;
+ z-index: 50000; /* should be higher than anything else in PDF.js! */
+}
+
+@page {
+ margin: 0;
+}
+
+#printContainer {
+ display: none;
+}
+
+@media print {
+ body {
+ background: rgba(0, 0, 0, 0) none;
+ }
+
+ body[data-pdfjsprinting] #outerContainer {
+ display: none;
+ }
+
+ body[data-pdfjsprinting] #printContainer {
+ display: block;
+ }
+
+ #printContainer {
+ height: 100%;
+ }
+
+ /* wrapper around (scaled) print canvas elements */
+ #printContainer > .printedPage {
+ page-break-after: always;
+ page-break-inside: avoid;
+
+ /* The wrapper always cover the whole page. */
+ height: 100%;
+ width: 100%;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ }
+
+ #printContainer > .xfaPrintedPage .xfaPage {
+ position: absolute;
+ }
+
+ #printContainer > .xfaPrintedPage {
+ page-break-after: always;
+ page-break-inside: avoid;
+ width: 100%;
+ height: 100%;
+ position: relative;
+ }
+
+ #printContainer > .printedPage :is(canvas, img) {
+ /* The intrinsic canvas / image size will make sure that we fit the page. */
+ max-width: 100%;
+ max-height: 100%;
+
+ direction: ltr;
+ display: block;
+ }
+}
+
+.visibleLargeView,
+.visibleMediumView {
+ display: none;
+}
+
+@media all and (max-width: 900px) {
+ #toolbarViewerMiddle {
+ display: table;
+ margin: auto;
+ left: auto;
+ position: inherit;
+ transform: none;
+ }
+}
+
+@media all and (max-width: 840px) {
+ #sidebarContainer {
+ background-color: var(--sidebar-narrow-bg-color);
+ }
+
+ #outerContainer.sidebarOpen #viewerContainer {
+ inset-inline-start: 0 !important;
+ }
+}
+
+@media all and (max-width: 820px) {
+ #outerContainer .hiddenLargeView {
+ display: none;
+ }
+
+ #outerContainer .visibleLargeView {
+ display: inherit;
+ }
+}
+
+@media all and (max-width: 750px) {
+ #outerContainer .hiddenMediumView {
+ display: none;
+ }
+
+ #outerContainer .visibleMediumView {
+ display: inherit;
+ }
+}
+
+@media all and (max-width: 690px) {
+ .hiddenSmallView,
+ .hiddenSmallView * {
+ display: none;
+ }
+
+ .toolbarButtonSpacer {
+ width: 0;
+ }
+
+ .findbar {
+ inset-inline-start: 34px;
+ }
+}
+
+@media all and (max-width: 560px) {
+ #scaleSelectContainer {
+ display: none;
+ }
+}
diff --git a/src/main/resources/static/pdfjs/example/Welcome.pdf b/src/main/resources/static/pdfjs/example/Welcome.pdf
new file mode 100644
index 000000000..f3812141f
Binary files /dev/null and b/src/main/resources/static/pdfjs/example/Welcome.pdf differ
diff --git a/src/main/resources/static/pdfjs/example/Welcome_old.pdf b/src/main/resources/static/pdfjs/example/Welcome_old.pdf
new file mode 100644
index 000000000..baa49de39
Binary files /dev/null and b/src/main/resources/static/pdfjs/example/Welcome_old.pdf differ
diff --git a/src/main/resources/static/pdfjs/images/altText_add.svg b/src/main/resources/static/pdfjs/images/altText_add.svg
new file mode 100644
index 000000000..1cf111d35
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/altText_add.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/altText_done.svg b/src/main/resources/static/pdfjs/images/altText_done.svg
new file mode 100644
index 000000000..95c29af4c
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/altText_done.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-check.svg b/src/main/resources/static/pdfjs/images/annotation-check.svg
new file mode 100644
index 000000000..b6849b305
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-check.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-comment.svg b/src/main/resources/static/pdfjs/images/annotation-comment.svg
new file mode 100644
index 000000000..83fbfb44c
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-comment.svg
@@ -0,0 +1,16 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-help.svg b/src/main/resources/static/pdfjs/images/annotation-help.svg
new file mode 100644
index 000000000..81a00ac16
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-help.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-insert.svg b/src/main/resources/static/pdfjs/images/annotation-insert.svg
new file mode 100644
index 000000000..ca9e9e20e
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-insert.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-key.svg b/src/main/resources/static/pdfjs/images/annotation-key.svg
new file mode 100644
index 000000000..733edc0b8
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-key.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg b/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg
new file mode 100644
index 000000000..e75f98077
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-noicon.svg b/src/main/resources/static/pdfjs/images/annotation-noicon.svg
new file mode 100644
index 000000000..21423057a
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-noicon.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-note.svg b/src/main/resources/static/pdfjs/images/annotation-note.svg
new file mode 100644
index 000000000..f5f2c16a5
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-note.svg
@@ -0,0 +1,42 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-paperclip.svg b/src/main/resources/static/pdfjs/images/annotation-paperclip.svg
new file mode 100644
index 000000000..a93960b20
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-paperclip.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-paragraph.svg b/src/main/resources/static/pdfjs/images/annotation-paragraph.svg
new file mode 100644
index 000000000..be06ce9b3
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-paragraph.svg
@@ -0,0 +1,16 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/annotation-pushpin.svg b/src/main/resources/static/pdfjs/images/annotation-pushpin.svg
new file mode 100644
index 000000000..325f9d3f0
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/annotation-pushpin.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg b/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg
new file mode 100644
index 000000000..42ba1f6aa
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/cursor-editorInk.svg b/src/main/resources/static/pdfjs/images/cursor-editorInk.svg
new file mode 100644
index 000000000..249f4634a
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/cursor-editorInk.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/main/resources/static/pdfjs/images/findbarButton-next.svg b/src/main/resources/static/pdfjs/images/findbarButton-next.svg
new file mode 100644
index 000000000..dba19fe33
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/findbarButton-next.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/findbarButton-previous.svg b/src/main/resources/static/pdfjs/images/findbarButton-previous.svg
new file mode 100644
index 000000000..341370598
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/findbarButton-previous.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg b/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg
new file mode 100644
index 000000000..0e82606b6
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg b/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg
new file mode 100644
index 000000000..1aa278f21
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/main/resources/static/pdfjs/images/loading-dark.svg b/src/main/resources/static/pdfjs/images/loading-dark.svg
new file mode 100644
index 000000000..cec39a877
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/loading-dark.svg
@@ -0,0 +1,39 @@
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/images/loading-icon.gif b/src/main/resources/static/pdfjs/images/loading-icon.gif
new file mode 100644
index 000000000..1c72ebb55
Binary files /dev/null and b/src/main/resources/static/pdfjs/images/loading-icon.gif differ
diff --git a/src/main/resources/static/pdfjs/images/loading.svg b/src/main/resources/static/pdfjs/images/loading.svg
new file mode 100644
index 000000000..d63eaf01d
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/loading.svg
@@ -0,0 +1,24 @@
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-documentProperties.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-documentProperties.svg
new file mode 100644
index 000000000..2fc1915e6
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-documentProperties.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg
new file mode 100644
index 000000000..42fb45eb0
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg
new file mode 100644
index 000000000..a67b3c501
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg
new file mode 100644
index 000000000..ab9a4dea3
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg
new file mode 100644
index 000000000..0cf4058b4
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg
new file mode 100644
index 000000000..243f809f5
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg
new file mode 100644
index 000000000..955cae027
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg
new file mode 100644
index 000000000..4f4762eaf
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg
new file mode 100644
index 000000000..8713d497b
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg
new file mode 100644
index 000000000..162db0b20
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg
new file mode 100644
index 000000000..1f3f22ce8
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg
new file mode 100644
index 000000000..c51c427d4
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg
new file mode 100644
index 000000000..e768bf949
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg
new file mode 100644
index 000000000..1788cae10
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolBarButton-home.svg b/src/main/resources/static/pdfjs/images/toolBarButton-home.svg
new file mode 100644
index 000000000..5184bc11d
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolBarButton-home.svg
@@ -0,0 +1,20 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg b/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg
new file mode 100644
index 000000000..e87111782
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg b/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg
new file mode 100644
index 000000000..cfdb8f696
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-download.svg b/src/main/resources/static/pdfjs/images/toolbarButton-download.svg
new file mode 100644
index 000000000..57a847d2c
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-download.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg
new file mode 100644
index 000000000..247409dcb
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg
new file mode 100644
index 000000000..7586ebcd2
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg
new file mode 100644
index 000000000..81b958194
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg b/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg
new file mode 100644
index 000000000..a9a1c68a8
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg b/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg
new file mode 100644
index 000000000..946baf649
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg b/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg
new file mode 100644
index 000000000..2de1fbdc1
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg b/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg
new file mode 100644
index 000000000..bcc315d7a
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg b/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg
new file mode 100644
index 000000000..57a7bb38a
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-print.svg b/src/main/resources/static/pdfjs/images/toolbarButton-print.svg
new file mode 100644
index 000000000..a20be2532
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-print.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-search.svg b/src/main/resources/static/pdfjs/images/toolbarButton-search.svg
new file mode 100644
index 000000000..d213e1b96
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-search.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg b/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg
new file mode 100644
index 000000000..93cbadf0c
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg b/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg
new file mode 100644
index 000000000..03a2399fe
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg
new file mode 100644
index 000000000..9e8250951
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg
new file mode 100644
index 000000000..817e4e00a
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg
new file mode 100644
index 000000000..8a031fc53
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg
new file mode 100644
index 000000000..b34f5c9bc
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg b/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg
new file mode 100644
index 000000000..595e0d59b
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg b/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg
new file mode 100644
index 000000000..fe55e30a0
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg b/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg
new file mode 100644
index 000000000..084d133f6
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/images/treeitem-expanded.svg b/src/main/resources/static/pdfjs/images/treeitem-expanded.svg
new file mode 100644
index 000000000..ca2dba2f6
--- /dev/null
+++ b/src/main/resources/static/pdfjs/images/treeitem-expanded.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/js/viewer.js b/src/main/resources/static/pdfjs/js/viewer.js
new file mode 100644
index 000000000..f533f24be
--- /dev/null
+++ b/src/main/resources/static/pdfjs/js/viewer.js
@@ -0,0 +1,14902 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * JavaScript code in this page
+ *
+ * Copyright 2023 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * JavaScript code in this page
+ */
+
+/******/
+(() => { // webpackBootstrap
+ /******/
+ "use strict";
+ /******/
+ var __webpack_modules__ = ([
+ /* 0 */,
+ /* 1 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.GenericCom = void 0;
+ var _app = __webpack_require__(2);
+ var _preferences = __webpack_require__(42);
+ var _download_manager = __webpack_require__(43);
+ var _genericl10n = __webpack_require__(44);
+ var _generic_scripting = __webpack_require__(46);
+ ;
+ const GenericCom = {};
+ exports.GenericCom = GenericCom;
+
+ class GenericPreferences extends _preferences.BasePreferences {
+ async _writeToStorage(prefObj) {
+ localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj));
+ }
+
+ async _readFromStorage(prefObj) {
+ return JSON.parse(localStorage.getItem("pdfjs.preferences"));
+ }
+ }
+
+ class GenericExternalServices extends _app.DefaultExternalServices {
+ static createDownloadManager() {
+ return new _download_manager.DownloadManager();
+ }
+
+ static createPreferences() {
+ return new GenericPreferences();
+ }
+
+ static createL10n({
+ locale = "en-US"
+ }) {
+ return new _genericl10n.GenericL10n(locale);
+ }
+
+ static createScripting({
+ sandboxBundleSrc
+ }) {
+ return new _generic_scripting.GenericScripting(sandboxBundleSrc);
+ }
+ }
+
+ _app.PDFViewerApplication.externalServices = GenericExternalServices;
+
+ /***/
+ }),
+ /* 2 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+ var _app_options = __webpack_require__(5);
+ var _event_utils = __webpack_require__(6);
+ var _pdf_link_service = __webpack_require__(7);
+ var _webAlt_text_manager = __webpack_require__(8);
+ var _webAnnotation_editor_params = __webpack_require__(9);
+ var _overlay_manager = __webpack_require__(10);
+ var _password_prompt = __webpack_require__(11);
+ var _webPdf_attachment_viewer = __webpack_require__(12);
+ var _webPdf_cursor_tools = __webpack_require__(14);
+ var _webPdf_document_properties = __webpack_require__(16);
+ var _webPdf_find_bar = __webpack_require__(17);
+ var _pdf_find_controller = __webpack_require__(18);
+ var _pdf_history = __webpack_require__(20);
+ var _webPdf_layer_viewer = __webpack_require__(21);
+ var _webPdf_outline_viewer = __webpack_require__(22);
+ var _webPdf_presentation_mode = __webpack_require__(23);
+ var _pdf_rendering_queue = __webpack_require__(24);
+ var _pdf_scripting_manager = __webpack_require__(25);
+ var _webPdf_sidebar = __webpack_require__(26);
+ var _webPdf_thumbnail_viewer = __webpack_require__(27);
+ var _pdf_viewer = __webpack_require__(29);
+ var _webSecondary_toolbar = __webpack_require__(39);
+ var _webToolbar = __webpack_require__(40);
+ var _view_history = __webpack_require__(41);
+ const FORCE_PAGES_LOADED_TIMEOUT = 10000;
+ const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000;
+ const ViewOnLoad = {
+ UNKNOWN: -1,
+ PREVIOUS: 0,
+ INITIAL: 1
+ };
+ const ViewerCssTheme = {
+ AUTOMATIC: 0,
+ LIGHT: 1,
+ DARK: 2
+ };
+
+ class DefaultExternalServices {
+ constructor() {
+ throw new Error("Cannot initialize DefaultExternalServices.");
+ }
+
+ static updateFindControlState(data) {
+ }
+
+ static updateFindMatchesCount(data) {
+ }
+
+ static initPassiveLoading(callbacks) {
+ }
+
+ static reportTelemetry(data) {
+ }
+
+ static createDownloadManager() {
+ throw new Error("Not implemented: createDownloadManager");
+ }
+
+ static createPreferences() {
+ throw new Error("Not implemented: createPreferences");
+ }
+
+ static createL10n(options) {
+ throw new Error("Not implemented: createL10n");
+ }
+
+ static createScripting(options) {
+ throw new Error("Not implemented: createScripting");
+ }
+
+ static get supportsPinchToZoom() {
+ return (0, _pdfjsLib.shadow)(this, "supportsPinchToZoom", true);
+ }
+
+ static get supportsIntegratedFind() {
+ return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false);
+ }
+
+ static get supportsDocumentFonts() {
+ return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true);
+ }
+
+ static get supportedMouseWheelZoomModifierKeys() {
+ return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", {
+ ctrlKey: true,
+ metaKey: true
+ });
+ }
+
+ static get isInAutomation() {
+ return (0, _pdfjsLib.shadow)(this, "isInAutomation", false);
+ }
+
+ static updateEditorStates(data) {
+ throw new Error("Not implemented: updateEditorStates");
+ }
+
+ static get canvasMaxAreaInBytes() {
+ return (0, _pdfjsLib.shadow)(this, "canvasMaxAreaInBytes", -1);
+ }
+
+ static getNimbusExperimentData() {
+ return (0, _pdfjsLib.shadow)(this, "getNimbusExperimentData", Promise.resolve(null));
+ }
+ }
+
+ exports.DefaultExternalServices = DefaultExternalServices;
+ const PDFViewerApplication = {
+ initialBookmark: document.location.hash.substring(1),
+ _initializedCapability: new _pdfjsLib.PromiseCapability(),
+ appConfig: null,
+ pdfDocument: null,
+ pdfLoadingTask: null,
+ printService: null,
+ pdfViewer: null,
+ pdfThumbnailViewer: null,
+ pdfRenderingQueue: null,
+ pdfPresentationMode: null,
+ pdfDocumentProperties: null,
+ pdfLinkService: null,
+ pdfHistory: null,
+ pdfSidebar: null,
+ pdfOutlineViewer: null,
+ pdfAttachmentViewer: null,
+ pdfLayerViewer: null,
+ pdfCursorTools: null,
+ pdfScriptingManager: null,
+ store: null,
+ downloadManager: null,
+ overlayManager: null,
+ preferences: null,
+ toolbar: null,
+ secondaryToolbar: null,
+ eventBus: null,
+ l10n: null,
+ annotationEditorParams: null,
+ isInitialViewSet: false,
+ downloadComplete: false,
+ isViewerEmbedded: window.parent !== window,
+ url: "",
+ baseUrl: "",
+ _downloadUrl: "",
+ externalServices: DefaultExternalServices,
+ _boundEvents: Object.create(null),
+ documentInfo: null,
+ metadata: null,
+ _contentDispositionFilename: null,
+ _contentLength: null,
+ _saveInProgress: false,
+ _wheelUnusedTicks: 0,
+ _wheelUnusedFactor: 1,
+ _touchUnusedTicks: 0,
+ _touchUnusedFactor: 1,
+ _PDFBug: null,
+ _hasAnnotationEditors: false,
+ _title: document.title,
+ _printAnnotationStoragePromise: null,
+ _touchInfo: null,
+ _isCtrlKeyDown: false,
+ _nimbusDataPromise: null,
+ async initialize(appConfig) {
+ this.preferences = this.externalServices.createPreferences();
+ this.appConfig = appConfig;
+ await this._initializeOptions();
+ this._forceCssTheme();
+ await this._initializeL10n();
+ if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) {
+ _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP);
+ }
+ await this._initializeViewerComponents();
+ this.bindEvents();
+ this.bindWindowEvents();
+ const appContainer = appConfig.appContainer || document.documentElement;
+ this.l10n.translate(appContainer).then(() => {
+ this.eventBus.dispatch("localized", {
+ source: this
+ });
+ });
+ this._initializedCapability.resolve();
+ },
+ async _initializeOptions() {
+ if (_app_options.AppOptions.get("disablePreferences")) {
+ if (_app_options.AppOptions.get("pdfBugEnabled")) {
+ await this._parseHashParams();
+ }
+ return;
+ }
+ if (_app_options.AppOptions._hasUserOptions()) {
+ console.warn("_initializeOptions: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.');
+ }
+ try {
+ _app_options.AppOptions.setAll(await this.preferences.getAll());
+ } catch (reason) {
+ console.error(`_initializeOptions: "${reason.message}".`);
+ }
+ if (_app_options.AppOptions.get("pdfBugEnabled")) {
+ await this._parseHashParams();
+ }
+ },
+ async _parseHashParams() {
+ const hash = document.location.hash.substring(1);
+ if (!hash) {
+ return;
+ }
+ const {
+ mainContainer,
+ viewerContainer
+ } = this.appConfig,
+ params = (0, _ui_utils.parseQueryString)(hash);
+ if (params.get("disableworker") === "true") {
+ try {
+ await loadFakeWorker();
+ } catch (ex) {
+ console.error(`_parseHashParams: "${ex.message}".`);
+ }
+ }
+ if (params.has("disablerange")) {
+ _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true");
+ }
+ if (params.has("disablestream")) {
+ _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true");
+ }
+ if (params.has("disableautofetch")) {
+ _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true");
+ }
+ if (params.has("disablefontface")) {
+ _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true");
+ }
+ if (params.has("disablehistory")) {
+ _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true");
+ }
+ if (params.has("verbosity")) {
+ _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0);
+ }
+ if (params.has("textlayer")) {
+ switch (params.get("textlayer")) {
+ case "off":
+ _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE);
+ break;
+ case "visible":
+ case "shadow":
+ case "hover":
+ viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`);
+ try {
+ await loadPDFBug(this);
+ this._PDFBug.loadCSS();
+ } catch (ex) {
+ console.error(`_parseHashParams: "${ex.message}".`);
+ }
+ break;
+ }
+ }
+ if (params.has("pdfbug")) {
+ _app_options.AppOptions.set("pdfBug", true);
+ _app_options.AppOptions.set("fontExtraProperties", true);
+ const enabled = params.get("pdfbug").split(",");
+ try {
+ await loadPDFBug(this);
+ this._PDFBug.init(mainContainer, enabled);
+ } catch (ex) {
+ console.error(`_parseHashParams: "${ex.message}".`);
+ }
+ }
+ if (params.has("locale")) {
+ _app_options.AppOptions.set("locale", params.get("locale"));
+ }
+ },
+ async _initializeL10n() {
+ this.l10n = this.externalServices.createL10n({
+ locale: _app_options.AppOptions.get("locale")
+ });
+ const dir = await this.l10n.getDirection();
+ document.getElementsByTagName("html")[0].dir = dir;
+ },
+ _forceCssTheme() {
+ const cssTheme = _app_options.AppOptions.get("viewerCssTheme");
+ if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) {
+ return;
+ }
+ try {
+ const styleSheet = document.styleSheets[0];
+ const cssRules = styleSheet?.cssRules || [];
+ for (let i = 0, ii = cssRules.length; i < ii; i++) {
+ const rule = cssRules[i];
+ if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") {
+ if (cssTheme === ViewerCssTheme.LIGHT) {
+ styleSheet.deleteRule(i);
+ return;
+ }
+ const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText);
+ if (darkRules?.[1]) {
+ styleSheet.deleteRule(i);
+ styleSheet.insertRule(darkRules[1], i);
+ }
+ return;
+ }
+ }
+ } catch (reason) {
+ console.error(`_forceCssTheme: "${reason?.message}".`);
+ }
+ },
+ async _initializeViewerComponents() {
+ const {
+ appConfig,
+ externalServices,
+ l10n
+ } = this;
+ const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus();
+ this.eventBus = eventBus;
+ this.overlayManager = new _overlay_manager.OverlayManager();
+ const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
+ pdfRenderingQueue.onIdle = this._cleanup.bind(this);
+ this.pdfRenderingQueue = pdfRenderingQueue;
+ const pdfLinkService = new _pdf_link_service.PDFLinkService({
+ eventBus,
+ externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"),
+ externalLinkRel: _app_options.AppOptions.get("externalLinkRel"),
+ ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom")
+ });
+ this.pdfLinkService = pdfLinkService;
+ const downloadManager = externalServices.createDownloadManager();
+ this.downloadManager = downloadManager;
+ const findController = new _pdf_find_controller.PDFFindController({
+ linkService: pdfLinkService,
+ eventBus,
+ updateMatchesCountOnProgress: true
+ });
+ this.findController = findController;
+ const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({
+ eventBus,
+ sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"),
+ externalServices,
+ docProperties: this._scriptingDocProperties.bind(this)
+ });
+ this.pdfScriptingManager = pdfScriptingManager;
+ const container = appConfig.mainContainer,
+ viewer = appConfig.viewerContainer;
+ const annotationEditorMode = _app_options.AppOptions.get("annotationEditorMode");
+ const isOffscreenCanvasSupported = _app_options.AppOptions.get("isOffscreenCanvasSupported") && _pdfjsLib.FeatureTest.isOffscreenCanvasSupported;
+ const pageColors = _app_options.AppOptions.get("forcePageColors") || window.matchMedia("(forced-colors: active)").matches ? {
+ background: _app_options.AppOptions.get("pageColorsBackground"),
+ foreground: _app_options.AppOptions.get("pageColorsForeground")
+ } : null;
+ const altTextManager = appConfig.altTextDialog ? new _webAlt_text_manager.AltTextManager(appConfig.altTextDialog, container, this.overlayManager, eventBus) : null;
+ const pdfViewer = new _pdf_viewer.PDFViewer({
+ container,
+ viewer,
+ eventBus,
+ renderingQueue: pdfRenderingQueue,
+ linkService: pdfLinkService,
+ downloadManager,
+ altTextManager,
+ findController,
+ scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager,
+ l10n,
+ textLayerMode: _app_options.AppOptions.get("textLayerMode"),
+ annotationMode: _app_options.AppOptions.get("annotationMode"),
+ annotationEditorMode,
+ imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"),
+ enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"),
+ isOffscreenCanvasSupported,
+ maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"),
+ enablePermissions: _app_options.AppOptions.get("enablePermissions"),
+ pageColors
+ });
+ this.pdfViewer = pdfViewer;
+ pdfRenderingQueue.setViewer(pdfViewer);
+ pdfLinkService.setViewer(pdfViewer);
+ pdfScriptingManager.setViewer(pdfViewer);
+ if (appConfig.sidebar?.thumbnailView) {
+ this.pdfThumbnailViewer = new _webPdf_thumbnail_viewer.PDFThumbnailViewer({
+ container: appConfig.sidebar.thumbnailView,
+ eventBus,
+ renderingQueue: pdfRenderingQueue,
+ linkService: pdfLinkService,
+ l10n,
+ pageColors
+ });
+ pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
+ }
+ if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) {
+ this.pdfHistory = new _pdf_history.PDFHistory({
+ linkService: pdfLinkService,
+ eventBus
+ });
+ pdfLinkService.setHistory(this.pdfHistory);
+ }
+ if (!this.supportsIntegratedFind && appConfig.findBar) {
+ this.findBar = new _webPdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, l10n);
+ }
+ if (appConfig.annotationEditorParams) {
+ if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) {
+ if (_app_options.AppOptions.get("enableStampEditor") && isOffscreenCanvasSupported) {
+ appConfig.toolbar?.editorStampButton?.classList.remove("hidden");
+ }
+ this.annotationEditorParams = new _webAnnotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus);
+ } else {
+ for (const id of ["editorModeButtons", "editorModeSeparator"]) {
+ document.getElementById(id)?.classList.add("hidden");
+ }
+ }
+ }
+ if (appConfig.documentProperties) {
+ this.pdfDocumentProperties = new _webPdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, l10n, () => this._docFilename);
+ }
+ if (appConfig.secondaryToolbar?.cursorHandToolButton) {
+ this.pdfCursorTools = new _webPdf_cursor_tools.PDFCursorTools({
+ container,
+ eventBus,
+ cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad")
+ });
+ }
+ if (appConfig.toolbar) {
+ this.toolbar = new _webToolbar.Toolbar(appConfig.toolbar, eventBus, l10n);
+ }
+ if (appConfig.secondaryToolbar) {
+ this.secondaryToolbar = new _webSecondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus);
+ }
+ if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) {
+ this.pdfPresentationMode = new _webPdf_presentation_mode.PDFPresentationMode({
+ container,
+ pdfViewer,
+ eventBus
+ });
+ }
+ if (appConfig.passwordOverlay) {
+ this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, l10n, this.isViewerEmbedded);
+ }
+ if (appConfig.sidebar?.outlineView) {
+ this.pdfOutlineViewer = new _webPdf_outline_viewer.PDFOutlineViewer({
+ container: appConfig.sidebar.outlineView,
+ eventBus,
+ linkService: pdfLinkService,
+ downloadManager
+ });
+ }
+ if (appConfig.sidebar?.attachmentsView) {
+ this.pdfAttachmentViewer = new _webPdf_attachment_viewer.PDFAttachmentViewer({
+ container: appConfig.sidebar.attachmentsView,
+ eventBus,
+ downloadManager
+ });
+ }
+ if (appConfig.sidebar?.layersView) {
+ this.pdfLayerViewer = new _webPdf_layer_viewer.PDFLayerViewer({
+ container: appConfig.sidebar.layersView,
+ eventBus,
+ l10n
+ });
+ }
+ if (appConfig.sidebar) {
+ this.pdfSidebar = new _webPdf_sidebar.PDFSidebar({
+ elements: appConfig.sidebar,
+ eventBus,
+ l10n
+ });
+ this.pdfSidebar.onToggled = this.forceRendering.bind(this);
+ this.pdfSidebar.onUpdateThumbnails = () => {
+ for (const pageView of pdfViewer.getCachedPageViews()) {
+ if (pageView.renderingState === _ui_utils.RenderingStates.FINISHED) {
+ this.pdfThumbnailViewer.getThumbnail(pageView.id - 1)?.setImage(pageView);
+ }
+ }
+ this.pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
+ };
+ }
+ },
+ async run(config) {
+ await this.initialize(config);
+ const {
+ appConfig,
+ eventBus
+ } = this;
+ let file;
+ const queryString = document.location.search.substring(1);
+ const params = (0, _ui_utils.parseQueryString)(queryString);
+ file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl");
+ validateFileURL(file);
+ const fileInput = appConfig.openFileInput;
+ fileInput.value = null;
+ fileInput.addEventListener("change", function (evt) {
+ const {
+ files
+ } = evt.target;
+ if (!files || files.length === 0) {
+ return;
+ }
+ eventBus.dispatch("fileinputchange", {
+ source: this,
+ fileInput: evt.target
+ });
+ });
+ appConfig.mainContainer.addEventListener("dragover", function (evt) {
+ evt.preventDefault();
+ evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move";
+ });
+ appConfig.mainContainer.addEventListener("drop", function (evt) {
+ evt.preventDefault();
+ const {
+ files
+ } = evt.dataTransfer;
+ if (!files || files.length === 0) {
+ return;
+ }
+ eventBus.dispatch("fileinputchange", {
+ source: this,
+ fileInput: evt.dataTransfer
+ });
+ });
+ if (!this.supportsDocumentFonts) {
+ _app_options.AppOptions.set("disableFontFace", true);
+ this.l10n.get("web_fonts_disabled").then(msg => {
+ console.warn(msg);
+ });
+ }
+ if (!this.supportsPrinting) {
+ appConfig.toolbar?.print?.classList.add("hidden");
+ appConfig.secondaryToolbar?.printButton.classList.add("hidden");
+ }
+ if (!this.supportsFullscreen) {
+ appConfig.secondaryToolbar?.presentationModeButton.classList.add("hidden");
+ }
+ if (this.supportsIntegratedFind) {
+ appConfig.toolbar?.viewFind?.classList.add("hidden");
+ }
+ appConfig.mainContainer.addEventListener("transitionend", function (evt) {
+ if (evt.target === this) {
+ eventBus.dispatch("resize", {
+ source: this
+ });
+ }
+ }, true);
+ if (file) {
+ this.open({
+ url: file
+ });
+ } else {
+ this._hideViewBookmark();
+ }
+ },
+ get initialized() {
+ return this._initializedCapability.settled;
+ },
+ get initializedPromise() {
+ return this._initializedCapability.promise;
+ },
+ zoomIn(steps, scaleFactor) {
+ if (this.pdfViewer.isInPresentationMode) {
+ return;
+ }
+ this.pdfViewer.increaseScale({
+ drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
+ steps,
+ scaleFactor
+ });
+ },
+ zoomOut(steps, scaleFactor) {
+ if (this.pdfViewer.isInPresentationMode) {
+ return;
+ }
+ this.pdfViewer.decreaseScale({
+ drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
+ steps,
+ scaleFactor
+ });
+ },
+ zoomReset() {
+ if (this.pdfViewer.isInPresentationMode) {
+ return;
+ }
+ this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
+ },
+ get pagesCount() {
+ return this.pdfDocument ? this.pdfDocument.numPages : 0;
+ },
+ get page() {
+ return this.pdfViewer.currentPageNumber;
+ },
+ set page(val) {
+ this.pdfViewer.currentPageNumber = val;
+ },
+ get supportsPrinting() {
+ return PDFPrintServiceFactory.instance.supportsPrinting;
+ },
+ get supportsFullscreen() {
+ return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled);
+ },
+ get supportsPinchToZoom() {
+ return this.externalServices.supportsPinchToZoom;
+ },
+ get supportsIntegratedFind() {
+ return this.externalServices.supportsIntegratedFind;
+ },
+ get supportsDocumentFonts() {
+ return this.externalServices.supportsDocumentFonts;
+ },
+ get loadingBar() {
+ const barElement = document.getElementById("loadingBar");
+ const bar = barElement ? new _ui_utils.ProgressBar(barElement) : null;
+ return (0, _pdfjsLib.shadow)(this, "loadingBar", bar);
+ },
+ get supportedMouseWheelZoomModifierKeys() {
+ return this.externalServices.supportedMouseWheelZoomModifierKeys;
+ },
+ initPassiveLoading(file) {
+ throw new Error("Not implemented: initPassiveLoading");
+ },
+ setTitleUsingUrl(url = "", downloadUrl = null) {
+ this.url = url;
+ this.baseUrl = url.split("#")[0];
+ if (downloadUrl) {
+ this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0];
+ }
+ if ((0, _pdfjsLib.isDataScheme)(url)) {
+ this._hideViewBookmark();
+ }
+ let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, "");
+ if (!title) {
+ try {
+ title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;
+ } catch {
+ title = url;
+ }
+ }
+ this.setTitle(title);
+ },
+ setTitle(title = this._title) {
+ this._title = title;
+ if (this.isViewerEmbedded) {
+ return;
+ }
+ const editorIndicator = this._hasAnnotationEditors && !this.pdfRenderingQueue.printing;
+ document.title = `${editorIndicator ? "* " : ""}${title}`;
+ },
+ get _docFilename() {
+ return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url);
+ },
+ _hideViewBookmark() {
+ const {
+ secondaryToolbar
+ } = this.appConfig;
+ secondaryToolbar?.viewBookmarkButton.classList.add("hidden");
+ if (secondaryToolbar?.presentationModeButton.classList.contains("hidden")) {
+ document.getElementById("viewBookmarkSeparator")?.classList.add("hidden");
+ }
+ },
+ async close() {
+ this._unblockDocumentLoadEvent();
+ this._hideViewBookmark();
+ if (!this.pdfLoadingTask) {
+ return;
+ }
+ if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) {
+ try {
+ await this.save();
+ } catch {
+ }
+ }
+ const promises = [];
+ promises.push(this.pdfLoadingTask.destroy());
+ this.pdfLoadingTask = null;
+ if (this.pdfDocument) {
+ this.pdfDocument = null;
+ this.pdfThumbnailViewer?.setDocument(null);
+ this.pdfViewer.setDocument(null);
+ this.pdfLinkService.setDocument(null);
+ this.pdfDocumentProperties?.setDocument(null);
+ }
+ this.pdfLinkService.externalLinkEnabled = true;
+ this.store = null;
+ this.isInitialViewSet = false;
+ this.downloadComplete = false;
+ this.url = "";
+ this.baseUrl = "";
+ this._downloadUrl = "";
+ this.documentInfo = null;
+ this.metadata = null;
+ this._contentDispositionFilename = null;
+ this._contentLength = null;
+ this._saveInProgress = false;
+ this._hasAnnotationEditors = false;
+ promises.push(this.pdfScriptingManager.destroyPromise, this.passwordPrompt.close());
+ this.setTitle();
+ this.pdfSidebar?.reset();
+ this.pdfOutlineViewer?.reset();
+ this.pdfAttachmentViewer?.reset();
+ this.pdfLayerViewer?.reset();
+ this.pdfHistory?.reset();
+ this.findBar?.reset();
+ this.toolbar?.reset();
+ this.secondaryToolbar?.reset();
+ this._PDFBug?.cleanup();
+ await Promise.all(promises);
+ },
+ async open(args) {
+ let deprecatedArgs = false;
+ if (typeof args === "string") {
+ args = {
+ url: args
+ };
+ deprecatedArgs = true;
+ } else if (args?.byteLength) {
+ args = {
+ data: args
+ };
+ deprecatedArgs = true;
+ }
+ if (deprecatedArgs) {
+ console.error("The `PDFViewerApplication.open` signature was updated, please use an object instead.");
+ }
+ if (this.pdfLoadingTask) {
+ await this.close();
+ }
+ const workerParams = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER);
+ Object.assign(_pdfjsLib.GlobalWorkerOptions, workerParams);
+ if (args.url) {
+ this.setTitleUsingUrl(args.originalUrl || args.url, args.url);
+ }
+ const apiParams = _app_options.AppOptions.getAll(_app_options.OptionKind.API);
+ const params = {
+ canvasMaxAreaInBytes: this.externalServices.canvasMaxAreaInBytes,
+ ...apiParams,
+ ...args
+ };
+ const loadingTask = (0, _pdfjsLib.getDocument)(params);
+ this.pdfLoadingTask = loadingTask;
+ loadingTask.onPassword = (updateCallback, reason) => {
+ if (this.isViewerEmbedded) {
+ this._unblockDocumentLoadEvent();
+ }
+ this.pdfLinkService.externalLinkEnabled = false;
+ this.passwordPrompt.setUpdateCallback(updateCallback, reason);
+ this.passwordPrompt.open();
+ };
+ loadingTask.onProgress = ({
+ loaded,
+ total
+ }) => {
+ this.progress(loaded / total);
+ };
+ return loadingTask.promise.then(pdfDocument => {
+ this.load(pdfDocument);
+ }, reason => {
+ if (loadingTask !== this.pdfLoadingTask) {
+ return undefined;
+ }
+ let key = "loading_error";
+ if (reason instanceof _pdfjsLib.InvalidPDFException) {
+ key = "invalid_file_error";
+ } else if (reason instanceof _pdfjsLib.MissingPDFException) {
+ key = "missing_file_error";
+ } else if (reason instanceof _pdfjsLib.UnexpectedResponseException) {
+ key = "unexpected_response_error";
+ }
+ return this.l10n.get(key).then(msg => {
+ this._documentError(msg, {
+ message: reason?.message
+ });
+ throw reason;
+ });
+ });
+ },
+ _ensureDownloadComplete() {
+ if (this.pdfDocument && this.downloadComplete) {
+ return;
+ }
+ throw new Error("PDF document not downloaded.");
+ },
+ async download(options = {}) {
+ const url = this._downloadUrl,
+ filename = this._docFilename;
+ try {
+ this._ensureDownloadComplete();
+ const data = await this.pdfDocument.getData();
+ const blob = new Blob([data], {
+ type: "application/pdf"
+ });
+ await this.downloadManager.download(blob, url, filename, options);
+ } catch {
+ await this.downloadManager.downloadUrl(url, filename, options);
+ }
+ },
+ async save(options = {}) {
+ if (this._saveInProgress) {
+ return;
+ }
+ this._saveInProgress = true;
+ await this.pdfScriptingManager.dispatchWillSave();
+ const url = this._downloadUrl,
+ filename = this._docFilename;
+ try {
+ this._ensureDownloadComplete();
+ const data = await this.pdfDocument.saveDocument();
+ const blob = new Blob([data], {
+ type: "application/pdf"
+ });
+ await this.downloadManager.download(blob, url, filename, options);
+ } catch (reason) {
+ console.error(`Error when saving the document: ${reason.message}`);
+ await this.download(options);
+ } finally {
+ await this.pdfScriptingManager.dispatchDidSave();
+ this._saveInProgress = false;
+ }
+ if (this._hasAnnotationEditors) {
+ this.externalServices.reportTelemetry({
+ type: "editing",
+ data: {
+ type: "save"
+ }
+ });
+ }
+ },
+ downloadOrSave(options = {}) {
+ if (this.pdfDocument?.annotationStorage.size > 0) {
+ this.save(options);
+ } else {
+ this.download(options);
+ }
+ },
+ openInExternalApp() {
+ this.downloadOrSave({
+ openInExternalApp: true
+ });
+ },
+ _documentError(message, moreInfo = null) {
+ this._unblockDocumentLoadEvent();
+ this._otherError(message, moreInfo);
+ this.eventBus.dispatch("documenterror", {
+ source: this,
+ message,
+ reason: moreInfo?.message ?? null
+ });
+ },
+ _otherError(message, moreInfo = null) {
+ const moreInfoText = [`PDF.js v${_pdfjsLib.version || "?"} (build: ${_pdfjsLib.build || "?"})`];
+ if (moreInfo) {
+ moreInfoText.push(`Message: ${moreInfo.message}`);
+ if (moreInfo.stack) {
+ moreInfoText.push(`Stack: ${moreInfo.stack}`);
+ } else {
+ if (moreInfo.filename) {
+ moreInfoText.push(`File: ${moreInfo.filename}`);
+ }
+ if (moreInfo.lineNumber) {
+ moreInfoText.push(`Line: ${moreInfo.lineNumber}`);
+ }
+ }
+ }
+ console.error(`${message}\n\n${moreInfoText.join("\n")}`);
+ },
+ progress(level) {
+ if (!this.loadingBar || this.downloadComplete) {
+ return;
+ }
+ const percent = Math.round(level * 100);
+ if (percent <= this.loadingBar.percent) {
+ return;
+ }
+ this.loadingBar.percent = percent;
+ if (this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch")) {
+ this.loadingBar.setDisableAutoFetch();
+ }
+ },
+ load(pdfDocument) {
+ this.pdfDocument = pdfDocument;
+ pdfDocument.getDownloadInfo().then(({
+ length
+ }) => {
+ this._contentLength = length;
+ this.downloadComplete = true;
+ this.loadingBar?.hide();
+ firstPagePromise.then(() => {
+ this.eventBus.dispatch("documentloaded", {
+ source: this
+ });
+ });
+ });
+ const pageLayoutPromise = pdfDocument.getPageLayout().catch(() => {
+ });
+ const pageModePromise = pdfDocument.getPageMode().catch(() => {
+ });
+ const openActionPromise = pdfDocument.getOpenAction().catch(() => {
+ });
+ this.toolbar?.setPagesCount(pdfDocument.numPages, false);
+ this.secondaryToolbar?.setPagesCount(pdfDocument.numPages);
+ this.pdfLinkService.setDocument(pdfDocument);
+ this.pdfDocumentProperties?.setDocument(pdfDocument);
+ const pdfViewer = this.pdfViewer;
+ pdfViewer.setDocument(pdfDocument);
+ const {
+ firstPagePromise,
+ onePageRendered,
+ pagesPromise
+ } = pdfViewer;
+ this.pdfThumbnailViewer?.setDocument(pdfDocument);
+ const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({
+ page: null,
+ zoom: _ui_utils.DEFAULT_SCALE_VALUE,
+ scrollLeft: "0",
+ scrollTop: "0",
+ rotation: null,
+ sidebarView: _ui_utils.SidebarView.UNKNOWN,
+ scrollMode: _ui_utils.ScrollMode.UNKNOWN,
+ spreadMode: _ui_utils.SpreadMode.UNKNOWN
+ }).catch(() => {
+ });
+ firstPagePromise.then(pdfPage => {
+ this.loadingBar?.setWidth(this.appConfig.viewerContainer);
+ this._initializeAnnotationStorageCallbacks(pdfDocument);
+ Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {
+ const viewOnLoad = _app_options.AppOptions.get("viewOnLoad");
+ this._initializePdfHistory({
+ fingerprint: pdfDocument.fingerprints[0],
+ viewOnLoad,
+ initialDest: openAction?.dest
+ });
+ const initialBookmark = this.initialBookmark;
+ const zoom = _app_options.AppOptions.get("defaultZoomValue");
+ let hash = zoom ? `zoom=${zoom}` : null;
+ let rotation = null;
+ let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad");
+ let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad");
+ let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad");
+ if (stored?.page && viewOnLoad !== ViewOnLoad.INITIAL) {
+ hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`;
+ rotation = parseInt(stored.rotation, 10);
+ if (sidebarView === _ui_utils.SidebarView.UNKNOWN) {
+ sidebarView = stored.sidebarView | 0;
+ }
+ if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) {
+ scrollMode = stored.scrollMode | 0;
+ }
+ if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
+ spreadMode = stored.spreadMode | 0;
+ }
+ }
+ if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) {
+ sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode);
+ }
+ if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
+ const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout);
+ spreadMode = modes.spreadMode;
+ }
+ this.setInitialView(hash, {
+ rotation,
+ sidebarView,
+ scrollMode,
+ spreadMode
+ });
+ this.eventBus.dispatch("documentinit", {
+ source: this
+ });
+ if (!this.isViewerEmbedded) {
+ pdfViewer.focus();
+ }
+ await Promise.race([pagesPromise, new Promise(resolve => {
+ setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);
+ })]);
+ if (!initialBookmark && !hash) {
+ return;
+ }
+ if (pdfViewer.hasEqualPageSizes) {
+ return;
+ }
+ this.initialBookmark = initialBookmark;
+ pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;
+ this.setInitialView(hash);
+ }).catch(() => {
+ this.setInitialView();
+ }).then(function () {
+ pdfViewer.update();
+ });
+ });
+ pagesPromise.then(() => {
+ this._unblockDocumentLoadEvent();
+ this._initializeAutoPrint(pdfDocument, openActionPromise);
+ }, reason => {
+ this.l10n.get("loading_error").then(msg => {
+ this._documentError(msg, {
+ message: reason?.message
+ });
+ });
+ });
+ onePageRendered.then(data => {
+ this.externalServices.reportTelemetry({
+ type: "pageInfo",
+ timestamp: data.timestamp
+ });
+ if (this.pdfOutlineViewer) {
+ pdfDocument.getOutline().then(outline => {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ this.pdfOutlineViewer.render({
+ outline,
+ pdfDocument
+ });
+ });
+ }
+ if (this.pdfAttachmentViewer) {
+ pdfDocument.getAttachments().then(attachments => {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ this.pdfAttachmentViewer.render({
+ attachments
+ });
+ });
+ }
+ if (this.pdfLayerViewer) {
+ pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ this.pdfLayerViewer.render({
+ optionalContentConfig,
+ pdfDocument
+ });
+ });
+ }
+ });
+ this._initializePageLabels(pdfDocument);
+ this._initializeMetadata(pdfDocument);
+ },
+ async _scriptingDocProperties(pdfDocument) {
+ if (!this.documentInfo) {
+ await new Promise(resolve => {
+ this.eventBus._on("metadataloaded", resolve, {
+ once: true
+ });
+ });
+ if (pdfDocument !== this.pdfDocument) {
+ return null;
+ }
+ }
+ if (!this._contentLength) {
+ await new Promise(resolve => {
+ this.eventBus._on("documentloaded", resolve, {
+ once: true
+ });
+ });
+ if (pdfDocument !== this.pdfDocument) {
+ return null;
+ }
+ }
+ return {
+ ...this.documentInfo,
+ baseURL: this.baseUrl,
+ filesize: this._contentLength,
+ filename: this._docFilename,
+ metadata: this.metadata?.getRaw(),
+ authors: this.metadata?.get("dc:creator"),
+ numPages: this.pagesCount,
+ URL: this.url
+ };
+ },
+ async _initializeAutoPrint(pdfDocument, openActionPromise) {
+ const [openAction, jsActions] = await Promise.all([openActionPromise, this.pdfViewer.enableScripting ? null : pdfDocument.getJSActions()]);
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ let triggerAutoPrint = openAction?.action === "Print";
+ if (jsActions) {
+ console.warn("Warning: JavaScript support is not enabled");
+ for (const name in jsActions) {
+ if (triggerAutoPrint) {
+ break;
+ }
+ switch (name) {
+ case "WillClose":
+ case "WillSave":
+ case "DidSave":
+ case "WillPrint":
+ case "DidPrint":
+ continue;
+ }
+ triggerAutoPrint = jsActions[name].some(js => _ui_utils.AutoPrintRegExp.test(js));
+ }
+ }
+ if (triggerAutoPrint) {
+ this.triggerPrinting();
+ }
+ },
+ async _initializeMetadata(pdfDocument) {
+ const {
+ info,
+ metadata,
+ contentDispositionFilename,
+ contentLength
+ } = await pdfDocument.getMetadata();
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ this.documentInfo = info;
+ this.metadata = metadata;
+ this._contentDispositionFilename ??= contentDispositionFilename;
+ this._contentLength ??= contentLength;
+ console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "?"} [${_pdfjsLib.build || "?"}])`);
+ let pdfTitle = info.Title;
+ const metadataTitle = metadata?.get("dc:title");
+ if (metadataTitle) {
+ if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) {
+ pdfTitle = metadataTitle;
+ }
+ }
+ if (pdfTitle) {
+ this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`);
+ } else if (this._contentDispositionFilename) {
+ this.setTitle(this._contentDispositionFilename);
+ }
+ if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) {
+ if (pdfDocument.loadingParams.enableXfa) {
+ console.warn("Warning: XFA Foreground documents are not supported");
+ } else {
+ console.warn("Warning: XFA support is not enabled");
+ }
+ } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) {
+ console.warn("Warning: Interactive form support is not enabled");
+ }
+ if (info.IsSignaturesPresent) {
+ console.warn("Warning: Digital signatures validation is not supported");
+ }
+ this.eventBus.dispatch("metadataloaded", {
+ source: this
+ });
+ },
+ async _initializePageLabels(pdfDocument) {
+ const labels = await pdfDocument.getPageLabels();
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ if (!labels || _app_options.AppOptions.get("disablePageLabels")) {
+ return;
+ }
+ const numLabels = labels.length;
+ let standardLabels = 0,
+ emptyLabels = 0;
+ for (let i = 0; i < numLabels; i++) {
+ const label = labels[i];
+ if (label === (i + 1).toString()) {
+ standardLabels++;
+ } else if (label === "") {
+ emptyLabels++;
+ } else {
+ break;
+ }
+ }
+ if (standardLabels >= numLabels || emptyLabels >= numLabels) {
+ return;
+ }
+ const {
+ pdfViewer,
+ pdfThumbnailViewer,
+ toolbar
+ } = this;
+ pdfViewer.setPageLabels(labels);
+ pdfThumbnailViewer?.setPageLabels(labels);
+ toolbar?.setPagesCount(numLabels, true);
+ toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
+ },
+ _initializePdfHistory({
+ fingerprint,
+ viewOnLoad,
+ initialDest = null
+ }) {
+ if (!this.pdfHistory) {
+ return;
+ }
+ this.pdfHistory.initialize({
+ fingerprint,
+ resetHistory: viewOnLoad === ViewOnLoad.INITIAL,
+ updateUrl: _app_options.AppOptions.get("historyUpdateUrl")
+ });
+ if (this.pdfHistory.initialBookmark) {
+ this.initialBookmark = this.pdfHistory.initialBookmark;
+ this.initialRotation = this.pdfHistory.initialRotation;
+ }
+ if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) {
+ this.initialBookmark = JSON.stringify(initialDest);
+ this.pdfHistory.push({
+ explicitDest: initialDest,
+ pageNumber: null
+ });
+ }
+ },
+ _initializeAnnotationStorageCallbacks(pdfDocument) {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ const {
+ annotationStorage
+ } = pdfDocument;
+ annotationStorage.onSetModified = () => {
+ window.addEventListener("beforeunload", beforeUnload);
+ this._annotationStorageModified = true;
+ };
+ annotationStorage.onResetModified = () => {
+ window.removeEventListener("beforeunload", beforeUnload);
+ delete this._annotationStorageModified;
+ };
+ annotationStorage.onAnnotationEditor = typeStr => {
+ this._hasAnnotationEditors = !!typeStr;
+ this.setTitle();
+ if (typeStr) {
+ this.externalServices.reportTelemetry({
+ type: "editing",
+ data: {
+ type: typeStr
+ }
+ });
+ }
+ };
+ },
+ setInitialView(storedHash, {
+ rotation,
+ sidebarView,
+ scrollMode,
+ spreadMode
+ } = {}) {
+ const setRotation = angle => {
+ if ((0, _ui_utils.isValidRotation)(angle)) {
+ this.pdfViewer.pagesRotation = angle;
+ }
+ };
+ const setViewerModes = (scroll, spread) => {
+ if ((0, _ui_utils.isValidScrollMode)(scroll)) {
+ this.pdfViewer.scrollMode = scroll;
+ }
+ if ((0, _ui_utils.isValidSpreadMode)(spread)) {
+ this.pdfViewer.spreadMode = spread;
+ }
+ };
+ this.isInitialViewSet = true;
+ this.pdfSidebar?.setInitialView(sidebarView);
+ setViewerModes(scrollMode, spreadMode);
+ if (this.initialBookmark) {
+ setRotation(this.initialRotation);
+ delete this.initialRotation;
+ this.pdfLinkService.setHash(this.initialBookmark);
+ this.initialBookmark = null;
+ } else if (storedHash) {
+ setRotation(rotation);
+ this.pdfLinkService.setHash(storedHash);
+ }
+ this.toolbar?.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);
+ this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber);
+ if (!this.pdfViewer.currentScaleValue) {
+ this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
+ }
+ },
+ _cleanup() {
+ if (!this.pdfDocument) {
+ return;
+ }
+ this.pdfViewer.cleanup();
+ this.pdfThumbnailViewer?.cleanup();
+ this.pdfDocument.cleanup();
+ },
+ forceRendering() {
+ this.pdfRenderingQueue.printing = !!this.printService;
+ this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS;
+ this.pdfRenderingQueue.renderHighestPriority();
+ },
+ beforePrint() {
+ this._printAnnotationStoragePromise = this.pdfScriptingManager.dispatchWillPrint().catch(() => {
+ }).then(() => {
+ return this.pdfDocument?.annotationStorage.print;
+ });
+ if (this.printService) {
+ return;
+ }
+ if (!this.supportsPrinting) {
+ this.l10n.get("printing_not_supported").then(msg => {
+ this._otherError(msg);
+ });
+ return;
+ }
+ if (!this.pdfViewer.pageViewsReady) {
+ this.l10n.get("printing_not_ready").then(msg => {
+ window.alert(msg);
+ });
+ return;
+ }
+ const pagesOverview = this.pdfViewer.getPagesOverview();
+ const printContainer = this.appConfig.printContainer;
+ const printResolution = _app_options.AppOptions.get("printResolution");
+ const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise;
+ const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this._printAnnotationStoragePromise, this.l10n);
+ this.printService = printService;
+ this.forceRendering();
+ this.setTitle();
+ printService.layout();
+ if (this._hasAnnotationEditors) {
+ this.externalServices.reportTelemetry({
+ type: "editing",
+ data: {
+ type: "print"
+ }
+ });
+ }
+ },
+ afterPrint() {
+ if (this._printAnnotationStoragePromise) {
+ this._printAnnotationStoragePromise.then(() => {
+ this.pdfScriptingManager.dispatchDidPrint();
+ });
+ this._printAnnotationStoragePromise = null;
+ }
+ if (this.printService) {
+ this.printService.destroy();
+ this.printService = null;
+ this.pdfDocument?.annotationStorage.resetModified();
+ }
+ this.forceRendering();
+ this.setTitle();
+ },
+ rotatePages(delta) {
+ this.pdfViewer.pagesRotation += delta;
+ },
+ requestPresentationMode() {
+ this.pdfPresentationMode?.request();
+ },
+ triggerPrinting() {
+ if (!this.supportsPrinting) {
+ return;
+ }
+ window.print();
+ },
+ bindEvents() {
+ const {
+ eventBus,
+ _boundEvents
+ } = this;
+ _boundEvents.beforePrint = this.beforePrint.bind(this);
+ _boundEvents.afterPrint = this.afterPrint.bind(this);
+ eventBus._on("resize", webViewerResize);
+ eventBus._on("hashchange", webViewerHashchange);
+ eventBus._on("beforeprint", _boundEvents.beforePrint);
+ eventBus._on("afterprint", _boundEvents.afterPrint);
+ eventBus._on("pagerender", webViewerPageRender);
+ eventBus._on("pagerendered", webViewerPageRendered);
+ eventBus._on("updateviewarea", webViewerUpdateViewarea);
+ eventBus._on("pagechanging", webViewerPageChanging);
+ eventBus._on("scalechanging", webViewerScaleChanging);
+ eventBus._on("rotationchanging", webViewerRotationChanging);
+ eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged);
+ eventBus._on("pagemode", webViewerPageMode);
+ eventBus._on("namedaction", webViewerNamedAction);
+ eventBus._on("presentationmodechanged", webViewerPresentationModeChanged);
+ eventBus._on("presentationmode", webViewerPresentationMode);
+ eventBus._on("switchannotationeditormode", webViewerSwitchAnnotationEditorMode);
+ eventBus._on("switchannotationeditorparams", webViewerSwitchAnnotationEditorParams);
+ eventBus._on("print", webViewerPrint);
+ eventBus._on("download", webViewerDownload);
+ eventBus._on("openinexternalapp", webViewerOpenInExternalApp);
+ eventBus._on("firstpage", webViewerFirstPage);
+ eventBus._on("lastpage", webViewerLastPage);
+ eventBus._on("nextpage", webViewerNextPage);
+ eventBus._on("previouspage", webViewerPreviousPage);
+ eventBus._on("zoomin", webViewerZoomIn);
+ eventBus._on("zoomout", webViewerZoomOut);
+ eventBus._on("zoomreset", webViewerZoomReset);
+ eventBus._on("pagenumberchanged", webViewerPageNumberChanged);
+ eventBus._on("scalechanged", webViewerScaleChanged);
+ eventBus._on("rotatecw", webViewerRotateCw);
+ eventBus._on("rotateccw", webViewerRotateCcw);
+ eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig);
+ eventBus._on("switchscrollmode", webViewerSwitchScrollMode);
+ eventBus._on("scrollmodechanged", webViewerScrollModeChanged);
+ eventBus._on("switchspreadmode", webViewerSwitchSpreadMode);
+ eventBus._on("spreadmodechanged", webViewerSpreadModeChanged);
+ eventBus._on("documentproperties", webViewerDocumentProperties);
+ eventBus._on("findfromurlhash", webViewerFindFromUrlHash);
+ eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount);
+ eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState);
+ if (_app_options.AppOptions.get("pdfBug")) {
+ _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;
+ eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug);
+ eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug);
+ }
+ eventBus._on("fileinputchange", webViewerFileInputChange);
+ eventBus._on("openfile", webViewerOpenFile);
+ },
+ bindWindowEvents() {
+ const {
+ eventBus,
+ _boundEvents
+ } = this;
+
+ function addWindowResolutionChange(evt = null) {
+ if (evt) {
+ webViewerResolutionChange(evt);
+ }
+ const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);
+ mediaQueryList.addEventListener("change", addWindowResolutionChange, {
+ once: true
+ });
+ _boundEvents.removeWindowResolutionChange ||= function () {
+ mediaQueryList.removeEventListener("change", addWindowResolutionChange);
+ _boundEvents.removeWindowResolutionChange = null;
+ };
+ }
+
+ addWindowResolutionChange();
+ _boundEvents.windowResize = () => {
+ eventBus.dispatch("resize", {
+ source: window
+ });
+ };
+ _boundEvents.windowHashChange = () => {
+ eventBus.dispatch("hashchange", {
+ source: window,
+ hash: document.location.hash.substring(1)
+ });
+ };
+ _boundEvents.windowBeforePrint = () => {
+ eventBus.dispatch("beforeprint", {
+ source: window
+ });
+ };
+ _boundEvents.windowAfterPrint = () => {
+ eventBus.dispatch("afterprint", {
+ source: window
+ });
+ };
+ _boundEvents.windowUpdateFromSandbox = event => {
+ eventBus.dispatch("updatefromsandbox", {
+ source: window,
+ detail: event.detail
+ });
+ };
+ window.addEventListener("visibilitychange", webViewerVisibilityChange);
+ window.addEventListener("wheel", webViewerWheel, {
+ passive: false
+ });
+ window.addEventListener("touchstart", webViewerTouchStart, {
+ passive: false
+ });
+ window.addEventListener("touchmove", webViewerTouchMove, {
+ passive: false
+ });
+ window.addEventListener("touchend", webViewerTouchEnd, {
+ passive: false
+ });
+ window.addEventListener("click", webViewerClick);
+ window.addEventListener("keydown", webViewerKeyDown);
+ window.addEventListener("keyup", webViewerKeyUp);
+ window.addEventListener("resize", _boundEvents.windowResize);
+ window.addEventListener("hashchange", _boundEvents.windowHashChange);
+ window.addEventListener("beforeprint", _boundEvents.windowBeforePrint);
+ window.addEventListener("afterprint", _boundEvents.windowAfterPrint);
+ window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox);
+ },
+ unbindEvents() {
+ const {
+ eventBus,
+ _boundEvents
+ } = this;
+ eventBus._off("resize", webViewerResize);
+ eventBus._off("hashchange", webViewerHashchange);
+ eventBus._off("beforeprint", _boundEvents.beforePrint);
+ eventBus._off("afterprint", _boundEvents.afterPrint);
+ eventBus._off("pagerender", webViewerPageRender);
+ eventBus._off("pagerendered", webViewerPageRendered);
+ eventBus._off("updateviewarea", webViewerUpdateViewarea);
+ eventBus._off("pagechanging", webViewerPageChanging);
+ eventBus._off("scalechanging", webViewerScaleChanging);
+ eventBus._off("rotationchanging", webViewerRotationChanging);
+ eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged);
+ eventBus._off("pagemode", webViewerPageMode);
+ eventBus._off("namedaction", webViewerNamedAction);
+ eventBus._off("presentationmodechanged", webViewerPresentationModeChanged);
+ eventBus._off("presentationmode", webViewerPresentationMode);
+ eventBus._off("print", webViewerPrint);
+ eventBus._off("download", webViewerDownload);
+ eventBus._off("openinexternalapp", webViewerOpenInExternalApp);
+ eventBus._off("firstpage", webViewerFirstPage);
+ eventBus._off("lastpage", webViewerLastPage);
+ eventBus._off("nextpage", webViewerNextPage);
+ eventBus._off("previouspage", webViewerPreviousPage);
+ eventBus._off("zoomin", webViewerZoomIn);
+ eventBus._off("zoomout", webViewerZoomOut);
+ eventBus._off("zoomreset", webViewerZoomReset);
+ eventBus._off("pagenumberchanged", webViewerPageNumberChanged);
+ eventBus._off("scalechanged", webViewerScaleChanged);
+ eventBus._off("rotatecw", webViewerRotateCw);
+ eventBus._off("rotateccw", webViewerRotateCcw);
+ eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig);
+ eventBus._off("switchscrollmode", webViewerSwitchScrollMode);
+ eventBus._off("scrollmodechanged", webViewerScrollModeChanged);
+ eventBus._off("switchspreadmode", webViewerSwitchSpreadMode);
+ eventBus._off("spreadmodechanged", webViewerSpreadModeChanged);
+ eventBus._off("documentproperties", webViewerDocumentProperties);
+ eventBus._off("findfromurlhash", webViewerFindFromUrlHash);
+ eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount);
+ eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState);
+ if (_boundEvents.reportPageStatsPDFBug) {
+ eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug);
+ eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug);
+ _boundEvents.reportPageStatsPDFBug = null;
+ }
+ eventBus._off("fileinputchange", webViewerFileInputChange);
+ eventBus._off("openfile", webViewerOpenFile);
+ _boundEvents.beforePrint = null;
+ _boundEvents.afterPrint = null;
+ },
+ unbindWindowEvents() {
+ const {
+ _boundEvents
+ } = this;
+ window.removeEventListener("visibilitychange", webViewerVisibilityChange);
+ window.removeEventListener("wheel", webViewerWheel, {
+ passive: false
+ });
+ window.removeEventListener("touchstart", webViewerTouchStart, {
+ passive: false
+ });
+ window.removeEventListener("touchmove", webViewerTouchMove, {
+ passive: false
+ });
+ window.removeEventListener("touchend", webViewerTouchEnd, {
+ passive: false
+ });
+ window.removeEventListener("click", webViewerClick);
+ window.removeEventListener("keydown", webViewerKeyDown);
+ window.removeEventListener("keyup", webViewerKeyUp);
+ window.removeEventListener("resize", _boundEvents.windowResize);
+ window.removeEventListener("hashchange", _boundEvents.windowHashChange);
+ window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint);
+ window.removeEventListener("afterprint", _boundEvents.windowAfterPrint);
+ window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox);
+ _boundEvents.removeWindowResolutionChange?.();
+ _boundEvents.windowResize = null;
+ _boundEvents.windowHashChange = null;
+ _boundEvents.windowBeforePrint = null;
+ _boundEvents.windowAfterPrint = null;
+ _boundEvents.windowUpdateFromSandbox = null;
+ },
+ _accumulateTicks(ticks, prop) {
+ if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) {
+ this[prop] = 0;
+ }
+ this[prop] += ticks;
+ const wholeTicks = Math.trunc(this[prop]);
+ this[prop] -= wholeTicks;
+ return wholeTicks;
+ },
+ _accumulateFactor(previousScale, factor, prop) {
+ if (factor === 1) {
+ return 1;
+ }
+ if (this[prop] > 1 && factor < 1 || this[prop] < 1 && factor > 1) {
+ this[prop] = 1;
+ }
+ const newFactor = Math.floor(previousScale * factor * this[prop] * 100) / (100 * previousScale);
+ this[prop] = factor / newFactor;
+ return newFactor;
+ },
+ _centerAtPos(previousScale, x, y) {
+ const {
+ pdfViewer
+ } = this;
+ const scaleDiff = pdfViewer.currentScale / previousScale - 1;
+ if (scaleDiff !== 0) {
+ const [top, left] = pdfViewer.containerTopLeft;
+ pdfViewer.container.scrollLeft += (x - left) * scaleDiff;
+ pdfViewer.container.scrollTop += (y - top) * scaleDiff;
+ }
+ },
+ _unblockDocumentLoadEvent() {
+ document.blockUnblockOnload?.(false);
+ this._unblockDocumentLoadEvent = () => {
+ };
+ },
+ get scriptingReady() {
+ return this.pdfScriptingManager.ready;
+ }
+ };
+ exports.PDFViewerApplication = PDFViewerApplication;
+ {
+ const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"];
+ var validateFileURL = function (file) {
+ if (!file) {
+ return;
+ }
+ try {
+ const viewerOrigin = new URL(window.location.href).origin || "null";
+ if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {
+ return;
+ }
+ const fileOrigin = new URL(file, window.location.href).origin;
+ if (fileOrigin !== viewerOrigin) {
+ throw new Error("file origin does not match viewer's");
+ }
+ } catch (ex) {
+ PDFViewerApplication.l10n.get("loading_error").then(msg => {
+ PDFViewerApplication._documentError(msg, {
+ message: ex?.message
+ });
+ });
+ throw ex;
+ }
+ };
+ }
+
+ async function loadFakeWorker() {
+ _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc");
+ await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc);
+ }
+
+ async function loadPDFBug(self) {
+ const {
+ debuggerScriptPath
+ } = self.appConfig;
+ const {
+ PDFBug
+ } = await import(debuggerScriptPath);
+ self._PDFBug = PDFBug;
+ }
+
+ function reportPageStatsPDFBug({
+ pageNumber
+ }) {
+ if (!globalThis.Stats?.enabled) {
+ return;
+ }
+ const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
+ globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats);
+ }
+
+ function webViewerPageRender({
+ pageNumber
+ }) {
+ if (pageNumber === PDFViewerApplication.page) {
+ PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true);
+ }
+ }
+
+ function webViewerPageRendered({
+ pageNumber,
+ error
+ }) {
+ if (pageNumber === PDFViewerApplication.page) {
+ PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false);
+ }
+ if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) {
+ const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
+ const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(pageNumber - 1);
+ if (pageView) {
+ thumbnailView?.setImage(pageView);
+ }
+ }
+ if (error) {
+ PDFViewerApplication.l10n.get("rendering_error").then(msg => {
+ PDFViewerApplication._otherError(msg, error);
+ });
+ }
+ }
+
+ function webViewerPageMode({
+ mode
+ }) {
+ let view;
+ switch (mode) {
+ case "thumbs":
+ view = _ui_utils.SidebarView.THUMBS;
+ break;
+ case "bookmarks":
+ case "outline":
+ view = _ui_utils.SidebarView.OUTLINE;
+ break;
+ case "attachments":
+ view = _ui_utils.SidebarView.ATTACHMENTS;
+ break;
+ case "layers":
+ view = _ui_utils.SidebarView.LAYERS;
+ break;
+ case "none":
+ view = _ui_utils.SidebarView.NONE;
+ break;
+ default:
+ console.error('Invalid "pagemode" hash parameter: ' + mode);
+ return;
+ }
+ PDFViewerApplication.pdfSidebar?.switchView(view, true);
+ }
+
+ function webViewerNamedAction(evt) {
+ switch (evt.action) {
+ case "GoToPage":
+ PDFViewerApplication.appConfig.toolbar?.pageNumber.select();
+ break;
+ case "Find":
+ if (!PDFViewerApplication.supportsIntegratedFind) {
+ PDFViewerApplication?.findBar.toggle();
+ }
+ break;
+ case "Print":
+ PDFViewerApplication.triggerPrinting();
+ break;
+ case "SaveAs":
+ PDFViewerApplication.downloadOrSave();
+ break;
+ }
+ }
+
+ function webViewerPresentationModeChanged(evt) {
+ PDFViewerApplication.pdfViewer.presentationModeState = evt.state;
+ }
+
+ function webViewerSidebarViewChanged({
+ view
+ }) {
+ PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === _ui_utils.SidebarView.THUMBS;
+ if (PDFViewerApplication.isInitialViewSet) {
+ PDFViewerApplication.store?.set("sidebarView", view).catch(() => {
+ });
+ }
+ }
+
+ function webViewerUpdateViewarea({
+ location
+ }) {
+ if (PDFViewerApplication.isInitialViewSet) {
+ PDFViewerApplication.store?.setMultiple({
+ page: location.pageNumber,
+ zoom: location.scale,
+ scrollLeft: location.left,
+ scrollTop: location.top,
+ rotation: location.rotation
+ }).catch(() => {
+ });
+ }
+ if (PDFViewerApplication.appConfig.secondaryToolbar) {
+ const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);
+ PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
+ }
+ }
+
+ function webViewerScrollModeChanged(evt) {
+ if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) {
+ PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {
+ });
+ }
+ }
+
+ function webViewerSpreadModeChanged(evt) {
+ if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) {
+ PDFViewerApplication.store?.set("spreadMode", evt.mode).catch(() => {
+ });
+ }
+ }
+
+ function webViewerResize() {
+ const {
+ pdfDocument,
+ pdfViewer,
+ pdfRenderingQueue
+ } = PDFViewerApplication;
+ if (pdfRenderingQueue.printing && window.matchMedia("print").matches) {
+ return;
+ }
+ if (!pdfDocument) {
+ return;
+ }
+ const currentScaleValue = pdfViewer.currentScaleValue;
+ if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") {
+ pdfViewer.currentScaleValue = currentScaleValue;
+ }
+ pdfViewer.update();
+ }
+
+ function webViewerHashchange(evt) {
+ const hash = evt.hash;
+ if (!hash) {
+ return;
+ }
+ if (!PDFViewerApplication.isInitialViewSet) {
+ PDFViewerApplication.initialBookmark = hash;
+ } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {
+ PDFViewerApplication.pdfLinkService.setHash(hash);
+ }
+ }
+
+ {
+ var webViewerFileInputChange = function (evt) {
+ if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {
+ return;
+ }
+ const file = evt.fileInput.files[0];
+ PDFViewerApplication.open({
+ url: URL.createObjectURL(file),
+ originalUrl: file.name
+ });
+ };
+ var webViewerOpenFile = function (evt) {
+ const fileInput = PDFViewerApplication.appConfig.openFileInput;
+ fileInput.click();
+ };
+ }
+
+ function webViewerPresentationMode() {
+ PDFViewerApplication.requestPresentationMode();
+ }
+
+ function webViewerSwitchAnnotationEditorMode(evt) {
+ PDFViewerApplication.pdfViewer.annotationEditorMode = evt;
+ }
+
+ function webViewerSwitchAnnotationEditorParams(evt) {
+ PDFViewerApplication.pdfViewer.annotationEditorParams = evt;
+ }
+
+ function webViewerPrint() {
+ PDFViewerApplication.triggerPrinting();
+ }
+
+ function webViewerDownload() {
+ PDFViewerApplication.downloadOrSave();
+ }
+
+ function webViewerOpenInExternalApp() {
+ PDFViewerApplication.openInExternalApp();
+ }
+
+ function webViewerFirstPage() {
+ PDFViewerApplication.page = 1;
+ }
+
+ function webViewerLastPage() {
+ PDFViewerApplication.page = PDFViewerApplication.pagesCount;
+ }
+
+ function webViewerNextPage() {
+ PDFViewerApplication.pdfViewer.nextPage();
+ }
+
+ function webViewerPreviousPage() {
+ PDFViewerApplication.pdfViewer.previousPage();
+ }
+
+ function webViewerZoomIn() {
+ PDFViewerApplication.zoomIn();
+ }
+
+ function webViewerZoomOut() {
+ PDFViewerApplication.zoomOut();
+ }
+
+ function webViewerZoomReset() {
+ PDFViewerApplication.zoomReset();
+ }
+
+ function webViewerPageNumberChanged(evt) {
+ const pdfViewer = PDFViewerApplication.pdfViewer;
+ if (evt.value !== "") {
+ PDFViewerApplication.pdfLinkService.goToPage(evt.value);
+ }
+ if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {
+ PDFViewerApplication.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
+ }
+ }
+
+ function webViewerScaleChanged(evt) {
+ PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;
+ }
+
+ function webViewerRotateCw() {
+ PDFViewerApplication.rotatePages(90);
+ }
+
+ function webViewerRotateCcw() {
+ PDFViewerApplication.rotatePages(-90);
+ }
+
+ function webViewerOptionalContentConfig(evt) {
+ PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;
+ }
+
+ function webViewerSwitchScrollMode(evt) {
+ PDFViewerApplication.pdfViewer.scrollMode = evt.mode;
+ }
+
+ function webViewerSwitchSpreadMode(evt) {
+ PDFViewerApplication.pdfViewer.spreadMode = evt.mode;
+ }
+
+ function webViewerDocumentProperties() {
+ PDFViewerApplication.pdfDocumentProperties?.open();
+ }
+
+ function webViewerFindFromUrlHash(evt) {
+ PDFViewerApplication.eventBus.dispatch("find", {
+ source: evt.source,
+ type: "",
+ query: evt.query,
+ caseSensitive: false,
+ entireWord: false,
+ highlightAll: true,
+ findPrevious: false,
+ matchDiacritics: true
+ });
+ }
+
+ function webViewerUpdateFindMatchesCount({
+ matchesCount
+ }) {
+ if (PDFViewerApplication.supportsIntegratedFind) {
+ PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);
+ } else {
+ PDFViewerApplication.findBar.updateResultsCount(matchesCount);
+ }
+ }
+
+ function webViewerUpdateFindControlState({
+ state,
+ previous,
+ matchesCount,
+ rawQuery
+ }) {
+ if (PDFViewerApplication.supportsIntegratedFind) {
+ PDFViewerApplication.externalServices.updateFindControlState({
+ result: state,
+ findPrevious: previous,
+ matchesCount,
+ rawQuery
+ });
+ } else {
+ PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount);
+ }
+ }
+
+ function webViewerScaleChanging(evt) {
+ PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale);
+ PDFViewerApplication.pdfViewer.update();
+ }
+
+ function webViewerRotationChanging(evt) {
+ if (PDFViewerApplication.pdfThumbnailViewer) {
+ PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;
+ }
+ PDFViewerApplication.forceRendering();
+ PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
+ }
+
+ function webViewerPageChanging({
+ pageNumber,
+ pageLabel
+ }) {
+ PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel);
+ PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber);
+ if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) {
+ PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber);
+ }
+ const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
+ PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === _ui_utils.RenderingStates.RUNNING);
+ }
+
+ function webViewerResolutionChange(evt) {
+ PDFViewerApplication.pdfViewer.refresh();
+ }
+
+ function webViewerVisibilityChange(evt) {
+ if (document.visibilityState === "visible") {
+ setZoomDisabledTimeout();
+ }
+ }
+
+ let zoomDisabledTimeout = null;
+
+ function setZoomDisabledTimeout() {
+ if (zoomDisabledTimeout) {
+ clearTimeout(zoomDisabledTimeout);
+ }
+ zoomDisabledTimeout = setTimeout(function () {
+ zoomDisabledTimeout = null;
+ }, WHEEL_ZOOM_DISABLED_TIMEOUT);
+ }
+
+ function webViewerWheel(evt) {
+ const {
+ pdfViewer,
+ supportedMouseWheelZoomModifierKeys,
+ supportsPinchToZoom
+ } = PDFViewerApplication;
+ if (pdfViewer.isInPresentationMode) {
+ return;
+ }
+ const deltaMode = evt.deltaMode;
+ let scaleFactor = Math.exp(-evt.deltaY / 100);
+ const isBuiltInMac = false;
+ const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0;
+ if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) {
+ evt.preventDefault();
+ if (zoomDisabledTimeout || document.visibilityState === "hidden" || PDFViewerApplication.overlayManager.active) {
+ return;
+ }
+ const previousScale = pdfViewer.currentScale;
+ if (isPinchToZoom && supportsPinchToZoom) {
+ scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor");
+ if (scaleFactor < 1) {
+ PDFViewerApplication.zoomOut(null, scaleFactor);
+ } else if (scaleFactor > 1) {
+ PDFViewerApplication.zoomIn(null, scaleFactor);
+ } else {
+ return;
+ }
+ } else {
+ const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt);
+ let ticks = 0;
+ if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) {
+ if (Math.abs(delta) >= 1) {
+ ticks = Math.sign(delta);
+ } else {
+ ticks = PDFViewerApplication._accumulateTicks(delta, "_wheelUnusedTicks");
+ }
+ } else {
+ const PIXELS_PER_LINE_SCALE = 30;
+ ticks = PDFViewerApplication._accumulateTicks(delta / PIXELS_PER_LINE_SCALE, "_wheelUnusedTicks");
+ }
+ if (ticks < 0) {
+ PDFViewerApplication.zoomOut(-ticks);
+ } else if (ticks > 0) {
+ PDFViewerApplication.zoomIn(ticks);
+ } else {
+ return;
+ }
+ }
+ PDFViewerApplication._centerAtPos(previousScale, evt.clientX, evt.clientY);
+ } else {
+ setZoomDisabledTimeout();
+ }
+ }
+
+ function webViewerTouchStart(evt) {
+ if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length < 2) {
+ return;
+ }
+ evt.preventDefault();
+ if (evt.touches.length !== 2 || PDFViewerApplication.overlayManager.active) {
+ PDFViewerApplication._touchInfo = null;
+ return;
+ }
+ let [touch0, touch1] = evt.touches;
+ if (touch0.identifier > touch1.identifier) {
+ [touch0, touch1] = [touch1, touch0];
+ }
+ PDFViewerApplication._touchInfo = {
+ touch0X: touch0.pageX,
+ touch0Y: touch0.pageY,
+ touch1X: touch1.pageX,
+ touch1Y: touch1.pageY
+ };
+ }
+
+ function webViewerTouchMove(evt) {
+ if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) {
+ return;
+ }
+ const {
+ pdfViewer,
+ _touchInfo,
+ supportsPinchToZoom
+ } = PDFViewerApplication;
+ let [touch0, touch1] = evt.touches;
+ if (touch0.identifier > touch1.identifier) {
+ [touch0, touch1] = [touch1, touch0];
+ }
+ const {
+ pageX: page0X,
+ pageY: page0Y
+ } = touch0;
+ const {
+ pageX: page1X,
+ pageY: page1Y
+ } = touch1;
+ const {
+ touch0X: pTouch0X,
+ touch0Y: pTouch0Y,
+ touch1X: pTouch1X,
+ touch1Y: pTouch1Y
+ } = _touchInfo;
+ if (Math.abs(pTouch0X - page0X) <= 1 && Math.abs(pTouch0Y - page0Y) <= 1 && Math.abs(pTouch1X - page1X) <= 1 && Math.abs(pTouch1Y - page1Y) <= 1) {
+ return;
+ }
+ _touchInfo.touch0X = page0X;
+ _touchInfo.touch0Y = page0Y;
+ _touchInfo.touch1X = page1X;
+ _touchInfo.touch1Y = page1Y;
+ if (pTouch0X === page0X && pTouch0Y === page0Y) {
+ const v1X = pTouch1X - page0X;
+ const v1Y = pTouch1Y - page0Y;
+ const v2X = page1X - page0X;
+ const v2Y = page1Y - page0Y;
+ const det = v1X * v2Y - v1Y * v2X;
+ if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {
+ return;
+ }
+ } else if (pTouch1X === page1X && pTouch1Y === page1Y) {
+ const v1X = pTouch0X - page1X;
+ const v1Y = pTouch0Y - page1Y;
+ const v2X = page0X - page1X;
+ const v2Y = page0Y - page1Y;
+ const det = v1X * v2Y - v1Y * v2X;
+ if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {
+ return;
+ }
+ } else {
+ const diff0X = page0X - pTouch0X;
+ const diff1X = page1X - pTouch1X;
+ const diff0Y = page0Y - pTouch0Y;
+ const diff1Y = page1Y - pTouch1Y;
+ const dotProduct = diff0X * diff1X + diff0Y * diff1Y;
+ if (dotProduct >= 0) {
+ return;
+ }
+ }
+ evt.preventDefault();
+ const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1;
+ const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1;
+ const previousScale = pdfViewer.currentScale;
+ if (supportsPinchToZoom) {
+ const newScaleFactor = PDFViewerApplication._accumulateFactor(previousScale, distance / pDistance, "_touchUnusedFactor");
+ if (newScaleFactor < 1) {
+ PDFViewerApplication.zoomOut(null, newScaleFactor);
+ } else if (newScaleFactor > 1) {
+ PDFViewerApplication.zoomIn(null, newScaleFactor);
+ } else {
+ return;
+ }
+ } else {
+ const PIXELS_PER_LINE_SCALE = 30;
+ const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) / PIXELS_PER_LINE_SCALE, "_touchUnusedTicks");
+ if (ticks < 0) {
+ PDFViewerApplication.zoomOut(-ticks);
+ } else if (ticks > 0) {
+ PDFViewerApplication.zoomIn(ticks);
+ } else {
+ return;
+ }
+ }
+ PDFViewerApplication._centerAtPos(previousScale, (page0X + page1X) / 2, (page0Y + page1Y) / 2);
+ }
+
+ function webViewerTouchEnd(evt) {
+ if (!PDFViewerApplication._touchInfo) {
+ return;
+ }
+ evt.preventDefault();
+ PDFViewerApplication._touchInfo = null;
+ PDFViewerApplication._touchUnusedTicks = 0;
+ PDFViewerApplication._touchUnusedFactor = 1;
+ }
+
+ function webViewerClick(evt) {
+ if (!PDFViewerApplication.secondaryToolbar?.isOpen) {
+ return;
+ }
+ const appConfig = PDFViewerApplication.appConfig;
+ if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar?.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar?.toggleButton) {
+ PDFViewerApplication.secondaryToolbar.close();
+ }
+ }
+
+ function webViewerKeyUp(evt) {
+ if (evt.key === "Control") {
+ PDFViewerApplication._isCtrlKeyDown = false;
+ }
+ }
+
+ function webViewerKeyDown(evt) {
+ PDFViewerApplication._isCtrlKeyDown = evt.key === "Control";
+ if (PDFViewerApplication.overlayManager.active) {
+ return;
+ }
+ const {
+ eventBus,
+ pdfViewer
+ } = PDFViewerApplication;
+ const isViewerInPresentationMode = pdfViewer.isInPresentationMode;
+ let handled = false,
+ ensureViewerFocused = false;
+ const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);
+ if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
+ switch (evt.keyCode) {
+ case 70:
+ if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {
+ PDFViewerApplication.findBar?.open();
+ handled = true;
+ }
+ break;
+ case 71:
+ if (!PDFViewerApplication.supportsIntegratedFind) {
+ const {
+ state
+ } = PDFViewerApplication.findController;
+ if (state) {
+ const newState = {
+ source: window,
+ type: "again",
+ findPrevious: cmd === 5 || cmd === 12
+ };
+ eventBus.dispatch("find", {
+ ...state,
+ ...newState
+ });
+ }
+ handled = true;
+ }
+ break;
+ case 61:
+ case 107:
+ case 187:
+ case 171:
+ PDFViewerApplication.zoomIn();
+ handled = true;
+ break;
+ case 173:
+ case 109:
+ case 189:
+ PDFViewerApplication.zoomOut();
+ handled = true;
+ break;
+ case 48:
+ case 96:
+ if (!isViewerInPresentationMode) {
+ setTimeout(function () {
+ PDFViewerApplication.zoomReset();
+ });
+ handled = false;
+ }
+ break;
+ case 38:
+ if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
+ PDFViewerApplication.page = 1;
+ handled = true;
+ ensureViewerFocused = true;
+ }
+ break;
+ case 40:
+ if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
+ PDFViewerApplication.page = PDFViewerApplication.pagesCount;
+ handled = true;
+ ensureViewerFocused = true;
+ }
+ break;
+ }
+ }
+ if (cmd === 1 || cmd === 8) {
+ switch (evt.keyCode) {
+ case 83:
+ eventBus.dispatch("download", {
+ source: window
+ });
+ handled = true;
+ break;
+ case 79: {
+ eventBus.dispatch("openfile", {
+ source: window
+ });
+ handled = true;
+ }
+ break;
+ }
+ }
+ if (cmd === 3 || cmd === 10) {
+ switch (evt.keyCode) {
+ case 80:
+ PDFViewerApplication.requestPresentationMode();
+ handled = true;
+ PDFViewerApplication.externalServices.reportTelemetry({
+ type: "buttons",
+ data: {
+ id: "presentationModeKeyboard"
+ }
+ });
+ break;
+ case 71:
+ if (PDFViewerApplication.appConfig.toolbar) {
+ PDFViewerApplication.appConfig.toolbar.pageNumber.select();
+ handled = true;
+ }
+ break;
+ }
+ }
+ if (handled) {
+ if (ensureViewerFocused && !isViewerInPresentationMode) {
+ pdfViewer.focus();
+ }
+ evt.preventDefault();
+ return;
+ }
+ const curElement = (0, _ui_utils.getActiveOrFocusedElement)();
+ const curElementTagName = curElement?.tagName.toUpperCase();
+ if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) {
+ if (evt.keyCode !== 27) {
+ return;
+ }
+ }
+ if (cmd === 0) {
+ let turnPage = 0,
+ turnOnlyIfPageFit = false;
+ switch (evt.keyCode) {
+ case 38:
+ case 33:
+ if (pdfViewer.isVerticalScrollbarEnabled) {
+ turnOnlyIfPageFit = true;
+ }
+ turnPage = -1;
+ break;
+ case 8:
+ if (!isViewerInPresentationMode) {
+ turnOnlyIfPageFit = true;
+ }
+ turnPage = -1;
+ break;
+ case 37:
+ if (pdfViewer.isHorizontalScrollbarEnabled) {
+ turnOnlyIfPageFit = true;
+ }
+ case 75:
+ case 80:
+ turnPage = -1;
+ break;
+ case 27:
+ if (PDFViewerApplication.secondaryToolbar?.isOpen) {
+ PDFViewerApplication.secondaryToolbar.close();
+ handled = true;
+ }
+ if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar?.opened) {
+ PDFViewerApplication.findBar.close();
+ handled = true;
+ }
+ break;
+ case 40:
+ case 34:
+ if (pdfViewer.isVerticalScrollbarEnabled) {
+ turnOnlyIfPageFit = true;
+ }
+ turnPage = 1;
+ break;
+ case 13:
+ case 32:
+ if (!isViewerInPresentationMode) {
+ turnOnlyIfPageFit = true;
+ }
+ turnPage = 1;
+ break;
+ case 39:
+ if (pdfViewer.isHorizontalScrollbarEnabled) {
+ turnOnlyIfPageFit = true;
+ }
+ case 74:
+ case 78:
+ turnPage = 1;
+ break;
+ case 36:
+ if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
+ PDFViewerApplication.page = 1;
+ handled = true;
+ ensureViewerFocused = true;
+ }
+ break;
+ case 35:
+ if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
+ PDFViewerApplication.page = PDFViewerApplication.pagesCount;
+ handled = true;
+ ensureViewerFocused = true;
+ }
+ break;
+ case 83:
+ PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.SELECT);
+ break;
+ case 72:
+ PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.HAND);
+ break;
+ case 82:
+ PDFViewerApplication.rotatePages(90);
+ break;
+ case 115:
+ PDFViewerApplication.pdfSidebar?.toggle();
+ break;
+ }
+ if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) {
+ if (turnPage > 0) {
+ pdfViewer.nextPage();
+ } else {
+ pdfViewer.previousPage();
+ }
+ handled = true;
+ }
+ }
+ if (cmd === 4) {
+ switch (evt.keyCode) {
+ case 13:
+ case 32:
+ if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") {
+ break;
+ }
+ pdfViewer.previousPage();
+ handled = true;
+ break;
+ case 82:
+ PDFViewerApplication.rotatePages(-90);
+ break;
+ }
+ }
+ if (!handled && !isViewerInPresentationMode) {
+ if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") {
+ ensureViewerFocused = true;
+ }
+ }
+ if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {
+ pdfViewer.focus();
+ }
+ if (handled) {
+ evt.preventDefault();
+ }
+ }
+
+ function beforeUnload(evt) {
+ evt.preventDefault();
+ evt.returnValue = "";
+ return false;
+ }
+
+ function webViewerAnnotationEditorStatesChanged(data) {
+ PDFViewerApplication.externalServices.updateEditorStates(data);
+ }
+
+ function webViewerReportTelemetry({
+ details
+ }) {
+ PDFViewerApplication.externalServices.reportTelemetry(details);
+ }
+
+ const PDFPrintServiceFactory = {
+ instance: {
+ supportsPrinting: false,
+ createPrintService() {
+ throw new Error("Not implemented: createPrintService");
+ }
+ }
+ };
+ exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
+
+ /***/
+ }),
+ /* 3 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.CursorTool = exports.AutoPrintRegExp = void 0;
+ exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes;
+ exports.apiPageModeToSidebarView = apiPageModeToSidebarView;
+ exports.approximateFraction = approximateFraction;
+ exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
+ exports.binarySearchFirstItem = binarySearchFirstItem;
+ exports.docStyle = void 0;
+ exports.getActiveOrFocusedElement = getActiveOrFocusedElement;
+ exports.getPageSizeInches = getPageSizeInches;
+ exports.getVisibleElements = getVisibleElements;
+ exports.isPortraitOrientation = isPortraitOrientation;
+ exports.isValidRotation = isValidRotation;
+ exports.isValidScrollMode = isValidScrollMode;
+ exports.isValidSpreadMode = isValidSpreadMode;
+ exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
+ exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
+ exports.parseQueryString = parseQueryString;
+ exports.removeNullCharacters = removeNullCharacters;
+ exports.roundToDivide = roundToDivide;
+ exports.scrollIntoView = scrollIntoView;
+ exports.toggleCheckedBtn = toggleCheckedBtn;
+ exports.toggleExpandedBtn = toggleExpandedBtn;
+ exports.watchScroll = watchScroll;
+ const DEFAULT_SCALE_VALUE = "auto";
+ exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
+ const DEFAULT_SCALE = 1.0;
+ exports.DEFAULT_SCALE = DEFAULT_SCALE;
+ const DEFAULT_SCALE_DELTA = 1.1;
+ exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA;
+ const MIN_SCALE = 0.1;
+ exports.MIN_SCALE = MIN_SCALE;
+ const MAX_SCALE = 10.0;
+ exports.MAX_SCALE = MAX_SCALE;
+ const UNKNOWN_SCALE = 0;
+ exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
+ const MAX_AUTO_SCALE = 1.25;
+ exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
+ const SCROLLBAR_PADDING = 40;
+ exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
+ const VERTICAL_PADDING = 5;
+ exports.VERTICAL_PADDING = VERTICAL_PADDING;
+ const RenderingStates = {
+ INITIAL: 0,
+ RUNNING: 1,
+ PAUSED: 2,
+ FINISHED: 3
+ };
+ exports.RenderingStates = RenderingStates;
+ const PresentationModeState = {
+ UNKNOWN: 0,
+ NORMAL: 1,
+ CHANGING: 2,
+ FULLSCREEN: 3
+ };
+ exports.PresentationModeState = PresentationModeState;
+ const SidebarView = {
+ UNKNOWN: -1,
+ NONE: 0,
+ THUMBS: 1,
+ OUTLINE: 2,
+ ATTACHMENTS: 3,
+ LAYERS: 4
+ };
+ exports.SidebarView = SidebarView;
+ const TextLayerMode = {
+ DISABLE: 0,
+ ENABLE: 1,
+ ENABLE_PERMISSIONS: 2
+ };
+ exports.TextLayerMode = TextLayerMode;
+ const ScrollMode = {
+ UNKNOWN: -1,
+ VERTICAL: 0,
+ HORIZONTAL: 1,
+ WRAPPED: 2,
+ PAGE: 3
+ };
+ exports.ScrollMode = ScrollMode;
+ const SpreadMode = {
+ UNKNOWN: -1,
+ NONE: 0,
+ ODD: 1,
+ EVEN: 2
+ };
+ exports.SpreadMode = SpreadMode;
+ const CursorTool = {
+ SELECT: 0,
+ HAND: 1,
+ ZOOM: 2
+ };
+ exports.CursorTool = CursorTool;
+ const AutoPrintRegExp = /\bprint\s*\(/;
+ exports.AutoPrintRegExp = AutoPrintRegExp;
+
+ class OutputScale {
+ constructor() {
+ const pixelRatio = window.devicePixelRatio || 1;
+ this.sx = pixelRatio;
+ this.sy = pixelRatio;
+ }
+
+ get scaled() {
+ return this.sx !== 1 || this.sy !== 1;
+ }
+ }
+
+ exports.OutputScale = OutputScale;
+
+ function scrollIntoView(element, spot, scrollMatches = false) {
+ let parent = element.offsetParent;
+ if (!parent) {
+ console.error("offsetParent is not set -- cannot scroll");
+ return;
+ }
+ let offsetY = element.offsetTop + element.clientTop;
+ let offsetX = element.offsetLeft + element.clientLeft;
+ while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) {
+ offsetY += parent.offsetTop;
+ offsetX += parent.offsetLeft;
+ parent = parent.offsetParent;
+ if (!parent) {
+ return;
+ }
+ }
+ if (spot) {
+ if (spot.top !== undefined) {
+ offsetY += spot.top;
+ }
+ if (spot.left !== undefined) {
+ offsetX += spot.left;
+ parent.scrollLeft = offsetX;
+ }
+ }
+ parent.scrollTop = offsetY;
+ }
+
+ function watchScroll(viewAreaElement, callback) {
+ const debounceScroll = function (evt) {
+ if (rAF) {
+ return;
+ }
+ rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
+ rAF = null;
+ const currentX = viewAreaElement.scrollLeft;
+ const lastX = state.lastX;
+ if (currentX !== lastX) {
+ state.right = currentX > lastX;
+ }
+ state.lastX = currentX;
+ const currentY = viewAreaElement.scrollTop;
+ const lastY = state.lastY;
+ if (currentY !== lastY) {
+ state.down = currentY > lastY;
+ }
+ state.lastY = currentY;
+ callback(state);
+ });
+ };
+ const state = {
+ right: true,
+ down: true,
+ lastX: viewAreaElement.scrollLeft,
+ lastY: viewAreaElement.scrollTop,
+ _eventHandler: debounceScroll
+ };
+ let rAF = null;
+ viewAreaElement.addEventListener("scroll", debounceScroll, true);
+ return state;
+ }
+
+ function parseQueryString(query) {
+ const params = new Map();
+ for (const [key, value] of new URLSearchParams(query)) {
+ params.set(key.toLowerCase(), value);
+ }
+ return params;
+ }
+
+ const InvisibleCharactersRegExp = /[\x01-\x1F]/g;
+
+ function removeNullCharacters(str, replaceInvisible = false) {
+ if (typeof str !== "string") {
+ console.error(`The argument must be a string.`);
+ return str;
+ }
+ if (replaceInvisible) {
+ str = str.replaceAll(InvisibleCharactersRegExp, " ");
+ }
+ return str.replaceAll("\x00", "");
+ }
+
+ function binarySearchFirstItem(items, condition, start = 0) {
+ let minIndex = start;
+ let maxIndex = items.length - 1;
+ if (maxIndex < 0 || !condition(items[maxIndex])) {
+ return items.length;
+ }
+ if (condition(items[minIndex])) {
+ return minIndex;
+ }
+ while (minIndex < maxIndex) {
+ const currentIndex = minIndex + maxIndex >> 1;
+ const currentItem = items[currentIndex];
+ if (condition(currentItem)) {
+ maxIndex = currentIndex;
+ } else {
+ minIndex = currentIndex + 1;
+ }
+ }
+ return minIndex;
+ }
+
+ function approximateFraction(x) {
+ if (Math.floor(x) === x) {
+ return [x, 1];
+ }
+ const xinv = 1 / x;
+ const limit = 8;
+ if (xinv > limit) {
+ return [1, limit];
+ } else if (Math.floor(xinv) === xinv) {
+ return [1, xinv];
+ }
+ const x_ = x > 1 ? xinv : x;
+ let a = 0,
+ b = 1,
+ c = 1,
+ d = 1;
+ while (true) {
+ const p = a + c,
+ q = b + d;
+ if (q > limit) {
+ break;
+ }
+ if (x_ <= p / q) {
+ c = p;
+ d = q;
+ } else {
+ a = p;
+ b = q;
+ }
+ }
+ let result;
+ if (x_ - a / b < c / d - x_) {
+ result = x_ === x ? [a, b] : [b, a];
+ } else {
+ result = x_ === x ? [c, d] : [d, c];
+ }
+ return result;
+ }
+
+ function roundToDivide(x, div) {
+ const r = x % div;
+ return r === 0 ? x : Math.round(x - r + div);
+ }
+
+ function getPageSizeInches({
+ view,
+ userUnit,
+ rotate
+ }) {
+ const [x1, y1, x2, y2] = view;
+ const changeOrientation = rotate % 180 !== 0;
+ const width = (x2 - x1) / 72 * userUnit;
+ const height = (y2 - y1) / 72 * userUnit;
+ return {
+ width: changeOrientation ? height : width,
+ height: changeOrientation ? width : height
+ };
+ }
+
+ function backtrackBeforeAllVisibleElements(index, views, top) {
+ if (index < 2) {
+ return index;
+ }
+ let elt = views[index].div;
+ let pageTop = elt.offsetTop + elt.clientTop;
+ if (pageTop >= top) {
+ elt = views[index - 1].div;
+ pageTop = elt.offsetTop + elt.clientTop;
+ }
+ for (let i = index - 2; i >= 0; --i) {
+ elt = views[i].div;
+ if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {
+ break;
+ }
+ index = i;
+ }
+ return index;
+ }
+
+ function getVisibleElements({
+ scrollEl,
+ views,
+ sortByVisibility = false,
+ horizontal = false,
+ rtl = false
+ }) {
+ const top = scrollEl.scrollTop,
+ bottom = top + scrollEl.clientHeight;
+ const left = scrollEl.scrollLeft,
+ right = left + scrollEl.clientWidth;
+
+ function isElementBottomAfterViewTop(view) {
+ const element = view.div;
+ const elementBottom = element.offsetTop + element.clientTop + element.clientHeight;
+ return elementBottom > top;
+ }
+
+ function isElementNextAfterViewHorizontally(view) {
+ const element = view.div;
+ const elementLeft = element.offsetLeft + element.clientLeft;
+ const elementRight = elementLeft + element.clientWidth;
+ return rtl ? elementLeft < right : elementRight > left;
+ }
+
+ const visible = [],
+ ids = new Set(),
+ numViews = views.length;
+ let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop);
+ if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) {
+ firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
+ }
+ let lastEdge = horizontal ? right : -1;
+ for (let i = firstVisibleElementInd; i < numViews; i++) {
+ const view = views[i],
+ element = view.div;
+ const currentWidth = element.offsetLeft + element.clientLeft;
+ const currentHeight = element.offsetTop + element.clientTop;
+ const viewWidth = element.clientWidth,
+ viewHeight = element.clientHeight;
+ const viewRight = currentWidth + viewWidth;
+ const viewBottom = currentHeight + viewHeight;
+ if (lastEdge === -1) {
+ if (viewBottom >= bottom) {
+ lastEdge = viewBottom;
+ }
+ } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {
+ break;
+ }
+ if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {
+ continue;
+ }
+ const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
+ const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
+ const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,
+ fractionWidth = (viewWidth - hiddenWidth) / viewWidth;
+ const percent = fractionHeight * fractionWidth * 100 | 0;
+ visible.push({
+ id: view.id,
+ x: currentWidth,
+ y: currentHeight,
+ view,
+ percent,
+ widthPercent: fractionWidth * 100 | 0
+ });
+ ids.add(view.id);
+ }
+ const first = visible[0],
+ last = visible.at(-1);
+ if (sortByVisibility) {
+ visible.sort(function (a, b) {
+ const pc = a.percent - b.percent;
+ if (Math.abs(pc) > 0.001) {
+ return -pc;
+ }
+ return a.id - b.id;
+ });
+ }
+ return {
+ first,
+ last,
+ views: visible,
+ ids
+ };
+ }
+
+ function normalizeWheelEventDirection(evt) {
+ let delta = Math.hypot(evt.deltaX, evt.deltaY);
+ const angle = Math.atan2(evt.deltaY, evt.deltaX);
+ if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
+ delta = -delta;
+ }
+ return delta;
+ }
+
+ function normalizeWheelEventDelta(evt) {
+ const deltaMode = evt.deltaMode;
+ let delta = normalizeWheelEventDirection(evt);
+ const MOUSE_PIXELS_PER_LINE = 30;
+ const MOUSE_LINES_PER_PAGE = 30;
+ if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) {
+ delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;
+ } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) {
+ delta /= MOUSE_LINES_PER_PAGE;
+ }
+ return delta;
+ }
+
+ function isValidRotation(angle) {
+ return Number.isInteger(angle) && angle % 90 === 0;
+ }
+
+ function isValidScrollMode(mode) {
+ return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN;
+ }
+
+ function isValidSpreadMode(mode) {
+ return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN;
+ }
+
+ function isPortraitOrientation(size) {
+ return size.width <= size.height;
+ }
+
+ const animationStarted = new Promise(function (resolve) {
+ window.requestAnimationFrame(resolve);
+ });
+ exports.animationStarted = animationStarted;
+ const docStyle = document.documentElement.style;
+ exports.docStyle = docStyle;
+
+ function clamp(v, min, max) {
+ return Math.min(Math.max(v, min), max);
+ }
+
+ class ProgressBar {
+ #classList = null;
+ #disableAutoFetchTimeout = null;
+ #percent = 0;
+ #style = null;
+ #visible = true;
+
+ constructor(bar) {
+ this.#classList = bar.classList;
+ this.#style = bar.style;
+ }
+
+ get percent() {
+ return this.#percent;
+ }
+
+ set percent(val) {
+ this.#percent = clamp(val, 0, 100);
+ if (isNaN(val)) {
+ this.#classList.add("indeterminate");
+ return;
+ }
+ this.#classList.remove("indeterminate");
+ this.#style.setProperty("--progressBar-percent", `${this.#percent}%`);
+ }
+
+ setWidth(viewer) {
+ if (!viewer) {
+ return;
+ }
+ const container = viewer.parentNode;
+ const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
+ if (scrollbarWidth > 0) {
+ this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`);
+ }
+ }
+
+ setDisableAutoFetch(delay = 5000) {
+ if (isNaN(this.#percent)) {
+ return;
+ }
+ if (this.#disableAutoFetchTimeout) {
+ clearTimeout(this.#disableAutoFetchTimeout);
+ }
+ this.show();
+ this.#disableAutoFetchTimeout = setTimeout(() => {
+ this.#disableAutoFetchTimeout = null;
+ this.hide();
+ }, delay);
+ }
+
+ hide() {
+ if (!this.#visible) {
+ return;
+ }
+ this.#visible = false;
+ this.#classList.add("hidden");
+ }
+
+ show() {
+ if (this.#visible) {
+ return;
+ }
+ this.#visible = true;
+ this.#classList.remove("hidden");
+ }
+ }
+
+ exports.ProgressBar = ProgressBar;
+
+ function getActiveOrFocusedElement() {
+ let curRoot = document;
+ let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
+ while (curActiveOrFocused?.shadowRoot) {
+ curRoot = curActiveOrFocused.shadowRoot;
+ curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
+ }
+ return curActiveOrFocused;
+ }
+
+ function apiPageLayoutToViewerModes(layout) {
+ let scrollMode = ScrollMode.VERTICAL,
+ spreadMode = SpreadMode.NONE;
+ switch (layout) {
+ case "SinglePage":
+ scrollMode = ScrollMode.PAGE;
+ break;
+ case "OneColumn":
+ break;
+ case "TwoPageLeft":
+ scrollMode = ScrollMode.PAGE;
+ case "TwoColumnLeft":
+ spreadMode = SpreadMode.ODD;
+ break;
+ case "TwoPageRight":
+ scrollMode = ScrollMode.PAGE;
+ case "TwoColumnRight":
+ spreadMode = SpreadMode.EVEN;
+ break;
+ }
+ return {
+ scrollMode,
+ spreadMode
+ };
+ }
+
+ function apiPageModeToSidebarView(mode) {
+ switch (mode) {
+ case "UseNone":
+ return SidebarView.NONE;
+ case "UseThumbs":
+ return SidebarView.THUMBS;
+ case "UseOutlines":
+ return SidebarView.OUTLINE;
+ case "UseAttachments":
+ return SidebarView.ATTACHMENTS;
+ case "UseOC":
+ return SidebarView.LAYERS;
+ }
+ return SidebarView.NONE;
+ }
+
+ function toggleCheckedBtn(button, toggle, view = null) {
+ button.classList.toggle("toggled", toggle);
+ button.setAttribute("aria-checked", toggle);
+ view?.classList.toggle("hidden", !toggle);
+ }
+
+ function toggleExpandedBtn(button, toggle, view = null) {
+ button.classList.toggle("toggled", toggle);
+ button.setAttribute("aria-expanded", toggle);
+ view?.classList.toggle("hidden", !toggle);
+ }
+
+ /***/
+ }),
+ /* 4 */
+ /***/ ((module) => {
+
+
+ module.exports = globalThis.pdfjsLib;
+
+ /***/
+ }),
+ /* 5 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0;
+ const compatibilityParams = Object.create(null);
+ exports.compatibilityParams = compatibilityParams;
+ {
+ const userAgent = navigator.userAgent || "";
+ const platform = navigator.platform || "";
+ const maxTouchPoints = navigator.maxTouchPoints || 1;
+ const isAndroid = /Android/.test(userAgent);
+ const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
+ (function checkCanvasSizeLimitation() {
+ if (isIOS || isAndroid) {
+ compatibilityParams.maxCanvasPixels = 5242880;
+ }
+ })();
+ }
+ const OptionKind = {
+ VIEWER: 0x02,
+ API: 0x04,
+ WORKER: 0x08,
+ PREFERENCE: 0x80
+ };
+ exports.OptionKind = OptionKind;
+ const defaultOptions = {
+ annotationEditorMode: {
+ value: 0,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ annotationMode: {
+ value: 2,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ cursorToolOnLoad: {
+ value: 0,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ defaultZoomDelay: {
+ value: 400,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ defaultZoomValue: {
+ value: "",
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ disableHistory: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ disablePageLabels: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ enablePermissions: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ enablePrintAutoRotate: {
+ value: true,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ enableScripting: {
+ value: true,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ enableStampEditor: {
+ value: true,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ externalLinkRel: {
+ value: "noopener noreferrer nofollow",
+ kind: OptionKind.VIEWER
+ },
+ externalLinkTarget: {
+ value: 0,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ historyUpdateUrl: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ ignoreDestinationZoom: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ imageResourcesPath: {
+ value: "./images/",
+ kind: OptionKind.VIEWER
+ },
+ maxCanvasPixels: {
+ value: 16777216,
+ kind: OptionKind.VIEWER
+ },
+ forcePageColors: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ pageColorsBackground: {
+ value: "Canvas",
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ pageColorsForeground: {
+ value: "CanvasText",
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ pdfBugEnabled: {
+ value: false,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ printResolution: {
+ value: 150,
+ kind: OptionKind.VIEWER
+ },
+ sidebarViewOnLoad: {
+ value: -1,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ scrollModeOnLoad: {
+ value: -1,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ spreadModeOnLoad: {
+ value: -1,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ textLayerMode: {
+ value: 1,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ viewerCssTheme: {
+ value: 0,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ viewOnLoad: {
+ value: 0,
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ cMapPacked: {
+ value: true,
+ kind: OptionKind.API
+ },
+ cMapUrl: {
+ value: "../web/cmaps/",
+ kind: OptionKind.API
+ },
+ disableAutoFetch: {
+ value: false,
+ kind: OptionKind.API + OptionKind.PREFERENCE
+ },
+ disableFontFace: {
+ value: false,
+ kind: OptionKind.API + OptionKind.PREFERENCE
+ },
+ disableRange: {
+ value: false,
+ kind: OptionKind.API + OptionKind.PREFERENCE
+ },
+ disableStream: {
+ value: false,
+ kind: OptionKind.API + OptionKind.PREFERENCE
+ },
+ docBaseUrl: {
+ value: "",
+ kind: OptionKind.API
+ },
+ enableXfa: {
+ value: true,
+ kind: OptionKind.API + OptionKind.PREFERENCE
+ },
+ fontExtraProperties: {
+ value: false,
+ kind: OptionKind.API
+ },
+ isEvalSupported: {
+ value: true,
+ kind: OptionKind.API
+ },
+ isOffscreenCanvasSupported: {
+ value: true,
+ kind: OptionKind.API
+ },
+ maxImageSize: {
+ value: -1,
+ kind: OptionKind.API
+ },
+ pdfBug: {
+ value: false,
+ kind: OptionKind.API
+ },
+ standardFontDataUrl: {
+ value: "../web/standard_fonts/",
+ kind: OptionKind.API
+ },
+ verbosity: {
+ value: 1,
+ kind: OptionKind.API
+ },
+ workerPort: {
+ value: null,
+ kind: OptionKind.WORKER
+ },
+ workerSrc: {
+ value: "/pdfjs/pdf.worker.js",
+ kind: OptionKind.WORKER
+ }
+ };
+ {
+ defaultOptions.defaultUrl = {
+ value: "/pdfjs/example/Welcome.pdf",
+ kind: OptionKind.VIEWER
+ };
+ defaultOptions.disablePreferences = {
+ value: false,
+ kind: OptionKind.VIEWER
+ };
+ defaultOptions.locale = {
+ value: navigator.language || "en-US",
+ kind: OptionKind.VIEWER
+ };
+ defaultOptions.sandboxBundleSrc = {
+ value: "../build/pdf.sandbox.js",
+ kind: OptionKind.VIEWER
+ };
+ }
+ const userOptions = Object.create(null);
+
+ class AppOptions {
+ constructor() {
+ throw new Error("Cannot initialize AppOptions.");
+ }
+
+ static get(name) {
+ const userOption = userOptions[name];
+ if (userOption !== undefined) {
+ return userOption;
+ }
+ const defaultOption = defaultOptions[name];
+ if (defaultOption !== undefined) {
+ return compatibilityParams[name] ?? defaultOption.value;
+ }
+ return undefined;
+ }
+
+ static getAll(kind = null) {
+ const options = Object.create(null);
+ for (const name in defaultOptions) {
+ const defaultOption = defaultOptions[name];
+ if (kind) {
+ if ((kind & defaultOption.kind) === 0) {
+ continue;
+ }
+ if (kind === OptionKind.PREFERENCE) {
+ const value = defaultOption.value,
+ valueType = typeof value;
+ if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) {
+ options[name] = value;
+ continue;
+ }
+ throw new Error(`Invalid type for preference: ${name}`);
+ }
+ }
+ const userOption = userOptions[name];
+ options[name] = userOption !== undefined ? userOption : compatibilityParams[name] ?? defaultOption.value;
+ }
+ return options;
+ }
+
+ static set(name, value) {
+ userOptions[name] = value;
+ }
+
+ static setAll(options) {
+ for (const name in options) {
+ userOptions[name] = options[name];
+ }
+ }
+
+ static remove(name) {
+ delete userOptions[name];
+ }
+ }
+
+ exports.AppOptions = AppOptions;
+ {
+ AppOptions._hasUserOptions = function () {
+ return Object.keys(userOptions).length > 0;
+ };
+ }
+
+ /***/
+ }),
+ /* 6 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0;
+ exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
+ const WaitOnType = {
+ EVENT: "event",
+ TIMEOUT: "timeout"
+ };
+ exports.WaitOnType = WaitOnType;
+
+ function waitOnEventOrTimeout({
+ target,
+ name,
+ delay = 0
+ }) {
+ return new Promise(function (resolve, reject) {
+ if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) {
+ throw new Error("waitOnEventOrTimeout - invalid parameters.");
+ }
+
+ function handler(type) {
+ if (target instanceof EventBus) {
+ target._off(name, eventHandler);
+ } else {
+ target.removeEventListener(name, eventHandler);
+ }
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ resolve(type);
+ }
+
+ const eventHandler = handler.bind(null, WaitOnType.EVENT);
+ if (target instanceof EventBus) {
+ target._on(name, eventHandler);
+ } else {
+ target.addEventListener(name, eventHandler);
+ }
+ const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
+ const timeout = setTimeout(timeoutHandler, delay);
+ });
+ }
+
+ class EventBus {
+ #listeners = Object.create(null);
+
+ on(eventName, listener, options = null) {
+ this._on(eventName, listener, {
+ external: true,
+ once: options?.once
+ });
+ }
+
+ off(eventName, listener, options = null) {
+ this._off(eventName, listener, {
+ external: true,
+ once: options?.once
+ });
+ }
+
+ dispatch(eventName, data) {
+ const eventListeners = this.#listeners[eventName];
+ if (!eventListeners || eventListeners.length === 0) {
+ return;
+ }
+ let externalListeners;
+ for (const {
+ listener,
+ external,
+ once
+ } of eventListeners.slice(0)) {
+ if (once) {
+ this._off(eventName, listener);
+ }
+ if (external) {
+ (externalListeners ||= []).push(listener);
+ continue;
+ }
+ listener(data);
+ }
+ if (externalListeners) {
+ for (const listener of externalListeners) {
+ listener(data);
+ }
+ externalListeners = null;
+ }
+ }
+
+ _on(eventName, listener, options = null) {
+ const eventListeners = this.#listeners[eventName] ||= [];
+ eventListeners.push({
+ listener,
+ external: options?.external === true,
+ once: options?.once === true
+ });
+ }
+
+ _off(eventName, listener, options = null) {
+ const eventListeners = this.#listeners[eventName];
+ if (!eventListeners) {
+ return;
+ }
+ for (let i = 0, ii = eventListeners.length; i < ii; i++) {
+ if (eventListeners[i].listener === listener) {
+ eventListeners.splice(i, 1);
+ return;
+ }
+ }
+ }
+ }
+
+ exports.EventBus = EventBus;
+
+ class AutomationEventBus extends EventBus {
+ dispatch(eventName, data) {
+ throw new Error("Not implemented: AutomationEventBus.dispatch");
+ }
+ }
+
+ exports.AutomationEventBus = AutomationEventBus;
+
+ /***/
+ }),
+ /* 7 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0;
+ var _ui_utils = __webpack_require__(3);
+ const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
+ const LinkTarget = {
+ NONE: 0,
+ SELF: 1,
+ BLANK: 2,
+ PARENT: 3,
+ TOP: 4
+ };
+ exports.LinkTarget = LinkTarget;
+
+ function addLinkAttributes(link, {
+ url,
+ target,
+ rel,
+ enabled = true
+ } = {}) {
+ if (!url || typeof url !== "string") {
+ throw new Error('A valid "url" parameter must provided.');
+ }
+ if (enabled) {
+ link.href = link.title = url;
+ } else {
+ link.href = "";
+ link.title = `Disabled: ${url}`;
+ link.onclick = () => {
+ return false;
+ };
+ }
+ let targetStr = "";
+ switch (target) {
+ case LinkTarget.NONE:
+ break;
+ case LinkTarget.SELF:
+ targetStr = "_self";
+ break;
+ case LinkTarget.BLANK:
+ targetStr = "_blank";
+ break;
+ case LinkTarget.PARENT:
+ targetStr = "_parent";
+ break;
+ case LinkTarget.TOP:
+ targetStr = "_top";
+ break;
+ }
+ link.target = targetStr;
+ link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
+ }
+
+ class PDFLinkService {
+ #pagesRefCache = new Map();
+
+ constructor({
+ eventBus,
+ externalLinkTarget = null,
+ externalLinkRel = null,
+ ignoreDestinationZoom = false
+ } = {}) {
+ this.eventBus = eventBus;
+ this.externalLinkTarget = externalLinkTarget;
+ this.externalLinkRel = externalLinkRel;
+ this.externalLinkEnabled = true;
+ this._ignoreDestinationZoom = ignoreDestinationZoom;
+ this.baseUrl = null;
+ this.pdfDocument = null;
+ this.pdfViewer = null;
+ this.pdfHistory = null;
+ }
+
+ setDocument(pdfDocument, baseUrl = null) {
+ this.baseUrl = baseUrl;
+ this.pdfDocument = pdfDocument;
+ this.#pagesRefCache.clear();
+ }
+
+ setViewer(pdfViewer) {
+ this.pdfViewer = pdfViewer;
+ }
+
+ setHistory(pdfHistory) {
+ this.pdfHistory = pdfHistory;
+ }
+
+ get pagesCount() {
+ return this.pdfDocument ? this.pdfDocument.numPages : 0;
+ }
+
+ get page() {
+ return this.pdfViewer.currentPageNumber;
+ }
+
+ set page(value) {
+ this.pdfViewer.currentPageNumber = value;
+ }
+
+ get rotation() {
+ return this.pdfViewer.pagesRotation;
+ }
+
+ set rotation(value) {
+ this.pdfViewer.pagesRotation = value;
+ }
+
+ get isInPresentationMode() {
+ return this.pdfViewer.isInPresentationMode;
+ }
+
+ #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
+ const destRef = explicitDest[0];
+ let pageNumber;
+ if (typeof destRef === "object" && destRef !== null) {
+ pageNumber = this._cachedPageNumber(destRef);
+ if (!pageNumber) {
+ this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
+ this.cachePageRef(pageIndex + 1, destRef);
+ this.#goToDestinationHelper(rawDest, namedDest, explicitDest);
+ }).catch(() => {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`);
+ });
+ return;
+ }
+ } else if (Number.isInteger(destRef)) {
+ pageNumber = destRef + 1;
+ } else {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`);
+ return;
+ }
+ if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
+ console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
+ return;
+ }
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.push({
+ namedDest,
+ explicitDest,
+ pageNumber
+ });
+ }
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber,
+ destArray: explicitDest,
+ ignoreDestinationZoom: this._ignoreDestinationZoom
+ });
+ }
+
+ async goToDestination(dest) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ let namedDest, explicitDest;
+ if (typeof dest === "string") {
+ namedDest = dest;
+ explicitDest = await this.pdfDocument.getDestination(dest);
+ } else {
+ namedDest = null;
+ explicitDest = await dest;
+ }
+ if (!Array.isArray(explicitDest)) {
+ console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
+ return;
+ }
+ this.#goToDestinationHelper(dest, namedDest, explicitDest);
+ }
+
+ goToPage(val) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
+ if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+ console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
+ return;
+ }
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.pushPage(pageNumber);
+ }
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber
+ });
+ }
+
+ addLinkAttributes(link, url, newWindow = false) {
+ addLinkAttributes(link, {
+ url,
+ target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,
+ rel: this.externalLinkRel,
+ enabled: this.externalLinkEnabled
+ });
+ }
+
+ getDestinationHash(dest) {
+ if (typeof dest === "string") {
+ if (dest.length > 0) {
+ return this.getAnchorUrl("#" + escape(dest));
+ }
+ } else if (Array.isArray(dest)) {
+ const str = JSON.stringify(dest);
+ if (str.length > 0) {
+ return this.getAnchorUrl("#" + escape(str));
+ }
+ }
+ return this.getAnchorUrl("");
+ }
+
+ getAnchorUrl(anchor) {
+ return this.baseUrl ? this.baseUrl + anchor : anchor;
+ }
+
+ setHash(hash) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ let pageNumber, dest;
+ if (hash.includes("=")) {
+ const params = (0, _ui_utils.parseQueryString)(hash);
+ if (params.has("search")) {
+ const query = params.get("search").replaceAll('"', ""),
+ phrase = params.get("phrase") === "true";
+ this.eventBus.dispatch("findfromurlhash", {
+ source: this,
+ query: phrase ? query : query.match(/\S+/g)
+ });
+ }
+ if (params.has("page")) {
+ pageNumber = params.get("page") | 0 || 1;
+ }
+ if (params.has("zoom")) {
+ const zoomArgs = params.get("zoom").split(",");
+ const zoomArg = zoomArgs[0];
+ const zoomArgNumber = parseFloat(zoomArg);
+ if (!zoomArg.includes("Fit")) {
+ dest = [null, {
+ name: "XYZ"
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
+ } else if (zoomArg === "Fit" || zoomArg === "FitB") {
+ dest = [null, {
+ name: zoomArg
+ }];
+ } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") {
+ dest = [null, {
+ name: zoomArg
+ }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
+ } else if (zoomArg === "FitR") {
+ if (zoomArgs.length !== 5) {
+ console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
+ } else {
+ dest = [null, {
+ name: zoomArg
+ }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
+ }
+ } else {
+ console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`);
+ }
+ }
+ if (dest) {
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber: pageNumber || this.page,
+ destArray: dest,
+ allowNegativeOffset: true
+ });
+ } else if (pageNumber) {
+ this.page = pageNumber;
+ }
+ if (params.has("pagemode")) {
+ this.eventBus.dispatch("pagemode", {
+ source: this,
+ mode: params.get("pagemode")
+ });
+ }
+ if (params.has("nameddest")) {
+ this.goToDestination(params.get("nameddest"));
+ }
+ } else {
+ dest = unescape(hash);
+ try {
+ dest = JSON.parse(dest);
+ if (!Array.isArray(dest)) {
+ dest = dest.toString();
+ }
+ } catch {
+ }
+ if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) {
+ this.goToDestination(dest);
+ return;
+ }
+ console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`);
+ }
+ }
+
+ executeNamedAction(action) {
+ switch (action) {
+ case "GoBack":
+ this.pdfHistory?.back();
+ break;
+ case "GoForward":
+ this.pdfHistory?.forward();
+ break;
+ case "NextPage":
+ this.pdfViewer.nextPage();
+ break;
+ case "PrevPage":
+ this.pdfViewer.previousPage();
+ break;
+ case "LastPage":
+ this.page = this.pagesCount;
+ break;
+ case "FirstPage":
+ this.page = 1;
+ break;
+ default:
+ break;
+ }
+ this.eventBus.dispatch("namedaction", {
+ source: this,
+ action
+ });
+ }
+
+ async executeSetOCGState(action) {
+ const pdfDocument = this.pdfDocument;
+ const optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise;
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ let operator;
+ for (const elem of action.state) {
+ switch (elem) {
+ case "ON":
+ case "OFF":
+ case "Toggle":
+ operator = elem;
+ continue;
+ }
+ switch (operator) {
+ case "ON":
+ optionalContentConfig.setVisibility(elem, true);
+ break;
+ case "OFF":
+ optionalContentConfig.setVisibility(elem, false);
+ break;
+ case "Toggle":
+ const group = optionalContentConfig.getGroup(elem);
+ if (group) {
+ optionalContentConfig.setVisibility(elem, !group.visible);
+ }
+ break;
+ }
+ }
+ this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig);
+ }
+
+ cachePageRef(pageNum, pageRef) {
+ if (!pageRef) {
+ return;
+ }
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+ this.#pagesRefCache.set(refStr, pageNum);
+ }
+
+ _cachedPageNumber(pageRef) {
+ if (!pageRef) {
+ return null;
+ }
+ const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+ return this.#pagesRefCache.get(refStr) || null;
+ }
+
+ static #isValidExplicitDestination(dest) {
+ if (!Array.isArray(dest)) {
+ return false;
+ }
+ const destLength = dest.length;
+ if (destLength < 2) {
+ return false;
+ }
+ const page = dest[0];
+ if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
+ return false;
+ }
+ const zoom = dest[1];
+ if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
+ return false;
+ }
+ let allowNull = true;
+ switch (zoom.name) {
+ case "XYZ":
+ if (destLength !== 5) {
+ return false;
+ }
+ break;
+ case "Fit":
+ case "FitB":
+ return destLength === 2;
+ case "FitH":
+ case "FitBH":
+ case "FitV":
+ case "FitBV":
+ if (destLength !== 3) {
+ return false;
+ }
+ break;
+ case "FitR":
+ if (destLength !== 6) {
+ return false;
+ }
+ allowNull = false;
+ break;
+ default:
+ return false;
+ }
+ for (let i = 2; i < destLength; i++) {
+ const param = dest[i];
+ if (!(typeof param === "number" || allowNull && param === null)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ exports.PDFLinkService = PDFLinkService;
+
+ class SimpleLinkService {
+ constructor() {
+ this.externalLinkEnabled = true;
+ }
+
+ get pagesCount() {
+ return 0;
+ }
+
+ get page() {
+ return 0;
+ }
+
+ set page(value) {
+ }
+
+ get rotation() {
+ return 0;
+ }
+
+ set rotation(value) {
+ }
+
+ get isInPresentationMode() {
+ return false;
+ }
+
+ async goToDestination(dest) {
+ }
+
+ goToPage(val) {
+ }
+
+ addLinkAttributes(link, url, newWindow = false) {
+ addLinkAttributes(link, {
+ url,
+ enabled: this.externalLinkEnabled
+ });
+ }
+
+ getDestinationHash(dest) {
+ return "#";
+ }
+
+ getAnchorUrl(hash) {
+ return "#";
+ }
+
+ setHash(hash) {
+ }
+
+ executeNamedAction(action) {
+ }
+
+ executeSetOCGState(action) {
+ }
+
+ cachePageRef(pageNum, pageRef) {
+ }
+ }
+
+ exports.SimpleLinkService = SimpleLinkService;
+
+ /***/
+ }),
+ /* 8 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.AltTextManager = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+
+ class AltTextManager {
+ #boundUpdateUIState = this.#updateUIState.bind(this);
+ #boundSetPosition = this.#setPosition.bind(this);
+ #boundOnClick = this.#onClick.bind(this);
+ #currentEditor = null;
+ #cancelButton;
+ #dialog;
+ #eventBus;
+ #hasUsedPointer = false;
+ #optionDescription;
+ #optionDecorative;
+ #overlayManager;
+ #saveButton;
+ #textarea;
+ #uiManager;
+ #previousAltText = null;
+ #svgElement = null;
+ #rectElement = null;
+ #container;
+ #telemetryData = null;
+
+ constructor({
+ dialog,
+ optionDescription,
+ optionDecorative,
+ textarea,
+ cancelButton,
+ saveButton
+ }, container, overlayManager, eventBus) {
+ this.#dialog = dialog;
+ this.#optionDescription = optionDescription;
+ this.#optionDecorative = optionDecorative;
+ this.#textarea = textarea;
+ this.#cancelButton = cancelButton;
+ this.#saveButton = saveButton;
+ this.#overlayManager = overlayManager;
+ this.#eventBus = eventBus;
+ this.#container = container;
+ dialog.addEventListener("close", this.#close.bind(this));
+ dialog.addEventListener("contextmenu", event => {
+ if (event.target !== this.#textarea) {
+ event.preventDefault();
+ }
+ });
+ cancelButton.addEventListener("click", this.#finish.bind(this));
+ saveButton.addEventListener("click", this.#save.bind(this));
+ optionDescription.addEventListener("change", this.#boundUpdateUIState);
+ optionDecorative.addEventListener("change", this.#boundUpdateUIState);
+ this.#overlayManager.register(dialog);
+ }
+
+ get _elements() {
+ return (0, _pdfjsLib.shadow)(this, "_elements", [this.#optionDescription, this.#optionDecorative, this.#textarea, this.#saveButton, this.#cancelButton]);
+ }
+
+ #createSVGElement() {
+ if (this.#svgElement) {
+ return;
+ }
+ const svgFactory = new _pdfjsLib.DOMSVGFactory();
+ const svg = this.#svgElement = svgFactory.createElement("svg");
+ svg.setAttribute("width", "0");
+ svg.setAttribute("height", "0");
+ const defs = svgFactory.createElement("defs");
+ svg.append(defs);
+ const mask = svgFactory.createElement("mask");
+ defs.append(mask);
+ mask.setAttribute("id", "alttext-manager-mask");
+ mask.setAttribute("maskContentUnits", "objectBoundingBox");
+ let rect = svgFactory.createElement("rect");
+ mask.append(rect);
+ rect.setAttribute("fill", "white");
+ rect.setAttribute("width", "1");
+ rect.setAttribute("height", "1");
+ rect.setAttribute("x", "0");
+ rect.setAttribute("y", "0");
+ rect = this.#rectElement = svgFactory.createElement("rect");
+ mask.append(rect);
+ rect.setAttribute("fill", "black");
+ this.#dialog.append(svg);
+ }
+
+ async editAltText(uiManager, editor) {
+ if (this.#currentEditor || !editor) {
+ return;
+ }
+ this.#createSVGElement();
+ this.#hasUsedPointer = false;
+ for (const element of this._elements) {
+ element.addEventListener("click", this.#boundOnClick);
+ }
+ const {
+ altText,
+ decorative
+ } = editor.altTextData;
+ if (decorative === true) {
+ this.#optionDecorative.checked = true;
+ this.#optionDescription.checked = false;
+ } else {
+ this.#optionDecorative.checked = false;
+ this.#optionDescription.checked = true;
+ }
+ this.#previousAltText = this.#textarea.value = altText?.trim() || "";
+ this.#updateUIState();
+ this.#currentEditor = editor;
+ this.#uiManager = uiManager;
+ this.#uiManager.removeEditListeners();
+ this.#eventBus._on("resize", this.#boundSetPosition);
+ try {
+ await this.#overlayManager.open(this.#dialog);
+ this.#setPosition();
+ } catch (ex) {
+ this.#close();
+ throw ex;
+ }
+ }
+
+ #setPosition() {
+ if (!this.#currentEditor) {
+ return;
+ }
+ const dialog = this.#dialog;
+ const {
+ style
+ } = dialog;
+ const {
+ x: containerX,
+ y: containerY,
+ width: containerW,
+ height: containerH
+ } = this.#container.getBoundingClientRect();
+ const {
+ innerWidth: windowW,
+ innerHeight: windowH
+ } = window;
+ const {
+ width: dialogW,
+ height: dialogH
+ } = dialog.getBoundingClientRect();
+ const {
+ x,
+ y,
+ width,
+ height
+ } = this.#currentEditor.getClientDimensions();
+ const MARGIN = 10;
+ const isLTR = this.#uiManager.direction === "ltr";
+ const xs = Math.max(x, containerX);
+ const xe = Math.min(x + width, containerX + containerW);
+ const ys = Math.max(y, containerY);
+ const ye = Math.min(y + height, containerY + containerH);
+ this.#rectElement.setAttribute("width", `${(xe - xs) / windowW}`);
+ this.#rectElement.setAttribute("height", `${(ye - ys) / windowH}`);
+ this.#rectElement.setAttribute("x", `${xs / windowW}`);
+ this.#rectElement.setAttribute("y", `${ys / windowH}`);
+ let left = null;
+ let top = Math.max(y, 0);
+ top += Math.min(windowH - (top + dialogH), 0);
+ if (isLTR) {
+ if (x + width + MARGIN + dialogW < windowW) {
+ left = x + width + MARGIN;
+ } else if (x > dialogW + MARGIN) {
+ left = x - dialogW - MARGIN;
+ }
+ } else if (x > dialogW + MARGIN) {
+ left = x - dialogW - MARGIN;
+ } else if (x + width + MARGIN + dialogW < windowW) {
+ left = x + width + MARGIN;
+ }
+ if (left === null) {
+ top = null;
+ left = Math.max(x, 0);
+ left += Math.min(windowW - (left + dialogW), 0);
+ if (y > dialogH + MARGIN) {
+ top = y - dialogH - MARGIN;
+ } else if (y + height + MARGIN + dialogH < windowH) {
+ top = y + height + MARGIN;
+ }
+ }
+ if (top !== null) {
+ dialog.classList.add("positioned");
+ if (isLTR) {
+ style.left = `${left}px`;
+ } else {
+ style.right = `${windowW - left - dialogW}px`;
+ }
+ style.top = `${top}px`;
+ } else {
+ dialog.classList.remove("positioned");
+ style.left = "";
+ style.top = "";
+ }
+ }
+
+ #finish() {
+ if (this.#overlayManager.active === this.#dialog) {
+ this.#overlayManager.close(this.#dialog);
+ }
+ }
+
+ #close() {
+ this.#eventBus.dispatch("reporttelemetry", {
+ source: this,
+ details: {
+ type: "editing",
+ subtype: this.#currentEditor.editorType,
+ data: this.#telemetryData || {
+ action: "alt_text_cancel",
+ alt_text_keyboard: !this.#hasUsedPointer
+ }
+ }
+ });
+ this.#telemetryData = null;
+ this.#removeOnClickListeners();
+ this.#uiManager?.addEditListeners();
+ this.#eventBus._off("resize", this.#boundSetPosition);
+ this.#currentEditor = null;
+ this.#uiManager = null;
+ }
+
+ #updateUIState() {
+ this.#textarea.disabled = this.#optionDecorative.checked;
+ }
+
+ #save() {
+ const altText = this.#textarea.value.trim();
+ const decorative = this.#optionDecorative.checked;
+ this.#currentEditor.altTextData = {
+ altText,
+ decorative
+ };
+ this.#telemetryData = {
+ action: "alt_text_save",
+ alt_text_description: !!altText,
+ alt_text_edit: !!this.#previousAltText && this.#previousAltText !== altText,
+ alt_text_decorative: decorative,
+ alt_text_keyboard: !this.#hasUsedPointer
+ };
+ this.#finish();
+ }
+
+ #onClick(evt) {
+ if (evt.detail === 0) {
+ return;
+ }
+ this.#hasUsedPointer = true;
+ this.#removeOnClickListeners();
+ }
+
+ #removeOnClickListeners() {
+ for (const element of this._elements) {
+ element.removeEventListener("click", this.#boundOnClick);
+ }
+ }
+
+ destroy() {
+ this.#uiManager = null;
+ this.#finish();
+ this.#svgElement?.remove();
+ this.#svgElement = this.#rectElement = null;
+ }
+ }
+
+ exports.AltTextManager = AltTextManager;
+
+ /***/
+ }),
+ /* 9 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.AnnotationEditorParams = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+
+ class AnnotationEditorParams {
+ constructor(options, eventBus) {
+ this.eventBus = eventBus;
+ this.#bindListeners(options);
+ }
+
+ #bindListeners({
+ editorFreeTextFontSize,
+ editorFreeTextColor,
+ editorInkColor,
+ editorInkThickness,
+ editorInkOpacity,
+ editorStampAddImage
+ }) {
+ const dispatchEvent = (typeStr, value) => {
+ this.eventBus.dispatch("switchannotationeditorparams", {
+ source: this,
+ type: _pdfjsLib.AnnotationEditorParamsType[typeStr],
+ value
+ });
+ };
+ editorFreeTextFontSize.addEventListener("input", function () {
+ dispatchEvent("FREETEXT_SIZE", this.valueAsNumber);
+ });
+ editorFreeTextColor.addEventListener("input", function () {
+ dispatchEvent("FREETEXT_COLOR", this.value);
+ });
+ editorInkColor.addEventListener("input", function () {
+ dispatchEvent("INK_COLOR", this.value);
+ });
+ editorInkThickness.addEventListener("input", function () {
+ dispatchEvent("INK_THICKNESS", this.valueAsNumber);
+ });
+ editorInkOpacity.addEventListener("input", function () {
+ dispatchEvent("INK_OPACITY", this.valueAsNumber);
+ });
+ editorStampAddImage.addEventListener("click", () => {
+ dispatchEvent("CREATE");
+ });
+ this.eventBus._on("annotationeditorparamschanged", evt => {
+ for (const [type, value] of evt.details) {
+ switch (type) {
+ case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE:
+ editorFreeTextFontSize.value = value;
+ break;
+ case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR:
+ editorFreeTextColor.value = value;
+ break;
+ case _pdfjsLib.AnnotationEditorParamsType.INK_COLOR:
+ editorInkColor.value = value;
+ break;
+ case _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS:
+ editorInkThickness.value = value;
+ break;
+ case _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY:
+ editorInkOpacity.value = value;
+ break;
+ }
+ }
+ });
+ }
+ }
+
+ exports.AnnotationEditorParams = AnnotationEditorParams;
+
+ /***/
+ }),
+ /* 10 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.OverlayManager = void 0;
+
+ class OverlayManager {
+ #overlays = new WeakMap();
+ #active = null;
+ get active() {
+ return this.#active;
+ }
+
+ async register(dialog, canForceClose = false) {
+ if (typeof dialog !== "object") {
+ throw new Error("Not enough parameters.");
+ } else if (this.#overlays.has(dialog)) {
+ throw new Error("The overlay is already registered.");
+ }
+ this.#overlays.set(dialog, {
+ canForceClose
+ });
+ dialog.addEventListener("cancel", evt => {
+ this.#active = null;
+ });
+ }
+
+ async open(dialog) {
+ if (!this.#overlays.has(dialog)) {
+ throw new Error("The overlay does not exist.");
+ } else if (this.#active) {
+ if (this.#active === dialog) {
+ throw new Error("The overlay is already active.");
+ } else if (this.#overlays.get(dialog).canForceClose) {
+ await this.close();
+ } else {
+ throw new Error("Another overlay is currently active.");
+ }
+ }
+ this.#active = dialog;
+ dialog.showModal();
+ }
+
+ async close(dialog = this.#active) {
+ if (!this.#overlays.has(dialog)) {
+ throw new Error("The overlay does not exist.");
+ } else if (!this.#active) {
+ throw new Error("The overlay is currently not active.");
+ } else if (this.#active !== dialog) {
+ throw new Error("Another overlay is currently active.");
+ }
+ dialog.close();
+ this.#active = null;
+ }
+ }
+
+ exports.OverlayManager = OverlayManager;
+
+ /***/
+ }),
+ /* 11 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PasswordPrompt = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+
+ class PasswordPrompt {
+ #activeCapability = null;
+ #updateCallback = null;
+ #reason = null;
+
+ constructor(options, overlayManager, l10n, isViewerEmbedded = false) {
+ this.dialog = options.dialog;
+ this.label = options.label;
+ this.input = options.input;
+ this.submitButton = options.submitButton;
+ this.cancelButton = options.cancelButton;
+ this.overlayManager = overlayManager;
+ this.l10n = l10n;
+ this._isViewerEmbedded = isViewerEmbedded;
+ this.submitButton.addEventListener("click", this.#verify.bind(this));
+ this.cancelButton.addEventListener("click", this.close.bind(this));
+ this.input.addEventListener("keydown", e => {
+ if (e.keyCode === 13) {
+ this.#verify();
+ }
+ });
+ this.overlayManager.register(this.dialog, true);
+ this.dialog.addEventListener("close", this.#cancel.bind(this));
+ }
+
+ async open() {
+ if (this.#activeCapability) {
+ await this.#activeCapability.promise;
+ }
+ this.#activeCapability = new _pdfjsLib.PromiseCapability();
+ try {
+ await this.overlayManager.open(this.dialog);
+ } catch (ex) {
+ this.#activeCapability.resolve();
+ throw ex;
+ }
+ const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;
+ if (!this._isViewerEmbedded || passwordIncorrect) {
+ this.input.focus();
+ }
+ this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`);
+ }
+
+ async close() {
+ if (this.overlayManager.active === this.dialog) {
+ this.overlayManager.close(this.dialog);
+ }
+ }
+
+ #verify() {
+ const password = this.input.value;
+ if (password?.length > 0) {
+ this.#invokeCallback(password);
+ }
+ }
+
+ #cancel() {
+ this.#invokeCallback(new Error("PasswordPrompt cancelled."));
+ this.#activeCapability.resolve();
+ }
+
+ #invokeCallback(password) {
+ if (!this.#updateCallback) {
+ return;
+ }
+ this.close();
+ this.input.value = "";
+ this.#updateCallback(password);
+ this.#updateCallback = null;
+ }
+
+ async setUpdateCallback(updateCallback, reason) {
+ if (this.#activeCapability) {
+ await this.#activeCapability.promise;
+ }
+ this.#updateCallback = updateCallback;
+ this.#reason = reason;
+ }
+ }
+
+ exports.PasswordPrompt = PasswordPrompt;
+
+ /***/
+ }),
+ /* 12 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFAttachmentViewer = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _base_tree_viewer = __webpack_require__(13);
+ var _event_utils = __webpack_require__(6);
+
+ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
+ constructor(options) {
+ super(options);
+ this.downloadManager = options.downloadManager;
+ this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this));
+ }
+
+ reset(keepRenderedCapability = false) {
+ super.reset();
+ this._attachments = null;
+ if (!keepRenderedCapability) {
+ this._renderedCapability = new _pdfjsLib.PromiseCapability();
+ }
+ this._pendingDispatchEvent = false;
+ }
+
+ async _dispatchEvent(attachmentsCount) {
+ this._renderedCapability.resolve();
+ if (attachmentsCount === 0 && !this._pendingDispatchEvent) {
+ this._pendingDispatchEvent = true;
+ await (0, _event_utils.waitOnEventOrTimeout)({
+ target: this.eventBus,
+ name: "annotationlayerrendered",
+ delay: 1000
+ });
+ if (!this._pendingDispatchEvent) {
+ return;
+ }
+ }
+ this._pendingDispatchEvent = false;
+ this.eventBus.dispatch("attachmentsloaded", {
+ source: this,
+ attachmentsCount
+ });
+ }
+
+ _bindLink(element, {
+ content,
+ filename
+ }) {
+ element.onclick = () => {
+ this.downloadManager.openOrDownloadData(element, content, filename);
+ return false;
+ };
+ }
+
+ render({
+ attachments,
+ keepRenderedCapability = false
+ }) {
+ if (this._attachments) {
+ this.reset(keepRenderedCapability);
+ }
+ this._attachments = attachments || null;
+ if (!attachments) {
+ this._dispatchEvent(0);
+ return;
+ }
+ const fragment = document.createDocumentFragment();
+ let attachmentsCount = 0;
+ for (const name in attachments) {
+ const item = attachments[name];
+ const content = item.content,
+ filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename, true);
+ const div = document.createElement("div");
+ div.className = "treeItem";
+ const element = document.createElement("a");
+ this._bindLink(element, {
+ content,
+ filename
+ });
+ element.textContent = this._normalizeTextContent(filename);
+ div.append(element);
+ fragment.append(div);
+ attachmentsCount++;
+ }
+ this._finishRendering(fragment, attachmentsCount);
+ }
+
+ #appendAttachment({
+ filename,
+ content
+ }) {
+ const renderedPromise = this._renderedCapability.promise;
+ renderedPromise.then(() => {
+ if (renderedPromise !== this._renderedCapability.promise) {
+ return;
+ }
+ const attachments = this._attachments || Object.create(null);
+ for (const name in attachments) {
+ if (filename === name) {
+ return;
+ }
+ }
+ attachments[filename] = {
+ filename,
+ content
+ };
+ this.render({
+ attachments,
+ keepRenderedCapability: true
+ });
+ });
+ }
+ }
+
+ exports.PDFAttachmentViewer = PDFAttachmentViewer;
+
+ /***/
+ }),
+ /* 13 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.BaseTreeViewer = void 0;
+ var _ui_utils = __webpack_require__(3);
+ const TREEITEM_OFFSET_TOP = -100;
+ const TREEITEM_SELECTED_CLASS = "selected";
+
+ class BaseTreeViewer {
+ constructor(options) {
+ if (this.constructor === BaseTreeViewer) {
+ throw new Error("Cannot initialize BaseTreeViewer.");
+ }
+ this.container = options.container;
+ this.eventBus = options.eventBus;
+ this.reset();
+ }
+
+ reset() {
+ this._pdfDocument = null;
+ this._lastToggleIsShow = true;
+ this._currentTreeItem = null;
+ this.container.textContent = "";
+ this.container.classList.remove("treeWithDeepNesting");
+ }
+
+ _dispatchEvent(count) {
+ throw new Error("Not implemented: _dispatchEvent");
+ }
+
+ _bindLink(element, params) {
+ throw new Error("Not implemented: _bindLink");
+ }
+
+ _normalizeTextContent(str) {
+ return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013";
+ }
+
+ _addToggleButton(div, hidden = false) {
+ const toggler = document.createElement("div");
+ toggler.className = "treeItemToggler";
+ if (hidden) {
+ toggler.classList.add("treeItemsHidden");
+ }
+ toggler.onclick = evt => {
+ evt.stopPropagation();
+ toggler.classList.toggle("treeItemsHidden");
+ if (evt.shiftKey) {
+ const shouldShowAll = !toggler.classList.contains("treeItemsHidden");
+ this._toggleTreeItem(div, shouldShowAll);
+ }
+ };
+ div.prepend(toggler);
+ }
+
+ _toggleTreeItem(root, show = false) {
+ this._lastToggleIsShow = show;
+ for (const toggler of root.querySelectorAll(".treeItemToggler")) {
+ toggler.classList.toggle("treeItemsHidden", !show);
+ }
+ }
+
+ _toggleAllTreeItems() {
+ this._toggleTreeItem(this.container, !this._lastToggleIsShow);
+ }
+
+ _finishRendering(fragment, count, hasAnyNesting = false) {
+ if (hasAnyNesting) {
+ this.container.classList.add("treeWithDeepNesting");
+ this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden");
+ }
+ this.container.append(fragment);
+ this._dispatchEvent(count);
+ }
+
+ render(params) {
+ throw new Error("Not implemented: render");
+ }
+
+ _updateCurrentTreeItem(treeItem = null) {
+ if (this._currentTreeItem) {
+ this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);
+ this._currentTreeItem = null;
+ }
+ if (treeItem) {
+ treeItem.classList.add(TREEITEM_SELECTED_CLASS);
+ this._currentTreeItem = treeItem;
+ }
+ }
+
+ _scrollToCurrentTreeItem(treeItem) {
+ if (!treeItem) {
+ return;
+ }
+ let currentNode = treeItem.parentNode;
+ while (currentNode && currentNode !== this.container) {
+ if (currentNode.classList.contains("treeItem")) {
+ const toggler = currentNode.firstElementChild;
+ toggler?.classList.remove("treeItemsHidden");
+ }
+ currentNode = currentNode.parentNode;
+ }
+ this._updateCurrentTreeItem(treeItem);
+ this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP);
+ }
+ }
+
+ exports.BaseTreeViewer = BaseTreeViewer;
+
+ /***/
+ }),
+ /* 14 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFCursorTools = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+ var _grab_to_pan = __webpack_require__(15);
+
+ class PDFCursorTools {
+ #active = _ui_utils.CursorTool.SELECT;
+ #prevActive = null;
+
+ constructor({
+ container,
+ eventBus,
+ cursorToolOnLoad = _ui_utils.CursorTool.SELECT
+ }) {
+ this.container = container;
+ this.eventBus = eventBus;
+ this.#addEventListeners();
+ Promise.resolve().then(() => {
+ this.switchTool(cursorToolOnLoad);
+ });
+ }
+
+ get activeTool() {
+ return this.#active;
+ }
+
+ switchTool(tool) {
+ if (this.#prevActive !== null) {
+ return;
+ }
+ if (tool === this.#active) {
+ return;
+ }
+ const disableActiveTool = () => {
+ switch (this.#active) {
+ case _ui_utils.CursorTool.SELECT:
+ break;
+ case _ui_utils.CursorTool.HAND:
+ this._handTool.deactivate();
+ break;
+ case _ui_utils.CursorTool.ZOOM:
+ }
+ };
+ switch (tool) {
+ case _ui_utils.CursorTool.SELECT:
+ disableActiveTool();
+ break;
+ case _ui_utils.CursorTool.HAND:
+ disableActiveTool();
+ this._handTool.activate();
+ break;
+ case _ui_utils.CursorTool.ZOOM:
+ default:
+ console.error(`switchTool: "${tool}" is an unsupported value.`);
+ return;
+ }
+ this.#active = tool;
+ this.eventBus.dispatch("cursortoolchanged", {
+ source: this,
+ tool
+ });
+ }
+
+ #addEventListeners() {
+ this.eventBus._on("switchcursortool", evt => {
+ this.switchTool(evt.tool);
+ });
+ let annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE,
+ presentationModeState = _ui_utils.PresentationModeState.NORMAL;
+ const disableActive = () => {
+ const prevActive = this.#active;
+ this.switchTool(_ui_utils.CursorTool.SELECT);
+ this.#prevActive ??= prevActive;
+ };
+ const enableActive = () => {
+ const prevActive = this.#prevActive;
+ if (prevActive !== null && annotationEditorMode === _pdfjsLib.AnnotationEditorType.NONE && presentationModeState === _ui_utils.PresentationModeState.NORMAL) {
+ this.#prevActive = null;
+ this.switchTool(prevActive);
+ }
+ };
+ this.eventBus._on("secondarytoolbarreset", evt => {
+ if (this.#prevActive !== null) {
+ annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE;
+ presentationModeState = _ui_utils.PresentationModeState.NORMAL;
+ enableActive();
+ }
+ });
+ this.eventBus._on("annotationeditormodechanged", ({
+ mode
+ }) => {
+ annotationEditorMode = mode;
+ if (mode === _pdfjsLib.AnnotationEditorType.NONE) {
+ enableActive();
+ } else {
+ disableActive();
+ }
+ });
+ this.eventBus._on("presentationmodechanged", ({
+ state
+ }) => {
+ presentationModeState = state;
+ if (state === _ui_utils.PresentationModeState.NORMAL) {
+ enableActive();
+ } else if (state === _ui_utils.PresentationModeState.FULLSCREEN) {
+ disableActive();
+ }
+ });
+ }
+
+ get _handTool() {
+ return (0, _pdfjsLib.shadow)(this, "_handTool", new _grab_to_pan.GrabToPan({
+ element: this.container
+ }));
+ }
+ }
+
+ exports.PDFCursorTools = PDFCursorTools;
+
+ /***/
+ }),
+ /* 15 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.GrabToPan = void 0;
+ const CSS_CLASS_GRAB = "grab-to-pan-grab";
+
+ class GrabToPan {
+ constructor({
+ element
+ }) {
+ this.element = element;
+ this.document = element.ownerDocument;
+ this.activate = this.activate.bind(this);
+ this.deactivate = this.deactivate.bind(this);
+ this.toggle = this.toggle.bind(this);
+ this._onMouseDown = this.#onMouseDown.bind(this);
+ this._onMouseMove = this.#onMouseMove.bind(this);
+ this._endPan = this.#endPan.bind(this);
+ const overlay = this.overlay = document.createElement("div");
+ overlay.className = "grab-to-pan-grabbing";
+ }
+
+ activate() {
+ if (!this.active) {
+ this.active = true;
+ this.element.addEventListener("mousedown", this._onMouseDown, true);
+ this.element.classList.add(CSS_CLASS_GRAB);
+ }
+ }
+
+ deactivate() {
+ if (this.active) {
+ this.active = false;
+ this.element.removeEventListener("mousedown", this._onMouseDown, true);
+ this._endPan();
+ this.element.classList.remove(CSS_CLASS_GRAB);
+ }
+ }
+
+ toggle() {
+ if (this.active) {
+ this.deactivate();
+ } else {
+ this.activate();
+ }
+ }
+
+ ignoreTarget(node) {
+ return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option");
+ }
+
+ #onMouseDown(event) {
+ if (event.button !== 0 || this.ignoreTarget(event.target)) {
+ return;
+ }
+ if (event.originalTarget) {
+ try {
+ event.originalTarget.tagName;
+ } catch {
+ return;
+ }
+ }
+ this.scrollLeftStart = this.element.scrollLeft;
+ this.scrollTopStart = this.element.scrollTop;
+ this.clientXStart = event.clientX;
+ this.clientYStart = event.clientY;
+ this.document.addEventListener("mousemove", this._onMouseMove, true);
+ this.document.addEventListener("mouseup", this._endPan, true);
+ this.element.addEventListener("scroll", this._endPan, true);
+ event.preventDefault();
+ event.stopPropagation();
+ const focusedElement = document.activeElement;
+ if (focusedElement && !focusedElement.contains(event.target)) {
+ focusedElement.blur();
+ }
+ }
+
+ #onMouseMove(event) {
+ this.element.removeEventListener("scroll", this._endPan, true);
+ if (!(event.buttons & 1)) {
+ this._endPan();
+ return;
+ }
+ const xDiff = event.clientX - this.clientXStart;
+ const yDiff = event.clientY - this.clientYStart;
+ this.element.scrollTo({
+ top: this.scrollTopStart - yDiff,
+ left: this.scrollLeftStart - xDiff,
+ behavior: "instant"
+ });
+ if (!this.overlay.parentNode) {
+ document.body.append(this.overlay);
+ }
+ }
+
+ #endPan() {
+ this.element.removeEventListener("scroll", this._endPan, true);
+ this.document.removeEventListener("mousemove", this._onMouseMove, true);
+ this.document.removeEventListener("mouseup", this._endPan, true);
+ this.overlay.remove();
+ }
+ }
+
+ exports.GrabToPan = GrabToPan;
+
+ /***/
+ }),
+ /* 16 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFDocumentProperties = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+ const DEFAULT_FIELD_CONTENT = "-";
+ const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"];
+ const US_PAGE_NAMES = {
+ "8.5x11": "Letter",
+ "8.5x14": "Legal"
+ };
+ const METRIC_PAGE_NAMES = {
+ "297x420": "A3",
+ "210x297": "A4"
+ };
+
+ function getPageName(size, isPortrait, pageNames) {
+ const width = isPortrait ? size.width : size.height;
+ const height = isPortrait ? size.height : size.width;
+ return pageNames[`${width}x${height}`];
+ }
+
+ class PDFDocumentProperties {
+ #fieldData = null;
+
+ constructor({
+ dialog,
+ fields,
+ closeButton
+ }, overlayManager, eventBus, l10n, fileNameLookup) {
+ this.dialog = dialog;
+ this.fields = fields;
+ this.overlayManager = overlayManager;
+ this.l10n = l10n;
+ this._fileNameLookup = fileNameLookup;
+ this.#reset();
+ closeButton.addEventListener("click", this.close.bind(this));
+ this.overlayManager.register(this.dialog);
+ eventBus._on("pagechanging", evt => {
+ this._currentPageNumber = evt.pageNumber;
+ });
+ eventBus._on("rotationchanging", evt => {
+ this._pagesRotation = evt.pagesRotation;
+ });
+ this._isNonMetricLocale = true;
+ l10n.getLanguage().then(locale => {
+ this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
+ });
+ }
+
+ async open() {
+ await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]);
+ const currentPageNumber = this._currentPageNumber;
+ const pagesRotation = this._pagesRotation;
+ if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) {
+ this.#updateUI();
+ return;
+ }
+ const {
+ info,
+ contentLength
+ } = await this.pdfDocument.getMetadata();
+ const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
+ return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
+ }), this.#parseLinearization(info.IsLinearized)]);
+ this.#fieldData = Object.freeze({
+ fileName,
+ fileSize,
+ title: info.Title,
+ author: info.Author,
+ subject: info.Subject,
+ keywords: info.Keywords,
+ creationDate,
+ modificationDate,
+ creator: info.Creator,
+ producer: info.Producer,
+ version: info.PDFFormatVersion,
+ pageCount: this.pdfDocument.numPages,
+ pageSize,
+ linearized: isLinearized,
+ _currentPageNumber: currentPageNumber,
+ _pagesRotation: pagesRotation
+ });
+ this.#updateUI();
+ const {
+ length
+ } = await this.pdfDocument.getDownloadInfo();
+ if (contentLength === length) {
+ return;
+ }
+ const data = Object.assign(Object.create(null), this.#fieldData);
+ data.fileSize = await this.#parseFileSize(length);
+ this.#fieldData = Object.freeze(data);
+ this.#updateUI();
+ }
+
+ async close() {
+ this.overlayManager.close(this.dialog);
+ }
+
+ setDocument(pdfDocument) {
+ if (this.pdfDocument) {
+ this.#reset();
+ this.#updateUI(true);
+ }
+ if (!pdfDocument) {
+ return;
+ }
+ this.pdfDocument = pdfDocument;
+ this._dataAvailableCapability.resolve();
+ }
+
+ #reset() {
+ this.pdfDocument = null;
+ this.#fieldData = null;
+ this._dataAvailableCapability = new _pdfjsLib.PromiseCapability();
+ this._currentPageNumber = 1;
+ this._pagesRotation = 0;
+ }
+
+ #updateUI(reset = false) {
+ if (reset || !this.#fieldData) {
+ for (const id in this.fields) {
+ this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
+ }
+ return;
+ }
+ if (this.overlayManager.active !== this.dialog) {
+ return;
+ }
+ for (const id in this.fields) {
+ const content = this.#fieldData[id];
+ this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
+ }
+ }
+
+ async #parseFileSize(fileSize = 0) {
+ const kb = fileSize / 1024,
+ mb = kb / 1024;
+ if (!kb) {
+ return undefined;
+ }
+ return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, {
+ size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),
+ size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),
+ size_b: fileSize.toLocaleString()
+ });
+ }
+
+ async #parsePageSize(pageSizeInches, pagesRotation) {
+ if (!pageSizeInches) {
+ return undefined;
+ }
+ if (pagesRotation % 180 !== 0) {
+ pageSizeInches = {
+ width: pageSizeInches.height,
+ height: pageSizeInches.width
+ };
+ }
+ const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
+ let sizeInches = {
+ width: Math.round(pageSizeInches.width * 100) / 100,
+ height: Math.round(pageSizeInches.height * 100) / 100
+ };
+ let sizeMillimeters = {
+ width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
+ height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
+ };
+ let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);
+ if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
+ const exactMillimeters = {
+ width: pageSizeInches.width * 25.4,
+ height: pageSizeInches.height * 25.4
+ };
+ const intMillimeters = {
+ width: Math.round(sizeMillimeters.width),
+ height: Math.round(sizeMillimeters.height)
+ };
+ if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) {
+ rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
+ if (rawName) {
+ sizeInches = {
+ width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
+ height: Math.round(intMillimeters.height / 25.4 * 100) / 100
+ };
+ sizeMillimeters = intMillimeters;
+ }
+ }
+ }
+ const [{
+ width,
+ height
+ }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]);
+ return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, {
+ width: width.toLocaleString(),
+ height: height.toLocaleString(),
+ unit,
+ name,
+ orientation
+ });
+ }
+
+ async #parseDate(inputDate) {
+ const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate);
+ if (!dateObject) {
+ return undefined;
+ }
+ return this.l10n.get("document_properties_date_string", {
+ date: dateObject.toLocaleDateString(),
+ time: dateObject.toLocaleTimeString()
+ });
+ }
+
+ #parseLinearization(isLinearized) {
+ return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`);
+ }
+ }
+
+ exports.PDFDocumentProperties = PDFDocumentProperties;
+
+ /***/
+ }),
+ /* 17 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFFindBar = void 0;
+ var _pdf_find_controller = __webpack_require__(18);
+ var _ui_utils = __webpack_require__(3);
+ const MATCHES_COUNT_LIMIT = 1000;
+
+ class PDFFindBar {
+ constructor(options, eventBus, l10n) {
+ this.opened = false;
+ this.bar = options.bar;
+ this.toggleButton = options.toggleButton;
+ this.findField = options.findField;
+ this.highlightAll = options.highlightAllCheckbox;
+ this.caseSensitive = options.caseSensitiveCheckbox;
+ this.matchDiacritics = options.matchDiacriticsCheckbox;
+ this.entireWord = options.entireWordCheckbox;
+ this.findMsg = options.findMsg;
+ this.findResultsCount = options.findResultsCount;
+ this.findPreviousButton = options.findPreviousButton;
+ this.findNextButton = options.findNextButton;
+ this.eventBus = eventBus;
+ this.l10n = l10n;
+ this.toggleButton.addEventListener("click", () => {
+ this.toggle();
+ });
+ this.findField.addEventListener("input", () => {
+ this.dispatchEvent("");
+ });
+ this.bar.addEventListener("keydown", e => {
+ switch (e.keyCode) {
+ case 13:
+ if (e.target === this.findField) {
+ this.dispatchEvent("again", e.shiftKey);
+ }
+ break;
+ case 27:
+ this.close();
+ break;
+ }
+ });
+ this.findPreviousButton.addEventListener("click", () => {
+ this.dispatchEvent("again", true);
+ });
+ this.findNextButton.addEventListener("click", () => {
+ this.dispatchEvent("again", false);
+ });
+ this.highlightAll.addEventListener("click", () => {
+ this.dispatchEvent("highlightallchange");
+ });
+ this.caseSensitive.addEventListener("click", () => {
+ this.dispatchEvent("casesensitivitychange");
+ });
+ this.entireWord.addEventListener("click", () => {
+ this.dispatchEvent("entirewordchange");
+ });
+ this.matchDiacritics.addEventListener("click", () => {
+ this.dispatchEvent("diacriticmatchingchange");
+ });
+ this.eventBus._on("resize", this.#adjustWidth.bind(this));
+ }
+
+ reset() {
+ this.updateUIState();
+ }
+
+ dispatchEvent(type, findPrev = false) {
+ this.eventBus.dispatch("find", {
+ source: this,
+ type,
+ query: this.findField.value,
+ caseSensitive: this.caseSensitive.checked,
+ entireWord: this.entireWord.checked,
+ highlightAll: this.highlightAll.checked,
+ findPrevious: findPrev,
+ matchDiacritics: this.matchDiacritics.checked
+ });
+ }
+
+ updateUIState(state, previous, matchesCount) {
+ let findMsg = Promise.resolve("");
+ let status = "";
+ switch (state) {
+ case _pdf_find_controller.FindState.FOUND:
+ break;
+ case _pdf_find_controller.FindState.PENDING:
+ status = "pending";
+ break;
+ case _pdf_find_controller.FindState.NOT_FOUND:
+ findMsg = this.l10n.get("find_not_found");
+ status = "notFound";
+ break;
+ case _pdf_find_controller.FindState.WRAPPED:
+ findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`);
+ break;
+ }
+ this.findField.setAttribute("data-status", status);
+ this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND);
+ findMsg.then(msg => {
+ this.findMsg.setAttribute("data-status", status);
+ this.findMsg.textContent = msg;
+ this.#adjustWidth();
+ });
+ this.updateResultsCount(matchesCount);
+ }
+
+ updateResultsCount({
+ current = 0,
+ total = 0
+ } = {}) {
+ const limit = MATCHES_COUNT_LIMIT;
+ let matchCountMsg = Promise.resolve("");
+ if (total > 0) {
+ if (total > limit) {
+ let key = "find_match_count_limit";
+ matchCountMsg = this.l10n.get(key, {
+ limit
+ });
+ } else {
+ let key = "find_match_count";
+ matchCountMsg = this.l10n.get(key, {
+ current,
+ total
+ });
+ }
+ }
+ matchCountMsg.then(msg => {
+ this.findResultsCount.textContent = msg;
+ this.#adjustWidth();
+ });
+ }
+
+ open() {
+ if (!this.opened) {
+ this.opened = true;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true, this.bar);
+ }
+ this.findField.select();
+ this.findField.focus();
+ this.#adjustWidth();
+ }
+
+ close() {
+ if (!this.opened) {
+ return;
+ }
+ this.opened = false;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false, this.bar);
+ this.eventBus.dispatch("findbarclose", {
+ source: this
+ });
+ }
+
+ toggle() {
+ if (this.opened) {
+ this.close();
+ } else {
+ this.open();
+ }
+ }
+
+ #adjustWidth() {
+ if (!this.opened) {
+ return;
+ }
+ this.bar.classList.remove("wrapContainers");
+ const findbarHeight = this.bar.clientHeight;
+ const inputContainerHeight = this.bar.firstElementChild.clientHeight;
+ if (findbarHeight > inputContainerHeight) {
+ this.bar.classList.add("wrapContainers");
+ }
+ }
+ }
+
+ exports.PDFFindBar = PDFFindBar;
+
+ /***/
+ }),
+ /* 18 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFFindController = exports.FindState = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdf_find_utils = __webpack_require__(19);
+ var _pdfjsLib = __webpack_require__(4);
+ const FindState = {
+ FOUND: 0,
+ NOT_FOUND: 1,
+ WRAPPED: 2,
+ PENDING: 3
+ };
+ exports.FindState = FindState;
+ const FIND_TIMEOUT = 250;
+ const MATCH_SCROLL_OFFSET_TOP = -50;
+ const MATCH_SCROLL_OFFSET_LEFT = -400;
+ const CHARACTERS_TO_NORMALIZE = {
+ "\u2010": "-",
+ "\u2018": "'",
+ "\u2019": "'",
+ "\u201A": "'",
+ "\u201B": "'",
+ "\u201C": '"',
+ "\u201D": '"',
+ "\u201E": '"',
+ "\u201F": '"',
+ "\u00BC": "1/4",
+ "\u00BD": "1/2",
+ "\u00BE": "3/4"
+ };
+ const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]);
+ let DIACRITICS_EXCEPTION_STR;
+ const DIACRITICS_REG_EXP = /\p{M}+/gu;
+ const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu;
+ const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u;
+ const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u;
+ const SYLLABLES_REG_EXP = /[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g;
+ const SYLLABLES_LENGTHS = new Map();
+ const FIRST_CHAR_SYLLABLES_REG_EXP = "[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]";
+ const NFKC_CHARS_TO_NORMALIZE = new Map();
+ let noSyllablesRegExp = null;
+ let withSyllablesRegExp = null;
+
+ function normalize(text) {
+ const syllablePositions = [];
+ let m;
+ while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) {
+ let {
+ index
+ } = m;
+ for (const char of m[0]) {
+ let len = SYLLABLES_LENGTHS.get(char);
+ if (!len) {
+ len = char.normalize("NFD").length;
+ SYLLABLES_LENGTHS.set(char, len);
+ }
+ syllablePositions.push([len, index++]);
+ }
+ }
+ let normalizationRegex;
+ if (syllablePositions.length === 0 && noSyllablesRegExp) {
+ normalizationRegex = noSyllablesRegExp;
+ } else if (syllablePositions.length > 0 && withSyllablesRegExp) {
+ normalizationRegex = withSyllablesRegExp;
+ } else {
+ const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join("");
+ const toNormalizeWithNFKC = (0, _pdf_find_utils.getNormalizeWithNFKC)();
+ const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])";
+ const HKDiacritics = "(?:\u3099|\u309A)";
+ const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(${CJK}\\n)|(\\n)`;
+ if (syllablePositions.length === 0) {
+ normalizationRegex = noSyllablesRegExp = new RegExp(regexp + "|(\\u0000)", "gum");
+ } else {
+ normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, "gum");
+ }
+ }
+ const rawDiacriticsPositions = [];
+ while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {
+ rawDiacriticsPositions.push([m[0].length, m.index]);
+ }
+ let normalized = text.normalize("NFD");
+ const positions = [[0, 0]];
+ let rawDiacriticsIndex = 0;
+ let syllableIndex = 0;
+ let shift = 0;
+ let shiftOrigin = 0;
+ let eol = 0;
+ let hasDiacritics = false;
+ normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => {
+ i -= shiftOrigin;
+ if (p1) {
+ const replacement = CHARACTERS_TO_NORMALIZE[p1];
+ const jj = replacement.length;
+ for (let j = 1; j < jj; j++) {
+ positions.push([i - shift + j, shift - j]);
+ }
+ shift -= jj - 1;
+ return replacement;
+ }
+ if (p2) {
+ let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2);
+ if (!replacement) {
+ replacement = p2.normalize("NFKC");
+ NFKC_CHARS_TO_NORMALIZE.set(p2, replacement);
+ }
+ const jj = replacement.length;
+ for (let j = 1; j < jj; j++) {
+ positions.push([i - shift + j, shift - j]);
+ }
+ shift -= jj - 1;
+ return replacement;
+ }
+ if (p3) {
+ hasDiacritics = true;
+ if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {
+ ++rawDiacriticsIndex;
+ } else {
+ positions.push([i - 1 - shift + 1, shift - 1]);
+ shift -= 1;
+ shiftOrigin += 1;
+ }
+ positions.push([i - shift + 1, shift]);
+ shiftOrigin += 1;
+ eol += 1;
+ return p3.charAt(0);
+ }
+ if (p4) {
+ const hasTrailingDashEOL = p4.endsWith("\n");
+ const len = hasTrailingDashEOL ? p4.length - 2 : p4.length;
+ hasDiacritics = true;
+ let jj = len;
+ if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {
+ jj -= rawDiacriticsPositions[rawDiacriticsIndex][0];
+ ++rawDiacriticsIndex;
+ }
+ for (let j = 1; j <= jj; j++) {
+ positions.push([i - 1 - shift + j, shift - j]);
+ }
+ shift -= jj;
+ shiftOrigin += jj;
+ if (hasTrailingDashEOL) {
+ i += len - 1;
+ positions.push([i - shift + 1, 1 + shift]);
+ shift += 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return p4.slice(0, len);
+ }
+ return p4;
+ }
+ if (p5) {
+ const len = p5.length - 2;
+ positions.push([i - shift + len, 1 + shift]);
+ shift += 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return p5.slice(0, -2);
+ }
+ if (p6) {
+ const len = p6.length - 1;
+ positions.push([i - shift + len, shift]);
+ shiftOrigin += 1;
+ eol += 1;
+ return p6.slice(0, -1);
+ }
+ if (p7) {
+ positions.push([i - shift + 1, shift - 1]);
+ shift -= 1;
+ shiftOrigin += 1;
+ eol += 1;
+ return " ";
+ }
+ if (i + eol === syllablePositions[syllableIndex]?.[1]) {
+ const newCharLen = syllablePositions[syllableIndex][0] - 1;
+ ++syllableIndex;
+ for (let j = 1; j <= newCharLen; j++) {
+ positions.push([i - (shift - j), shift - j]);
+ }
+ shift -= newCharLen;
+ shiftOrigin += newCharLen;
+ }
+ return p8;
+ });
+ positions.push([normalized.length, shift]);
+ return [normalized, positions, hasDiacritics];
+ }
+
+ function getOriginalIndex(diffs, pos, len) {
+ if (!diffs) {
+ return [pos, len];
+ }
+ const start = pos;
+ const end = pos + len - 1;
+ let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start);
+ if (diffs[i][0] > start) {
+ --i;
+ }
+ let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i);
+ if (diffs[j][0] > end) {
+ --j;
+ }
+ const oldStart = start + diffs[i][1];
+ const oldEnd = end + diffs[j][1];
+ const oldLen = oldEnd + 1 - oldStart;
+ return [oldStart, oldLen];
+ }
+
+ class PDFFindController {
+ #state = null;
+ #updateMatchesCountOnProgress = true;
+ #visitedPagesCount = 0;
+
+ constructor({
+ linkService,
+ eventBus,
+ updateMatchesCountOnProgress = true
+ }) {
+ this._linkService = linkService;
+ this._eventBus = eventBus;
+ this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress;
+ this.onIsPageVisible = null;
+ this.#reset();
+ eventBus._on("find", this.#onFind.bind(this));
+ eventBus._on("findbarclose", this.#onFindBarClose.bind(this));
+ }
+
+ get highlightMatches() {
+ return this._highlightMatches;
+ }
+
+ get pageMatches() {
+ return this._pageMatches;
+ }
+
+ get pageMatchesLength() {
+ return this._pageMatchesLength;
+ }
+
+ get selected() {
+ return this._selected;
+ }
+
+ get state() {
+ return this.#state;
+ }
+
+ setDocument(pdfDocument) {
+ if (this._pdfDocument) {
+ this.#reset();
+ }
+ if (!pdfDocument) {
+ return;
+ }
+ this._pdfDocument = pdfDocument;
+ this._firstPageCapability.resolve();
+ }
+
+ #onFind(state) {
+ if (!state) {
+ return;
+ }
+ if (state.phraseSearch === false) {
+ console.error("The `phraseSearch`-parameter was removed, please provide " + "an Array of strings in the `query`-parameter instead.");
+ if (typeof state.query === "string") {
+ state.query = state.query.match(/\S+/g);
+ }
+ }
+ const pdfDocument = this._pdfDocument;
+ const {
+ type
+ } = state;
+ if (this.#state === null || this.#shouldDirtyMatch(state)) {
+ this._dirtyMatch = true;
+ }
+ this.#state = state;
+ if (type !== "highlightallchange") {
+ this.#updateUIState(FindState.PENDING);
+ }
+ this._firstPageCapability.promise.then(() => {
+ if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) {
+ return;
+ }
+ this.#extractText();
+ const findbarClosed = !this._highlightMatches;
+ const pendingTimeout = !!this._findTimeout;
+ if (this._findTimeout) {
+ clearTimeout(this._findTimeout);
+ this._findTimeout = null;
+ }
+ if (!type) {
+ this._findTimeout = setTimeout(() => {
+ this.#nextMatch();
+ this._findTimeout = null;
+ }, FIND_TIMEOUT);
+ } else if (this._dirtyMatch) {
+ this.#nextMatch();
+ } else if (type === "again") {
+ this.#nextMatch();
+ if (findbarClosed && this.#state.highlightAll) {
+ this.#updateAllPages();
+ }
+ } else if (type === "highlightallchange") {
+ if (pendingTimeout) {
+ this.#nextMatch();
+ } else {
+ this._highlightMatches = true;
+ }
+ this.#updateAllPages();
+ } else {
+ this.#nextMatch();
+ }
+ });
+ }
+
+ scrollMatchIntoView({
+ element = null,
+ selectedLeft = 0,
+ pageIndex = -1,
+ matchIndex = -1
+ }) {
+ if (!this._scrollMatches || !element) {
+ return;
+ } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {
+ return;
+ } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {
+ return;
+ }
+ this._scrollMatches = false;
+ const spot = {
+ top: MATCH_SCROLL_OFFSET_TOP,
+ left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT
+ };
+ (0, _ui_utils.scrollIntoView)(element, spot, true);
+ }
+
+ #reset() {
+ this._highlightMatches = false;
+ this._scrollMatches = false;
+ this._pdfDocument = null;
+ this._pageMatches = [];
+ this._pageMatchesLength = [];
+ this.#visitedPagesCount = 0;
+ this.#state = null;
+ this._selected = {
+ pageIdx: -1,
+ matchIdx: -1
+ };
+ this._offset = {
+ pageIdx: null,
+ matchIdx: null,
+ wrapped: false
+ };
+ this._extractTextPromises = [];
+ this._pageContents = [];
+ this._pageDiffs = [];
+ this._hasDiacritics = [];
+ this._matchesCountTotal = 0;
+ this._pagesToSearch = null;
+ this._pendingFindMatches = new Set();
+ this._resumePageIdx = null;
+ this._dirtyMatch = false;
+ clearTimeout(this._findTimeout);
+ this._findTimeout = null;
+ this._firstPageCapability = new _pdfjsLib.PromiseCapability();
+ }
+
+ get #query() {
+ const {
+ query
+ } = this.#state;
+ if (typeof query === "string") {
+ if (query !== this._rawQuery) {
+ this._rawQuery = query;
+ [this._normalizedQuery] = normalize(query);
+ }
+ return this._normalizedQuery;
+ }
+ return (query || []).filter(q => !!q).map(q => normalize(q)[0]);
+ }
+
+ #shouldDirtyMatch(state) {
+ const newQuery = state.query,
+ prevQuery = this.#state.query;
+ const newType = typeof newQuery,
+ prevType = typeof prevQuery;
+ if (newType !== prevType) {
+ return true;
+ }
+ if (newType === "string") {
+ if (newQuery !== prevQuery) {
+ return true;
+ }
+ } else if (JSON.stringify(newQuery) !== JSON.stringify(prevQuery)) {
+ return true;
+ }
+ switch (state.type) {
+ case "again":
+ const pageNumber = this._selected.pageIdx + 1;
+ const linkService = this._linkService;
+ return pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !(this.onIsPageVisible?.(pageNumber) ?? true);
+ case "highlightallchange":
+ return false;
+ }
+ return true;
+ }
+
+ #isEntireWord(content, startIdx, length) {
+ let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP);
+ if (match) {
+ const first = content.charCodeAt(startIdx);
+ const limit = match[1].charCodeAt(0);
+ if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
+ return false;
+ }
+ }
+ match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP);
+ if (match) {
+ const last = content.charCodeAt(startIdx + length - 1);
+ const limit = match[1].charCodeAt(0);
+ if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {
+ const matches = this._pageMatches[pageIndex] = [];
+ const matchesLength = this._pageMatchesLength[pageIndex] = [];
+ if (!query) {
+ return;
+ }
+ const diffs = this._pageDiffs[pageIndex];
+ let match;
+ while ((match = query.exec(pageContent)) !== null) {
+ if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) {
+ continue;
+ }
+ const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length);
+ if (matchLen) {
+ matches.push(matchPos);
+ matchesLength.push(matchLen);
+ }
+ }
+ }
+
+ #convertToRegExpString(query, hasDiacritics) {
+ const {
+ matchDiacritics
+ } = this.#state;
+ let isUnicode = false;
+ query = query.replaceAll(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => {
+ if (p1) {
+ return `[ ]*\\${p1}[ ]*`;
+ }
+ if (p2) {
+ return `[ ]*${p2}[ ]*`;
+ }
+ if (p3) {
+ return "[ ]+";
+ }
+ if (matchDiacritics) {
+ return p4 || p5;
+ }
+ if (p4) {
+ return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : "";
+ }
+ if (hasDiacritics) {
+ isUnicode = true;
+ return `${p5}\\p{M}*`;
+ }
+ return p5;
+ });
+ const trailingSpaces = "[ ]*";
+ if (query.endsWith(trailingSpaces)) {
+ query = query.slice(0, query.length - trailingSpaces.length);
+ }
+ if (matchDiacritics) {
+ if (hasDiacritics) {
+ DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(...DIACRITICS_EXCEPTION);
+ isUnicode = true;
+ query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`;
+ }
+ }
+ return [isUnicode, query];
+ }
+
+ #calculateMatch(pageIndex) {
+ let query = this.#query;
+ if (query.length === 0) {
+ return;
+ }
+ const {
+ caseSensitive,
+ entireWord
+ } = this.#state;
+ const pageContent = this._pageContents[pageIndex];
+ const hasDiacritics = this._hasDiacritics[pageIndex];
+ let isUnicode = false;
+ if (typeof query === "string") {
+ [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);
+ } else {
+ query = query.sort().reverse().map(q => {
+ const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics);
+ isUnicode ||= isUnicodePart;
+ return `(${queryPart})`;
+ }).join("|");
+ }
+ const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`;
+ query = query ? new RegExp(query, flags) : null;
+ this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);
+ if (this.#state.highlightAll) {
+ this.#updatePage(pageIndex);
+ }
+ if (this._resumePageIdx === pageIndex) {
+ this._resumePageIdx = null;
+ this.#nextPageMatch();
+ }
+ const pageMatchesCount = this._pageMatches[pageIndex].length;
+ this._matchesCountTotal += pageMatchesCount;
+ if (this.#updateMatchesCountOnProgress) {
+ if (pageMatchesCount > 0) {
+ this.#updateUIResultsCount();
+ }
+ } else if (++this.#visitedPagesCount === this._linkService.pagesCount) {
+ this.#updateUIResultsCount();
+ }
+ }
+
+ #extractText() {
+ if (this._extractTextPromises.length > 0) {
+ return;
+ }
+ let promise = Promise.resolve();
+ const textOptions = {
+ disableNormalization: true
+ };
+ for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
+ const extractTextCapability = new _pdfjsLib.PromiseCapability();
+ this._extractTextPromises[i] = extractTextCapability.promise;
+ promise = promise.then(() => {
+ return this._pdfDocument.getPage(i + 1).then(pdfPage => {
+ return pdfPage.getTextContent(textOptions);
+ }).then(textContent => {
+ const strBuf = [];
+ for (const textItem of textContent.items) {
+ strBuf.push(textItem.str);
+ if (textItem.hasEOL) {
+ strBuf.push("\n");
+ }
+ }
+ [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join(""));
+ extractTextCapability.resolve();
+ }, reason => {
+ console.error(`Unable to get text content for page ${i + 1}`, reason);
+ this._pageContents[i] = "";
+ this._pageDiffs[i] = null;
+ this._hasDiacritics[i] = false;
+ extractTextCapability.resolve();
+ });
+ });
+ }
+ }
+
+ #updatePage(index) {
+ if (this._scrollMatches && this._selected.pageIdx === index) {
+ this._linkService.page = index + 1;
+ }
+ this._eventBus.dispatch("updatetextlayermatches", {
+ source: this,
+ pageIndex: index
+ });
+ }
+
+ #updateAllPages() {
+ this._eventBus.dispatch("updatetextlayermatches", {
+ source: this,
+ pageIndex: -1
+ });
+ }
+
+ #nextMatch() {
+ const previous = this.#state.findPrevious;
+ const currentPageIndex = this._linkService.page - 1;
+ const numPages = this._linkService.pagesCount;
+ this._highlightMatches = true;
+ if (this._dirtyMatch) {
+ this._dirtyMatch = false;
+ this._selected.pageIdx = this._selected.matchIdx = -1;
+ this._offset.pageIdx = currentPageIndex;
+ this._offset.matchIdx = null;
+ this._offset.wrapped = false;
+ this._resumePageIdx = null;
+ this._pageMatches.length = 0;
+ this._pageMatchesLength.length = 0;
+ this.#visitedPagesCount = 0;
+ this._matchesCountTotal = 0;
+ this.#updateAllPages();
+ for (let i = 0; i < numPages; i++) {
+ if (this._pendingFindMatches.has(i)) {
+ continue;
+ }
+ this._pendingFindMatches.add(i);
+ this._extractTextPromises[i].then(() => {
+ this._pendingFindMatches.delete(i);
+ this.#calculateMatch(i);
+ });
+ }
+ }
+ const query = this.#query;
+ if (query.length === 0) {
+ this.#updateUIState(FindState.FOUND);
+ return;
+ }
+ if (this._resumePageIdx) {
+ return;
+ }
+ const offset = this._offset;
+ this._pagesToSearch = numPages;
+ if (offset.matchIdx !== null) {
+ const numPageMatches = this._pageMatches[offset.pageIdx].length;
+ if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
+ offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
+ this.#updateMatch(true);
+ return;
+ }
+ this.#advanceOffsetPage(previous);
+ }
+ this.#nextPageMatch();
+ }
+
+ #matchesReady(matches) {
+ const offset = this._offset;
+ const numMatches = matches.length;
+ const previous = this.#state.findPrevious;
+ if (numMatches) {
+ offset.matchIdx = previous ? numMatches - 1 : 0;
+ this.#updateMatch(true);
+ return true;
+ }
+ this.#advanceOffsetPage(previous);
+ if (offset.wrapped) {
+ offset.matchIdx = null;
+ if (this._pagesToSearch < 0) {
+ this.#updateMatch(false);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ #nextPageMatch() {
+ if (this._resumePageIdx !== null) {
+ console.error("There can only be one pending page.");
+ }
+ let matches = null;
+ do {
+ const pageIdx = this._offset.pageIdx;
+ matches = this._pageMatches[pageIdx];
+ if (!matches) {
+ this._resumePageIdx = pageIdx;
+ break;
+ }
+ } while (!this.#matchesReady(matches));
+ }
+
+ #advanceOffsetPage(previous) {
+ const offset = this._offset;
+ const numPages = this._linkService.pagesCount;
+ offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
+ offset.matchIdx = null;
+ this._pagesToSearch--;
+ if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
+ offset.pageIdx = previous ? numPages - 1 : 0;
+ offset.wrapped = true;
+ }
+ }
+
+ #updateMatch(found = false) {
+ let state = FindState.NOT_FOUND;
+ const wrapped = this._offset.wrapped;
+ this._offset.wrapped = false;
+ if (found) {
+ const previousPage = this._selected.pageIdx;
+ this._selected.pageIdx = this._offset.pageIdx;
+ this._selected.matchIdx = this._offset.matchIdx;
+ state = wrapped ? FindState.WRAPPED : FindState.FOUND;
+ if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
+ this.#updatePage(previousPage);
+ }
+ }
+ this.#updateUIState(state, this.#state.findPrevious);
+ if (this._selected.pageIdx !== -1) {
+ this._scrollMatches = true;
+ this.#updatePage(this._selected.pageIdx);
+ }
+ }
+
+ #onFindBarClose(evt) {
+ const pdfDocument = this._pdfDocument;
+ this._firstPageCapability.promise.then(() => {
+ if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) {
+ return;
+ }
+ if (this._findTimeout) {
+ clearTimeout(this._findTimeout);
+ this._findTimeout = null;
+ }
+ if (this._resumePageIdx) {
+ this._resumePageIdx = null;
+ this._dirtyMatch = true;
+ }
+ this.#updateUIState(FindState.FOUND);
+ this._highlightMatches = false;
+ this.#updateAllPages();
+ });
+ }
+
+ #requestMatchesCount() {
+ const {
+ pageIdx,
+ matchIdx
+ } = this._selected;
+ let current = 0,
+ total = this._matchesCountTotal;
+ if (matchIdx !== -1) {
+ for (let i = 0; i < pageIdx; i++) {
+ current += this._pageMatches[i]?.length || 0;
+ }
+ current += matchIdx + 1;
+ }
+ if (current < 1 || current > total) {
+ current = total = 0;
+ }
+ return {
+ current,
+ total
+ };
+ }
+
+ #updateUIResultsCount() {
+ this._eventBus.dispatch("updatefindmatchescount", {
+ source: this,
+ matchesCount: this.#requestMatchesCount()
+ });
+ }
+
+ #updateUIState(state, previous = false) {
+ if (!this.#updateMatchesCountOnProgress && (this.#visitedPagesCount !== this._linkService.pagesCount || state === FindState.PENDING)) {
+ return;
+ }
+ this._eventBus.dispatch("updatefindcontrolstate", {
+ source: this,
+ state,
+ previous,
+ matchesCount: this.#requestMatchesCount(),
+ rawQuery: this.#state?.query ?? null
+ });
+ }
+ }
+
+ exports.PDFFindController = PDFFindController;
+
+ /***/
+ }),
+ /* 19 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.CharacterType = void 0;
+ exports.getCharacterType = getCharacterType;
+ exports.getNormalizeWithNFKC = getNormalizeWithNFKC;
+ const CharacterType = {
+ SPACE: 0,
+ ALPHA_LETTER: 1,
+ PUNCT: 2,
+ HAN_LETTER: 3,
+ KATAKANA_LETTER: 4,
+ HIRAGANA_LETTER: 5,
+ HALFWIDTH_KATAKANA_LETTER: 6,
+ THAI_LETTER: 7
+ };
+ exports.CharacterType = CharacterType;
+
+ function isAlphabeticalScript(charCode) {
+ return charCode < 0x2e80;
+ }
+
+ function isAscii(charCode) {
+ return (charCode & 0xff80) === 0;
+ }
+
+ function isAsciiAlpha(charCode) {
+ return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a;
+ }
+
+ function isAsciiDigit(charCode) {
+ return charCode >= 0x30 && charCode <= 0x39;
+ }
+
+ function isAsciiSpace(charCode) {
+ return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a;
+ }
+
+ function isHan(charCode) {
+ return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff;
+ }
+
+ function isKatakana(charCode) {
+ return charCode >= 0x30a0 && charCode <= 0x30ff;
+ }
+
+ function isHiragana(charCode) {
+ return charCode >= 0x3040 && charCode <= 0x309f;
+ }
+
+ function isHalfwidthKatakana(charCode) {
+ return charCode >= 0xff60 && charCode <= 0xff9f;
+ }
+
+ function isThai(charCode) {
+ return (charCode & 0xff80) === 0x0e00;
+ }
+
+ function getCharacterType(charCode) {
+ if (isAlphabeticalScript(charCode)) {
+ if (isAscii(charCode)) {
+ if (isAsciiSpace(charCode)) {
+ return CharacterType.SPACE;
+ } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) {
+ return CharacterType.ALPHA_LETTER;
+ }
+ return CharacterType.PUNCT;
+ } else if (isThai(charCode)) {
+ return CharacterType.THAI_LETTER;
+ } else if (charCode === 0xa0) {
+ return CharacterType.SPACE;
+ }
+ return CharacterType.ALPHA_LETTER;
+ }
+ if (isHan(charCode)) {
+ return CharacterType.HAN_LETTER;
+ } else if (isKatakana(charCode)) {
+ return CharacterType.KATAKANA_LETTER;
+ } else if (isHiragana(charCode)) {
+ return CharacterType.HIRAGANA_LETTER;
+ } else if (isHalfwidthKatakana(charCode)) {
+ return CharacterType.HALFWIDTH_KATAKANA_LETTER;
+ }
+ return CharacterType.ALPHA_LETTER;
+ }
+
+ let NormalizeWithNFKC;
+
+ function getNormalizeWithNFKC() {
+ NormalizeWithNFKC ||= ` ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩`;
+ return NormalizeWithNFKC;
+ }
+
+ /***/
+ }),
+ /* 20 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFHistory = void 0;
+ exports.isDestArraysEqual = isDestArraysEqual;
+ exports.isDestHashesEqual = isDestHashesEqual;
+ var _ui_utils = __webpack_require__(3);
+ var _event_utils = __webpack_require__(6);
+ const HASH_CHANGE_TIMEOUT = 1000;
+ const POSITION_UPDATED_THRESHOLD = 50;
+ const UPDATE_VIEWAREA_TIMEOUT = 1000;
+
+ function getCurrentHash() {
+ return document.location.hash;
+ }
+
+ class PDFHistory {
+ constructor({
+ linkService,
+ eventBus
+ }) {
+ this.linkService = linkService;
+ this.eventBus = eventBus;
+ this._initialized = false;
+ this._fingerprint = "";
+ this.reset();
+ this._boundEvents = null;
+ this.eventBus._on("pagesinit", () => {
+ this._isPagesLoaded = false;
+ this.eventBus._on("pagesloaded", evt => {
+ this._isPagesLoaded = !!evt.pagesCount;
+ }, {
+ once: true
+ });
+ });
+ }
+
+ initialize({
+ fingerprint,
+ resetHistory = false,
+ updateUrl = false
+ }) {
+ if (!fingerprint || typeof fingerprint !== "string") {
+ console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
+ return;
+ }
+ if (this._initialized) {
+ this.reset();
+ }
+ const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint;
+ this._fingerprint = fingerprint;
+ this._updateUrl = updateUrl === true;
+ this._initialized = true;
+ this._bindEvents();
+ const state = window.history.state;
+ this._popStateInProgress = false;
+ this._blockHashChange = 0;
+ this._currentHash = getCurrentHash();
+ this._numPositionUpdates = 0;
+ this._uid = this._maxUid = 0;
+ this._destination = null;
+ this._position = null;
+ if (!this._isValidState(state, true) || resetHistory) {
+ const {
+ hash,
+ page,
+ rotation
+ } = this._parseCurrentHash(true);
+ if (!hash || reInitialized || resetHistory) {
+ this._pushOrReplaceState(null, true);
+ return;
+ }
+ this._pushOrReplaceState({
+ hash,
+ page,
+ rotation
+ }, true);
+ return;
+ }
+ const destination = state.destination;
+ this._updateInternalState(destination, state.uid, true);
+ if (destination.rotation !== undefined) {
+ this._initialRotation = destination.rotation;
+ }
+ if (destination.dest) {
+ this._initialBookmark = JSON.stringify(destination.dest);
+ this._destination.page = null;
+ } else if (destination.hash) {
+ this._initialBookmark = destination.hash;
+ } else if (destination.page) {
+ this._initialBookmark = `page=${destination.page}`;
+ }
+ }
+
+ reset() {
+ if (this._initialized) {
+ this._pageHide();
+ this._initialized = false;
+ this._unbindEvents();
+ }
+ if (this._updateViewareaTimeout) {
+ clearTimeout(this._updateViewareaTimeout);
+ this._updateViewareaTimeout = null;
+ }
+ this._initialBookmark = null;
+ this._initialRotation = null;
+ }
+
+ push({
+ namedDest = null,
+ explicitDest,
+ pageNumber
+ }) {
+ if (!this._initialized) {
+ return;
+ }
+ if (namedDest && typeof namedDest !== "string") {
+ console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`);
+ return;
+ } else if (!Array.isArray(explicitDest)) {
+ console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`);
+ return;
+ } else if (!this._isValidPage(pageNumber)) {
+ if (pageNumber !== null || this._destination) {
+ console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`);
+ return;
+ }
+ }
+ const hash = namedDest || JSON.stringify(explicitDest);
+ if (!hash) {
+ return;
+ }
+ let forceReplace = false;
+ if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {
+ if (this._destination.page) {
+ return;
+ }
+ forceReplace = true;
+ }
+ if (this._popStateInProgress && !forceReplace) {
+ return;
+ }
+ this._pushOrReplaceState({
+ dest: explicitDest,
+ hash,
+ page: pageNumber,
+ rotation: this.linkService.rotation
+ }, forceReplace);
+ if (!this._popStateInProgress) {
+ this._popStateInProgress = true;
+ Promise.resolve().then(() => {
+ this._popStateInProgress = false;
+ });
+ }
+ }
+
+ pushPage(pageNumber) {
+ if (!this._initialized) {
+ return;
+ }
+ if (!this._isValidPage(pageNumber)) {
+ console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`);
+ return;
+ }
+ if (this._destination?.page === pageNumber) {
+ return;
+ }
+ if (this._popStateInProgress) {
+ return;
+ }
+ this._pushOrReplaceState({
+ dest: null,
+ hash: `page=${pageNumber}`,
+ page: pageNumber,
+ rotation: this.linkService.rotation
+ });
+ if (!this._popStateInProgress) {
+ this._popStateInProgress = true;
+ Promise.resolve().then(() => {
+ this._popStateInProgress = false;
+ });
+ }
+ }
+
+ pushCurrentPosition() {
+ if (!this._initialized || this._popStateInProgress) {
+ return;
+ }
+ this._tryPushCurrentPosition();
+ }
+
+ back() {
+ if (!this._initialized || this._popStateInProgress) {
+ return;
+ }
+ const state = window.history.state;
+ if (this._isValidState(state) && state.uid > 0) {
+ window.history.back();
+ }
+ }
+
+ forward() {
+ if (!this._initialized || this._popStateInProgress) {
+ return;
+ }
+ const state = window.history.state;
+ if (this._isValidState(state) && state.uid < this._maxUid) {
+ window.history.forward();
+ }
+ }
+
+ get popStateInProgress() {
+ return this._initialized && (this._popStateInProgress || this._blockHashChange > 0);
+ }
+
+ get initialBookmark() {
+ return this._initialized ? this._initialBookmark : null;
+ }
+
+ get initialRotation() {
+ return this._initialized ? this._initialRotation : null;
+ }
+
+ _pushOrReplaceState(destination, forceReplace = false) {
+ const shouldReplace = forceReplace || !this._destination;
+ const newState = {
+ fingerprint: this._fingerprint,
+ uid: shouldReplace ? this._uid : this._uid + 1,
+ destination
+ };
+ this._updateInternalState(destination, newState.uid);
+ let newUrl;
+ if (this._updateUrl && destination?.hash) {
+ const baseUrl = document.location.href.split("#")[0];
+ if (!baseUrl.startsWith("file://")) {
+ newUrl = `${baseUrl}#${destination.hash}`;
+ }
+ }
+ if (shouldReplace) {
+ window.history.replaceState(newState, "", newUrl);
+ } else {
+ window.history.pushState(newState, "", newUrl);
+ }
+ }
+
+ _tryPushCurrentPosition(temporary = false) {
+ if (!this._position) {
+ return;
+ }
+ let position = this._position;
+ if (temporary) {
+ position = Object.assign(Object.create(null), this._position);
+ position.temporary = true;
+ }
+ if (!this._destination) {
+ this._pushOrReplaceState(position);
+ return;
+ }
+ if (this._destination.temporary) {
+ this._pushOrReplaceState(position, true);
+ return;
+ }
+ if (this._destination.hash === position.hash) {
+ return;
+ }
+ if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {
+ return;
+ }
+ let forceReplace = false;
+ if (this._destination.page >= position.first && this._destination.page <= position.page) {
+ if (this._destination.dest !== undefined || !this._destination.first) {
+ return;
+ }
+ forceReplace = true;
+ }
+ this._pushOrReplaceState(position, forceReplace);
+ }
+
+ _isValidPage(val) {
+ return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount;
+ }
+
+ _isValidState(state, checkReload = false) {
+ if (!state) {
+ return false;
+ }
+ if (state.fingerprint !== this._fingerprint) {
+ if (checkReload) {
+ if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) {
+ return false;
+ }
+ const [perfEntry] = performance.getEntriesByType("navigation");
+ if (perfEntry?.type !== "reload") {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+ if (!Number.isInteger(state.uid) || state.uid < 0) {
+ return false;
+ }
+ if (state.destination === null || typeof state.destination !== "object") {
+ return false;
+ }
+ return true;
+ }
+
+ _updateInternalState(destination, uid, removeTemporary = false) {
+ if (this._updateViewareaTimeout) {
+ clearTimeout(this._updateViewareaTimeout);
+ this._updateViewareaTimeout = null;
+ }
+ if (removeTemporary && destination?.temporary) {
+ delete destination.temporary;
+ }
+ this._destination = destination;
+ this._uid = uid;
+ this._maxUid = Math.max(this._maxUid, uid);
+ this._numPositionUpdates = 0;
+ }
+
+ _parseCurrentHash(checkNameddest = false) {
+ const hash = unescape(getCurrentHash()).substring(1);
+ const params = (0, _ui_utils.parseQueryString)(hash);
+ const nameddest = params.get("nameddest") || "";
+ let page = params.get("page") | 0;
+ if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) {
+ page = null;
+ }
+ return {
+ hash,
+ page,
+ rotation: this.linkService.rotation
+ };
+ }
+
+ _updateViewarea({
+ location
+ }) {
+ if (this._updateViewareaTimeout) {
+ clearTimeout(this._updateViewareaTimeout);
+ this._updateViewareaTimeout = null;
+ }
+ this._position = {
+ hash: location.pdfOpenParams.substring(1),
+ page: this.linkService.page,
+ first: location.pageNumber,
+ rotation: location.rotation
+ };
+ if (this._popStateInProgress) {
+ return;
+ }
+ if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {
+ this._numPositionUpdates++;
+ }
+ if (UPDATE_VIEWAREA_TIMEOUT > 0) {
+ this._updateViewareaTimeout = setTimeout(() => {
+ if (!this._popStateInProgress) {
+ this._tryPushCurrentPosition(true);
+ }
+ this._updateViewareaTimeout = null;
+ }, UPDATE_VIEWAREA_TIMEOUT);
+ }
+ }
+
+ _popState({
+ state
+ }) {
+ const newHash = getCurrentHash(),
+ hashChanged = this._currentHash !== newHash;
+ this._currentHash = newHash;
+ if (!state) {
+ this._uid++;
+ const {
+ hash,
+ page,
+ rotation
+ } = this._parseCurrentHash();
+ this._pushOrReplaceState({
+ hash,
+ page,
+ rotation
+ }, true);
+ return;
+ }
+ if (!this._isValidState(state)) {
+ return;
+ }
+ this._popStateInProgress = true;
+ if (hashChanged) {
+ this._blockHashChange++;
+ (0, _event_utils.waitOnEventOrTimeout)({
+ target: window,
+ name: "hashchange",
+ delay: HASH_CHANGE_TIMEOUT
+ }).then(() => {
+ this._blockHashChange--;
+ });
+ }
+ const destination = state.destination;
+ this._updateInternalState(destination, state.uid, true);
+ if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
+ this.linkService.rotation = destination.rotation;
+ }
+ if (destination.dest) {
+ this.linkService.goToDestination(destination.dest);
+ } else if (destination.hash) {
+ this.linkService.setHash(destination.hash);
+ } else if (destination.page) {
+ this.linkService.page = destination.page;
+ }
+ Promise.resolve().then(() => {
+ this._popStateInProgress = false;
+ });
+ }
+
+ _pageHide() {
+ if (!this._destination || this._destination.temporary) {
+ this._tryPushCurrentPosition();
+ }
+ }
+
+ _bindEvents() {
+ if (this._boundEvents) {
+ return;
+ }
+ this._boundEvents = {
+ updateViewarea: this._updateViewarea.bind(this),
+ popState: this._popState.bind(this),
+ pageHide: this._pageHide.bind(this)
+ };
+ this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea);
+ window.addEventListener("popstate", this._boundEvents.popState);
+ window.addEventListener("pagehide", this._boundEvents.pageHide);
+ }
+
+ _unbindEvents() {
+ if (!this._boundEvents) {
+ return;
+ }
+ this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea);
+ window.removeEventListener("popstate", this._boundEvents.popState);
+ window.removeEventListener("pagehide", this._boundEvents.pageHide);
+ this._boundEvents = null;
+ }
+ }
+
+ exports.PDFHistory = PDFHistory;
+
+ function isDestHashesEqual(destHash, pushHash) {
+ if (typeof destHash !== "string" || typeof pushHash !== "string") {
+ return false;
+ }
+ if (destHash === pushHash) {
+ return true;
+ }
+ const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest");
+ if (nameddest === pushHash) {
+ return true;
+ }
+ return false;
+ }
+
+ function isDestArraysEqual(firstDest, secondDest) {
+ function isEntryEqual(first, second) {
+ if (typeof first !== typeof second) {
+ return false;
+ }
+ if (Array.isArray(first) || Array.isArray(second)) {
+ return false;
+ }
+ if (first !== null && typeof first === "object" && second !== null) {
+ if (Object.keys(first).length !== Object.keys(second).length) {
+ return false;
+ }
+ for (const key in first) {
+ if (!isEntryEqual(first[key], second[key])) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return first === second || Number.isNaN(first) && Number.isNaN(second);
+ }
+
+ if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
+ return false;
+ }
+ if (firstDest.length !== secondDest.length) {
+ return false;
+ }
+ for (let i = 0, ii = firstDest.length; i < ii; i++) {
+ if (!isEntryEqual(firstDest[i], secondDest[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /***/
+ }),
+ /* 21 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFLayerViewer = void 0;
+ var _base_tree_viewer = __webpack_require__(13);
+
+ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
+ constructor(options) {
+ super(options);
+ this.l10n = options.l10n;
+ this.eventBus._on("optionalcontentconfigchanged", evt => {
+ this.#updateLayers(evt.promise);
+ });
+ this.eventBus._on("resetlayers", () => {
+ this.#updateLayers();
+ });
+ this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this));
+ }
+
+ reset() {
+ super.reset();
+ this._optionalContentConfig = null;
+ this._optionalContentHash = null;
+ }
+
+ _dispatchEvent(layersCount) {
+ this.eventBus.dispatch("layersloaded", {
+ source: this,
+ layersCount
+ });
+ }
+
+ _bindLink(element, {
+ groupId,
+ input
+ }) {
+ const setVisibility = () => {
+ this._optionalContentConfig.setVisibility(groupId, input.checked);
+ this._optionalContentHash = this._optionalContentConfig.getHash();
+ this.eventBus.dispatch("optionalcontentconfig", {
+ source: this,
+ promise: Promise.resolve(this._optionalContentConfig)
+ });
+ };
+ element.onclick = evt => {
+ if (evt.target === input) {
+ setVisibility();
+ return true;
+ } else if (evt.target !== element) {
+ return true;
+ }
+ input.checked = !input.checked;
+ setVisibility();
+ return false;
+ };
+ }
+
+ async _setNestedName(element, {
+ name = null
+ }) {
+ if (typeof name === "string") {
+ element.textContent = this._normalizeTextContent(name);
+ return;
+ }
+ element.textContent = await this.l10n.get("additional_layers");
+ element.style.fontStyle = "italic";
+ }
+
+ _addToggleButton(div, {
+ name = null
+ }) {
+ super._addToggleButton(div, name === null);
+ }
+
+ _toggleAllTreeItems() {
+ if (!this._optionalContentConfig) {
+ return;
+ }
+ super._toggleAllTreeItems();
+ }
+
+ render({
+ optionalContentConfig,
+ pdfDocument
+ }) {
+ if (this._optionalContentConfig) {
+ this.reset();
+ }
+ this._optionalContentConfig = optionalContentConfig || null;
+ this._pdfDocument = pdfDocument || null;
+ const groups = optionalContentConfig?.getOrder();
+ if (!groups) {
+ this._dispatchEvent(0);
+ return;
+ }
+ this._optionalContentHash = optionalContentConfig.getHash();
+ const fragment = document.createDocumentFragment(),
+ queue = [{
+ parent: fragment,
+ groups
+ }];
+ let layersCount = 0,
+ hasAnyNesting = false;
+ while (queue.length > 0) {
+ const levelData = queue.shift();
+ for (const groupId of levelData.groups) {
+ const div = document.createElement("div");
+ div.className = "treeItem";
+ const element = document.createElement("a");
+ div.append(element);
+ if (typeof groupId === "object") {
+ hasAnyNesting = true;
+ this._addToggleButton(div, groupId);
+ this._setNestedName(element, groupId);
+ const itemsDiv = document.createElement("div");
+ itemsDiv.className = "treeItems";
+ div.append(itemsDiv);
+ queue.push({
+ parent: itemsDiv,
+ groups: groupId.order
+ });
+ } else {
+ const group = optionalContentConfig.getGroup(groupId);
+ const input = document.createElement("input");
+ this._bindLink(element, {
+ groupId,
+ input
+ });
+ input.type = "checkbox";
+ input.checked = group.visible;
+ const label = document.createElement("label");
+ label.textContent = this._normalizeTextContent(group.name);
+ label.append(input);
+ element.append(label);
+ layersCount++;
+ }
+ levelData.parent.append(div);
+ }
+ }
+ this._finishRendering(fragment, layersCount, hasAnyNesting);
+ }
+
+ async #updateLayers(promise = null) {
+ if (!this._optionalContentConfig) {
+ return;
+ }
+ const pdfDocument = this._pdfDocument;
+ const optionalContentConfig = await (promise || pdfDocument.getOptionalContentConfig());
+ if (pdfDocument !== this._pdfDocument) {
+ return;
+ }
+ if (promise) {
+ if (optionalContentConfig.getHash() === this._optionalContentHash) {
+ return;
+ }
+ } else {
+ this.eventBus.dispatch("optionalcontentconfig", {
+ source: this,
+ promise: Promise.resolve(optionalContentConfig)
+ });
+ }
+ this.render({
+ optionalContentConfig,
+ pdfDocument: this._pdfDocument
+ });
+ }
+ }
+
+ exports.PDFLayerViewer = PDFLayerViewer;
+
+ /***/
+ }),
+ /* 22 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFOutlineViewer = void 0;
+ var _base_tree_viewer = __webpack_require__(13);
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+
+ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
+ constructor(options) {
+ super(options);
+ this.linkService = options.linkService;
+ this.downloadManager = options.downloadManager;
+ this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this));
+ this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this));
+ this.eventBus._on("pagechanging", evt => {
+ this._currentPageNumber = evt.pageNumber;
+ });
+ this.eventBus._on("pagesloaded", evt => {
+ this._isPagesLoaded = !!evt.pagesCount;
+ if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) {
+ this._currentOutlineItemCapability.resolve(this._isPagesLoaded);
+ }
+ });
+ this.eventBus._on("sidebarviewchanged", evt => {
+ this._sidebarView = evt.view;
+ });
+ }
+
+ reset() {
+ super.reset();
+ this._outline = null;
+ this._pageNumberToDestHashCapability = null;
+ this._currentPageNumber = 1;
+ this._isPagesLoaded = null;
+ if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) {
+ this._currentOutlineItemCapability.resolve(false);
+ }
+ this._currentOutlineItemCapability = null;
+ }
+
+ _dispatchEvent(outlineCount) {
+ this._currentOutlineItemCapability = new _pdfjsLib.PromiseCapability();
+ if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) {
+ this._currentOutlineItemCapability.resolve(false);
+ } else if (this._isPagesLoaded !== null) {
+ this._currentOutlineItemCapability.resolve(this._isPagesLoaded);
+ }
+ this.eventBus.dispatch("outlineloaded", {
+ source: this,
+ outlineCount,
+ currentOutlineItemPromise: this._currentOutlineItemCapability.promise
+ });
+ }
+
+ _bindLink(element, {
+ url,
+ newWindow,
+ action,
+ attachment,
+ dest,
+ setOCGState
+ }) {
+ const {
+ linkService
+ } = this;
+ if (url) {
+ linkService.addLinkAttributes(element, url, newWindow);
+ return;
+ }
+ if (action) {
+ element.href = linkService.getAnchorUrl("");
+ element.onclick = () => {
+ linkService.executeNamedAction(action);
+ return false;
+ };
+ return;
+ }
+ if (attachment) {
+ element.href = linkService.getAnchorUrl("");
+ element.onclick = () => {
+ this.downloadManager.openOrDownloadData(element, attachment.content, attachment.filename);
+ return false;
+ };
+ return;
+ }
+ if (setOCGState) {
+ element.href = linkService.getAnchorUrl("");
+ element.onclick = () => {
+ linkService.executeSetOCGState(setOCGState);
+ return false;
+ };
+ return;
+ }
+ element.href = linkService.getDestinationHash(dest);
+ element.onclick = evt => {
+ this._updateCurrentTreeItem(evt.target.parentNode);
+ if (dest) {
+ linkService.goToDestination(dest);
+ }
+ return false;
+ };
+ }
+
+ _setStyles(element, {
+ bold,
+ italic
+ }) {
+ if (bold) {
+ element.style.fontWeight = "bold";
+ }
+ if (italic) {
+ element.style.fontStyle = "italic";
+ }
+ }
+
+ _addToggleButton(div, {
+ count,
+ items
+ }) {
+ let hidden = false;
+ if (count < 0) {
+ let totalCount = items.length;
+ if (totalCount > 0) {
+ const queue = [...items];
+ while (queue.length > 0) {
+ const {
+ count: nestedCount,
+ items: nestedItems
+ } = queue.shift();
+ if (nestedCount > 0 && nestedItems.length > 0) {
+ totalCount += nestedItems.length;
+ queue.push(...nestedItems);
+ }
+ }
+ }
+ if (Math.abs(count) === totalCount) {
+ hidden = true;
+ }
+ }
+ super._addToggleButton(div, hidden);
+ }
+
+ _toggleAllTreeItems() {
+ if (!this._outline) {
+ return;
+ }
+ super._toggleAllTreeItems();
+ }
+
+ render({
+ outline,
+ pdfDocument
+ }) {
+ if (this._outline) {
+ this.reset();
+ }
+ this._outline = outline || null;
+ this._pdfDocument = pdfDocument || null;
+ if (!outline) {
+ this._dispatchEvent(0);
+ return;
+ }
+ const fragment = document.createDocumentFragment();
+ const queue = [{
+ parent: fragment,
+ items: outline
+ }];
+ let outlineCount = 0,
+ hasAnyNesting = false;
+ while (queue.length > 0) {
+ const levelData = queue.shift();
+ for (const item of levelData.items) {
+ const div = document.createElement("div");
+ div.className = "treeItem";
+ const element = document.createElement("a");
+ this._bindLink(element, item);
+ this._setStyles(element, item);
+ element.textContent = this._normalizeTextContent(item.title);
+ div.append(element);
+ if (item.items.length > 0) {
+ hasAnyNesting = true;
+ this._addToggleButton(div, item);
+ const itemsDiv = document.createElement("div");
+ itemsDiv.className = "treeItems";
+ div.append(itemsDiv);
+ queue.push({
+ parent: itemsDiv,
+ items: item.items
+ });
+ }
+ levelData.parent.append(div);
+ outlineCount++;
+ }
+ }
+ this._finishRendering(fragment, outlineCount, hasAnyNesting);
+ }
+
+ async _currentOutlineItem() {
+ if (!this._isPagesLoaded) {
+ throw new Error("_currentOutlineItem: All pages have not been loaded.");
+ }
+ if (!this._outline || !this._pdfDocument) {
+ return;
+ }
+ const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument);
+ if (!pageNumberToDestHash) {
+ return;
+ }
+ this._updateCurrentTreeItem(null);
+ if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) {
+ return;
+ }
+ for (let i = this._currentPageNumber; i > 0; i--) {
+ const destHash = pageNumberToDestHash.get(i);
+ if (!destHash) {
+ continue;
+ }
+ const linkElement = this.container.querySelector(`a[href="${destHash}"]`);
+ if (!linkElement) {
+ continue;
+ }
+ this._scrollToCurrentTreeItem(linkElement.parentNode);
+ break;
+ }
+ }
+
+ async _getPageNumberToDestHash(pdfDocument) {
+ if (this._pageNumberToDestHashCapability) {
+ return this._pageNumberToDestHashCapability.promise;
+ }
+ this._pageNumberToDestHashCapability = new _pdfjsLib.PromiseCapability();
+ const pageNumberToDestHash = new Map(),
+ pageNumberNesting = new Map();
+ const queue = [{
+ nesting: 0,
+ items: this._outline
+ }];
+ while (queue.length > 0) {
+ const levelData = queue.shift(),
+ currentNesting = levelData.nesting;
+ for (const {
+ dest,
+ items
+ } of levelData.items) {
+ let explicitDest, pageNumber;
+ if (typeof dest === "string") {
+ explicitDest = await pdfDocument.getDestination(dest);
+ if (pdfDocument !== this._pdfDocument) {
+ return null;
+ }
+ } else {
+ explicitDest = dest;
+ }
+ if (Array.isArray(explicitDest)) {
+ const [destRef] = explicitDest;
+ if (typeof destRef === "object" && destRef !== null) {
+ pageNumber = this.linkService._cachedPageNumber(destRef);
+ if (!pageNumber) {
+ try {
+ pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;
+ if (pdfDocument !== this._pdfDocument) {
+ return null;
+ }
+ this.linkService.cachePageRef(pageNumber, destRef);
+ } catch {
+ }
+ }
+ } else if (Number.isInteger(destRef)) {
+ pageNumber = destRef + 1;
+ }
+ if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) {
+ const destHash = this.linkService.getDestinationHash(dest);
+ pageNumberToDestHash.set(pageNumber, destHash);
+ pageNumberNesting.set(pageNumber, currentNesting);
+ }
+ }
+ if (items.length > 0) {
+ queue.push({
+ nesting: currentNesting + 1,
+ items
+ });
+ }
+ }
+ }
+ this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null);
+ return this._pageNumberToDestHashCapability.promise;
+ }
+ }
+
+ exports.PDFOutlineViewer = PDFOutlineViewer;
+
+ /***/
+ }),
+ /* 23 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFPresentationMode = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+ const DELAY_BEFORE_HIDING_CONTROLS = 3000;
+ const ACTIVE_SELECTOR = "pdfPresentationMode";
+ const CONTROLS_SELECTOR = "pdfPresentationModeControls";
+ const MOUSE_SCROLL_COOLDOWN_TIME = 50;
+ const PAGE_SWITCH_THRESHOLD = 0.1;
+ const SWIPE_MIN_DISTANCE_THRESHOLD = 50;
+ const SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
+
+ class PDFPresentationMode {
+ #state = _ui_utils.PresentationModeState.UNKNOWN;
+ #args = null;
+
+ constructor({
+ container,
+ pdfViewer,
+ eventBus
+ }) {
+ this.container = container;
+ this.pdfViewer = pdfViewer;
+ this.eventBus = eventBus;
+ this.contextMenuOpen = false;
+ this.mouseScrollTimeStamp = 0;
+ this.mouseScrollDelta = 0;
+ this.touchSwipeState = null;
+ }
+
+ async request() {
+ const {
+ container,
+ pdfViewer
+ } = this;
+ if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {
+ return false;
+ }
+ this.#addFullscreenChangeListeners();
+ this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING);
+ const promise = container.requestFullscreen();
+ this.#args = {
+ pageNumber: pdfViewer.currentPageNumber,
+ scaleValue: pdfViewer.currentScaleValue,
+ scrollMode: pdfViewer.scrollMode,
+ spreadMode: null,
+ annotationEditorMode: null
+ };
+ if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) {
+ console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes.");
+ this.#args.spreadMode = pdfViewer.spreadMode;
+ }
+ if (pdfViewer.annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) {
+ this.#args.annotationEditorMode = pdfViewer.annotationEditorMode;
+ }
+ try {
+ await promise;
+ pdfViewer.focus();
+ return true;
+ } catch {
+ this.#removeFullscreenChangeListeners();
+ this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
+ }
+ return false;
+ }
+
+ get active() {
+ return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN;
+ }
+
+ #mouseWheel(evt) {
+ if (!this.active) {
+ return;
+ }
+ evt.preventDefault();
+ const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
+ const currentTime = Date.now();
+ const storedTime = this.mouseScrollTimeStamp;
+ if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
+ return;
+ }
+ if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
+ this.#resetMouseScrollState();
+ }
+ this.mouseScrollDelta += delta;
+ if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
+ const totalDelta = this.mouseScrollDelta;
+ this.#resetMouseScrollState();
+ const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage();
+ if (success) {
+ this.mouseScrollTimeStamp = currentTime;
+ }
+ }
+ }
+
+ #notifyStateChange(state) {
+ this.#state = state;
+ this.eventBus.dispatch("presentationmodechanged", {
+ source: this,
+ state
+ });
+ }
+
+ #enter() {
+ this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN);
+ this.container.classList.add(ACTIVE_SELECTOR);
+ setTimeout(() => {
+ this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE;
+ if (this.#args.spreadMode !== null) {
+ this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE;
+ }
+ this.pdfViewer.currentPageNumber = this.#args.pageNumber;
+ this.pdfViewer.currentScaleValue = "page-fit";
+ if (this.#args.annotationEditorMode !== null) {
+ this.pdfViewer.annotationEditorMode = {
+ mode: _pdfjsLib.AnnotationEditorType.NONE
+ };
+ }
+ }, 0);
+ this.#addWindowListeners();
+ this.#showControls();
+ this.contextMenuOpen = false;
+ window.getSelection().removeAllRanges();
+ }
+
+ #exit() {
+ const pageNumber = this.pdfViewer.currentPageNumber;
+ this.container.classList.remove(ACTIVE_SELECTOR);
+ setTimeout(() => {
+ this.#removeFullscreenChangeListeners();
+ this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
+ this.pdfViewer.scrollMode = this.#args.scrollMode;
+ if (this.#args.spreadMode !== null) {
+ this.pdfViewer.spreadMode = this.#args.spreadMode;
+ }
+ this.pdfViewer.currentScaleValue = this.#args.scaleValue;
+ this.pdfViewer.currentPageNumber = pageNumber;
+ if (this.#args.annotationEditorMode !== null) {
+ this.pdfViewer.annotationEditorMode = {
+ mode: this.#args.annotationEditorMode
+ };
+ }
+ this.#args = null;
+ }, 0);
+ this.#removeWindowListeners();
+ this.#hideControls();
+ this.#resetMouseScrollState();
+ this.contextMenuOpen = false;
+ }
+
+ #mouseDown(evt) {
+ if (this.contextMenuOpen) {
+ this.contextMenuOpen = false;
+ evt.preventDefault();
+ return;
+ }
+ if (evt.button !== 0) {
+ return;
+ }
+ if (evt.target.href && evt.target.parentNode?.hasAttribute("data-internal-link")) {
+ return;
+ }
+ evt.preventDefault();
+ if (evt.shiftKey) {
+ this.pdfViewer.previousPage();
+ } else {
+ this.pdfViewer.nextPage();
+ }
+ }
+
+ #contextMenu() {
+ this.contextMenuOpen = true;
+ }
+
+ #showControls() {
+ if (this.controlsTimeout) {
+ clearTimeout(this.controlsTimeout);
+ } else {
+ this.container.classList.add(CONTROLS_SELECTOR);
+ }
+ this.controlsTimeout = setTimeout(() => {
+ this.container.classList.remove(CONTROLS_SELECTOR);
+ delete this.controlsTimeout;
+ }, DELAY_BEFORE_HIDING_CONTROLS);
+ }
+
+ #hideControls() {
+ if (!this.controlsTimeout) {
+ return;
+ }
+ clearTimeout(this.controlsTimeout);
+ this.container.classList.remove(CONTROLS_SELECTOR);
+ delete this.controlsTimeout;
+ }
+
+ #resetMouseScrollState() {
+ this.mouseScrollTimeStamp = 0;
+ this.mouseScrollDelta = 0;
+ }
+
+ #touchSwipe(evt) {
+ if (!this.active) {
+ return;
+ }
+ if (evt.touches.length > 1) {
+ this.touchSwipeState = null;
+ return;
+ }
+ switch (evt.type) {
+ case "touchstart":
+ this.touchSwipeState = {
+ startX: evt.touches[0].pageX,
+ startY: evt.touches[0].pageY,
+ endX: evt.touches[0].pageX,
+ endY: evt.touches[0].pageY
+ };
+ break;
+ case "touchmove":
+ if (this.touchSwipeState === null) {
+ return;
+ }
+ this.touchSwipeState.endX = evt.touches[0].pageX;
+ this.touchSwipeState.endY = evt.touches[0].pageY;
+ evt.preventDefault();
+ break;
+ case "touchend":
+ if (this.touchSwipeState === null) {
+ return;
+ }
+ let delta = 0;
+ const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
+ const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
+ const absAngle = Math.abs(Math.atan2(dy, dx));
+ if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) {
+ delta = dx;
+ } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) {
+ delta = dy;
+ }
+ if (delta > 0) {
+ this.pdfViewer.previousPage();
+ } else if (delta < 0) {
+ this.pdfViewer.nextPage();
+ }
+ break;
+ }
+ }
+
+ #addWindowListeners() {
+ this.showControlsBind = this.#showControls.bind(this);
+ this.mouseDownBind = this.#mouseDown.bind(this);
+ this.mouseWheelBind = this.#mouseWheel.bind(this);
+ this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);
+ this.contextMenuBind = this.#contextMenu.bind(this);
+ this.touchSwipeBind = this.#touchSwipe.bind(this);
+ window.addEventListener("mousemove", this.showControlsBind);
+ window.addEventListener("mousedown", this.mouseDownBind);
+ window.addEventListener("wheel", this.mouseWheelBind, {
+ passive: false
+ });
+ window.addEventListener("keydown", this.resetMouseScrollStateBind);
+ window.addEventListener("contextmenu", this.contextMenuBind);
+ window.addEventListener("touchstart", this.touchSwipeBind);
+ window.addEventListener("touchmove", this.touchSwipeBind);
+ window.addEventListener("touchend", this.touchSwipeBind);
+ }
+
+ #removeWindowListeners() {
+ window.removeEventListener("mousemove", this.showControlsBind);
+ window.removeEventListener("mousedown", this.mouseDownBind);
+ window.removeEventListener("wheel", this.mouseWheelBind, {
+ passive: false
+ });
+ window.removeEventListener("keydown", this.resetMouseScrollStateBind);
+ window.removeEventListener("contextmenu", this.contextMenuBind);
+ window.removeEventListener("touchstart", this.touchSwipeBind);
+ window.removeEventListener("touchmove", this.touchSwipeBind);
+ window.removeEventListener("touchend", this.touchSwipeBind);
+ delete this.showControlsBind;
+ delete this.mouseDownBind;
+ delete this.mouseWheelBind;
+ delete this.resetMouseScrollStateBind;
+ delete this.contextMenuBind;
+ delete this.touchSwipeBind;
+ }
+
+ #fullscreenChange() {
+ if (document.fullscreenElement) {
+ this.#enter();
+ } else {
+ this.#exit();
+ }
+ }
+
+ #addFullscreenChangeListeners() {
+ this.fullscreenChangeBind = this.#fullscreenChange.bind(this);
+ window.addEventListener("fullscreenchange", this.fullscreenChangeBind);
+ }
+
+ #removeFullscreenChangeListeners() {
+ window.removeEventListener("fullscreenchange", this.fullscreenChangeBind);
+ delete this.fullscreenChangeBind;
+ }
+ }
+
+ exports.PDFPresentationMode = PDFPresentationMode;
+
+ /***/
+ }),
+ /* 24 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFRenderingQueue = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+ const CLEANUP_TIMEOUT = 30000;
+
+ class PDFRenderingQueue {
+ constructor() {
+ this.pdfViewer = null;
+ this.pdfThumbnailViewer = null;
+ this.onIdle = null;
+ this.highestPriorityPage = null;
+ this.idleTimeout = null;
+ this.printing = false;
+ this.isThumbnailViewEnabled = false;
+ Object.defineProperty(this, "hasViewer", {
+ value: () => !!this.pdfViewer
+ });
+ }
+
+ setViewer(pdfViewer) {
+ this.pdfViewer = pdfViewer;
+ }
+
+ setThumbnailViewer(pdfThumbnailViewer) {
+ this.pdfThumbnailViewer = pdfThumbnailViewer;
+ }
+
+ isHighestPriority(view) {
+ return this.highestPriorityPage === view.renderingId;
+ }
+
+ renderHighestPriority(currentlyVisiblePages) {
+ if (this.idleTimeout) {
+ clearTimeout(this.idleTimeout);
+ this.idleTimeout = null;
+ }
+ if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
+ return;
+ }
+ if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) {
+ return;
+ }
+ if (this.printing) {
+ return;
+ }
+ if (this.onIdle) {
+ this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);
+ }
+ }
+
+ getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {
+ const visibleViews = visible.views,
+ numVisible = visibleViews.length;
+ if (numVisible === 0) {
+ return null;
+ }
+ for (let i = 0; i < numVisible; i++) {
+ const view = visibleViews[i].view;
+ if (!this.isViewFinished(view)) {
+ return view;
+ }
+ }
+ const firstId = visible.first.id,
+ lastId = visible.last.id;
+ if (lastId - firstId + 1 > numVisible) {
+ const visibleIds = visible.ids;
+ for (let i = 1, ii = lastId - firstId; i < ii; i++) {
+ const holeId = scrolledDown ? firstId + i : lastId - i;
+ if (visibleIds.has(holeId)) {
+ continue;
+ }
+ const holeView = views[holeId - 1];
+ if (!this.isViewFinished(holeView)) {
+ return holeView;
+ }
+ }
+ }
+ let preRenderIndex = scrolledDown ? lastId : firstId - 2;
+ let preRenderView = views[preRenderIndex];
+ if (preRenderView && !this.isViewFinished(preRenderView)) {
+ return preRenderView;
+ }
+ if (preRenderExtra) {
+ preRenderIndex += scrolledDown ? 1 : -1;
+ preRenderView = views[preRenderIndex];
+ if (preRenderView && !this.isViewFinished(preRenderView)) {
+ return preRenderView;
+ }
+ }
+ return null;
+ }
+
+ isViewFinished(view) {
+ return view.renderingState === _ui_utils.RenderingStates.FINISHED;
+ }
+
+ renderView(view) {
+ switch (view.renderingState) {
+ case _ui_utils.RenderingStates.FINISHED:
+ return false;
+ case _ui_utils.RenderingStates.PAUSED:
+ this.highestPriorityPage = view.renderingId;
+ view.resume();
+ break;
+ case _ui_utils.RenderingStates.RUNNING:
+ this.highestPriorityPage = view.renderingId;
+ break;
+ case _ui_utils.RenderingStates.INITIAL:
+ this.highestPriorityPage = view.renderingId;
+ view.draw().finally(() => {
+ this.renderHighestPriority();
+ }).catch(reason => {
+ if (reason instanceof _pdfjsLib.RenderingCancelledException) {
+ return;
+ }
+ console.error(`renderView: "${reason}"`);
+ });
+ break;
+ }
+ return true;
+ }
+ }
+
+ exports.PDFRenderingQueue = PDFRenderingQueue;
+
+ /***/
+ }),
+ /* 25 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFScriptingManager = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+
+ class PDFScriptingManager {
+ #closeCapability = null;
+ #destroyCapability = null;
+ #docProperties = null;
+ #eventBus = null;
+ #externalServices = null;
+ #pdfDocument = null;
+ #pdfViewer = null;
+ #ready = false;
+ #sandboxBundleSrc = null;
+ #scripting = null;
+ #willPrintCapability = null;
+
+ constructor({
+ eventBus,
+ sandboxBundleSrc = null,
+ externalServices = null,
+ docProperties = null
+ }) {
+ this.#eventBus = eventBus;
+ this.#sandboxBundleSrc = sandboxBundleSrc;
+ this.#externalServices = externalServices;
+ this.#docProperties = docProperties;
+ }
+
+ setViewer(pdfViewer) {
+ this.#pdfViewer = pdfViewer;
+ }
+
+ async setDocument(pdfDocument) {
+ if (this.#pdfDocument) {
+ await this.#destroyScripting();
+ }
+ this.#pdfDocument = pdfDocument;
+ if (!pdfDocument) {
+ return;
+ }
+ const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);
+ if (!objects && !docActions) {
+ await this.#destroyScripting();
+ return;
+ }
+ if (pdfDocument !== this.#pdfDocument) {
+ return;
+ }
+ try {
+ this.#scripting = this.#initScripting();
+ } catch (error) {
+ console.error(`setDocument: "${error.message}".`);
+ await this.#destroyScripting();
+ return;
+ }
+ this._internalEvents.set("updatefromsandbox", event => {
+ if (event?.source === window) {
+ this.#updateFromSandbox(event.detail);
+ }
+ });
+ this._internalEvents.set("dispatcheventinsandbox", event => {
+ this.#scripting?.dispatchEventInSandbox(event.detail);
+ });
+ this._internalEvents.set("pagechanging", ({
+ pageNumber,
+ previous
+ }) => {
+ if (pageNumber === previous) {
+ return;
+ }
+ this.#dispatchPageClose(previous);
+ this.#dispatchPageOpen(pageNumber);
+ });
+ this._internalEvents.set("pagerendered", ({
+ pageNumber
+ }) => {
+ if (!this._pageOpenPending.has(pageNumber)) {
+ return;
+ }
+ if (pageNumber !== this.#pdfViewer.currentPageNumber) {
+ return;
+ }
+ this.#dispatchPageOpen(pageNumber);
+ });
+ this._internalEvents.set("pagesdestroy", async () => {
+ await this.#dispatchPageClose(this.#pdfViewer.currentPageNumber);
+ await this.#scripting?.dispatchEventInSandbox({
+ id: "doc",
+ name: "WillClose"
+ });
+ this.#closeCapability?.resolve();
+ });
+ for (const [name, listener] of this._internalEvents) {
+ this.#eventBus._on(name, listener);
+ }
+ try {
+ const docProperties = await this.#docProperties(pdfDocument);
+ if (pdfDocument !== this.#pdfDocument) {
+ return;
+ }
+ await this.#scripting.createSandbox({
+ objects,
+ calculationOrder,
+ appInfo: {
+ platform: navigator.platform,
+ language: navigator.language
+ },
+ docInfo: {
+ ...docProperties,
+ actions: docActions
+ }
+ });
+ this.#eventBus.dispatch("sandboxcreated", {
+ source: this
+ });
+ } catch (error) {
+ console.error(`setDocument: "${error.message}".`);
+ await this.#destroyScripting();
+ return;
+ }
+ await this.#scripting?.dispatchEventInSandbox({
+ id: "doc",
+ name: "Open"
+ });
+ await this.#dispatchPageOpen(this.#pdfViewer.currentPageNumber, true);
+ Promise.resolve().then(() => {
+ if (pdfDocument === this.#pdfDocument) {
+ this.#ready = true;
+ }
+ });
+ }
+
+ async dispatchWillSave() {
+ return this.#scripting?.dispatchEventInSandbox({
+ id: "doc",
+ name: "WillSave"
+ });
+ }
+
+ async dispatchDidSave() {
+ return this.#scripting?.dispatchEventInSandbox({
+ id: "doc",
+ name: "DidSave"
+ });
+ }
+
+ async dispatchWillPrint() {
+ if (!this.#scripting) {
+ return;
+ }
+ await this.#willPrintCapability?.promise;
+ this.#willPrintCapability = new _pdfjsLib.PromiseCapability();
+ try {
+ await this.#scripting.dispatchEventInSandbox({
+ id: "doc",
+ name: "WillPrint"
+ });
+ } catch (ex) {
+ this.#willPrintCapability.resolve();
+ this.#willPrintCapability = null;
+ throw ex;
+ }
+ await this.#willPrintCapability.promise;
+ }
+
+ async dispatchDidPrint() {
+ return this.#scripting?.dispatchEventInSandbox({
+ id: "doc",
+ name: "DidPrint"
+ });
+ }
+
+ get destroyPromise() {
+ return this.#destroyCapability?.promise || null;
+ }
+
+ get ready() {
+ return this.#ready;
+ }
+
+ get _internalEvents() {
+ return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map());
+ }
+
+ get _pageOpenPending() {
+ return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set());
+ }
+
+ get _visitedPages() {
+ return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map());
+ }
+
+ async #updateFromSandbox(detail) {
+ const pdfViewer = this.#pdfViewer;
+ const isInPresentationMode = pdfViewer.isInPresentationMode || pdfViewer.isChangingPresentationMode;
+ const {
+ id,
+ siblings,
+ command,
+ value
+ } = detail;
+ if (!id) {
+ switch (command) {
+ case "clear":
+ console.clear();
+ break;
+ case "error":
+ console.error(value);
+ break;
+ case "layout":
+ if (!isInPresentationMode) {
+ const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value);
+ pdfViewer.spreadMode = modes.spreadMode;
+ }
+ break;
+ case "page-num":
+ pdfViewer.currentPageNumber = value + 1;
+ break;
+ case "print":
+ await pdfViewer.pagesPromise;
+ this.#eventBus.dispatch("print", {
+ source: this
+ });
+ break;
+ case "println":
+ console.log(value);
+ break;
+ case "zoom":
+ if (!isInPresentationMode) {
+ pdfViewer.currentScaleValue = value;
+ }
+ break;
+ case "SaveAs":
+ this.#eventBus.dispatch("download", {
+ source: this
+ });
+ break;
+ case "FirstPage":
+ pdfViewer.currentPageNumber = 1;
+ break;
+ case "LastPage":
+ pdfViewer.currentPageNumber = pdfViewer.pagesCount;
+ break;
+ case "NextPage":
+ pdfViewer.nextPage();
+ break;
+ case "PrevPage":
+ pdfViewer.previousPage();
+ break;
+ case "ZoomViewIn":
+ if (!isInPresentationMode) {
+ pdfViewer.increaseScale();
+ }
+ break;
+ case "ZoomViewOut":
+ if (!isInPresentationMode) {
+ pdfViewer.decreaseScale();
+ }
+ break;
+ case "WillPrintFinished":
+ this.#willPrintCapability?.resolve();
+ this.#willPrintCapability = null;
+ break;
+ }
+ return;
+ }
+ if (isInPresentationMode && detail.focus) {
+ return;
+ }
+ delete detail.id;
+ delete detail.siblings;
+ const ids = siblings ? [id, ...siblings] : [id];
+ for (const elementId of ids) {
+ const element = document.querySelector(`[data-element-id="${elementId}"]`);
+ if (element) {
+ element.dispatchEvent(new CustomEvent("updatefromsandbox", {
+ detail
+ }));
+ } else {
+ this.#pdfDocument?.annotationStorage.setValue(elementId, detail);
+ }
+ }
+ }
+
+ async #dispatchPageOpen(pageNumber, initialize = false) {
+ const pdfDocument = this.#pdfDocument,
+ visitedPages = this._visitedPages;
+ if (initialize) {
+ this.#closeCapability = new _pdfjsLib.PromiseCapability();
+ }
+ if (!this.#closeCapability) {
+ return;
+ }
+ const pageView = this.#pdfViewer.getPageView(pageNumber - 1);
+ if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ this._pageOpenPending.add(pageNumber);
+ return;
+ }
+ this._pageOpenPending.delete(pageNumber);
+ const actionsPromise = (async () => {
+ const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null);
+ if (pdfDocument !== this.#pdfDocument) {
+ return;
+ }
+ await this.#scripting?.dispatchEventInSandbox({
+ id: "page",
+ name: "PageOpen",
+ pageNumber,
+ actions
+ });
+ })();
+ visitedPages.set(pageNumber, actionsPromise);
+ }
+
+ async #dispatchPageClose(pageNumber) {
+ const pdfDocument = this.#pdfDocument,
+ visitedPages = this._visitedPages;
+ if (!this.#closeCapability) {
+ return;
+ }
+ if (this._pageOpenPending.has(pageNumber)) {
+ return;
+ }
+ const actionsPromise = visitedPages.get(pageNumber);
+ if (!actionsPromise) {
+ return;
+ }
+ visitedPages.set(pageNumber, null);
+ await actionsPromise;
+ if (pdfDocument !== this.#pdfDocument) {
+ return;
+ }
+ await this.#scripting?.dispatchEventInSandbox({
+ id: "page",
+ name: "PageClose",
+ pageNumber
+ });
+ }
+
+ #initScripting() {
+ this.#destroyCapability = new _pdfjsLib.PromiseCapability();
+ if (this.#scripting) {
+ throw new Error("#initScripting: Scripting already exists.");
+ }
+ return this.#externalServices.createScripting({
+ sandboxBundleSrc: this.#sandboxBundleSrc
+ });
+ }
+
+ async #destroyScripting() {
+ if (!this.#scripting) {
+ this.#pdfDocument = null;
+ this.#destroyCapability?.resolve();
+ return;
+ }
+ if (this.#closeCapability) {
+ await Promise.race([this.#closeCapability.promise, new Promise(resolve => {
+ setTimeout(resolve, 1000);
+ })]).catch(() => {
+ });
+ this.#closeCapability = null;
+ }
+ this.#pdfDocument = null;
+ try {
+ await this.#scripting.destroySandbox();
+ } catch {
+ }
+ this.#willPrintCapability?.reject(new Error("Scripting destroyed."));
+ this.#willPrintCapability = null;
+ for (const [name, listener] of this._internalEvents) {
+ this.#eventBus._off(name, listener);
+ }
+ this._internalEvents.clear();
+ this._pageOpenPending.clear();
+ this._visitedPages.clear();
+ this.#scripting = null;
+ this.#ready = false;
+ this.#destroyCapability?.resolve();
+ }
+ }
+
+ exports.PDFScriptingManager = PDFScriptingManager;
+
+ /***/
+ }),
+ /* 26 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFSidebar = void 0;
+ var _ui_utils = __webpack_require__(3);
+ const SIDEBAR_WIDTH_VAR = "--sidebar-width";
+ const SIDEBAR_MIN_WIDTH = 200;
+ const SIDEBAR_RESIZING_CLASS = "sidebarResizing";
+ const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
+
+ class PDFSidebar {
+ #isRTL = false;
+ #mouseMoveBound = this.#mouseMove.bind(this);
+ #mouseUpBound = this.#mouseUp.bind(this);
+ #outerContainerWidth = null;
+ #width = null;
+
+ constructor({
+ elements,
+ eventBus,
+ l10n
+ }) {
+ this.isOpen = false;
+ this.active = _ui_utils.SidebarView.THUMBS;
+ this.isInitialViewSet = false;
+ this.isInitialEventDispatched = false;
+ this.onToggled = null;
+ this.onUpdateThumbnails = null;
+ this.outerContainer = elements.outerContainer;
+ this.sidebarContainer = elements.sidebarContainer;
+ this.toggleButton = elements.toggleButton;
+ this.resizer = elements.resizer;
+ this.thumbnailButton = elements.thumbnailButton;
+ this.outlineButton = elements.outlineButton;
+ this.attachmentsButton = elements.attachmentsButton;
+ this.layersButton = elements.layersButton;
+ this.thumbnailView = elements.thumbnailView;
+ this.outlineView = elements.outlineView;
+ this.attachmentsView = elements.attachmentsView;
+ this.layersView = elements.layersView;
+ this._outlineOptionsContainer = elements.outlineOptionsContainer;
+ this._currentOutlineItemButton = elements.currentOutlineItemButton;
+ this.eventBus = eventBus;
+ this.l10n = l10n;
+ l10n.getDirection().then(dir => {
+ this.#isRTL = dir === "rtl";
+ });
+ this.#addEventListeners();
+ }
+
+ reset() {
+ this.isInitialViewSet = false;
+ this.isInitialEventDispatched = false;
+ this.#hideUINotification(true);
+ this.switchView(_ui_utils.SidebarView.THUMBS);
+ this.outlineButton.disabled = false;
+ this.attachmentsButton.disabled = false;
+ this.layersButton.disabled = false;
+ this._currentOutlineItemButton.disabled = true;
+ }
+
+ get visibleView() {
+ return this.isOpen ? this.active : _ui_utils.SidebarView.NONE;
+ }
+
+ setInitialView(view = _ui_utils.SidebarView.NONE) {
+ if (this.isInitialViewSet) {
+ return;
+ }
+ this.isInitialViewSet = true;
+ if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) {
+ this.#dispatchEvent();
+ return;
+ }
+ this.switchView(view, true);
+ if (!this.isInitialEventDispatched) {
+ this.#dispatchEvent();
+ }
+ }
+
+ switchView(view, forceOpen = false) {
+ const isViewChanged = view !== this.active;
+ let forceRendering = false;
+ switch (view) {
+ case _ui_utils.SidebarView.NONE:
+ if (this.isOpen) {
+ this.close();
+ }
+ return;
+ case _ui_utils.SidebarView.THUMBS:
+ if (this.isOpen && isViewChanged) {
+ forceRendering = true;
+ }
+ break;
+ case _ui_utils.SidebarView.OUTLINE:
+ if (this.outlineButton.disabled) {
+ return;
+ }
+ break;
+ case _ui_utils.SidebarView.ATTACHMENTS:
+ if (this.attachmentsButton.disabled) {
+ return;
+ }
+ break;
+ case _ui_utils.SidebarView.LAYERS:
+ if (this.layersButton.disabled) {
+ return;
+ }
+ break;
+ default:
+ console.error(`PDFSidebar.switchView: "${view}" is not a valid view.`);
+ return;
+ }
+ this.active = view;
+ (0, _ui_utils.toggleCheckedBtn)(this.thumbnailButton, view === _ui_utils.SidebarView.THUMBS, this.thumbnailView);
+ (0, _ui_utils.toggleCheckedBtn)(this.outlineButton, view === _ui_utils.SidebarView.OUTLINE, this.outlineView);
+ (0, _ui_utils.toggleCheckedBtn)(this.attachmentsButton, view === _ui_utils.SidebarView.ATTACHMENTS, this.attachmentsView);
+ (0, _ui_utils.toggleCheckedBtn)(this.layersButton, view === _ui_utils.SidebarView.LAYERS, this.layersView);
+ this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
+ if (forceOpen && !this.isOpen) {
+ this.open();
+ return;
+ }
+ if (forceRendering) {
+ this.onUpdateThumbnails();
+ this.onToggled();
+ }
+ if (isViewChanged) {
+ this.#dispatchEvent();
+ }
+ }
+
+ open() {
+ if (this.isOpen) {
+ return;
+ }
+ this.isOpen = true;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true);
+ this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
+ if (this.active === _ui_utils.SidebarView.THUMBS) {
+ this.onUpdateThumbnails();
+ }
+ this.onToggled();
+ this.#dispatchEvent();
+ this.#hideUINotification();
+ }
+
+ close() {
+ if (!this.isOpen) {
+ return;
+ }
+ this.isOpen = false;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false);
+ this.outerContainer.classList.add("sidebarMoving");
+ this.outerContainer.classList.remove("sidebarOpen");
+ this.onToggled();
+ this.#dispatchEvent();
+ }
+
+ toggle() {
+ if (this.isOpen) {
+ this.close();
+ } else {
+ this.open();
+ }
+ }
+
+ #dispatchEvent() {
+ if (this.isInitialViewSet) {
+ this.isInitialEventDispatched ||= true;
+ }
+ this.eventBus.dispatch("sidebarviewchanged", {
+ source: this,
+ view: this.visibleView
+ });
+ }
+
+ #showUINotification() {
+ this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar_notification2");
+ this.l10n.translate(this.toggleButton);
+ if (!this.isOpen) {
+ this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
+ }
+ }
+
+ #hideUINotification(reset = false) {
+ if (this.isOpen || reset) {
+ this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
+ }
+ if (reset) {
+ this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar");
+ this.l10n.translate(this.toggleButton);
+ }
+ }
+
+ #addEventListeners() {
+ this.sidebarContainer.addEventListener("transitionend", evt => {
+ if (evt.target === this.sidebarContainer) {
+ this.outerContainer.classList.remove("sidebarMoving");
+ }
+ });
+ this.toggleButton.addEventListener("click", () => {
+ this.toggle();
+ });
+ this.thumbnailButton.addEventListener("click", () => {
+ this.switchView(_ui_utils.SidebarView.THUMBS);
+ });
+ this.outlineButton.addEventListener("click", () => {
+ this.switchView(_ui_utils.SidebarView.OUTLINE);
+ });
+ this.outlineButton.addEventListener("dblclick", () => {
+ this.eventBus.dispatch("toggleoutlinetree", {
+ source: this
+ });
+ });
+ this.attachmentsButton.addEventListener("click", () => {
+ this.switchView(_ui_utils.SidebarView.ATTACHMENTS);
+ });
+ this.layersButton.addEventListener("click", () => {
+ this.switchView(_ui_utils.SidebarView.LAYERS);
+ });
+ this.layersButton.addEventListener("dblclick", () => {
+ this.eventBus.dispatch("resetlayers", {
+ source: this
+ });
+ });
+ this._currentOutlineItemButton.addEventListener("click", () => {
+ this.eventBus.dispatch("currentoutlineitem", {
+ source: this
+ });
+ });
+ const onTreeLoaded = (count, button, view) => {
+ button.disabled = !count;
+ if (count) {
+ this.#showUINotification();
+ } else if (this.active === view) {
+ this.switchView(_ui_utils.SidebarView.THUMBS);
+ }
+ };
+ this.eventBus._on("outlineloaded", evt => {
+ onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE);
+ evt.currentOutlineItemPromise.then(enabled => {
+ if (!this.isInitialViewSet) {
+ return;
+ }
+ this._currentOutlineItemButton.disabled = !enabled;
+ });
+ });
+ this.eventBus._on("attachmentsloaded", evt => {
+ onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS);
+ });
+ this.eventBus._on("layersloaded", evt => {
+ onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS);
+ });
+ this.eventBus._on("presentationmodechanged", evt => {
+ if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.visibleView === _ui_utils.SidebarView.THUMBS) {
+ this.onUpdateThumbnails();
+ }
+ });
+ this.resizer.addEventListener("mousedown", evt => {
+ if (evt.button !== 0) {
+ return;
+ }
+ this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
+ window.addEventListener("mousemove", this.#mouseMoveBound);
+ window.addEventListener("mouseup", this.#mouseUpBound);
+ });
+ this.eventBus._on("resize", evt => {
+ if (evt.source !== window) {
+ return;
+ }
+ this.#outerContainerWidth = null;
+ if (!this.#width) {
+ return;
+ }
+ if (!this.isOpen) {
+ this.#updateWidth(this.#width);
+ return;
+ }
+ this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
+ const updated = this.#updateWidth(this.#width);
+ Promise.resolve().then(() => {
+ this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
+ if (updated) {
+ this.eventBus.dispatch("resize", {
+ source: this
+ });
+ }
+ });
+ });
+ }
+
+ get outerContainerWidth() {
+ return this.#outerContainerWidth ||= this.outerContainer.clientWidth;
+ }
+
+ #updateWidth(width = 0) {
+ const maxWidth = Math.floor(this.outerContainerWidth / 2);
+ if (width > maxWidth) {
+ width = maxWidth;
+ }
+ if (width < SIDEBAR_MIN_WIDTH) {
+ width = SIDEBAR_MIN_WIDTH;
+ }
+ if (width === this.#width) {
+ return false;
+ }
+ this.#width = width;
+ _ui_utils.docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);
+ return true;
+ }
+
+ #mouseMove(evt) {
+ let width = evt.clientX;
+ if (this.#isRTL) {
+ width = this.outerContainerWidth - width;
+ }
+ this.#updateWidth(width);
+ }
+
+ #mouseUp(evt) {
+ this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
+ this.eventBus.dispatch("resize", {
+ source: this
+ });
+ window.removeEventListener("mousemove", this.#mouseMoveBound);
+ window.removeEventListener("mouseup", this.#mouseUpBound);
+ }
+ }
+
+ exports.PDFSidebar = PDFSidebar;
+
+ /***/
+ }),
+ /* 27 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFThumbnailViewer = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdf_thumbnail_view = __webpack_require__(28);
+ const THUMBNAIL_SCROLL_MARGIN = -19;
+ const THUMBNAIL_SELECTED_CLASS = "selected";
+
+ class PDFThumbnailViewer {
+ constructor({
+ container,
+ eventBus,
+ linkService,
+ renderingQueue,
+ l10n,
+ pageColors
+ }) {
+ this.container = container;
+ this.eventBus = eventBus;
+ this.linkService = linkService;
+ this.renderingQueue = renderingQueue;
+ this.l10n = l10n;
+ this.pageColors = pageColors || null;
+ this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this));
+ this._resetView();
+ }
+
+ _scrollUpdated() {
+ this.renderingQueue.renderHighestPriority();
+ }
+
+ getThumbnail(index) {
+ return this._thumbnails[index];
+ }
+
+ _getVisibleThumbs() {
+ return (0, _ui_utils.getVisibleElements)({
+ scrollEl: this.container,
+ views: this._thumbnails
+ });
+ }
+
+ scrollThumbnailIntoView(pageNumber) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ const thumbnailView = this._thumbnails[pageNumber - 1];
+ if (!thumbnailView) {
+ console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.');
+ return;
+ }
+ if (pageNumber !== this._currentPageNumber) {
+ const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];
+ prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);
+ thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
+ }
+ const {
+ first,
+ last,
+ views
+ } = this._getVisibleThumbs();
+ if (views.length > 0) {
+ let shouldScroll = false;
+ if (pageNumber <= first.id || pageNumber >= last.id) {
+ shouldScroll = true;
+ } else {
+ for (const {
+ id,
+ percent
+ } of views) {
+ if (id !== pageNumber) {
+ continue;
+ }
+ shouldScroll = percent < 100;
+ break;
+ }
+ }
+ if (shouldScroll) {
+ (0, _ui_utils.scrollIntoView)(thumbnailView.div, {
+ top: THUMBNAIL_SCROLL_MARGIN
+ });
+ }
+ }
+ this._currentPageNumber = pageNumber;
+ }
+
+ get pagesRotation() {
+ return this._pagesRotation;
+ }
+
+ set pagesRotation(rotation) {
+ if (!(0, _ui_utils.isValidRotation)(rotation)) {
+ throw new Error("Invalid thumbnails rotation angle.");
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ if (this._pagesRotation === rotation) {
+ return;
+ }
+ this._pagesRotation = rotation;
+ const updateArgs = {
+ rotation
+ };
+ for (const thumbnail of this._thumbnails) {
+ thumbnail.update(updateArgs);
+ }
+ }
+
+ cleanup() {
+ for (const thumbnail of this._thumbnails) {
+ if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ thumbnail.reset();
+ }
+ }
+ _pdf_thumbnail_view.TempImageFactory.destroyCanvas();
+ }
+
+ _resetView() {
+ this._thumbnails = [];
+ this._currentPageNumber = 1;
+ this._pageLabels = null;
+ this._pagesRotation = 0;
+ this.container.textContent = "";
+ }
+
+ setDocument(pdfDocument) {
+ if (this.pdfDocument) {
+ this._cancelRendering();
+ this._resetView();
+ }
+ this.pdfDocument = pdfDocument;
+ if (!pdfDocument) {
+ return;
+ }
+ const firstPagePromise = pdfDocument.getPage(1);
+ const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
+ firstPagePromise.then(firstPdfPage => {
+ const pagesCount = pdfDocument.numPages;
+ const viewport = firstPdfPage.getViewport({
+ scale: 1
+ });
+ for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
+ const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({
+ container: this.container,
+ eventBus: this.eventBus,
+ id: pageNum,
+ defaultViewport: viewport.clone(),
+ optionalContentConfigPromise,
+ linkService: this.linkService,
+ renderingQueue: this.renderingQueue,
+ l10n: this.l10n,
+ pageColors: this.pageColors
+ });
+ this._thumbnails.push(thumbnail);
+ }
+ this._thumbnails[0]?.setPdfPage(firstPdfPage);
+ const thumbnailView = this._thumbnails[this._currentPageNumber - 1];
+ thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
+ }).catch(reason => {
+ console.error("Unable to initialize thumbnail viewer", reason);
+ });
+ }
+
+ _cancelRendering() {
+ for (const thumbnail of this._thumbnails) {
+ thumbnail.cancelRendering();
+ }
+ }
+
+ setPageLabels(labels) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ if (!labels) {
+ this._pageLabels = null;
+ } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
+ this._pageLabels = null;
+ console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels.");
+ } else {
+ this._pageLabels = labels;
+ }
+ for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
+ this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);
+ }
+ }
+
+ async #ensurePdfPageLoaded(thumbView) {
+ if (thumbView.pdfPage) {
+ return thumbView.pdfPage;
+ }
+ try {
+ const pdfPage = await this.pdfDocument.getPage(thumbView.id);
+ if (!thumbView.pdfPage) {
+ thumbView.setPdfPage(pdfPage);
+ }
+ return pdfPage;
+ } catch (reason) {
+ console.error("Unable to get page for thumb view", reason);
+ return null;
+ }
+ }
+
+ #getScrollAhead(visible) {
+ if (visible.first?.id === 1) {
+ return true;
+ } else if (visible.last?.id === this._thumbnails.length) {
+ return false;
+ }
+ return this.scroll.down;
+ }
+
+ forceRendering() {
+ const visibleThumbs = this._getVisibleThumbs();
+ const scrollAhead = this.#getScrollAhead(visibleThumbs);
+ const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead);
+ if (thumbView) {
+ this.#ensurePdfPageLoaded(thumbView).then(() => {
+ this.renderingQueue.renderView(thumbView);
+ });
+ return true;
+ }
+ return false;
+ }
+ }
+
+ exports.PDFThumbnailViewer = PDFThumbnailViewer;
+
+ /***/
+ }),
+ /* 28 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.TempImageFactory = exports.PDFThumbnailView = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+ const DRAW_UPSCALE_FACTOR = 2;
+ const MAX_NUM_SCALING_STEPS = 3;
+ const THUMBNAIL_WIDTH = 98;
+
+ class TempImageFactory {
+ static #tempCanvas = null;
+
+ static getCanvas(width, height) {
+ const tempCanvas = this.#tempCanvas ||= document.createElement("canvas");
+ tempCanvas.width = width;
+ tempCanvas.height = height;
+ const ctx = tempCanvas.getContext("2d", {
+ alpha: false
+ });
+ ctx.save();
+ ctx.fillStyle = "rgb(255, 255, 255)";
+ ctx.fillRect(0, 0, width, height);
+ ctx.restore();
+ return [tempCanvas, tempCanvas.getContext("2d")];
+ }
+
+ static destroyCanvas() {
+ const tempCanvas = this.#tempCanvas;
+ if (tempCanvas) {
+ tempCanvas.width = 0;
+ tempCanvas.height = 0;
+ }
+ this.#tempCanvas = null;
+ }
+ }
+
+ exports.TempImageFactory = TempImageFactory;
+
+ class PDFThumbnailView {
+ constructor({
+ container,
+ eventBus,
+ id,
+ defaultViewport,
+ optionalContentConfigPromise,
+ linkService,
+ renderingQueue,
+ l10n,
+ pageColors
+ }) {
+ this.id = id;
+ this.renderingId = "thumbnail" + id;
+ this.pageLabel = null;
+ this.pdfPage = null;
+ this.rotation = 0;
+ this.viewport = defaultViewport;
+ this.pdfPageRotate = defaultViewport.rotation;
+ this._optionalContentConfigPromise = optionalContentConfigPromise || null;
+ this.pageColors = pageColors || null;
+ this.eventBus = eventBus;
+ this.linkService = linkService;
+ this.renderingQueue = renderingQueue;
+ this.renderTask = null;
+ this.renderingState = _ui_utils.RenderingStates.INITIAL;
+ this.resume = null;
+ this.l10n = l10n;
+ const anchor = document.createElement("a");
+ anchor.href = linkService.getAnchorUrl("#page=" + id);
+ this._thumbPageTitle.then(msg => {
+ anchor.title = msg;
+ });
+ anchor.onclick = function () {
+ linkService.goToPage(id);
+ return false;
+ };
+ this.anchor = anchor;
+ const div = document.createElement("div");
+ div.className = "thumbnail";
+ div.setAttribute("data-page-number", this.id);
+ this.div = div;
+ this.#updateDims();
+ const img = document.createElement("div");
+ img.className = "thumbnailImage";
+ this._placeholderImg = img;
+ div.append(img);
+ anchor.append(div);
+ container.append(anchor);
+ }
+
+ #updateDims() {
+ const {
+ width,
+ height
+ } = this.viewport;
+ const ratio = width / height;
+ this.canvasWidth = THUMBNAIL_WIDTH;
+ this.canvasHeight = this.canvasWidth / ratio | 0;
+ this.scale = this.canvasWidth / width;
+ const {
+ style
+ } = this.div;
+ style.setProperty("--thumbnail-width", `${this.canvasWidth}px`);
+ style.setProperty("--thumbnail-height", `${this.canvasHeight}px`);
+ }
+
+ setPdfPage(pdfPage) {
+ this.pdfPage = pdfPage;
+ this.pdfPageRotate = pdfPage.rotate;
+ const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = pdfPage.getViewport({
+ scale: 1,
+ rotation: totalRotation
+ });
+ this.reset();
+ }
+
+ reset() {
+ this.cancelRendering();
+ this.renderingState = _ui_utils.RenderingStates.INITIAL;
+ this.div.removeAttribute("data-loaded");
+ this.image?.replaceWith(this._placeholderImg);
+ this.#updateDims();
+ if (this.image) {
+ this.image.removeAttribute("src");
+ delete this.image;
+ }
+ }
+
+ update({
+ rotation = null
+ }) {
+ if (typeof rotation === "number") {
+ this.rotation = rotation;
+ }
+ const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = this.viewport.clone({
+ scale: 1,
+ rotation: totalRotation
+ });
+ this.reset();
+ }
+
+ cancelRendering() {
+ if (this.renderTask) {
+ this.renderTask.cancel();
+ this.renderTask = null;
+ }
+ this.resume = null;
+ }
+
+ _getPageDrawContext(upscaleFactor = 1) {
+ const canvas = document.createElement("canvas");
+ const ctx = canvas.getContext("2d", {
+ alpha: false
+ });
+ const outputScale = new _ui_utils.OutputScale();
+ canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0;
+ canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0;
+ const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
+ return {
+ ctx,
+ canvas,
+ transform
+ };
+ }
+
+ _convertCanvasToImage(canvas) {
+ if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ throw new Error("_convertCanvasToImage: Rendering has not finished.");
+ }
+ const reducedCanvas = this._reduceImage(canvas);
+ const image = document.createElement("img");
+ image.className = "thumbnailImage";
+ this._thumbPageCanvas.then(msg => {
+ image.setAttribute("aria-label", msg);
+ });
+ image.src = reducedCanvas.toDataURL();
+ this.image = image;
+ this.div.setAttribute("data-loaded", true);
+ this._placeholderImg.replaceWith(image);
+ reducedCanvas.width = 0;
+ reducedCanvas.height = 0;
+ }
+
+ async #finishRenderTask(renderTask, canvas, error = null) {
+ if (renderTask === this.renderTask) {
+ this.renderTask = null;
+ }
+ if (error instanceof _pdfjsLib.RenderingCancelledException) {
+ return;
+ }
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ this._convertCanvasToImage(canvas);
+ if (error) {
+ throw error;
+ }
+ }
+
+ async draw() {
+ if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
+ console.error("Must be in new state before drawing");
+ return undefined;
+ }
+ const {
+ pdfPage
+ } = this;
+ if (!pdfPage) {
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ throw new Error("pdfPage is not loaded");
+ }
+ this.renderingState = _ui_utils.RenderingStates.RUNNING;
+ const {
+ ctx,
+ canvas,
+ transform
+ } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR);
+ const drawViewport = this.viewport.clone({
+ scale: DRAW_UPSCALE_FACTOR * this.scale
+ });
+ const renderContinueCallback = cont => {
+ if (!this.renderingQueue.isHighestPriority(this)) {
+ this.renderingState = _ui_utils.RenderingStates.PAUSED;
+ this.resume = () => {
+ this.renderingState = _ui_utils.RenderingStates.RUNNING;
+ cont();
+ };
+ return;
+ }
+ cont();
+ };
+ const renderContext = {
+ canvasContext: ctx,
+ transform,
+ viewport: drawViewport,
+ optionalContentConfigPromise: this._optionalContentConfigPromise,
+ pageColors: this.pageColors
+ };
+ const renderTask = this.renderTask = pdfPage.render(renderContext);
+ renderTask.onContinue = renderContinueCallback;
+ const resultPromise = renderTask.promise.then(() => this.#finishRenderTask(renderTask, canvas), error => this.#finishRenderTask(renderTask, canvas, error));
+ resultPromise.finally(() => {
+ canvas.width = 0;
+ canvas.height = 0;
+ this.eventBus.dispatch("thumbnailrendered", {
+ source: this,
+ pageNumber: this.id,
+ pdfPage: this.pdfPage
+ });
+ });
+ return resultPromise;
+ }
+
+ setImage(pageView) {
+ if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
+ return;
+ }
+ const {
+ thumbnailCanvas: canvas,
+ pdfPage,
+ scale
+ } = pageView;
+ if (!canvas) {
+ return;
+ }
+ if (!this.pdfPage) {
+ this.setPdfPage(pdfPage);
+ }
+ if (scale < this.scale) {
+ return;
+ }
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ this._convertCanvasToImage(canvas);
+ }
+
+ _reduceImage(img) {
+ const {
+ ctx,
+ canvas
+ } = this._getPageDrawContext();
+ if (img.width <= 2 * canvas.width) {
+ ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
+ return canvas;
+ }
+ let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
+ let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
+ const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight);
+ while (reducedWidth > img.width || reducedHeight > img.height) {
+ reducedWidth >>= 1;
+ reducedHeight >>= 1;
+ }
+ reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight);
+ while (reducedWidth > 2 * canvas.width) {
+ reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1);
+ reducedWidth >>= 1;
+ reducedHeight >>= 1;
+ }
+ ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height);
+ return canvas;
+ }
+
+ get _thumbPageTitle() {
+ return this.l10n.get("thumb_page_title", {
+ page: this.pageLabel ?? this.id
+ });
+ }
+
+ get _thumbPageCanvas() {
+ return this.l10n.get("thumb_page_canvas", {
+ page: this.pageLabel ?? this.id
+ });
+ }
+
+ setPageLabel(label) {
+ this.pageLabel = typeof label === "string" ? label : null;
+ this._thumbPageTitle.then(msg => {
+ this.anchor.title = msg;
+ });
+ if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ return;
+ }
+ this._thumbPageCanvas.then(msg => {
+ this.image?.setAttribute("aria-label", msg);
+ });
+ }
+ }
+
+ exports.PDFThumbnailView = PDFThumbnailView;
+
+ /***/
+ }),
+ /* 29 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+ var _l10n_utils = __webpack_require__(30);
+ var _pdf_page_view = __webpack_require__(31);
+ var _pdf_rendering_queue = __webpack_require__(24);
+ var _pdf_link_service = __webpack_require__(7);
+ const DEFAULT_CACHE_SIZE = 10;
+ const PagesCountLimit = {
+ FORCE_SCROLL_MODE_PAGE: 15000,
+ FORCE_LAZY_PAGE_INIT: 7500,
+ PAUSE_EAGER_PAGE_INIT: 250
+ };
+ exports.PagesCountLimit = PagesCountLimit;
+
+ function isValidAnnotationEditorMode(mode) {
+ return Object.values(_pdfjsLib.AnnotationEditorType).includes(mode) && mode !== _pdfjsLib.AnnotationEditorType.DISABLE;
+ }
+
+ class PDFPageViewBuffer {
+ #buf = new Set();
+ #size = 0;
+
+ constructor(size) {
+ this.#size = size;
+ }
+
+ push(view) {
+ const buf = this.#buf;
+ if (buf.has(view)) {
+ buf.delete(view);
+ }
+ buf.add(view);
+ if (buf.size > this.#size) {
+ this.#destroyFirstView();
+ }
+ }
+
+ resize(newSize, idsToKeep = null) {
+ this.#size = newSize;
+ const buf = this.#buf;
+ if (idsToKeep) {
+ const ii = buf.size;
+ let i = 1;
+ for (const view of buf) {
+ if (idsToKeep.has(view.id)) {
+ buf.delete(view);
+ buf.add(view);
+ }
+ if (++i > ii) {
+ break;
+ }
+ }
+ }
+ while (buf.size > this.#size) {
+ this.#destroyFirstView();
+ }
+ }
+
+ has(view) {
+ return this.#buf.has(view);
+ }
+
+ [Symbol.iterator]() {
+ return this.#buf.keys();
+ }
+
+ #destroyFirstView() {
+ const firstView = this.#buf.keys().next().value;
+ firstView?.destroy();
+ this.#buf.delete(firstView);
+ }
+ }
+
+ exports.PDFPageViewBuffer = PDFPageViewBuffer;
+
+ class PDFViewer {
+ #buffer = null;
+ #altTextManager = null;
+ #annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE;
+ #annotationEditorUIManager = null;
+ #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+ #containerTopLeft = null;
+ #copyCallbackBound = null;
+ #enablePermissions = false;
+ #getAllTextInProgress = false;
+ #hiddenCopyElement = null;
+ #interruptCopyCondition = false;
+ #previousContainerHeight = 0;
+ #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));
+ #scrollModePageState = null;
+ #onVisibilityChange = null;
+ #scaleTimeoutId = null;
+ #textLayerMode = _ui_utils.TextLayerMode.ENABLE;
+
+ constructor(options) {
+ const viewerVersion = '3.11.174';
+ if (_pdfjsLib.version !== viewerVersion) {
+ throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`);
+ }
+ this.container = options.container;
+ this.viewer = options.viewer || options.container.firstElementChild;
+ if (this.container?.tagName !== "DIV" || this.viewer?.tagName !== "DIV") {
+ throw new Error("Invalid `container` and/or `viewer` option.");
+ }
+ if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") {
+ throw new Error("The `container` must be absolutely positioned.");
+ }
+ this.#resizeObserver.observe(this.container);
+ this.eventBus = options.eventBus;
+ this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
+ this.downloadManager = options.downloadManager || null;
+ this.findController = options.findController || null;
+ this.#altTextManager = options.altTextManager || null;
+ if (this.findController) {
+ this.findController.onIsPageVisible = pageNumber => this._getVisiblePages().ids.has(pageNumber);
+ }
+ this._scriptingManager = options.scriptingManager || null;
+ this.#textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
+ this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+ this.#annotationEditorMode = options.annotationEditorMode ?? _pdfjsLib.AnnotationEditorType.NONE;
+ this.imageResourcesPath = options.imageResourcesPath || "";
+ this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
+ this.removePageBorders = options.removePageBorders || false;
+ if (options.useOnlyCssZoom) {
+ console.error("useOnlyCssZoom was removed, please use `maxCanvasPixels = 0` instead.");
+ options.maxCanvasPixels = 0;
+ }
+ this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true;
+ this.maxCanvasPixels = options.maxCanvasPixels;
+ this.l10n = options.l10n || _l10n_utils.NullL10n;
+ this.#enablePermissions = options.enablePermissions || false;
+ this.pageColors = options.pageColors || null;
+ this.defaultRenderingQueue = !options.renderingQueue;
+ if (this.defaultRenderingQueue) {
+ this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
+ this.renderingQueue.setViewer(this);
+ } else {
+ this.renderingQueue = options.renderingQueue;
+ }
+ this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
+ this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
+ this._onBeforeDraw = this._onAfterDraw = null;
+ this._resetView();
+ if (this.removePageBorders) {
+ this.viewer.classList.add("removePageBorders");
+ }
+ this.#updateContainerHeightCss();
+ this.eventBus._on("thumbnailrendered", ({
+ pageNumber,
+ pdfPage
+ }) => {
+ const pageView = this._pages[pageNumber - 1];
+ if (!this.#buffer.has(pageView)) {
+ pdfPage?.cleanup();
+ }
+ });
+ }
+
+ get pagesCount() {
+ return this._pages.length;
+ }
+
+ getPageView(index) {
+ return this._pages[index];
+ }
+
+ getCachedPageViews() {
+ return new Set(this.#buffer);
+ }
+
+ get pageViewsReady() {
+ return this._pagesCapability.settled && this._pages.every(pageView => pageView?.pdfPage);
+ }
+
+ get renderForms() {
+ return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+ }
+
+ get enableScripting() {
+ return !!this._scriptingManager;
+ }
+
+ get currentPageNumber() {
+ return this._currentPageNumber;
+ }
+
+ set currentPageNumber(val) {
+ if (!Number.isInteger(val)) {
+ throw new Error("Invalid page number.");
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ if (!this._setCurrentPageNumber(val, true)) {
+ console.error(`currentPageNumber: "${val}" is not a valid page.`);
+ }
+ }
+
+ _setCurrentPageNumber(val, resetCurrentPageView = false) {
+ if (this._currentPageNumber === val) {
+ if (resetCurrentPageView) {
+ this.#resetCurrentPageView();
+ }
+ return true;
+ }
+ if (!(0 < val && val <= this.pagesCount)) {
+ return false;
+ }
+ const previous = this._currentPageNumber;
+ this._currentPageNumber = val;
+ this.eventBus.dispatch("pagechanging", {
+ source: this,
+ pageNumber: val,
+ pageLabel: this._pageLabels?.[val - 1] ?? null,
+ previous
+ });
+ if (resetCurrentPageView) {
+ this.#resetCurrentPageView();
+ }
+ return true;
+ }
+
+ get currentPageLabel() {
+ return this._pageLabels?.[this._currentPageNumber - 1] ?? null;
+ }
+
+ set currentPageLabel(val) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ let page = val | 0;
+ if (this._pageLabels) {
+ const i = this._pageLabels.indexOf(val);
+ if (i >= 0) {
+ page = i + 1;
+ }
+ }
+ if (!this._setCurrentPageNumber(page, true)) {
+ console.error(`currentPageLabel: "${val}" is not a valid page.`);
+ }
+ }
+
+ get currentScale() {
+ return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
+ }
+
+ set currentScale(val) {
+ if (isNaN(val)) {
+ throw new Error("Invalid numeric scale.");
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ this.#setScale(val, {
+ noScroll: false
+ });
+ }
+
+ get currentScaleValue() {
+ return this._currentScaleValue;
+ }
+
+ set currentScaleValue(val) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ this.#setScale(val, {
+ noScroll: false
+ });
+ }
+
+ get pagesRotation() {
+ return this._pagesRotation;
+ }
+
+ set pagesRotation(rotation) {
+ if (!(0, _ui_utils.isValidRotation)(rotation)) {
+ throw new Error("Invalid pages rotation angle.");
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ rotation %= 360;
+ if (rotation < 0) {
+ rotation += 360;
+ }
+ if (this._pagesRotation === rotation) {
+ return;
+ }
+ this._pagesRotation = rotation;
+ const pageNumber = this._currentPageNumber;
+ this.refresh(true, {
+ rotation
+ });
+ if (this._currentScaleValue) {
+ this.#setScale(this._currentScaleValue, {
+ noScroll: true
+ });
+ }
+ this.eventBus.dispatch("rotationchanging", {
+ source: this,
+ pagesRotation: rotation,
+ pageNumber
+ });
+ if (this.defaultRenderingQueue) {
+ this.update();
+ }
+ }
+
+ get firstPagePromise() {
+ return this.pdfDocument ? this._firstPageCapability.promise : null;
+ }
+
+ get onePageRendered() {
+ return this.pdfDocument ? this._onePageRenderedCapability.promise : null;
+ }
+
+ get pagesPromise() {
+ return this.pdfDocument ? this._pagesCapability.promise : null;
+ }
+
+ #layerProperties() {
+ const self = this;
+ return {
+ get annotationEditorUIManager() {
+ return self.#annotationEditorUIManager;
+ },
+ get annotationStorage() {
+ return self.pdfDocument?.annotationStorage;
+ },
+ get downloadManager() {
+ return self.downloadManager;
+ },
+ get enableScripting() {
+ return !!self._scriptingManager;
+ },
+ get fieldObjectsPromise() {
+ return self.pdfDocument?.getFieldObjects();
+ },
+ get findController() {
+ return self.findController;
+ },
+ get hasJSActionsPromise() {
+ return self.pdfDocument?.hasJSActions();
+ },
+ get linkService() {
+ return self.linkService;
+ }
+ };
+ }
+
+ #initializePermissions(permissions) {
+ const params = {
+ annotationEditorMode: this.#annotationEditorMode,
+ annotationMode: this.#annotationMode,
+ textLayerMode: this.#textLayerMode
+ };
+ if (!permissions) {
+ return params;
+ }
+ if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY) && this.#textLayerMode === _ui_utils.TextLayerMode.ENABLE) {
+ params.textLayerMode = _ui_utils.TextLayerMode.ENABLE_PERMISSIONS;
+ }
+ if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_CONTENTS)) {
+ params.annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE;
+ }
+ if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS) && this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) {
+ params.annotationMode = _pdfjsLib.AnnotationMode.ENABLE;
+ }
+ return params;
+ }
+
+ #onePageRenderedOrForceFetch() {
+ if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) {
+ return Promise.resolve();
+ }
+ const visibilityChangePromise = new Promise(resolve => {
+ this.#onVisibilityChange = () => {
+ if (document.visibilityState !== "hidden") {
+ return;
+ }
+ resolve();
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ };
+ document.addEventListener("visibilitychange", this.#onVisibilityChange);
+ });
+ return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]);
+ }
+
+ async getAllText() {
+ const texts = [];
+ const buffer = [];
+ for (let pageNum = 1, pagesCount = this.pdfDocument.numPages; pageNum <= pagesCount; ++pageNum) {
+ if (this.#interruptCopyCondition) {
+ return null;
+ }
+ buffer.length = 0;
+ const page = await this.pdfDocument.getPage(pageNum);
+ const {
+ items
+ } = await page.getTextContent();
+ for (const item of items) {
+ if (item.str) {
+ buffer.push(item.str);
+ }
+ if (item.hasEOL) {
+ buffer.push("\n");
+ }
+ }
+ texts.push((0, _ui_utils.removeNullCharacters)(buffer.join("")));
+ }
+ return texts.join("\n");
+ }
+
+ #copyCallback(textLayerMode, event) {
+ const selection = document.getSelection();
+ const {
+ focusNode,
+ anchorNode
+ } = selection;
+ if (anchorNode && focusNode && selection.containsNode(this.#hiddenCopyElement)) {
+ if (this.#getAllTextInProgress || textLayerMode === _ui_utils.TextLayerMode.ENABLE_PERMISSIONS) {
+ event.preventDefault();
+ event.stopPropagation();
+ return;
+ }
+ this.#getAllTextInProgress = true;
+ const savedCursor = this.container.style.cursor;
+ this.container.style.cursor = "wait";
+ const interruptCopy = ev => this.#interruptCopyCondition = ev.key === "Escape";
+ window.addEventListener("keydown", interruptCopy);
+ this.getAllText().then(async text => {
+ if (text !== null) {
+ await navigator.clipboard.writeText(text);
+ }
+ }).catch(reason => {
+ console.warn(`Something goes wrong when extracting the text: ${reason.message}`);
+ }).finally(() => {
+ this.#getAllTextInProgress = false;
+ this.#interruptCopyCondition = false;
+ window.removeEventListener("keydown", interruptCopy);
+ this.container.style.cursor = savedCursor;
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ setDocument(pdfDocument) {
+ if (this.pdfDocument) {
+ this.eventBus.dispatch("pagesdestroy", {
+ source: this
+ });
+ this._cancelRendering();
+ this._resetView();
+ this.findController?.setDocument(null);
+ this._scriptingManager?.setDocument(null);
+ if (this.#annotationEditorUIManager) {
+ this.#annotationEditorUIManager.destroy();
+ this.#annotationEditorUIManager = null;
+ }
+ }
+ this.pdfDocument = pdfDocument;
+ if (!pdfDocument) {
+ return;
+ }
+ const pagesCount = pdfDocument.numPages;
+ const firstPagePromise = pdfDocument.getPage(1);
+ const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
+ const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve();
+ if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {
+ console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");
+ const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE;
+ this.eventBus.dispatch("scrollmodechanged", {
+ source: this,
+ mode
+ });
+ }
+ this._pagesCapability.promise.then(() => {
+ this.eventBus.dispatch("pagesloaded", {
+ source: this,
+ pagesCount
+ });
+ }, () => {
+ });
+ this._onBeforeDraw = evt => {
+ const pageView = this._pages[evt.pageNumber - 1];
+ if (!pageView) {
+ return;
+ }
+ this.#buffer.push(pageView);
+ };
+ this.eventBus._on("pagerender", this._onBeforeDraw);
+ this._onAfterDraw = evt => {
+ if (evt.cssTransform || this._onePageRenderedCapability.settled) {
+ return;
+ }
+ this._onePageRenderedCapability.resolve({
+ timestamp: evt.timestamp
+ });
+ this.eventBus._off("pagerendered", this._onAfterDraw);
+ this._onAfterDraw = null;
+ if (this.#onVisibilityChange) {
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ }
+ };
+ this.eventBus._on("pagerendered", this._onAfterDraw);
+ Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ this._firstPageCapability.resolve(firstPdfPage);
+ this._optionalContentConfigPromise = optionalContentConfigPromise;
+ const {
+ annotationEditorMode,
+ annotationMode,
+ textLayerMode
+ } = this.#initializePermissions(permissions);
+ if (textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
+ const element = this.#hiddenCopyElement = document.createElement("div");
+ element.id = "hiddenCopyElement";
+ this.viewer.before(element);
+ }
+ if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) {
+ const mode = annotationEditorMode;
+ if (pdfDocument.isPureXfa) {
+ console.warn("Warning: XFA-editing is not implemented.");
+ } else if (isValidAnnotationEditorMode(mode)) {
+ this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.viewer, this.#altTextManager, this.eventBus, pdfDocument, this.pageColors);
+ if (mode !== _pdfjsLib.AnnotationEditorType.NONE) {
+ this.#annotationEditorUIManager.updateMode(mode);
+ }
+ } else {
+ console.error(`Invalid AnnotationEditor mode: ${mode}`);
+ }
+ }
+ const layerProperties = this.#layerProperties.bind(this);
+ const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer;
+ const scale = this.currentScale;
+ const viewport = firstPdfPage.getViewport({
+ scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
+ });
+ this.viewer.style.setProperty("--scale-factor", viewport.scale);
+ if (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas") {
+ this.viewer.style.setProperty("--hcm-highligh-filter", pdfDocument.filterFactory.addHighlightHCMFilter("CanvasText", "Canvas", "HighlightText", "Highlight"));
+ }
+ for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
+ const pageView = new _pdf_page_view.PDFPageView({
+ container: viewerElement,
+ eventBus: this.eventBus,
+ id: pageNum,
+ scale,
+ defaultViewport: viewport.clone(),
+ optionalContentConfigPromise,
+ renderingQueue: this.renderingQueue,
+ textLayerMode,
+ annotationMode,
+ imageResourcesPath: this.imageResourcesPath,
+ isOffscreenCanvasSupported: this.isOffscreenCanvasSupported,
+ maxCanvasPixels: this.maxCanvasPixels,
+ pageColors: this.pageColors,
+ l10n: this.l10n,
+ layerProperties
+ });
+ this._pages.push(pageView);
+ }
+ const firstPageView = this._pages[0];
+ if (firstPageView) {
+ firstPageView.setPdfPage(firstPdfPage);
+ this.linkService.cachePageRef(1, firstPdfPage.ref);
+ }
+ if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
+ this.#ensurePageViewVisible();
+ } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) {
+ this._updateSpreadMode();
+ }
+ this.#onePageRenderedOrForceFetch().then(async () => {
+ this.findController?.setDocument(pdfDocument);
+ this._scriptingManager?.setDocument(pdfDocument);
+ if (this.#hiddenCopyElement) {
+ this.#copyCallbackBound = this.#copyCallback.bind(this, textLayerMode);
+ document.addEventListener("copy", this.#copyCallbackBound);
+ }
+ if (this.#annotationEditorUIManager) {
+ this.eventBus.dispatch("annotationeditormodechanged", {
+ source: this,
+ mode: this.#annotationEditorMode
+ });
+ }
+ if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) {
+ this._pagesCapability.resolve();
+ return;
+ }
+ let getPagesLeft = pagesCount - 1;
+ if (getPagesLeft <= 0) {
+ this._pagesCapability.resolve();
+ return;
+ }
+ for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {
+ const promise = pdfDocument.getPage(pageNum).then(pdfPage => {
+ const pageView = this._pages[pageNum - 1];
+ if (!pageView.pdfPage) {
+ pageView.setPdfPage(pdfPage);
+ }
+ this.linkService.cachePageRef(pageNum, pdfPage.ref);
+ if (--getPagesLeft === 0) {
+ this._pagesCapability.resolve();
+ }
+ }, reason => {
+ console.error(`Unable to get page ${pageNum} to initialize viewer`, reason);
+ if (--getPagesLeft === 0) {
+ this._pagesCapability.resolve();
+ }
+ });
+ if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {
+ await promise;
+ }
+ }
+ });
+ this.eventBus.dispatch("pagesinit", {
+ source: this
+ });
+ pdfDocument.getMetadata().then(({
+ info
+ }) => {
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ if (info.Language) {
+ this.viewer.lang = info.Language;
+ }
+ });
+ if (this.defaultRenderingQueue) {
+ this.update();
+ }
+ }).catch(reason => {
+ console.error("Unable to initialize viewer", reason);
+ this._pagesCapability.reject(reason);
+ });
+ }
+
+ setPageLabels(labels) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ if (!labels) {
+ this._pageLabels = null;
+ } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
+ this._pageLabels = null;
+ console.error(`setPageLabels: Invalid page labels.`);
+ } else {
+ this._pageLabels = labels;
+ }
+ for (let i = 0, ii = this._pages.length; i < ii; i++) {
+ this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);
+ }
+ }
+
+ _resetView() {
+ this._pages = [];
+ this._currentPageNumber = 1;
+ this._currentScale = _ui_utils.UNKNOWN_SCALE;
+ this._currentScaleValue = null;
+ this._pageLabels = null;
+ this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
+ this._location = null;
+ this._pagesRotation = 0;
+ this._optionalContentConfigPromise = null;
+ this._firstPageCapability = new _pdfjsLib.PromiseCapability();
+ this._onePageRenderedCapability = new _pdfjsLib.PromiseCapability();
+ this._pagesCapability = new _pdfjsLib.PromiseCapability();
+ this._scrollMode = _ui_utils.ScrollMode.VERTICAL;
+ this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN;
+ this._spreadMode = _ui_utils.SpreadMode.NONE;
+ this.#scrollModePageState = {
+ previousPageNumber: 1,
+ scrollDown: true,
+ pages: []
+ };
+ if (this._onBeforeDraw) {
+ this.eventBus._off("pagerender", this._onBeforeDraw);
+ this._onBeforeDraw = null;
+ }
+ if (this._onAfterDraw) {
+ this.eventBus._off("pagerendered", this._onAfterDraw);
+ this._onAfterDraw = null;
+ }
+ if (this.#onVisibilityChange) {
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
+ this.#onVisibilityChange = null;
+ }
+ this.viewer.textContent = "";
+ this._updateScrollMode();
+ this.viewer.removeAttribute("lang");
+ if (this.#hiddenCopyElement) {
+ document.removeEventListener("copy", this.#copyCallbackBound);
+ this.#copyCallbackBound = null;
+ this.#hiddenCopyElement.remove();
+ this.#hiddenCopyElement = null;
+ }
+ }
+
+ #ensurePageViewVisible() {
+ if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) {
+ throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");
+ }
+ const pageNumber = this._currentPageNumber,
+ state = this.#scrollModePageState,
+ viewer = this.viewer;
+ viewer.textContent = "";
+ state.pages.length = 0;
+ if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) {
+ const pageView = this._pages[pageNumber - 1];
+ viewer.append(pageView.div);
+ state.pages.push(pageView);
+ } else {
+ const pageIndexSet = new Set(),
+ parity = this._spreadMode - 1;
+ if (parity === -1) {
+ pageIndexSet.add(pageNumber - 1);
+ } else if (pageNumber % 2 !== parity) {
+ pageIndexSet.add(pageNumber - 1);
+ pageIndexSet.add(pageNumber);
+ } else {
+ pageIndexSet.add(pageNumber - 2);
+ pageIndexSet.add(pageNumber - 1);
+ }
+ const spread = document.createElement("div");
+ spread.className = "spread";
+ if (this.isInPresentationMode) {
+ const dummyPage = document.createElement("div");
+ dummyPage.className = "dummyPage";
+ spread.append(dummyPage);
+ }
+ for (const i of pageIndexSet) {
+ const pageView = this._pages[i];
+ if (!pageView) {
+ continue;
+ }
+ spread.append(pageView.div);
+ state.pages.push(pageView);
+ }
+ viewer.append(spread);
+ }
+ state.scrollDown = pageNumber >= state.previousPageNumber;
+ state.previousPageNumber = pageNumber;
+ }
+
+ _scrollUpdate() {
+ if (this.pagesCount === 0) {
+ return;
+ }
+ this.update();
+ }
+
+ #scrollIntoView(pageView, pageSpot = null) {
+ const {
+ div,
+ id
+ } = pageView;
+ if (this._currentPageNumber !== id) {
+ this._setCurrentPageNumber(id);
+ }
+ if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
+ this.#ensurePageViewVisible();
+ this.update();
+ }
+ if (!pageSpot && !this.isInPresentationMode) {
+ const left = div.offsetLeft + div.clientLeft,
+ right = left + div.clientWidth;
+ const {
+ scrollLeft,
+ clientWidth
+ } = this.container;
+ if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) {
+ pageSpot = {
+ left: 0,
+ top: 0
+ };
+ }
+ }
+ (0, _ui_utils.scrollIntoView)(div, pageSpot);
+ if (!this._currentScaleValue && this._location) {
+ this._location = null;
+ }
+ }
+
+ #isSameScale(newScale) {
+ return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15;
+ }
+
+ #setScaleUpdatePages(newScale, newValue, {
+ noScroll = false,
+ preset = false,
+ drawingDelay = -1
+ }) {
+ this._currentScaleValue = newValue.toString();
+ if (this.#isSameScale(newScale)) {
+ if (preset) {
+ this.eventBus.dispatch("scalechanging", {
+ source: this,
+ scale: newScale,
+ presetValue: newValue
+ });
+ }
+ return;
+ }
+ this.viewer.style.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS);
+ const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000;
+ this.refresh(true, {
+ scale: newScale,
+ drawingDelay: postponeDrawing ? drawingDelay : -1
+ });
+ if (postponeDrawing) {
+ this.#scaleTimeoutId = setTimeout(() => {
+ this.#scaleTimeoutId = null;
+ this.refresh();
+ }, drawingDelay);
+ }
+ this._currentScale = newScale;
+ if (!noScroll) {
+ let page = this._currentPageNumber,
+ dest;
+ if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
+ page = this._location.pageNumber;
+ dest = [null, {
+ name: "XYZ"
+ }, this._location.left, this._location.top, null];
+ }
+ this.scrollPageIntoView({
+ pageNumber: page,
+ destArray: dest,
+ allowNegativeOffset: true
+ });
+ }
+ this.eventBus.dispatch("scalechanging", {
+ source: this,
+ scale: newScale,
+ presetValue: preset ? newValue : undefined
+ });
+ if (this.defaultRenderingQueue) {
+ this.update();
+ }
+ }
+
+ get #pageWidthScaleFactor() {
+ if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) {
+ return 2;
+ }
+ return 1;
+ }
+
+ #setScale(value, options) {
+ let scale = parseFloat(value);
+ if (scale > 0) {
+ options.preset = false;
+ this.#setScaleUpdatePages(scale, value, options);
+ } else {
+ const currentPage = this._pages[this._currentPageNumber - 1];
+ if (!currentPage) {
+ return;
+ }
+ let hPadding = _ui_utils.SCROLLBAR_PADDING,
+ vPadding = _ui_utils.VERTICAL_PADDING;
+ if (this.isInPresentationMode) {
+ hPadding = vPadding = 4;
+ if (this._spreadMode !== _ui_utils.SpreadMode.NONE) {
+ hPadding *= 2;
+ }
+ } else if (this.removePageBorders) {
+ hPadding = vPadding = 0;
+ } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) {
+ [hPadding, vPadding] = [vPadding, hPadding];
+ }
+ const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this.#pageWidthScaleFactor;
+ const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;
+ switch (value) {
+ case "page-actual":
+ scale = 1;
+ break;
+ case "page-width":
+ scale = pageWidthScale;
+ break;
+ case "page-height":
+ scale = pageHeightScale;
+ break;
+ case "page-fit":
+ scale = Math.min(pageWidthScale, pageHeightScale);
+ break;
+ case "auto":
+ const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
+ scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
+ break;
+ default:
+ console.error(`#setScale: "${value}" is an unknown zoom value.`);
+ return;
+ }
+ options.preset = true;
+ this.#setScaleUpdatePages(scale, value, options);
+ }
+ }
+
+ #resetCurrentPageView() {
+ const pageView = this._pages[this._currentPageNumber - 1];
+ if (this.isInPresentationMode) {
+ this.#setScale(this._currentScaleValue, {
+ noScroll: true
+ });
+ }
+ this.#scrollIntoView(pageView);
+ }
+
+ pageLabelToPageNumber(label) {
+ if (!this._pageLabels) {
+ return null;
+ }
+ const i = this._pageLabels.indexOf(label);
+ if (i < 0) {
+ return null;
+ }
+ return i + 1;
+ }
+
+ scrollPageIntoView({
+ pageNumber,
+ destArray = null,
+ allowNegativeOffset = false,
+ ignoreDestinationZoom = false
+ }) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];
+ if (!pageView) {
+ console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`);
+ return;
+ }
+ if (this.isInPresentationMode || !destArray) {
+ this._setCurrentPageNumber(pageNumber, true);
+ return;
+ }
+ let x = 0,
+ y = 0;
+ let width = 0,
+ height = 0,
+ widthScale,
+ heightScale;
+ const changeOrientation = pageView.rotation % 180 !== 0;
+ const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+ const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+ let scale = 0;
+ switch (destArray[1].name) {
+ case "XYZ":
+ x = destArray[2];
+ y = destArray[3];
+ scale = destArray[4];
+ x = x !== null ? x : 0;
+ y = y !== null ? y : pageHeight;
+ break;
+ case "Fit":
+ case "FitB":
+ scale = "page-fit";
+ break;
+ case "FitH":
+ case "FitBH":
+ y = destArray[2];
+ scale = "page-width";
+ if (y === null && this._location) {
+ x = this._location.left;
+ y = this._location.top;
+ } else if (typeof y !== "number" || y < 0) {
+ y = pageHeight;
+ }
+ break;
+ case "FitV":
+ case "FitBV":
+ x = destArray[2];
+ width = pageWidth;
+ height = pageHeight;
+ scale = "page-height";
+ break;
+ case "FitR":
+ x = destArray[2];
+ y = destArray[3];
+ width = destArray[4] - x;
+ height = destArray[5] - y;
+ let hPadding = _ui_utils.SCROLLBAR_PADDING,
+ vPadding = _ui_utils.VERTICAL_PADDING;
+ if (this.removePageBorders) {
+ hPadding = vPadding = 0;
+ }
+ widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+ heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+ scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
+ break;
+ default:
+ console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`);
+ return;
+ }
+ if (!ignoreDestinationZoom) {
+ if (scale && scale !== this._currentScale) {
+ this.currentScaleValue = scale;
+ } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
+ this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
+ }
+ }
+ if (scale === "page-fit" && !destArray[4]) {
+ this.#scrollIntoView(pageView);
+ return;
+ }
+ const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
+ let left = Math.min(boundingRect[0][0], boundingRect[1][0]);
+ let top = Math.min(boundingRect[0][1], boundingRect[1][1]);
+ if (!allowNegativeOffset) {
+ left = Math.max(left, 0);
+ top = Math.max(top, 0);
+ }
+ this.#scrollIntoView(pageView, {
+ left,
+ top
+ });
+ }
+
+ _updateLocation(firstPage) {
+ const currentScale = this._currentScale;
+ const currentScaleValue = this._currentScaleValue;
+ const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
+ const pageNumber = firstPage.id;
+ const currentPageView = this._pages[pageNumber - 1];
+ const container = this.container;
+ const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
+ const intLeft = Math.round(topLeft[0]);
+ const intTop = Math.round(topLeft[1]);
+ let pdfOpenParams = `#page=${pageNumber}`;
+ if (!this.isInPresentationMode) {
+ pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;
+ }
+ this._location = {
+ pageNumber,
+ scale: normalizedScaleValue,
+ top: intTop,
+ left: intLeft,
+ rotation: this._pagesRotation,
+ pdfOpenParams
+ };
+ }
+
+ update() {
+ const visible = this._getVisiblePages();
+ const visiblePages = visible.views,
+ numVisiblePages = visiblePages.length;
+ if (numVisiblePages === 0) {
+ return;
+ }
+ const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
+ this.#buffer.resize(newCacheSize, visible.ids);
+ this.renderingQueue.renderHighestPriority(visible);
+ const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL);
+ const currentId = this._currentPageNumber;
+ let stillFullyVisible = false;
+ for (const page of visiblePages) {
+ if (page.percent < 100) {
+ break;
+ }
+ if (page.id === currentId && isSimpleLayout) {
+ stillFullyVisible = true;
+ break;
+ }
+ }
+ this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id);
+ this._updateLocation(visible.first);
+ this.eventBus.dispatch("updateviewarea", {
+ source: this,
+ location: this._location
+ });
+ }
+
+ containsElement(element) {
+ return this.container.contains(element);
+ }
+
+ focus() {
+ this.container.focus();
+ }
+
+ get _isContainerRtl() {
+ return getComputedStyle(this.container).direction === "rtl";
+ }
+
+ get isInPresentationMode() {
+ return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
+ }
+
+ get isChangingPresentationMode() {
+ return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
+ }
+
+ get isHorizontalScrollbarEnabled() {
+ return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
+ }
+
+ get isVerticalScrollbarEnabled() {
+ return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
+ }
+
+ _getVisiblePages() {
+ const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages,
+ horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL,
+ rtl = horizontal && this._isContainerRtl;
+ return (0, _ui_utils.getVisibleElements)({
+ scrollEl: this.container,
+ views,
+ sortByVisibility: true,
+ horizontal,
+ rtl
+ });
+ }
+
+ cleanup() {
+ for (const pageView of this._pages) {
+ if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ pageView.reset();
+ }
+ }
+ }
+
+ _cancelRendering() {
+ for (const pageView of this._pages) {
+ pageView.cancelRendering();
+ }
+ }
+
+ async #ensurePdfPageLoaded(pageView) {
+ if (pageView.pdfPage) {
+ return pageView.pdfPage;
+ }
+ try {
+ const pdfPage = await this.pdfDocument.getPage(pageView.id);
+ if (!pageView.pdfPage) {
+ pageView.setPdfPage(pdfPage);
+ }
+ if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {
+ this.linkService.cachePageRef(pageView.id, pdfPage.ref);
+ }
+ return pdfPage;
+ } catch (reason) {
+ console.error("Unable to get page for page view", reason);
+ return null;
+ }
+ }
+
+ #getScrollAhead(visible) {
+ if (visible.first?.id === 1) {
+ return true;
+ } else if (visible.last?.id === this.pagesCount) {
+ return false;
+ }
+ switch (this._scrollMode) {
+ case _ui_utils.ScrollMode.PAGE:
+ return this.#scrollModePageState.scrollDown;
+ case _ui_utils.ScrollMode.HORIZONTAL:
+ return this.scroll.right;
+ }
+ return this.scroll.down;
+ }
+
+ forceRendering(currentlyVisiblePages) {
+ const visiblePages = currentlyVisiblePages || this._getVisiblePages();
+ const scrollAhead = this.#getScrollAhead(visiblePages);
+ const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL;
+ const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra);
+ if (pageView) {
+ this.#ensurePdfPageLoaded(pageView).then(() => {
+ this.renderingQueue.renderView(pageView);
+ });
+ return true;
+ }
+ return false;
+ }
+
+ get hasEqualPageSizes() {
+ const firstPageView = this._pages[0];
+ for (let i = 1, ii = this._pages.length; i < ii; ++i) {
+ const pageView = this._pages[i];
+ if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ getPagesOverview() {
+ let initialOrientation;
+ return this._pages.map(pageView => {
+ const viewport = pageView.pdfPage.getViewport({
+ scale: 1
+ });
+ const orientation = (0, _ui_utils.isPortraitOrientation)(viewport);
+ if (initialOrientation === undefined) {
+ initialOrientation = orientation;
+ } else if (this.enablePrintAutoRotate && orientation !== initialOrientation) {
+ return {
+ width: viewport.height,
+ height: viewport.width,
+ rotation: (viewport.rotation - 90) % 360
+ };
+ }
+ return {
+ width: viewport.width,
+ height: viewport.height,
+ rotation: viewport.rotation
+ };
+ });
+ }
+
+ get optionalContentConfigPromise() {
+ if (!this.pdfDocument) {
+ return Promise.resolve(null);
+ }
+ if (!this._optionalContentConfigPromise) {
+ console.error("optionalContentConfigPromise: Not initialized yet.");
+ return this.pdfDocument.getOptionalContentConfig();
+ }
+ return this._optionalContentConfigPromise;
+ }
+
+ set optionalContentConfigPromise(promise) {
+ if (!(promise instanceof Promise)) {
+ throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ if (!this._optionalContentConfigPromise) {
+ return;
+ }
+ this._optionalContentConfigPromise = promise;
+ this.refresh(false, {
+ optionalContentConfigPromise: promise
+ });
+ this.eventBus.dispatch("optionalcontentconfigchanged", {
+ source: this,
+ promise
+ });
+ }
+
+ get scrollMode() {
+ return this._scrollMode;
+ }
+
+ set scrollMode(mode) {
+ if (this._scrollMode === mode) {
+ return;
+ }
+ if (!(0, _ui_utils.isValidScrollMode)(mode)) {
+ throw new Error(`Invalid scroll mode: ${mode}`);
+ }
+ if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {
+ return;
+ }
+ this._previousScrollMode = this._scrollMode;
+ this._scrollMode = mode;
+ this.eventBus.dispatch("scrollmodechanged", {
+ source: this,
+ mode
+ });
+ this._updateScrollMode(this._currentPageNumber);
+ }
+
+ _updateScrollMode(pageNumber = null) {
+ const scrollMode = this._scrollMode,
+ viewer = this.viewer;
+ viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL);
+ viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED);
+ if (!this.pdfDocument || !pageNumber) {
+ return;
+ }
+ if (scrollMode === _ui_utils.ScrollMode.PAGE) {
+ this.#ensurePageViewVisible();
+ } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) {
+ this._updateSpreadMode();
+ }
+ if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
+ this.#setScale(this._currentScaleValue, {
+ noScroll: true
+ });
+ }
+ this._setCurrentPageNumber(pageNumber, true);
+ this.update();
+ }
+
+ get spreadMode() {
+ return this._spreadMode;
+ }
+
+ set spreadMode(mode) {
+ if (this._spreadMode === mode) {
+ return;
+ }
+ if (!(0, _ui_utils.isValidSpreadMode)(mode)) {
+ throw new Error(`Invalid spread mode: ${mode}`);
+ }
+ this._spreadMode = mode;
+ this.eventBus.dispatch("spreadmodechanged", {
+ source: this,
+ mode
+ });
+ this._updateSpreadMode(this._currentPageNumber);
+ }
+
+ _updateSpreadMode(pageNumber = null) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ const viewer = this.viewer,
+ pages = this._pages;
+ if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
+ this.#ensurePageViewVisible();
+ } else {
+ viewer.textContent = "";
+ if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
+ for (const pageView of this._pages) {
+ viewer.append(pageView.div);
+ }
+ } else {
+ const parity = this._spreadMode - 1;
+ let spread = null;
+ for (let i = 0, ii = pages.length; i < ii; ++i) {
+ if (spread === null) {
+ spread = document.createElement("div");
+ spread.className = "spread";
+ viewer.append(spread);
+ } else if (i % 2 === parity) {
+ spread = spread.cloneNode(false);
+ viewer.append(spread);
+ }
+ spread.append(pages[i].div);
+ }
+ }
+ }
+ if (!pageNumber) {
+ return;
+ }
+ if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
+ this.#setScale(this._currentScaleValue, {
+ noScroll: true
+ });
+ }
+ this._setCurrentPageNumber(pageNumber, true);
+ this.update();
+ }
+
+ _getPageAdvance(currentPageNumber, previous = false) {
+ switch (this._scrollMode) {
+ case _ui_utils.ScrollMode.WRAPPED: {
+ const {
+ views
+ } = this._getVisiblePages(),
+ pageLayout = new Map();
+ for (const {
+ id,
+ y,
+ percent,
+ widthPercent
+ } of views) {
+ if (percent === 0 || widthPercent < 100) {
+ continue;
+ }
+ let yArray = pageLayout.get(y);
+ if (!yArray) {
+ pageLayout.set(y, yArray ||= []);
+ }
+ yArray.push(id);
+ }
+ for (const yArray of pageLayout.values()) {
+ const currentIndex = yArray.indexOf(currentPageNumber);
+ if (currentIndex === -1) {
+ continue;
+ }
+ const numPages = yArray.length;
+ if (numPages === 1) {
+ break;
+ }
+ if (previous) {
+ for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {
+ const currentId = yArray[i],
+ expectedId = yArray[i + 1] - 1;
+ if (currentId < expectedId) {
+ return currentPageNumber - expectedId;
+ }
+ }
+ } else {
+ for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {
+ const currentId = yArray[i],
+ expectedId = yArray[i - 1] + 1;
+ if (currentId > expectedId) {
+ return expectedId - currentPageNumber;
+ }
+ }
+ }
+ if (previous) {
+ const firstId = yArray[0];
+ if (firstId < currentPageNumber) {
+ return currentPageNumber - firstId + 1;
+ }
+ } else {
+ const lastId = yArray[numPages - 1];
+ if (lastId > currentPageNumber) {
+ return lastId - currentPageNumber + 1;
+ }
+ }
+ break;
+ }
+ break;
+ }
+ case _ui_utils.ScrollMode.HORIZONTAL: {
+ break;
+ }
+ case _ui_utils.ScrollMode.PAGE:
+ case _ui_utils.ScrollMode.VERTICAL: {
+ if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
+ break;
+ }
+ const parity = this._spreadMode - 1;
+ if (previous && currentPageNumber % 2 !== parity) {
+ break;
+ } else if (!previous && currentPageNumber % 2 === parity) {
+ break;
+ }
+ const {
+ views
+ } = this._getVisiblePages(),
+ expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;
+ for (const {
+ id,
+ percent,
+ widthPercent
+ } of views) {
+ if (id !== expectedId) {
+ continue;
+ }
+ if (percent > 0 && widthPercent === 100) {
+ return 2;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ return 1;
+ }
+
+ nextPage() {
+ const currentPageNumber = this._currentPageNumber,
+ pagesCount = this.pagesCount;
+ if (currentPageNumber >= pagesCount) {
+ return false;
+ }
+ const advance = this._getPageAdvance(currentPageNumber, false) || 1;
+ this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);
+ return true;
+ }
+
+ previousPage() {
+ const currentPageNumber = this._currentPageNumber;
+ if (currentPageNumber <= 1) {
+ return false;
+ }
+ const advance = this._getPageAdvance(currentPageNumber, true) || 1;
+ this.currentPageNumber = Math.max(currentPageNumber - advance, 1);
+ return true;
+ }
+
+ increaseScale({
+ drawingDelay,
+ scaleFactor,
+ steps
+ } = {}) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ let newScale = this._currentScale;
+ if (scaleFactor > 1) {
+ newScale = Math.round(newScale * scaleFactor * 100) / 100;
+ } else {
+ steps ??= 1;
+ do {
+ newScale = Math.ceil((newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10;
+ } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE);
+ }
+ this.#setScale(Math.min(_ui_utils.MAX_SCALE, newScale), {
+ noScroll: false,
+ drawingDelay
+ });
+ }
+
+ decreaseScale({
+ drawingDelay,
+ scaleFactor,
+ steps
+ } = {}) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ let newScale = this._currentScale;
+ if (scaleFactor > 0 && scaleFactor < 1) {
+ newScale = Math.round(newScale * scaleFactor * 100) / 100;
+ } else {
+ steps ??= 1;
+ do {
+ newScale = Math.floor((newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10;
+ } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE);
+ }
+ this.#setScale(Math.max(_ui_utils.MIN_SCALE, newScale), {
+ noScroll: false,
+ drawingDelay
+ });
+ }
+
+ #updateContainerHeightCss(height = this.container.clientHeight) {
+ if (height !== this.#previousContainerHeight) {
+ this.#previousContainerHeight = height;
+ _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`);
+ }
+ }
+
+ #resizeObserverCallback(entries) {
+ for (const entry of entries) {
+ if (entry.target === this.container) {
+ this.#updateContainerHeightCss(Math.floor(entry.borderBoxSize[0].blockSize));
+ this.#containerTopLeft = null;
+ break;
+ }
+ }
+ }
+
+ get containerTopLeft() {
+ return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft];
+ }
+
+ get annotationEditorMode() {
+ return this.#annotationEditorUIManager ? this.#annotationEditorMode : _pdfjsLib.AnnotationEditorType.DISABLE;
+ }
+
+ set annotationEditorMode({
+ mode,
+ editId = null
+ }) {
+ if (!this.#annotationEditorUIManager) {
+ throw new Error(`The AnnotationEditor is not enabled.`);
+ }
+ if (this.#annotationEditorMode === mode) {
+ return;
+ }
+ if (!isValidAnnotationEditorMode(mode)) {
+ throw new Error(`Invalid AnnotationEditor mode: ${mode}`);
+ }
+ if (!this.pdfDocument) {
+ return;
+ }
+ this.#annotationEditorMode = mode;
+ this.eventBus.dispatch("annotationeditormodechanged", {
+ source: this,
+ mode
+ });
+ this.#annotationEditorUIManager.updateMode(mode, editId);
+ }
+
+ set annotationEditorParams({
+ type,
+ value
+ }) {
+ if (!this.#annotationEditorUIManager) {
+ throw new Error(`The AnnotationEditor is not enabled.`);
+ }
+ this.#annotationEditorUIManager.updateParams(type, value);
+ }
+
+ refresh(noUpdate = false, updateArgs = Object.create(null)) {
+ if (!this.pdfDocument) {
+ return;
+ }
+ for (const pageView of this._pages) {
+ pageView.update(updateArgs);
+ }
+ if (this.#scaleTimeoutId !== null) {
+ clearTimeout(this.#scaleTimeoutId);
+ this.#scaleTimeoutId = null;
+ }
+ if (!noUpdate) {
+ this.update();
+ }
+ }
+ }
+
+ exports.PDFViewer = PDFViewer;
+
+ /***/
+ }),
+ /* 30 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.NullL10n = void 0;
+ exports.getL10nFallback = getL10nFallback;
+ const DEFAULT_L10N_STRINGS = {
+ of_pages: "of {{pagesCount}}",
+ page_of_pages: "({{pageNumber}} of {{pagesCount}})",
+ document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)",
+ document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)",
+ document_properties_date_string: "{{date}}, {{time}}",
+ document_properties_page_size_unit_inches: "in",
+ document_properties_page_size_unit_millimeters: "mm",
+ document_properties_page_size_orientation_portrait: "portrait",
+ document_properties_page_size_orientation_landscape: "landscape",
+ document_properties_page_size_name_a3: "A3",
+ document_properties_page_size_name_a4: "A4",
+ document_properties_page_size_name_letter: "Letter",
+ document_properties_page_size_name_legal: "Legal",
+ document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})",
+ document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})",
+ document_properties_linearized_yes: "Yes",
+ document_properties_linearized_no: "No",
+ additional_layers: "Additional Layers",
+ page_landmark: "Page {{page}}",
+ thumb_page_title: "Page {{page}}",
+ thumb_page_canvas: "Thumbnail of Page {{page}}",
+ find_reached_top: "Reached top of document, continued from bottom",
+ find_reached_bottom: "Reached end of document, continued from top",
+ "find_match_count[one]": "{{current}} of {{total}} match",
+ "find_match_count[other]": "{{current}} of {{total}} matches",
+ "find_match_count_limit[one]": "More than {{limit}} match",
+ "find_match_count_limit[other]": "More than {{limit}} matches",
+ find_not_found: "Phrase not found",
+ page_scale_width: "Page Width",
+ page_scale_fit: "Page Fit",
+ page_scale_auto: "Automatic Zoom",
+ page_scale_actual: "Actual Size",
+ page_scale_percent: "{{scale}}%",
+ loading_error: "An error occurred while loading the PDF.",
+ invalid_file_error: "Invalid or corrupted PDF file.",
+ missing_file_error: "Missing PDF file.",
+ unexpected_response_error: "Unexpected server response.",
+ rendering_error: "An error occurred while rendering the page.",
+ annotation_date_string: "{{date}}, {{time}}",
+ printing_not_supported: "Warning: Printing is not fully supported by this browser.",
+ printing_not_ready: "Warning: The PDF is not fully loaded for printing.",
+ web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.",
+ free_text2_default_content: "Start typing…",
+ editor_free_text2_aria_label: "Text Editor",
+ editor_ink2_aria_label: "Draw Editor",
+ editor_ink_canvas_aria_label: "User-created image",
+ editor_alt_text_button_label: "Alt text",
+ editor_alt_text_edit_button_label: "Edit alt text",
+ editor_alt_text_decorative_tooltip: "Marked as decorative"
+ };
+ {
+ DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%";
+ }
+
+ function getL10nFallback(key, args) {
+ switch (key) {
+ case "find_match_count":
+ key = `find_match_count[${args.total === 1 ? "one" : "other"}]`;
+ break;
+ case "find_match_count_limit":
+ key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`;
+ break;
+ }
+ return DEFAULT_L10N_STRINGS[key] || "";
+ }
+
+ function formatL10nValue(text, args) {
+ if (!args) {
+ return text;
+ }
+ return text.replaceAll(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => {
+ return name in args ? args[name] : "{{" + name + "}}";
+ });
+ }
+
+ const NullL10n = {
+ async getLanguage() {
+ return "en-us";
+ },
+ async getDirection() {
+ return "ltr";
+ },
+ async get(key, args = null, fallback = getL10nFallback(key, args)) {
+ return formatL10nValue(fallback, args);
+ },
+ async translate(element) {
+ }
+ };
+ exports.NullL10n = NullL10n;
+
+ /***/
+ }),
+ /* 31 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFPageView = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+ var _annotation_editor_layer_builder = __webpack_require__(32);
+ var _annotation_layer_builder = __webpack_require__(33);
+ var _app_options = __webpack_require__(5);
+ var _l10n_utils = __webpack_require__(30);
+ var _pdf_link_service = __webpack_require__(7);
+ var _struct_tree_layer_builder = __webpack_require__(34);
+ var _text_accessibility = __webpack_require__(35);
+ var _text_highlighter = __webpack_require__(36);
+ var _text_layer_builder = __webpack_require__(37);
+ var _xfa_layer_builder = __webpack_require__(38);
+ const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216;
+ const DEFAULT_LAYER_PROPERTIES = () => {
+ return null;
+ };
+
+ class PDFPageView {
+ #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+ #hasRestrictedScaling = false;
+ #layerProperties = null;
+ #loadingId = null;
+ #previousRotation = null;
+ #renderError = null;
+ #renderingState = _ui_utils.RenderingStates.INITIAL;
+ #textLayerMode = _ui_utils.TextLayerMode.ENABLE;
+ #useThumbnailCanvas = {
+ directDrawing: true,
+ initialOptionalContent: true,
+ regularAnnotations: true
+ };
+ #viewportMap = new WeakMap();
+
+ constructor(options) {
+ const container = options.container;
+ const defaultViewport = options.defaultViewport;
+ this.id = options.id;
+ this.renderingId = "page" + this.id;
+ this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES;
+ this.pdfPage = null;
+ this.pageLabel = null;
+ this.rotation = 0;
+ this.scale = options.scale || _ui_utils.DEFAULT_SCALE;
+ this.viewport = defaultViewport;
+ this.pdfPageRotate = defaultViewport.rotation;
+ this._optionalContentConfigPromise = options.optionalContentConfigPromise || null;
+ this.#textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
+ this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+ this.imageResourcesPath = options.imageResourcesPath || "";
+ this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true;
+ this.maxCanvasPixels = options.maxCanvasPixels ?? MAX_CANVAS_PIXELS;
+ this.pageColors = options.pageColors || null;
+ this.eventBus = options.eventBus;
+ this.renderingQueue = options.renderingQueue;
+ this.l10n = options.l10n || _l10n_utils.NullL10n;
+ this.renderTask = null;
+ this.resume = null;
+ this._isStandalone = !this.renderingQueue?.hasViewer();
+ this._container = container;
+ if (options.useOnlyCssZoom) {
+ console.error("useOnlyCssZoom was removed, please use `maxCanvasPixels = 0` instead.");
+ this.maxCanvasPixels = 0;
+ }
+ this._annotationCanvasMap = null;
+ this.annotationLayer = null;
+ this.annotationEditorLayer = null;
+ this.textLayer = null;
+ this.zoomLayer = null;
+ this.xfaLayer = null;
+ this.structTreeLayer = null;
+ const div = document.createElement("div");
+ div.className = "page";
+ div.setAttribute("data-page-number", this.id);
+ div.setAttribute("role", "region");
+ this.l10n.get("page_landmark", {
+ page: this.id
+ }).then(msg => {
+ div.setAttribute("aria-label", msg);
+ });
+ this.div = div;
+ this.#setDimensions();
+ container?.append(div);
+ if (this._isStandalone) {
+ container?.style.setProperty("--scale-factor", this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS);
+ const {
+ optionalContentConfigPromise
+ } = options;
+ if (optionalContentConfigPromise) {
+ optionalContentConfigPromise.then(optionalContentConfig => {
+ if (optionalContentConfigPromise !== this._optionalContentConfigPromise) {
+ return;
+ }
+ this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility;
+ });
+ }
+ }
+ }
+
+ get renderingState() {
+ return this.#renderingState;
+ }
+
+ set renderingState(state) {
+ if (state === this.#renderingState) {
+ return;
+ }
+ this.#renderingState = state;
+ if (this.#loadingId) {
+ clearTimeout(this.#loadingId);
+ this.#loadingId = null;
+ }
+ switch (state) {
+ case _ui_utils.RenderingStates.PAUSED:
+ this.div.classList.remove("loading");
+ break;
+ case _ui_utils.RenderingStates.RUNNING:
+ this.div.classList.add("loadingIcon");
+ this.#loadingId = setTimeout(() => {
+ this.div.classList.add("loading");
+ this.#loadingId = null;
+ }, 0);
+ break;
+ case _ui_utils.RenderingStates.INITIAL:
+ case _ui_utils.RenderingStates.FINISHED:
+ this.div.classList.remove("loadingIcon", "loading");
+ break;
+ }
+ }
+
+ #setDimensions() {
+ const {
+ viewport
+ } = this;
+ if (this.pdfPage) {
+ if (this.#previousRotation === viewport.rotation) {
+ return;
+ }
+ this.#previousRotation = viewport.rotation;
+ }
+ (0, _pdfjsLib.setLayerDimensions)(this.div, viewport, true, false);
+ }
+
+ setPdfPage(pdfPage) {
+ if (this._isStandalone && (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas")) {
+ this._container?.style.setProperty("--hcm-highligh-filter", pdfPage.filterFactory.addHighlightHCMFilter("CanvasText", "Canvas", "HighlightText", "Highlight"));
+ }
+ this.pdfPage = pdfPage;
+ this.pdfPageRotate = pdfPage.rotate;
+ const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = pdfPage.getViewport({
+ scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
+ rotation: totalRotation
+ });
+ this.#setDimensions();
+ this.reset();
+ }
+
+ destroy() {
+ this.reset();
+ this.pdfPage?.cleanup();
+ }
+
+ get _textHighlighter() {
+ return (0, _pdfjsLib.shadow)(this, "_textHighlighter", new _text_highlighter.TextHighlighter({
+ pageIndex: this.id - 1,
+ eventBus: this.eventBus,
+ findController: this.#layerProperties().findController
+ }));
+ }
+
+ async #renderAnnotationLayer() {
+ let error = null;
+ try {
+ await this.annotationLayer.render(this.viewport, "display");
+ } catch (ex) {
+ console.error(`#renderAnnotationLayer: "${ex}".`);
+ error = ex;
+ } finally {
+ this.eventBus.dispatch("annotationlayerrendered", {
+ source: this,
+ pageNumber: this.id,
+ error
+ });
+ }
+ }
+
+ async #renderAnnotationEditorLayer() {
+ let error = null;
+ try {
+ await this.annotationEditorLayer.render(this.viewport, "display");
+ } catch (ex) {
+ console.error(`#renderAnnotationEditorLayer: "${ex}".`);
+ error = ex;
+ } finally {
+ this.eventBus.dispatch("annotationeditorlayerrendered", {
+ source: this,
+ pageNumber: this.id,
+ error
+ });
+ }
+ }
+
+ async #renderXfaLayer() {
+ let error = null;
+ try {
+ const result = await this.xfaLayer.render(this.viewport, "display");
+ if (result?.textDivs && this._textHighlighter) {
+ this.#buildXfaTextContentItems(result.textDivs);
+ }
+ } catch (ex) {
+ console.error(`#renderXfaLayer: "${ex}".`);
+ error = ex;
+ } finally {
+ this.eventBus.dispatch("xfalayerrendered", {
+ source: this,
+ pageNumber: this.id,
+ error
+ });
+ }
+ }
+
+ async #renderTextLayer() {
+ const {
+ pdfPage,
+ textLayer,
+ viewport
+ } = this;
+ if (!textLayer) {
+ return;
+ }
+ let error = null;
+ try {
+ if (!textLayer.renderingDone) {
+ const readableStream = pdfPage.streamTextContent({
+ includeMarkedContent: true,
+ disableNormalization: true
+ });
+ textLayer.setTextContentSource(readableStream);
+ }
+ await textLayer.render(viewport);
+ } catch (ex) {
+ if (ex instanceof _pdfjsLib.AbortException) {
+ return;
+ }
+ console.error(`#renderTextLayer: "${ex}".`);
+ error = ex;
+ }
+ this.eventBus.dispatch("textlayerrendered", {
+ source: this,
+ pageNumber: this.id,
+ numTextDivs: textLayer.numTextDivs,
+ error
+ });
+ this.#renderStructTreeLayer();
+ }
+
+ async #renderStructTreeLayer() {
+ if (!this.textLayer) {
+ return;
+ }
+ this.structTreeLayer ||= new _struct_tree_layer_builder.StructTreeLayerBuilder();
+ const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null);
+ const treeDom = this.structTreeLayer?.render(tree);
+ if (treeDom) {
+ this.canvas?.append(treeDom);
+ }
+ this.structTreeLayer?.show();
+ }
+
+ async #buildXfaTextContentItems(textDivs) {
+ const text = await this.pdfPage.getTextContent();
+ const items = [];
+ for (const item of text.items) {
+ items.push(item.str);
+ }
+ this._textHighlighter.setTextMapping(textDivs, items);
+ this._textHighlighter.enable();
+ }
+
+ _resetZoomLayer(removeFromDOM = false) {
+ if (!this.zoomLayer) {
+ return;
+ }
+ const zoomLayerCanvas = this.zoomLayer.firstChild;
+ this.#viewportMap.delete(zoomLayerCanvas);
+ zoomLayerCanvas.width = 0;
+ zoomLayerCanvas.height = 0;
+ if (removeFromDOM) {
+ this.zoomLayer.remove();
+ }
+ this.zoomLayer = null;
+ }
+
+ reset({
+ keepZoomLayer = false,
+ keepAnnotationLayer = false,
+ keepAnnotationEditorLayer = false,
+ keepXfaLayer = false,
+ keepTextLayer = false
+ } = {}) {
+ this.cancelRendering({
+ keepAnnotationLayer,
+ keepAnnotationEditorLayer,
+ keepXfaLayer,
+ keepTextLayer
+ });
+ this.renderingState = _ui_utils.RenderingStates.INITIAL;
+ const div = this.div;
+ const childNodes = div.childNodes,
+ zoomLayerNode = keepZoomLayer && this.zoomLayer || null,
+ annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null,
+ annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null,
+ xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null,
+ textLayerNode = keepTextLayer && this.textLayer?.div || null;
+ for (let i = childNodes.length - 1; i >= 0; i--) {
+ const node = childNodes[i];
+ switch (node) {
+ case zoomLayerNode:
+ case annotationLayerNode:
+ case annotationEditorLayerNode:
+ case xfaLayerNode:
+ case textLayerNode:
+ continue;
+ }
+ node.remove();
+ }
+ div.removeAttribute("data-loaded");
+ if (annotationLayerNode) {
+ this.annotationLayer.hide();
+ }
+ if (annotationEditorLayerNode) {
+ this.annotationEditorLayer.hide();
+ }
+ if (xfaLayerNode) {
+ this.xfaLayer.hide();
+ }
+ if (textLayerNode) {
+ this.textLayer.hide();
+ }
+ this.structTreeLayer?.hide();
+ if (!zoomLayerNode) {
+ if (this.canvas) {
+ this.#viewportMap.delete(this.canvas);
+ this.canvas.width = 0;
+ this.canvas.height = 0;
+ delete this.canvas;
+ }
+ this._resetZoomLayer();
+ }
+ }
+
+ update({
+ scale = 0,
+ rotation = null,
+ optionalContentConfigPromise = null,
+ drawingDelay = -1
+ }) {
+ this.scale = scale || this.scale;
+ if (typeof rotation === "number") {
+ this.rotation = rotation;
+ }
+ if (optionalContentConfigPromise instanceof Promise) {
+ this._optionalContentConfigPromise = optionalContentConfigPromise;
+ optionalContentConfigPromise.then(optionalContentConfig => {
+ if (optionalContentConfigPromise !== this._optionalContentConfigPromise) {
+ return;
+ }
+ this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility;
+ });
+ }
+ this.#useThumbnailCanvas.directDrawing = true;
+ const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = this.viewport.clone({
+ scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
+ rotation: totalRotation
+ });
+ this.#setDimensions();
+ if (this._isStandalone) {
+ this._container?.style.setProperty("--scale-factor", this.viewport.scale);
+ }
+ if (this.canvas) {
+ let onlyCssZoom = false;
+ if (this.#hasRestrictedScaling) {
+ if (this.maxCanvasPixels === 0) {
+ onlyCssZoom = true;
+ } else if (this.maxCanvasPixels > 0) {
+ const {
+ width,
+ height
+ } = this.viewport;
+ const {
+ sx,
+ sy
+ } = this.outputScale;
+ onlyCssZoom = (Math.floor(width) * sx | 0) * (Math.floor(height) * sy | 0) > this.maxCanvasPixels;
+ }
+ }
+ const postponeDrawing = !onlyCssZoom && drawingDelay >= 0 && drawingDelay < 1000;
+ if (postponeDrawing || onlyCssZoom) {
+ if (postponeDrawing && this.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ this.cancelRendering({
+ keepZoomLayer: true,
+ keepAnnotationLayer: true,
+ keepAnnotationEditorLayer: true,
+ keepXfaLayer: true,
+ keepTextLayer: true,
+ cancelExtraDelay: drawingDelay
+ });
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ this.#useThumbnailCanvas.directDrawing = false;
+ }
+ this.cssTransform({
+ target: this.canvas,
+ redrawAnnotationLayer: true,
+ redrawAnnotationEditorLayer: true,
+ redrawXfaLayer: true,
+ redrawTextLayer: !postponeDrawing,
+ hideTextLayer: postponeDrawing
+ });
+ if (postponeDrawing) {
+ return;
+ }
+ this.eventBus.dispatch("pagerendered", {
+ source: this,
+ pageNumber: this.id,
+ cssTransform: true,
+ timestamp: performance.now(),
+ error: this.#renderError
+ });
+ return;
+ }
+ if (!this.zoomLayer && !this.canvas.hidden) {
+ this.zoomLayer = this.canvas.parentNode;
+ this.zoomLayer.style.position = "absolute";
+ }
+ }
+ if (this.zoomLayer) {
+ this.cssTransform({
+ target: this.zoomLayer.firstChild
+ });
+ }
+ this.reset({
+ keepZoomLayer: true,
+ keepAnnotationLayer: true,
+ keepAnnotationEditorLayer: true,
+ keepXfaLayer: true,
+ keepTextLayer: true
+ });
+ }
+
+ cancelRendering({
+ keepAnnotationLayer = false,
+ keepAnnotationEditorLayer = false,
+ keepXfaLayer = false,
+ keepTextLayer = false,
+ cancelExtraDelay = 0
+ } = {}) {
+ if (this.renderTask) {
+ this.renderTask.cancel(cancelExtraDelay);
+ this.renderTask = null;
+ }
+ this.resume = null;
+ if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) {
+ this.textLayer.cancel();
+ this.textLayer = null;
+ }
+ if (this.structTreeLayer && !this.textLayer) {
+ this.structTreeLayer = null;
+ }
+ if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) {
+ this.annotationLayer.cancel();
+ this.annotationLayer = null;
+ this._annotationCanvasMap = null;
+ }
+ if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) {
+ this.annotationEditorLayer.cancel();
+ this.annotationEditorLayer = null;
+ }
+ if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {
+ this.xfaLayer.cancel();
+ this.xfaLayer = null;
+ this._textHighlighter?.disable();
+ }
+ }
+
+ cssTransform({
+ target,
+ redrawAnnotationLayer = false,
+ redrawAnnotationEditorLayer = false,
+ redrawXfaLayer = false,
+ redrawTextLayer = false,
+ hideTextLayer = false
+ }) {
+ if (!target.hasAttribute("zooming")) {
+ target.setAttribute("zooming", true);
+ const {
+ style
+ } = target;
+ style.width = style.height = "";
+ }
+ const originalViewport = this.#viewportMap.get(target);
+ if (this.viewport !== originalViewport) {
+ const relativeRotation = this.viewport.rotation - originalViewport.rotation;
+ const absRotation = Math.abs(relativeRotation);
+ let scaleX = 1,
+ scaleY = 1;
+ if (absRotation === 90 || absRotation === 270) {
+ const {
+ width,
+ height
+ } = this.viewport;
+ scaleX = height / width;
+ scaleY = width / height;
+ }
+ target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;
+ }
+ if (redrawAnnotationLayer && this.annotationLayer) {
+ this.#renderAnnotationLayer();
+ }
+ if (redrawAnnotationEditorLayer && this.annotationEditorLayer) {
+ this.#renderAnnotationEditorLayer();
+ }
+ if (redrawXfaLayer && this.xfaLayer) {
+ this.#renderXfaLayer();
+ }
+ if (this.textLayer) {
+ if (hideTextLayer) {
+ this.textLayer.hide();
+ this.structTreeLayer?.hide();
+ } else if (redrawTextLayer) {
+ this.#renderTextLayer();
+ }
+ }
+ }
+
+ get width() {
+ return this.viewport.width;
+ }
+
+ get height() {
+ return this.viewport.height;
+ }
+
+ getPagePoint(x, y) {
+ return this.viewport.convertToPdfPoint(x, y);
+ }
+
+ async #finishRenderTask(renderTask, error = null) {
+ if (renderTask === this.renderTask) {
+ this.renderTask = null;
+ }
+ if (error instanceof _pdfjsLib.RenderingCancelledException) {
+ this.#renderError = null;
+ return;
+ }
+ this.#renderError = error;
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ this._resetZoomLayer(true);
+ this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots;
+ this.eventBus.dispatch("pagerendered", {
+ source: this,
+ pageNumber: this.id,
+ cssTransform: false,
+ timestamp: performance.now(),
+ error: this.#renderError
+ });
+ if (error) {
+ throw error;
+ }
+ }
+
+ async draw() {
+ if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) {
+ console.error("Must be in new state before drawing");
+ this.reset();
+ }
+ const {
+ div,
+ l10n,
+ pageColors,
+ pdfPage,
+ viewport
+ } = this;
+ if (!pdfPage) {
+ this.renderingState = _ui_utils.RenderingStates.FINISHED;
+ throw new Error("pdfPage is not loaded");
+ }
+ this.renderingState = _ui_utils.RenderingStates.RUNNING;
+ const canvasWrapper = document.createElement("div");
+ canvasWrapper.classList.add("canvasWrapper");
+ div.append(canvasWrapper);
+ if (!this.textLayer && this.#textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !pdfPage.isPureXfa) {
+ this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager();
+ this.textLayer = new _text_layer_builder.TextLayerBuilder({
+ highlighter: this._textHighlighter,
+ accessibilityManager: this._accessibilityManager,
+ isOffscreenCanvasSupported: this.isOffscreenCanvasSupported,
+ enablePermissions: this.#textLayerMode === _ui_utils.TextLayerMode.ENABLE_PERMISSIONS
+ });
+ div.append(this.textLayer.div);
+ }
+ if (!this.annotationLayer && this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE) {
+ const {
+ annotationStorage,
+ downloadManager,
+ enableScripting,
+ fieldObjectsPromise,
+ hasJSActionsPromise,
+ linkService
+ } = this.#layerProperties();
+ this._annotationCanvasMap ||= new Map();
+ this.annotationLayer = new _annotation_layer_builder.AnnotationLayerBuilder({
+ pageDiv: div,
+ pdfPage,
+ annotationStorage,
+ imageResourcesPath: this.imageResourcesPath,
+ renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS,
+ linkService,
+ downloadManager,
+ l10n,
+ enableScripting,
+ hasJSActionsPromise,
+ fieldObjectsPromise,
+ annotationCanvasMap: this._annotationCanvasMap,
+ accessibilityManager: this._accessibilityManager
+ });
+ }
+ const renderContinueCallback = cont => {
+ showCanvas?.(false);
+ if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {
+ this.renderingState = _ui_utils.RenderingStates.PAUSED;
+ this.resume = () => {
+ this.renderingState = _ui_utils.RenderingStates.RUNNING;
+ cont();
+ };
+ return;
+ }
+ cont();
+ };
+ const {
+ width,
+ height
+ } = viewport;
+ const canvas = document.createElement("canvas");
+ canvas.setAttribute("role", "presentation");
+ canvas.hidden = true;
+ const hasHCM = !!(pageColors?.background && pageColors?.foreground);
+ let showCanvas = isLastShow => {
+ if (!hasHCM || isLastShow) {
+ canvas.hidden = false;
+ showCanvas = null;
+ }
+ };
+ canvasWrapper.append(canvas);
+ this.canvas = canvas;
+ const ctx = canvas.getContext("2d", {
+ alpha: false
+ });
+ const outputScale = this.outputScale = new _ui_utils.OutputScale();
+ if (this.maxCanvasPixels === 0) {
+ const invScale = 1 / this.scale;
+ outputScale.sx *= invScale;
+ outputScale.sy *= invScale;
+ this.#hasRestrictedScaling = true;
+ } else if (this.maxCanvasPixels > 0) {
+ const pixelsInViewport = width * height;
+ const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);
+ if (outputScale.sx > maxScale || outputScale.sy > maxScale) {
+ outputScale.sx = maxScale;
+ outputScale.sy = maxScale;
+ this.#hasRestrictedScaling = true;
+ } else {
+ this.#hasRestrictedScaling = false;
+ }
+ }
+ const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);
+ const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);
+ canvas.width = (0, _ui_utils.roundToDivide)(width * outputScale.sx, sfx[0]);
+ canvas.height = (0, _ui_utils.roundToDivide)(height * outputScale.sy, sfy[0]);
+ const {
+ style
+ } = canvas;
+ style.width = (0, _ui_utils.roundToDivide)(width, sfx[1]) + "px";
+ style.height = (0, _ui_utils.roundToDivide)(height, sfy[1]) + "px";
+ this.#viewportMap.set(canvas, viewport);
+ const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
+ const renderContext = {
+ canvasContext: ctx,
+ transform,
+ viewport,
+ annotationMode: this.#annotationMode,
+ optionalContentConfigPromise: this._optionalContentConfigPromise,
+ annotationCanvasMap: this._annotationCanvasMap,
+ pageColors
+ };
+ const renderTask = this.renderTask = this.pdfPage.render(renderContext);
+ renderTask.onContinue = renderContinueCallback;
+ const resultPromise = renderTask.promise.then(async () => {
+ showCanvas?.(true);
+ await this.#finishRenderTask(renderTask);
+ this.#renderTextLayer();
+ if (this.annotationLayer) {
+ await this.#renderAnnotationLayer();
+ }
+ if (!this.annotationEditorLayer) {
+ const {
+ annotationEditorUIManager
+ } = this.#layerProperties();
+ if (!annotationEditorUIManager) {
+ return;
+ }
+ this.annotationEditorLayer = new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({
+ uiManager: annotationEditorUIManager,
+ pageDiv: div,
+ pdfPage,
+ l10n,
+ accessibilityManager: this._accessibilityManager,
+ annotationLayer: this.annotationLayer?.annotationLayer
+ });
+ }
+ this.#renderAnnotationEditorLayer();
+ }, error => {
+ if (!(error instanceof _pdfjsLib.RenderingCancelledException)) {
+ showCanvas?.(true);
+ }
+ return this.#finishRenderTask(renderTask, error);
+ });
+ if (pdfPage.isPureXfa) {
+ if (!this.xfaLayer) {
+ const {
+ annotationStorage,
+ linkService
+ } = this.#layerProperties();
+ this.xfaLayer = new _xfa_layer_builder.XfaLayerBuilder({
+ pageDiv: div,
+ pdfPage,
+ annotationStorage,
+ linkService
+ });
+ } else if (this.xfaLayer.div) {
+ div.append(this.xfaLayer.div);
+ }
+ this.#renderXfaLayer();
+ }
+ div.setAttribute("data-loaded", true);
+ this.eventBus.dispatch("pagerender", {
+ source: this,
+ pageNumber: this.id
+ });
+ return resultPromise;
+ }
+
+ setPageLabel(label) {
+ this.pageLabel = typeof label === "string" ? label : null;
+ if (this.pageLabel !== null) {
+ this.div.setAttribute("data-page-label", this.pageLabel);
+ } else {
+ this.div.removeAttribute("data-page-label");
+ }
+ }
+
+ get thumbnailCanvas() {
+ const {
+ directDrawing,
+ initialOptionalContent,
+ regularAnnotations
+ } = this.#useThumbnailCanvas;
+ return directDrawing && initialOptionalContent && regularAnnotations ? this.canvas : null;
+ }
+ }
+
+ exports.PDFPageView = PDFPageView;
+
+ /***/
+ }),
+ /* 32 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.AnnotationEditorLayerBuilder = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _l10n_utils = __webpack_require__(30);
+
+ class AnnotationEditorLayerBuilder {
+ #annotationLayer = null;
+ #uiManager;
+
+ constructor(options) {
+ this.pageDiv = options.pageDiv;
+ this.pdfPage = options.pdfPage;
+ this.accessibilityManager = options.accessibilityManager;
+ this.l10n = options.l10n || _l10n_utils.NullL10n;
+ this.annotationEditorLayer = null;
+ this.div = null;
+ this._cancelled = false;
+ this.#uiManager = options.uiManager;
+ this.#annotationLayer = options.annotationLayer || null;
+ }
+
+ async render(viewport, intent = "display") {
+ if (intent !== "display") {
+ return;
+ }
+ if (this._cancelled) {
+ return;
+ }
+ const clonedViewport = viewport.clone({
+ dontFlip: true
+ });
+ if (this.div) {
+ this.annotationEditorLayer.update({
+ viewport: clonedViewport
+ });
+ this.show();
+ return;
+ }
+ const div = this.div = document.createElement("div");
+ div.className = "annotationEditorLayer";
+ div.tabIndex = 0;
+ div.hidden = true;
+ div.dir = this.#uiManager.direction;
+ this.pageDiv.append(div);
+ this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({
+ uiManager: this.#uiManager,
+ div,
+ accessibilityManager: this.accessibilityManager,
+ pageIndex: this.pdfPage.pageNumber - 1,
+ l10n: this.l10n,
+ viewport: clonedViewport,
+ annotationLayer: this.#annotationLayer
+ });
+ const parameters = {
+ viewport: clonedViewport,
+ div,
+ annotations: null,
+ intent
+ };
+ this.annotationEditorLayer.render(parameters);
+ this.show();
+ }
+
+ cancel() {
+ this._cancelled = true;
+ if (!this.div) {
+ return;
+ }
+ this.pageDiv = null;
+ this.annotationEditorLayer.destroy();
+ this.div.remove();
+ }
+
+ hide() {
+ if (!this.div) {
+ return;
+ }
+ this.div.hidden = true;
+ }
+
+ show() {
+ if (!this.div || this.annotationEditorLayer.isEmpty) {
+ return;
+ }
+ this.div.hidden = false;
+ }
+ }
+
+ exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder;
+
+ /***/
+ }),
+ /* 33 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.AnnotationLayerBuilder = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _l10n_utils = __webpack_require__(30);
+ var _ui_utils = __webpack_require__(3);
+
+ class AnnotationLayerBuilder {
+ #onPresentationModeChanged = null;
+
+ constructor({
+ pageDiv,
+ pdfPage,
+ linkService,
+ downloadManager,
+ annotationStorage = null,
+ imageResourcesPath = "",
+ renderForms = true,
+ l10n = _l10n_utils.NullL10n,
+ enableScripting = false,
+ hasJSActionsPromise = null,
+ fieldObjectsPromise = null,
+ annotationCanvasMap = null,
+ accessibilityManager = null
+ }) {
+ this.pageDiv = pageDiv;
+ this.pdfPage = pdfPage;
+ this.linkService = linkService;
+ this.downloadManager = downloadManager;
+ this.imageResourcesPath = imageResourcesPath;
+ this.renderForms = renderForms;
+ this.l10n = l10n;
+ this.annotationStorage = annotationStorage;
+ this.enableScripting = enableScripting;
+ this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false);
+ this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null);
+ this._annotationCanvasMap = annotationCanvasMap;
+ this._accessibilityManager = accessibilityManager;
+ this.annotationLayer = null;
+ this.div = null;
+ this._cancelled = false;
+ this._eventBus = linkService.eventBus;
+ }
+
+ async render(viewport, intent = "display") {
+ if (this.div) {
+ if (this._cancelled || !this.annotationLayer) {
+ return;
+ }
+ this.annotationLayer.update({
+ viewport: viewport.clone({
+ dontFlip: true
+ })
+ });
+ return;
+ }
+ const [annotations, hasJSActions, fieldObjects] = await Promise.all([this.pdfPage.getAnnotations({
+ intent
+ }), this._hasJSActionsPromise, this._fieldObjectsPromise]);
+ if (this._cancelled) {
+ return;
+ }
+ const div = this.div = document.createElement("div");
+ div.className = "annotationLayer";
+ this.pageDiv.append(div);
+ if (annotations.length === 0) {
+ this.hide();
+ return;
+ }
+ this.annotationLayer = new _pdfjsLib.AnnotationLayer({
+ div,
+ accessibilityManager: this._accessibilityManager,
+ annotationCanvasMap: this._annotationCanvasMap,
+ l10n: this.l10n,
+ page: this.pdfPage,
+ viewport: viewport.clone({
+ dontFlip: true
+ })
+ });
+ await this.annotationLayer.render({
+ annotations,
+ imageResourcesPath: this.imageResourcesPath,
+ renderForms: this.renderForms,
+ linkService: this.linkService,
+ downloadManager: this.downloadManager,
+ annotationStorage: this.annotationStorage,
+ enableScripting: this.enableScripting,
+ hasJSActions,
+ fieldObjects
+ });
+ if (this.linkService.isInPresentationMode) {
+ this.#updatePresentationModeState(_ui_utils.PresentationModeState.FULLSCREEN);
+ }
+ if (!this.#onPresentationModeChanged) {
+ this.#onPresentationModeChanged = evt => {
+ this.#updatePresentationModeState(evt.state);
+ };
+ this._eventBus?._on("presentationmodechanged", this.#onPresentationModeChanged);
+ }
+ }
+
+ cancel() {
+ this._cancelled = true;
+ if (this.#onPresentationModeChanged) {
+ this._eventBus?._off("presentationmodechanged", this.#onPresentationModeChanged);
+ this.#onPresentationModeChanged = null;
+ }
+ }
+
+ hide() {
+ if (!this.div) {
+ return;
+ }
+ this.div.hidden = true;
+ }
+
+ #updatePresentationModeState(state) {
+ if (!this.div) {
+ return;
+ }
+ let disableFormElements = false;
+ switch (state) {
+ case _ui_utils.PresentationModeState.FULLSCREEN:
+ disableFormElements = true;
+ break;
+ case _ui_utils.PresentationModeState.NORMAL:
+ break;
+ default:
+ return;
+ }
+ for (const section of this.div.childNodes) {
+ if (section.hasAttribute("data-internal-link")) {
+ continue;
+ }
+ section.inert = disableFormElements;
+ }
+ }
+ }
+
+ exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
+
+ /***/
+ }),
+ /* 34 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.StructTreeLayerBuilder = void 0;
+ var _ui_utils = __webpack_require__(3);
+ const PDF_ROLE_TO_HTML_ROLE = {
+ Document: null,
+ DocumentFragment: null,
+ Part: "group",
+ Sect: "group",
+ Div: "group",
+ Aside: "note",
+ NonStruct: "none",
+ P: null,
+ H: "heading",
+ Title: null,
+ FENote: "note",
+ Sub: "group",
+ Lbl: null,
+ Span: null,
+ Em: null,
+ Strong: null,
+ Link: "link",
+ Annot: "note",
+ Form: "form",
+ Ruby: null,
+ RB: null,
+ RT: null,
+ RP: null,
+ Warichu: null,
+ WT: null,
+ WP: null,
+ L: "list",
+ LI: "listitem",
+ LBody: null,
+ Table: "table",
+ TR: "row",
+ TH: "columnheader",
+ TD: "cell",
+ THead: "columnheader",
+ TBody: null,
+ TFoot: null,
+ Caption: null,
+ Figure: "figure",
+ Formula: null,
+ Artifact: null
+ };
+ const HEADING_PATTERN = /^H(\d+)$/;
+
+ class StructTreeLayerBuilder {
+ #treeDom = undefined;
+
+ get renderingDone() {
+ return this.#treeDom !== undefined;
+ }
+
+ render(structTree) {
+ if (this.#treeDom !== undefined) {
+ return this.#treeDom;
+ }
+ const treeDom = this.#walk(structTree);
+ treeDom?.classList.add("structTree");
+ return this.#treeDom = treeDom;
+ }
+
+ hide() {
+ if (this.#treeDom && !this.#treeDom.hidden) {
+ this.#treeDom.hidden = true;
+ }
+ }
+
+ show() {
+ if (this.#treeDom?.hidden) {
+ this.#treeDom.hidden = false;
+ }
+ }
+
+ #setAttributes(structElement, htmlElement) {
+ const {
+ alt,
+ id,
+ lang
+ } = structElement;
+ if (alt !== undefined) {
+ htmlElement.setAttribute("aria-label", (0, _ui_utils.removeNullCharacters)(alt));
+ }
+ if (id !== undefined) {
+ htmlElement.setAttribute("aria-owns", id);
+ }
+ if (lang !== undefined) {
+ htmlElement.setAttribute("lang", (0, _ui_utils.removeNullCharacters)(lang, true));
+ }
+ }
+
+ #walk(node) {
+ if (!node) {
+ return null;
+ }
+ const element = document.createElement("span");
+ if ("role" in node) {
+ const {
+ role
+ } = node;
+ const match = role.match(HEADING_PATTERN);
+ if (match) {
+ element.setAttribute("role", "heading");
+ element.setAttribute("aria-level", match[1]);
+ } else if (PDF_ROLE_TO_HTML_ROLE[role]) {
+ element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]);
+ }
+ }
+ this.#setAttributes(node, element);
+ if (node.children) {
+ if (node.children.length === 1 && "id" in node.children[0]) {
+ this.#setAttributes(node.children[0], element);
+ } else {
+ for (const kid of node.children) {
+ element.append(this.#walk(kid));
+ }
+ }
+ }
+ return element;
+ }
+ }
+
+ exports.StructTreeLayerBuilder = StructTreeLayerBuilder;
+
+ /***/
+ }),
+ /* 35 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.TextAccessibilityManager = void 0;
+ var _ui_utils = __webpack_require__(3);
+
+ class TextAccessibilityManager {
+ #enabled = false;
+ #textChildren = null;
+ #textNodes = new Map();
+ #waitingElements = new Map();
+
+ setTextMapping(textDivs) {
+ this.#textChildren = textDivs;
+ }
+
+ static #compareElementPositions(e1, e2) {
+ const rect1 = e1.getBoundingClientRect();
+ const rect2 = e2.getBoundingClientRect();
+ if (rect1.width === 0 && rect1.height === 0) {
+ return +1;
+ }
+ if (rect2.width === 0 && rect2.height === 0) {
+ return -1;
+ }
+ const top1 = rect1.y;
+ const bot1 = rect1.y + rect1.height;
+ const mid1 = rect1.y + rect1.height / 2;
+ const top2 = rect2.y;
+ const bot2 = rect2.y + rect2.height;
+ const mid2 = rect2.y + rect2.height / 2;
+ if (mid1 <= top2 && mid2 >= bot1) {
+ return -1;
+ }
+ if (mid2 <= top1 && mid1 >= bot2) {
+ return +1;
+ }
+ const centerX1 = rect1.x + rect1.width / 2;
+ const centerX2 = rect2.x + rect2.width / 2;
+ return centerX1 - centerX2;
+ }
+
+ enable() {
+ if (this.#enabled) {
+ throw new Error("TextAccessibilityManager is already enabled.");
+ }
+ if (!this.#textChildren) {
+ throw new Error("Text divs and strings have not been set.");
+ }
+ this.#enabled = true;
+ this.#textChildren = this.#textChildren.slice();
+ this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions);
+ if (this.#textNodes.size > 0) {
+ const textChildren = this.#textChildren;
+ for (const [id, nodeIndex] of this.#textNodes) {
+ const element = document.getElementById(id);
+ if (!element) {
+ this.#textNodes.delete(id);
+ continue;
+ }
+ this.#addIdToAriaOwns(id, textChildren[nodeIndex]);
+ }
+ }
+ for (const [element, isRemovable] of this.#waitingElements) {
+ this.addPointerInTextLayer(element, isRemovable);
+ }
+ this.#waitingElements.clear();
+ }
+
+ disable() {
+ if (!this.#enabled) {
+ return;
+ }
+ this.#waitingElements.clear();
+ this.#textChildren = null;
+ this.#enabled = false;
+ }
+
+ removePointerInTextLayer(element) {
+ if (!this.#enabled) {
+ this.#waitingElements.delete(element);
+ return;
+ }
+ const children = this.#textChildren;
+ if (!children || children.length === 0) {
+ return;
+ }
+ const {
+ id
+ } = element;
+ const nodeIndex = this.#textNodes.get(id);
+ if (nodeIndex === undefined) {
+ return;
+ }
+ const node = children[nodeIndex];
+ this.#textNodes.delete(id);
+ let owns = node.getAttribute("aria-owns");
+ if (owns?.includes(id)) {
+ owns = owns.split(" ").filter(x => x !== id).join(" ");
+ if (owns) {
+ node.setAttribute("aria-owns", owns);
+ } else {
+ node.removeAttribute("aria-owns");
+ node.setAttribute("role", "presentation");
+ }
+ }
+ }
+
+ #addIdToAriaOwns(id, node) {
+ const owns = node.getAttribute("aria-owns");
+ if (!owns?.includes(id)) {
+ node.setAttribute("aria-owns", owns ? `${owns} ${id}` : id);
+ }
+ node.removeAttribute("role");
+ }
+
+ addPointerInTextLayer(element, isRemovable) {
+ const {
+ id
+ } = element;
+ if (!id) {
+ return null;
+ }
+ if (!this.#enabled) {
+ this.#waitingElements.set(element, isRemovable);
+ return null;
+ }
+ if (isRemovable) {
+ this.removePointerInTextLayer(element);
+ }
+ const children = this.#textChildren;
+ if (!children || children.length === 0) {
+ return null;
+ }
+ const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(element, node) < 0);
+ const nodeIndex = Math.max(0, index - 1);
+ const child = children[nodeIndex];
+ this.#addIdToAriaOwns(id, child);
+ this.#textNodes.set(id, nodeIndex);
+ const parent = child.parentNode;
+ return parent?.classList.contains("markedContent") ? parent.id : null;
+ }
+
+ moveElementInDOM(container, element, contentElement, isRemovable) {
+ const id = this.addPointerInTextLayer(contentElement, isRemovable);
+ if (!container.hasChildNodes()) {
+ container.append(element);
+ return id;
+ }
+ const children = Array.from(container.childNodes).filter(node => node !== element);
+ if (children.length === 0) {
+ return id;
+ }
+ const elementToCompare = contentElement || element;
+ const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(elementToCompare, node) < 0);
+ if (index === 0) {
+ children[0].before(element);
+ } else {
+ children[index - 1].after(element);
+ }
+ return id;
+ }
+ }
+
+ exports.TextAccessibilityManager = TextAccessibilityManager;
+
+ /***/
+ }),
+ /* 36 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.TextHighlighter = void 0;
+
+ class TextHighlighter {
+ constructor({
+ findController,
+ eventBus,
+ pageIndex
+ }) {
+ this.findController = findController;
+ this.matches = [];
+ this.eventBus = eventBus;
+ this.pageIdx = pageIndex;
+ this._onUpdateTextLayerMatches = null;
+ this.textDivs = null;
+ this.textContentItemsStr = null;
+ this.enabled = false;
+ }
+
+ setTextMapping(divs, texts) {
+ this.textDivs = divs;
+ this.textContentItemsStr = texts;
+ }
+
+ enable() {
+ if (!this.textDivs || !this.textContentItemsStr) {
+ throw new Error("Text divs and strings have not been set.");
+ }
+ if (this.enabled) {
+ throw new Error("TextHighlighter is already enabled.");
+ }
+ this.enabled = true;
+ if (!this._onUpdateTextLayerMatches) {
+ this._onUpdateTextLayerMatches = evt => {
+ if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {
+ this._updateMatches();
+ }
+ };
+ this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches);
+ }
+ this._updateMatches();
+ }
+
+ disable() {
+ if (!this.enabled) {
+ return;
+ }
+ this.enabled = false;
+ if (this._onUpdateTextLayerMatches) {
+ this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches);
+ this._onUpdateTextLayerMatches = null;
+ }
+ this._updateMatches(true);
+ }
+
+ _convertMatches(matches, matchesLength) {
+ if (!matches) {
+ return [];
+ }
+ const {
+ textContentItemsStr
+ } = this;
+ let i = 0,
+ iIndex = 0;
+ const end = textContentItemsStr.length - 1;
+ const result = [];
+ for (let m = 0, mm = matches.length; m < mm; m++) {
+ let matchIdx = matches[m];
+ while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {
+ iIndex += textContentItemsStr[i].length;
+ i++;
+ }
+ if (i === textContentItemsStr.length) {
+ console.error("Could not find a matching mapping");
+ }
+ const match = {
+ begin: {
+ divIdx: i,
+ offset: matchIdx - iIndex
+ }
+ };
+ matchIdx += matchesLength[m];
+ while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
+ iIndex += textContentItemsStr[i].length;
+ i++;
+ }
+ match.end = {
+ divIdx: i,
+ offset: matchIdx - iIndex
+ };
+ result.push(match);
+ }
+ return result;
+ }
+
+ _renderMatches(matches) {
+ if (matches.length === 0) {
+ return;
+ }
+ const {
+ findController,
+ pageIdx
+ } = this;
+ const {
+ textContentItemsStr,
+ textDivs
+ } = this;
+ const isSelectedPage = pageIdx === findController.selected.pageIdx;
+ const selectedMatchIdx = findController.selected.matchIdx;
+ const highlightAll = findController.state.highlightAll;
+ let prevEnd = null;
+ const infinity = {
+ divIdx: -1,
+ offset: undefined
+ };
+
+ function beginText(begin, className) {
+ const divIdx = begin.divIdx;
+ textDivs[divIdx].textContent = "";
+ return appendTextToDiv(divIdx, 0, begin.offset, className);
+ }
+
+ function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
+ let div = textDivs[divIdx];
+ if (div.nodeType === Node.TEXT_NODE) {
+ const span = document.createElement("span");
+ div.before(span);
+ span.append(div);
+ textDivs[divIdx] = span;
+ div = span;
+ }
+ const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
+ const node = document.createTextNode(content);
+ if (className) {
+ const span = document.createElement("span");
+ span.className = `${className} appended`;
+ span.append(node);
+ div.append(span);
+ return className.includes("selected") ? span.offsetLeft : 0;
+ }
+ div.append(node);
+ return 0;
+ }
+
+ let i0 = selectedMatchIdx,
+ i1 = i0 + 1;
+ if (highlightAll) {
+ i0 = 0;
+ i1 = matches.length;
+ } else if (!isSelectedPage) {
+ return;
+ }
+ let lastDivIdx = -1;
+ let lastOffset = -1;
+ for (let i = i0; i < i1; i++) {
+ const match = matches[i];
+ const begin = match.begin;
+ if (begin.divIdx === lastDivIdx && begin.offset === lastOffset) {
+ continue;
+ }
+ lastDivIdx = begin.divIdx;
+ lastOffset = begin.offset;
+ const end = match.end;
+ const isSelected = isSelectedPage && i === selectedMatchIdx;
+ const highlightSuffix = isSelected ? " selected" : "";
+ let selectedLeft = 0;
+ if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
+ if (prevEnd !== null) {
+ appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
+ }
+ beginText(begin);
+ } else {
+ appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
+ }
+ if (begin.divIdx === end.divIdx) {
+ selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix);
+ } else {
+ selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix);
+ for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
+ textDivs[n0].className = "highlight middle" + highlightSuffix;
+ }
+ beginText(end, "highlight end" + highlightSuffix);
+ }
+ prevEnd = end;
+ if (isSelected) {
+ findController.scrollMatchIntoView({
+ element: textDivs[begin.divIdx],
+ selectedLeft,
+ pageIndex: pageIdx,
+ matchIndex: selectedMatchIdx
+ });
+ }
+ }
+ if (prevEnd) {
+ appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
+ }
+ }
+
+ _updateMatches(reset = false) {
+ if (!this.enabled && !reset) {
+ return;
+ }
+ const {
+ findController,
+ matches,
+ pageIdx
+ } = this;
+ const {
+ textContentItemsStr,
+ textDivs
+ } = this;
+ let clearedUntilDivIdx = -1;
+ for (const match of matches) {
+ const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
+ for (let n = begin, end = match.end.divIdx; n <= end; n++) {
+ const div = textDivs[n];
+ div.textContent = textContentItemsStr[n];
+ div.className = "";
+ }
+ clearedUntilDivIdx = match.end.divIdx + 1;
+ }
+ if (!findController?.highlightMatches || reset) {
+ return;
+ }
+ const pageMatches = findController.pageMatches[pageIdx] || null;
+ const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;
+ this.matches = this._convertMatches(pageMatches, pageMatchesLength);
+ this._renderMatches(this.matches);
+ }
+ }
+
+ exports.TextHighlighter = TextHighlighter;
+
+ /***/
+ }),
+ /* 37 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.TextLayerBuilder = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _ui_utils = __webpack_require__(3);
+
+ class TextLayerBuilder {
+ #enablePermissions = false;
+ #rotation = 0;
+ #scale = 0;
+ #textContentSource = null;
+
+ constructor({
+ highlighter = null,
+ accessibilityManager = null,
+ isOffscreenCanvasSupported = true,
+ enablePermissions = false
+ }) {
+ this.textContentItemsStr = [];
+ this.renderingDone = false;
+ this.textDivs = [];
+ this.textDivProperties = new WeakMap();
+ this.textLayerRenderTask = null;
+ this.highlighter = highlighter;
+ this.accessibilityManager = accessibilityManager;
+ this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;
+ this.#enablePermissions = enablePermissions === true;
+ this.div = document.createElement("div");
+ this.div.className = "textLayer";
+ this.hide();
+ }
+
+ #finishRendering() {
+ this.renderingDone = true;
+ const endOfContent = document.createElement("div");
+ endOfContent.className = "endOfContent";
+ this.div.append(endOfContent);
+ this.#bindMouse();
+ }
+
+ get numTextDivs() {
+ return this.textDivs.length;
+ }
+
+ async render(viewport) {
+ if (!this.#textContentSource) {
+ throw new Error('No "textContentSource" parameter specified.');
+ }
+ const scale = viewport.scale * (globalThis.devicePixelRatio || 1);
+ const {
+ rotation
+ } = viewport;
+ if (this.renderingDone) {
+ const mustRotate = rotation !== this.#rotation;
+ const mustRescale = scale !== this.#scale;
+ if (mustRotate || mustRescale) {
+ this.hide();
+ (0, _pdfjsLib.updateTextLayer)({
+ container: this.div,
+ viewport,
+ textDivs: this.textDivs,
+ textDivProperties: this.textDivProperties,
+ isOffscreenCanvasSupported: this.isOffscreenCanvasSupported,
+ mustRescale,
+ mustRotate
+ });
+ this.#scale = scale;
+ this.#rotation = rotation;
+ }
+ this.show();
+ return;
+ }
+ this.cancel();
+ this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);
+ this.accessibilityManager?.setTextMapping(this.textDivs);
+ this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
+ textContentSource: this.#textContentSource,
+ container: this.div,
+ viewport,
+ textDivs: this.textDivs,
+ textDivProperties: this.textDivProperties,
+ textContentItemsStr: this.textContentItemsStr,
+ isOffscreenCanvasSupported: this.isOffscreenCanvasSupported
+ });
+ await this.textLayerRenderTask.promise;
+ this.#finishRendering();
+ this.#scale = scale;
+ this.#rotation = rotation;
+ this.show();
+ this.accessibilityManager?.enable();
+ }
+
+ hide() {
+ if (!this.div.hidden) {
+ this.highlighter?.disable();
+ this.div.hidden = true;
+ }
+ }
+
+ show() {
+ if (this.div.hidden && this.renderingDone) {
+ this.div.hidden = false;
+ this.highlighter?.enable();
+ }
+ }
+
+ cancel() {
+ if (this.textLayerRenderTask) {
+ this.textLayerRenderTask.cancel();
+ this.textLayerRenderTask = null;
+ }
+ this.highlighter?.disable();
+ this.accessibilityManager?.disable();
+ this.textContentItemsStr.length = 0;
+ this.textDivs.length = 0;
+ this.textDivProperties = new WeakMap();
+ }
+
+ setTextContentSource(source) {
+ this.cancel();
+ this.#textContentSource = source;
+ }
+
+ #bindMouse() {
+ const {
+ div
+ } = this;
+ div.addEventListener("mousedown", evt => {
+ const end = div.querySelector(".endOfContent");
+ if (!end) {
+ return;
+ }
+ let adjustTop = evt.target !== div;
+ adjustTop &&= getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none";
+ if (adjustTop) {
+ const divBounds = div.getBoundingClientRect();
+ const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);
+ end.style.top = (r * 100).toFixed(2) + "%";
+ }
+ end.classList.add("active");
+ });
+ div.addEventListener("mouseup", () => {
+ const end = div.querySelector(".endOfContent");
+ if (!end) {
+ return;
+ }
+ end.style.top = "";
+ end.classList.remove("active");
+ });
+ div.addEventListener("copy", event => {
+ if (!this.#enablePermissions) {
+ const selection = document.getSelection();
+ event.clipboardData.setData("text/plain", (0, _ui_utils.removeNullCharacters)((0, _pdfjsLib.normalizeUnicode)(selection.toString())));
+ }
+ event.preventDefault();
+ event.stopPropagation();
+ });
+ }
+ }
+
+ exports.TextLayerBuilder = TextLayerBuilder;
+
+ /***/
+ }),
+ /* 38 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.XfaLayerBuilder = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+
+ class XfaLayerBuilder {
+ constructor({
+ pageDiv,
+ pdfPage,
+ annotationStorage = null,
+ linkService,
+ xfaHtml = null
+ }) {
+ this.pageDiv = pageDiv;
+ this.pdfPage = pdfPage;
+ this.annotationStorage = annotationStorage;
+ this.linkService = linkService;
+ this.xfaHtml = xfaHtml;
+ this.div = null;
+ this._cancelled = false;
+ }
+
+ async render(viewport, intent = "display") {
+ if (intent === "print") {
+ const parameters = {
+ viewport: viewport.clone({
+ dontFlip: true
+ }),
+ div: this.div,
+ xfaHtml: this.xfaHtml,
+ annotationStorage: this.annotationStorage,
+ linkService: this.linkService,
+ intent
+ };
+ const div = document.createElement("div");
+ this.pageDiv.append(div);
+ parameters.div = div;
+ return _pdfjsLib.XfaLayer.render(parameters);
+ }
+ const xfaHtml = await this.pdfPage.getXfa();
+ if (this._cancelled || !xfaHtml) {
+ return {
+ textDivs: []
+ };
+ }
+ const parameters = {
+ viewport: viewport.clone({
+ dontFlip: true
+ }),
+ div: this.div,
+ xfaHtml,
+ annotationStorage: this.annotationStorage,
+ linkService: this.linkService,
+ intent
+ };
+ if (this.div) {
+ return _pdfjsLib.XfaLayer.update(parameters);
+ }
+ this.div = document.createElement("div");
+ this.pageDiv.append(this.div);
+ parameters.div = this.div;
+ return _pdfjsLib.XfaLayer.render(parameters);
+ }
+
+ cancel() {
+ this._cancelled = true;
+ }
+
+ hide() {
+ if (!this.div) {
+ return;
+ }
+ this.div.hidden = true;
+ }
+ }
+
+ exports.XfaLayerBuilder = XfaLayerBuilder;
+
+ /***/
+ }),
+ /* 39 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.SecondaryToolbar = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdf_viewer = __webpack_require__(29);
+
+ class SecondaryToolbar {
+ constructor(options, eventBus) {
+ this.toolbar = options.toolbar;
+ this.toggleButton = options.toggleButton;
+ this.buttons = [{
+ element: options.presentationModeButton,
+ eventName: "presentationmode",
+ close: true
+ }, {
+ element: options.printButton,
+ eventName: "print",
+ close: true
+ }, {
+ element: options.downloadButton,
+ eventName: "download",
+ close: true
+ }, {
+ element: options.viewBookmarkButton,
+ eventName: null,
+ close: true
+ }, {
+ element: options.firstPageButton,
+ eventName: "firstpage",
+ close: true
+ }, {
+ element: options.lastPageButton,
+ eventName: "lastpage",
+ close: true
+ }, {
+ element: options.pageRotateCwButton,
+ eventName: "rotatecw",
+ close: false
+ }, {
+ element: options.pageRotateCcwButton,
+ eventName: "rotateccw",
+ close: false
+ }, {
+ element: options.cursorSelectToolButton,
+ eventName: "switchcursortool",
+ eventDetails: {
+ tool: _ui_utils.CursorTool.SELECT
+ },
+ close: true
+ }, {
+ element: options.cursorHandToolButton,
+ eventName: "switchcursortool",
+ eventDetails: {
+ tool: _ui_utils.CursorTool.HAND
+ },
+ close: true
+ }, {
+ element: options.scrollPageButton,
+ eventName: "switchscrollmode",
+ eventDetails: {
+ mode: _ui_utils.ScrollMode.PAGE
+ },
+ close: true
+ }, {
+ element: options.scrollVerticalButton,
+ eventName: "switchscrollmode",
+ eventDetails: {
+ mode: _ui_utils.ScrollMode.VERTICAL
+ },
+ close: true
+ }, {
+ element: options.scrollHorizontalButton,
+ eventName: "switchscrollmode",
+ eventDetails: {
+ mode: _ui_utils.ScrollMode.HORIZONTAL
+ },
+ close: true
+ }, {
+ element: options.scrollWrappedButton,
+ eventName: "switchscrollmode",
+ eventDetails: {
+ mode: _ui_utils.ScrollMode.WRAPPED
+ },
+ close: true
+ }, {
+ element: options.spreadNoneButton,
+ eventName: "switchspreadmode",
+ eventDetails: {
+ mode: _ui_utils.SpreadMode.NONE
+ },
+ close: true
+ }, {
+ element: options.spreadOddButton,
+ eventName: "switchspreadmode",
+ eventDetails: {
+ mode: _ui_utils.SpreadMode.ODD
+ },
+ close: true
+ }, {
+ element: options.spreadEvenButton,
+ eventName: "switchspreadmode",
+ eventDetails: {
+ mode: _ui_utils.SpreadMode.EVEN
+ },
+ close: true
+ }, {
+ element: options.documentPropertiesButton,
+ eventName: "documentproperties",
+ close: true
+ }];
+ this.buttons.push({
+ element: options.openFileButton,
+ eventName: "openfile",
+ close: true
+ });
+ this.items = {
+ firstPage: options.firstPageButton,
+ lastPage: options.lastPageButton,
+ pageRotateCw: options.pageRotateCwButton,
+ pageRotateCcw: options.pageRotateCcwButton
+ };
+ this.eventBus = eventBus;
+ this.opened = false;
+ this.#bindClickListeners();
+ this.#bindCursorToolsListener(options);
+ this.#bindScrollModeListener(options);
+ this.#bindSpreadModeListener(options);
+ this.reset();
+ }
+
+ get isOpen() {
+ return this.opened;
+ }
+
+ setPageNumber(pageNumber) {
+ this.pageNumber = pageNumber;
+ this.#updateUIState();
+ }
+
+ setPagesCount(pagesCount) {
+ this.pagesCount = pagesCount;
+ this.#updateUIState();
+ }
+
+ reset() {
+ this.pageNumber = 0;
+ this.pagesCount = 0;
+ this.#updateUIState();
+ this.eventBus.dispatch("secondarytoolbarreset", {
+ source: this
+ });
+ }
+
+ #updateUIState() {
+ this.items.firstPage.disabled = this.pageNumber <= 1;
+ this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
+ this.items.pageRotateCw.disabled = this.pagesCount === 0;
+ this.items.pageRotateCcw.disabled = this.pagesCount === 0;
+ }
+
+ #bindClickListeners() {
+ this.toggleButton.addEventListener("click", this.toggle.bind(this));
+ for (const {
+ element,
+ eventName,
+ close,
+ eventDetails
+ } of this.buttons) {
+ element.addEventListener("click", evt => {
+ if (eventName !== null) {
+ this.eventBus.dispatch(eventName, {
+ source: this,
+ ...eventDetails
+ });
+ }
+ if (close) {
+ this.close();
+ }
+ this.eventBus.dispatch("reporttelemetry", {
+ source: this,
+ details: {
+ type: "buttons",
+ data: {
+ id: element.id
+ }
+ }
+ });
+ });
+ }
+ }
+
+ #bindCursorToolsListener({
+ cursorSelectToolButton,
+ cursorHandToolButton
+ }) {
+ this.eventBus._on("cursortoolchanged", ({
+ tool
+ }) => {
+ (0, _ui_utils.toggleCheckedBtn)(cursorSelectToolButton, tool === _ui_utils.CursorTool.SELECT);
+ (0, _ui_utils.toggleCheckedBtn)(cursorHandToolButton, tool === _ui_utils.CursorTool.HAND);
+ });
+ }
+
+ #bindScrollModeListener({
+ scrollPageButton,
+ scrollVerticalButton,
+ scrollHorizontalButton,
+ scrollWrappedButton,
+ spreadNoneButton,
+ spreadOddButton,
+ spreadEvenButton
+ }) {
+ const scrollModeChanged = ({
+ mode
+ }) => {
+ (0, _ui_utils.toggleCheckedBtn)(scrollPageButton, mode === _ui_utils.ScrollMode.PAGE);
+ (0, _ui_utils.toggleCheckedBtn)(scrollVerticalButton, mode === _ui_utils.ScrollMode.VERTICAL);
+ (0, _ui_utils.toggleCheckedBtn)(scrollHorizontalButton, mode === _ui_utils.ScrollMode.HORIZONTAL);
+ (0, _ui_utils.toggleCheckedBtn)(scrollWrappedButton, mode === _ui_utils.ScrollMode.WRAPPED);
+ const forceScrollModePage = this.pagesCount > _pdf_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE;
+ scrollPageButton.disabled = forceScrollModePage;
+ scrollVerticalButton.disabled = forceScrollModePage;
+ scrollHorizontalButton.disabled = forceScrollModePage;
+ scrollWrappedButton.disabled = forceScrollModePage;
+ const isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL;
+ spreadNoneButton.disabled = isHorizontal;
+ spreadOddButton.disabled = isHorizontal;
+ spreadEvenButton.disabled = isHorizontal;
+ };
+ this.eventBus._on("scrollmodechanged", scrollModeChanged);
+ this.eventBus._on("secondarytoolbarreset", evt => {
+ if (evt.source === this) {
+ scrollModeChanged({
+ mode: _ui_utils.ScrollMode.VERTICAL
+ });
+ }
+ });
+ }
+
+ #bindSpreadModeListener({
+ spreadNoneButton,
+ spreadOddButton,
+ spreadEvenButton
+ }) {
+ const spreadModeChanged = ({
+ mode
+ }) => {
+ (0, _ui_utils.toggleCheckedBtn)(spreadNoneButton, mode === _ui_utils.SpreadMode.NONE);
+ (0, _ui_utils.toggleCheckedBtn)(spreadOddButton, mode === _ui_utils.SpreadMode.ODD);
+ (0, _ui_utils.toggleCheckedBtn)(spreadEvenButton, mode === _ui_utils.SpreadMode.EVEN);
+ };
+ this.eventBus._on("spreadmodechanged", spreadModeChanged);
+ this.eventBus._on("secondarytoolbarreset", evt => {
+ if (evt.source === this) {
+ spreadModeChanged({
+ mode: _ui_utils.SpreadMode.NONE
+ });
+ }
+ });
+ }
+
+ open() {
+ if (this.opened) {
+ return;
+ }
+ this.opened = true;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true, this.toolbar);
+ }
+
+ close() {
+ if (!this.opened) {
+ return;
+ }
+ this.opened = false;
+ (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false, this.toolbar);
+ }
+
+ toggle() {
+ if (this.opened) {
+ this.close();
+ } else {
+ this.open();
+ }
+ }
+ }
+
+ exports.SecondaryToolbar = SecondaryToolbar;
+
+ /***/
+ }),
+ /* 40 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.Toolbar = void 0;
+ var _ui_utils = __webpack_require__(3);
+ var _pdfjsLib = __webpack_require__(4);
+ const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading";
+
+ class Toolbar {
+ #wasLocalized = false;
+
+ constructor(options, eventBus, l10n) {
+ this.toolbar = options.container;
+ this.eventBus = eventBus;
+ this.l10n = l10n;
+ this.buttons = [{
+ element: options.previous,
+ eventName: "previouspage"
+ }, {
+ element: options.next,
+ eventName: "nextpage"
+ }, {
+ element: options.zoomIn,
+ eventName: "zoomin"
+ }, {
+ element: options.zoomOut,
+ eventName: "zoomout"
+ }, {
+ element: options.print,
+ eventName: "print"
+ }, {
+ element: options.download,
+ eventName: "download"
+ }, {
+ element: options.editorFreeTextButton,
+ eventName: "switchannotationeditormode",
+ eventDetails: {
+ get mode() {
+ const {
+ classList
+ } = options.editorFreeTextButton;
+ return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.FREETEXT;
+ }
+ }
+ }, {
+ element: options.editorInkButton,
+ eventName: "switchannotationeditormode",
+ eventDetails: {
+ get mode() {
+ const {
+ classList
+ } = options.editorInkButton;
+ return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.INK;
+ }
+ }
+ }, {
+ element: options.editorStampButton,
+ eventName: "switchannotationeditormode",
+ eventDetails: {
+ get mode() {
+ const {
+ classList
+ } = options.editorStampButton;
+ return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.STAMP;
+ }
+ }
+ }];
+ this.buttons.push({
+ element: options.openFile,
+ eventName: "openfile"
+ });
+ this.items = {
+ numPages: options.numPages,
+ pageNumber: options.pageNumber,
+ scaleSelect: options.scaleSelect,
+ customScaleOption: options.customScaleOption,
+ previous: options.previous,
+ next: options.next,
+ zoomIn: options.zoomIn,
+ zoomOut: options.zoomOut
+ };
+ this.#bindListeners(options);
+ this.reset();
+ }
+
+ setPageNumber(pageNumber, pageLabel) {
+ this.pageNumber = pageNumber;
+ this.pageLabel = pageLabel;
+ this.#updateUIState(false);
+ }
+
+ setPagesCount(pagesCount, hasPageLabels) {
+ this.pagesCount = pagesCount;
+ this.hasPageLabels = hasPageLabels;
+ this.#updateUIState(true);
+ }
+
+ setPageScale(pageScaleValue, pageScale) {
+ this.pageScaleValue = (pageScaleValue || pageScale).toString();
+ this.pageScale = pageScale;
+ this.#updateUIState(false);
+ }
+
+ reset() {
+ this.pageNumber = 0;
+ this.pageLabel = null;
+ this.hasPageLabels = false;
+ this.pagesCount = 0;
+ this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
+ this.pageScale = _ui_utils.DEFAULT_SCALE;
+ this.#updateUIState(true);
+ this.updateLoadingIndicatorState();
+ this.eventBus.dispatch("toolbarreset", {
+ source: this
+ });
+ }
+
+ #bindListeners(options) {
+ const {
+ pageNumber,
+ scaleSelect
+ } = this.items;
+ const self = this;
+ for (const {
+ element,
+ eventName,
+ eventDetails
+ } of this.buttons) {
+ element.addEventListener("click", evt => {
+ if (eventName !== null) {
+ this.eventBus.dispatch(eventName, {
+ source: this,
+ ...eventDetails
+ });
+ }
+ });
+ }
+ pageNumber.addEventListener("click", function () {
+ this.select();
+ });
+ pageNumber.addEventListener("change", function () {
+ self.eventBus.dispatch("pagenumberchanged", {
+ source: self,
+ value: this.value
+ });
+ });
+ scaleSelect.addEventListener("change", function () {
+ if (this.value === "custom") {
+ return;
+ }
+ self.eventBus.dispatch("scalechanged", {
+ source: self,
+ value: this.value
+ });
+ });
+ scaleSelect.addEventListener("click", function (evt) {
+ const target = evt.target;
+ if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") {
+ this.blur();
+ }
+ });
+ scaleSelect.oncontextmenu = _pdfjsLib.noContextMenu;
+ this.eventBus._on("localized", () => {
+ this.#wasLocalized = true;
+ this.#adjustScaleWidth();
+ this.#updateUIState(true);
+ });
+ this.#bindEditorToolsListener(options);
+ }
+
+ #bindEditorToolsListener({
+ editorFreeTextButton,
+ editorFreeTextParamsToolbar,
+ editorInkButton,
+ editorInkParamsToolbar,
+ editorStampButton,
+ editorStampParamsToolbar
+ }) {
+ const editorModeChanged = ({
+ mode
+ }) => {
+ (0, _ui_utils.toggleCheckedBtn)(editorFreeTextButton, mode === _pdfjsLib.AnnotationEditorType.FREETEXT, editorFreeTextParamsToolbar);
+ (0, _ui_utils.toggleCheckedBtn)(editorInkButton, mode === _pdfjsLib.AnnotationEditorType.INK, editorInkParamsToolbar);
+ (0, _ui_utils.toggleCheckedBtn)(editorStampButton, mode === _pdfjsLib.AnnotationEditorType.STAMP, editorStampParamsToolbar);
+ const isDisable = mode === _pdfjsLib.AnnotationEditorType.DISABLE;
+ editorFreeTextButton.disabled = isDisable;
+ editorInkButton.disabled = isDisable;
+ editorStampButton.disabled = isDisable;
+ };
+ this.eventBus._on("annotationeditormodechanged", editorModeChanged);
+ this.eventBus._on("toolbarreset", evt => {
+ if (evt.source === this) {
+ editorModeChanged({
+ mode: _pdfjsLib.AnnotationEditorType.DISABLE
+ });
+ }
+ });
+ }
+
+ #updateUIState(resetNumPages = false) {
+ if (!this.#wasLocalized) {
+ return;
+ }
+ const {
+ pageNumber,
+ pagesCount,
+ pageScaleValue,
+ pageScale,
+ items
+ } = this;
+ if (resetNumPages) {
+ if (this.hasPageLabels) {
+ items.pageNumber.type = "text";
+ } else {
+ items.pageNumber.type = "number";
+ this.l10n.get("of_pages", {
+ pagesCount
+ }).then(msg => {
+ items.numPages.textContent = msg;
+ });
+ }
+ items.pageNumber.max = pagesCount;
+ }
+ if (this.hasPageLabels) {
+ items.pageNumber.value = this.pageLabel;
+ this.l10n.get("page_of_pages", {
+ pageNumber,
+ pagesCount
+ }).then(msg => {
+ items.numPages.textContent = msg;
+ });
+ } else {
+ items.pageNumber.value = pageNumber;
+ }
+ items.previous.disabled = pageNumber <= 1;
+ items.next.disabled = pageNumber >= pagesCount;
+ items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;
+ items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;
+ this.l10n.get("page_scale_percent", {
+ scale: Math.round(pageScale * 10000) / 100
+ }).then(msg => {
+ let predefinedValueFound = false;
+ for (const option of items.scaleSelect.options) {
+ if (option.value !== pageScaleValue) {
+ option.selected = false;
+ continue;
+ }
+ option.selected = true;
+ predefinedValueFound = true;
+ }
+ if (!predefinedValueFound) {
+ items.customScaleOption.textContent = msg;
+ items.customScaleOption.selected = true;
+ }
+ });
+ }
+
+ updateLoadingIndicatorState(loading = false) {
+ const {
+ pageNumber
+ } = this.items;
+ pageNumber.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);
+ }
+
+ async #adjustScaleWidth() {
+ const {
+ items,
+ l10n
+ } = this;
+ const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]);
+ await _ui_utils.animationStarted;
+ const style = getComputedStyle(items.scaleSelect);
+ const scaleSelectWidth = parseFloat(style.getPropertyValue("--scale-select-width"));
+ const canvas = document.createElement("canvas");
+ const ctx = canvas.getContext("2d", {
+ alpha: false
+ });
+ ctx.font = `${style.fontSize} ${style.fontFamily}`;
+ let maxWidth = 0;
+ for (const predefinedValue of await predefinedValuesPromise) {
+ const {
+ width
+ } = ctx.measureText(predefinedValue);
+ if (width > maxWidth) {
+ maxWidth = width;
+ }
+ }
+ maxWidth += 0.3 * scaleSelectWidth;
+ if (maxWidth > scaleSelectWidth) {
+ const container = items.scaleSelect.parentNode;
+ container.style.setProperty("--scale-select-width", `${maxWidth}px`);
+ }
+ canvas.width = 0;
+ canvas.height = 0;
+ }
+ }
+
+ exports.Toolbar = Toolbar;
+
+ /***/
+ }),
+ /* 41 */
+ /***/ ((__unused_webpack_module, exports) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.ViewHistory = void 0;
+ const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;
+
+ class ViewHistory {
+ constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {
+ this.fingerprint = fingerprint;
+ this.cacheSize = cacheSize;
+ this._initializedPromise = this._readFromStorage().then(databaseStr => {
+ const database = JSON.parse(databaseStr || "{}");
+ let index = -1;
+ if (!Array.isArray(database.files)) {
+ database.files = [];
+ } else {
+ while (database.files.length >= this.cacheSize) {
+ database.files.shift();
+ }
+ for (let i = 0, ii = database.files.length; i < ii; i++) {
+ const branch = database.files[i];
+ if (branch.fingerprint === this.fingerprint) {
+ index = i;
+ break;
+ }
+ }
+ }
+ if (index === -1) {
+ index = database.files.push({
+ fingerprint: this.fingerprint
+ }) - 1;
+ }
+ this.file = database.files[index];
+ this.database = database;
+ });
+ }
+
+ async _writeToStorage() {
+ const databaseStr = JSON.stringify(this.database);
+ localStorage.setItem("pdfjs.history", databaseStr);
+ }
+
+ async _readFromStorage() {
+ return localStorage.getItem("pdfjs.history");
+ }
+
+ async set(name, val) {
+ await this._initializedPromise;
+ this.file[name] = val;
+ return this._writeToStorage();
+ }
+
+ async setMultiple(properties) {
+ await this._initializedPromise;
+ for (const name in properties) {
+ this.file[name] = properties[name];
+ }
+ return this._writeToStorage();
+ }
+
+ async get(name, defaultValue) {
+ await this._initializedPromise;
+ const val = this.file[name];
+ return val !== undefined ? val : defaultValue;
+ }
+
+ async getMultiple(properties) {
+ await this._initializedPromise;
+ const values = Object.create(null);
+ for (const name in properties) {
+ const val = this.file[name];
+ values[name] = val !== undefined ? val : properties[name];
+ }
+ return values;
+ }
+ }
+
+ exports.ViewHistory = ViewHistory;
+
+ /***/
+ }),
+ /* 42 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.BasePreferences = void 0;
+ var _app_options = __webpack_require__(5);
+
+ class BasePreferences {
+ #defaults = Object.freeze({
+ "annotationEditorMode": 0,
+ "annotationMode": 2,
+ "cursorToolOnLoad": 0,
+ "defaultZoomDelay": 400,
+ "defaultZoomValue": "",
+ "disablePageLabels": false,
+ "enablePermissions": false,
+ "enablePrintAutoRotate": true,
+ "enableScripting": true,
+ "enableStampEditor": true,
+ "externalLinkTarget": 0,
+ "historyUpdateUrl": false,
+ "ignoreDestinationZoom": false,
+ "forcePageColors": false,
+ "pageColorsBackground": "Canvas",
+ "pageColorsForeground": "CanvasText",
+ "pdfBugEnabled": false,
+ "sidebarViewOnLoad": -1,
+ "scrollModeOnLoad": -1,
+ "spreadModeOnLoad": -1,
+ "textLayerMode": 1,
+ "viewerCssTheme": 0,
+ "viewOnLoad": 0,
+ "disableAutoFetch": false,
+ "disableFontFace": false,
+ "disableRange": false,
+ "disableStream": false,
+ "enableXfa": true
+ });
+ #prefs = Object.create(null);
+ #initializedPromise = null;
+
+ constructor() {
+ if (this.constructor === BasePreferences) {
+ throw new Error("Cannot initialize BasePreferences.");
+ }
+ this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => {
+ for (const name in this.#defaults) {
+ const prefValue = prefs?.[name];
+ if (typeof prefValue === typeof this.#defaults[name]) {
+ this.#prefs[name] = prefValue;
+ }
+ }
+ });
+ }
+
+ async _writeToStorage(prefObj) {
+ throw new Error("Not implemented: _writeToStorage");
+ }
+
+ async _readFromStorage(prefObj) {
+ throw new Error("Not implemented: _readFromStorage");
+ }
+
+ async reset() {
+ await this.#initializedPromise;
+ const prefs = this.#prefs;
+ this.#prefs = Object.create(null);
+ return this._writeToStorage(this.#defaults).catch(reason => {
+ this.#prefs = prefs;
+ throw reason;
+ });
+ }
+
+ async set(name, value) {
+ await this.#initializedPromise;
+ const defaultValue = this.#defaults[name],
+ prefs = this.#prefs;
+ if (defaultValue === undefined) {
+ throw new Error(`Set preference: "${name}" is undefined.`);
+ } else if (value === undefined) {
+ throw new Error("Set preference: no value is specified.");
+ }
+ const valueType = typeof value,
+ defaultType = typeof defaultValue;
+ if (valueType !== defaultType) {
+ if (valueType === "number" && defaultType === "string") {
+ value = value.toString();
+ } else {
+ throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`);
+ }
+ } else if (valueType === "number" && !Number.isInteger(value)) {
+ throw new Error(`Set preference: "${value}" must be an integer.`);
+ }
+ this.#prefs[name] = value;
+ return this._writeToStorage(this.#prefs).catch(reason => {
+ this.#prefs = prefs;
+ throw reason;
+ });
+ }
+
+ async get(name) {
+ await this.#initializedPromise;
+ const defaultValue = this.#defaults[name];
+ if (defaultValue === undefined) {
+ throw new Error(`Get preference: "${name}" is undefined.`);
+ }
+ return this.#prefs[name] ?? defaultValue;
+ }
+
+ async getAll() {
+ await this.#initializedPromise;
+ const obj = Object.create(null);
+ for (const name in this.#defaults) {
+ obj[name] = this.#prefs[name] ?? this.#defaults[name];
+ }
+ return obj;
+ }
+ }
+
+ exports.BasePreferences = BasePreferences;
+
+ /***/
+ }),
+ /* 43 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.DownloadManager = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ ;
+
+ function download(blobUrl, filename) {
+ const a = document.createElement("a");
+ if (!a.click) {
+ throw new Error('DownloadManager: "a.click()" is not supported.');
+ }
+ a.href = blobUrl;
+ a.target = "_parent";
+ if ("download" in a) {
+ a.download = filename;
+ }
+ (document.body || document.documentElement).append(a);
+ a.click();
+ a.remove();
+ }
+
+ class DownloadManager {
+ #openBlobUrls = new WeakMap();
+
+ downloadUrl(url, filename, _options) {
+ if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) {
+ console.error(`downloadUrl - not a valid URL: ${url}`);
+ return;
+ }
+ download(url + "#pdfjs.action=download", filename);
+ }
+
+ downloadData(data, filename, contentType) {
+ const blobUrl = URL.createObjectURL(new Blob([data], {
+ type: contentType
+ }));
+ download(blobUrl, filename);
+ }
+
+ openOrDownloadData(element, data, filename) {
+ const isPdfData = (0, _pdfjsLib.isPdfFile)(filename);
+ const contentType = isPdfData ? "application/pdf" : "";
+ if (isPdfData) {
+ let blobUrl = this.#openBlobUrls.get(element);
+ if (!blobUrl) {
+ blobUrl = URL.createObjectURL(new Blob([data], {
+ type: contentType
+ }));
+ this.#openBlobUrls.set(element, blobUrl);
+ }
+ let viewerUrl;
+ viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
+ try {
+ window.open(viewerUrl);
+ return true;
+ } catch (ex) {
+ console.error(`openOrDownloadData: ${ex}`);
+ URL.revokeObjectURL(blobUrl);
+ this.#openBlobUrls.delete(element);
+ }
+ }
+ this.downloadData(data, filename, contentType);
+ return false;
+ }
+
+ download(blob, url, filename, _options) {
+ const blobUrl = URL.createObjectURL(blob);
+ download(blobUrl, filename);
+ }
+ }
+
+ exports.DownloadManager = DownloadManager;
+
+ /***/
+ }),
+ /* 44 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.GenericL10n = void 0;
+ __webpack_require__(45);
+ var _l10n_utils = __webpack_require__(30);
+ const PARTIAL_LANG_CODES = {
+ en: "en-US",
+ es: "es-ES",
+ fy: "fy-NL",
+ ga: "ga-IE",
+ gu: "gu-IN",
+ hi: "hi-IN",
+ hy: "hy-AM",
+ nb: "nb-NO",
+ ne: "ne-NP",
+ nn: "nn-NO",
+ pa: "pa-IN",
+ pt: "pt-PT",
+ sv: "sv-SE",
+ zh: "zh-CN"
+ };
+
+ function fixupLangCode(langCode) {
+ return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;
+ }
+
+ class GenericL10n {
+ constructor(lang) {
+ const {
+ webL10n
+ } = document;
+ this._lang = lang;
+ this._ready = new Promise((resolve, reject) => {
+ webL10n.setLanguage(fixupLangCode(lang), () => {
+ resolve(webL10n);
+ });
+ });
+ }
+
+ async getLanguage() {
+ const l10n = await this._ready;
+ return l10n.getLanguage();
+ }
+
+ async getDirection() {
+ const l10n = await this._ready;
+ return l10n.getDirection();
+ }
+
+ async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) {
+ const l10n = await this._ready;
+ return l10n.get(key, args, fallback);
+ }
+
+ async translate(element) {
+ const l10n = await this._ready;
+ return l10n.translate(element);
+ }
+ }
+
+ exports.GenericL10n = GenericL10n;
+
+ /***/
+ }),
+ /* 45 */
+ /***/ (() => {
+
+
+ document.webL10n = function (window, document) {
+ var gL10nData = {};
+ var gTextData = '';
+ var gTextProp = 'textContent';
+ var gLanguage = '';
+ var gMacros = {};
+ var gReadyState = 'loading';
+ var gAsyncResourceLoading = true;
+
+ function getL10nResourceLinks() {
+ return document.querySelectorAll('link[type="application/l10n"]');
+ }
+
+ function getL10nDictionary() {
+ var script = document.querySelector('script[type="application/l10n"]');
+ return script ? JSON.parse(script.innerHTML) : null;
+ }
+
+ function getTranslatableChildren(element) {
+ return element ? element.querySelectorAll('*[data-l10n-id]') : [];
+ }
+
+ function getL10nAttributes(element) {
+ if (!element) return {};
+ var l10nId = element.getAttribute('data-l10n-id');
+ var l10nArgs = element.getAttribute('data-l10n-args');
+ var args = {};
+ if (l10nArgs) {
+ try {
+ args = JSON.parse(l10nArgs);
+ } catch (e) {
+ console.warn('could not parse arguments for #' + l10nId);
+ }
+ }
+ return {
+ id: l10nId,
+ args: args
+ };
+ }
+
+ function xhrLoadText(url, onSuccess, onFailure) {
+ onSuccess = onSuccess || function _onSuccess(data) {
+ };
+ onFailure = onFailure || function _onFailure() {
+ };
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, gAsyncResourceLoading);
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=utf-8');
+ }
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == 4) {
+ if (xhr.status == 200 || xhr.status === 0) {
+ onSuccess(xhr.responseText);
+ } else {
+ onFailure();
+ }
+ }
+ };
+ xhr.onerror = onFailure;
+ xhr.ontimeout = onFailure;
+ try {
+ xhr.send(null);
+ } catch (e) {
+ onFailure();
+ }
+ }
+
+ function parseResource(href, lang, successCallback, failureCallback) {
+ var baseURL = href.replace(/[^\/]*$/, '') || './';
+
+ function evalString(text) {
+ if (text.lastIndexOf('\\') < 0) return text;
+ return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'");
+ }
+
+ function parseProperties(text, parsedPropertiesCallback) {
+ var dictionary = {};
+ var reBlank = /^\s*|\s*$/;
+ var reComment = /^\s*#|^\s*$/;
+ var reSection = /^\s*\[(.*)\]\s*$/;
+ var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
+ var reSplit = /^([^=\s]*)\s*=\s*(.+)$/;
+
+ function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {
+ var entries = rawText.replace(reBlank, '').split(/[\r\n]+/);
+ var currentLang = '*';
+ var genericLang = lang.split('-', 1)[0];
+ var skipLang = false;
+ var match = '';
+
+ function nextEntry() {
+ while (true) {
+ if (!entries.length) {
+ parsedRawLinesCallback();
+ return;
+ }
+ var line = entries.shift();
+ if (reComment.test(line)) continue;
+ if (extendedSyntax) {
+ match = reSection.exec(line);
+ if (match) {
+ currentLang = match[1].toLowerCase();
+ skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;
+ continue;
+ } else if (skipLang) {
+ continue;
+ }
+ match = reImport.exec(line);
+ if (match) {
+ loadImport(baseURL + match[1], nextEntry);
+ return;
+ }
+ }
+ var tmp = line.match(reSplit);
+ if (tmp && tmp.length == 3) {
+ dictionary[tmp[1]] = evalString(tmp[2]);
+ }
+ }
+ }
+
+ nextEntry();
+ }
+
+ function loadImport(url, callback) {
+ xhrLoadText(url, function (content) {
+ parseRawLines(content, false, callback);
+ }, function () {
+ console.warn(url + ' not found.');
+ callback();
+ });
+ }
+
+ parseRawLines(text, true, function () {
+ parsedPropertiesCallback(dictionary);
+ });
+ }
+
+ xhrLoadText(href, function (response) {
+ gTextData += response;
+ parseProperties(response, function (data) {
+ for (var key in data) {
+ var id,
+ prop,
+ index = key.lastIndexOf('.');
+ if (index > 0) {
+ id = key.substring(0, index);
+ prop = key.substring(index + 1);
+ } else {
+ id = key;
+ prop = gTextProp;
+ }
+ if (!gL10nData[id]) {
+ gL10nData[id] = {};
+ }
+ gL10nData[id][prop] = data[key];
+ }
+ if (successCallback) {
+ successCallback();
+ }
+ });
+ }, failureCallback);
+ }
+
+ function loadLocale(lang, callback) {
+ if (lang) {
+ lang = lang.toLowerCase();
+ }
+ callback = callback || function _callback() {
+ };
+ clear();
+ gLanguage = lang;
+ var langLinks = getL10nResourceLinks();
+ var langCount = langLinks.length;
+ if (langCount === 0) {
+ var dict = getL10nDictionary();
+ if (dict && dict.locales && dict.default_locale) {
+ console.log('using the embedded JSON directory, early way out');
+ gL10nData = dict.locales[lang];
+ if (!gL10nData) {
+ var defaultLocale = dict.default_locale.toLowerCase();
+ for (var anyCaseLang in dict.locales) {
+ anyCaseLang = anyCaseLang.toLowerCase();
+ if (anyCaseLang === lang) {
+ gL10nData = dict.locales[lang];
+ break;
+ } else if (anyCaseLang === defaultLocale) {
+ gL10nData = dict.locales[defaultLocale];
+ }
+ }
+ }
+ callback();
+ } else {
+ console.log('no resource to load, early way out');
+ }
+ gReadyState = 'complete';
+ return;
+ }
+ var onResourceLoaded = null;
+ var gResourceCount = 0;
+ onResourceLoaded = function () {
+ gResourceCount++;
+ if (gResourceCount >= langCount) {
+ callback();
+ gReadyState = 'complete';
+ }
+ };
+
+ function L10nResourceLink(link) {
+ var href = link.href;
+ this.load = function (lang, callback) {
+ parseResource(href, lang, callback, function () {
+ console.warn(href + ' not found.');
+ console.warn('"' + lang + '" resource not found');
+ gLanguage = '';
+ callback();
+ });
+ };
+ }
+
+ for (var i = 0; i < langCount; i++) {
+ var resource = new L10nResourceLink(langLinks[i]);
+ resource.load(lang, onResourceLoaded);
+ }
+ }
+
+ function clear() {
+ gL10nData = {};
+ gTextData = '';
+ gLanguage = '';
+ }
+
+ function getPluralRules(lang) {
+ var locales2rules = {
+ 'af': 3,
+ 'ak': 4,
+ 'am': 4,
+ 'ar': 1,
+ 'asa': 3,
+ 'az': 0,
+ 'be': 11,
+ 'bem': 3,
+ 'bez': 3,
+ 'bg': 3,
+ 'bh': 4,
+ 'bm': 0,
+ 'bn': 3,
+ 'bo': 0,
+ 'br': 20,
+ 'brx': 3,
+ 'bs': 11,
+ 'ca': 3,
+ 'cgg': 3,
+ 'chr': 3,
+ 'cs': 12,
+ 'cy': 17,
+ 'da': 3,
+ 'de': 3,
+ 'dv': 3,
+ 'dz': 0,
+ 'ee': 3,
+ 'el': 3,
+ 'en': 3,
+ 'eo': 3,
+ 'es': 3,
+ 'et': 3,
+ 'eu': 3,
+ 'fa': 0,
+ 'ff': 5,
+ 'fi': 3,
+ 'fil': 4,
+ 'fo': 3,
+ 'fr': 5,
+ 'fur': 3,
+ 'fy': 3,
+ 'ga': 8,
+ 'gd': 24,
+ 'gl': 3,
+ 'gsw': 3,
+ 'gu': 3,
+ 'guw': 4,
+ 'gv': 23,
+ 'ha': 3,
+ 'haw': 3,
+ 'he': 2,
+ 'hi': 4,
+ 'hr': 11,
+ 'hu': 0,
+ 'id': 0,
+ 'ig': 0,
+ 'ii': 0,
+ 'is': 3,
+ 'it': 3,
+ 'iu': 7,
+ 'ja': 0,
+ 'jmc': 3,
+ 'jv': 0,
+ 'ka': 0,
+ 'kab': 5,
+ 'kaj': 3,
+ 'kcg': 3,
+ 'kde': 0,
+ 'kea': 0,
+ 'kk': 3,
+ 'kl': 3,
+ 'km': 0,
+ 'kn': 0,
+ 'ko': 0,
+ 'ksb': 3,
+ 'ksh': 21,
+ 'ku': 3,
+ 'kw': 7,
+ 'lag': 18,
+ 'lb': 3,
+ 'lg': 3,
+ 'ln': 4,
+ 'lo': 0,
+ 'lt': 10,
+ 'lv': 6,
+ 'mas': 3,
+ 'mg': 4,
+ 'mk': 16,
+ 'ml': 3,
+ 'mn': 3,
+ 'mo': 9,
+ 'mr': 3,
+ 'ms': 0,
+ 'mt': 15,
+ 'my': 0,
+ 'nah': 3,
+ 'naq': 7,
+ 'nb': 3,
+ 'nd': 3,
+ 'ne': 3,
+ 'nl': 3,
+ 'nn': 3,
+ 'no': 3,
+ 'nr': 3,
+ 'nso': 4,
+ 'ny': 3,
+ 'nyn': 3,
+ 'om': 3,
+ 'or': 3,
+ 'pa': 3,
+ 'pap': 3,
+ 'pl': 13,
+ 'ps': 3,
+ 'pt': 3,
+ 'rm': 3,
+ 'ro': 9,
+ 'rof': 3,
+ 'ru': 11,
+ 'rwk': 3,
+ 'sah': 0,
+ 'saq': 3,
+ 'se': 7,
+ 'seh': 3,
+ 'ses': 0,
+ 'sg': 0,
+ 'sh': 11,
+ 'shi': 19,
+ 'sk': 12,
+ 'sl': 14,
+ 'sma': 7,
+ 'smi': 7,
+ 'smj': 7,
+ 'smn': 7,
+ 'sms': 7,
+ 'sn': 3,
+ 'so': 3,
+ 'sq': 3,
+ 'sr': 11,
+ 'ss': 3,
+ 'ssy': 3,
+ 'st': 3,
+ 'sv': 3,
+ 'sw': 3,
+ 'syr': 3,
+ 'ta': 3,
+ 'te': 3,
+ 'teo': 3,
+ 'th': 0,
+ 'ti': 4,
+ 'tig': 3,
+ 'tk': 3,
+ 'tl': 4,
+ 'tn': 3,
+ 'to': 0,
+ 'tr': 0,
+ 'ts': 3,
+ 'tzm': 22,
+ 'uk': 11,
+ 'ur': 3,
+ 've': 3,
+ 'vi': 0,
+ 'vun': 3,
+ 'wa': 4,
+ 'wae': 3,
+ 'wo': 0,
+ 'xh': 3,
+ 'xog': 3,
+ 'yo': 0,
+ 'zh': 0,
+ 'zu': 3
+ };
+
+ function isIn(n, list) {
+ return list.indexOf(n) !== -1;
+ }
+
+ function isBetween(n, start, end) {
+ return start <= n && n <= end;
+ }
+
+ var pluralRules = {
+ '0': function (n) {
+ return 'other';
+ },
+ '1': function (n) {
+ if (isBetween(n % 100, 3, 10)) return 'few';
+ if (n === 0) return 'zero';
+ if (isBetween(n % 100, 11, 99)) return 'many';
+ if (n == 2) return 'two';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '2': function (n) {
+ if (n !== 0 && n % 10 === 0) return 'many';
+ if (n == 2) return 'two';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '3': function (n) {
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '4': function (n) {
+ if (isBetween(n, 0, 1)) return 'one';
+ return 'other';
+ },
+ '5': function (n) {
+ if (isBetween(n, 0, 2) && n != 2) return 'one';
+ return 'other';
+ },
+ '6': function (n) {
+ if (n === 0) return 'zero';
+ if (n % 10 == 1 && n % 100 != 11) return 'one';
+ return 'other';
+ },
+ '7': function (n) {
+ if (n == 2) return 'two';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '8': function (n) {
+ if (isBetween(n, 3, 6)) return 'few';
+ if (isBetween(n, 7, 10)) return 'many';
+ if (n == 2) return 'two';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '9': function (n) {
+ if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '10': function (n) {
+ if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';
+ if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';
+ return 'other';
+ },
+ '11': function (n) {
+ if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
+ if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';
+ if (n % 10 == 1 && n % 100 != 11) return 'one';
+ return 'other';
+ },
+ '12': function (n) {
+ if (isBetween(n, 2, 4)) return 'few';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '13': function (n) {
+ if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
+ if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '14': function (n) {
+ if (isBetween(n % 100, 3, 4)) return 'few';
+ if (n % 100 == 2) return 'two';
+ if (n % 100 == 1) return 'one';
+ return 'other';
+ },
+ '15': function (n) {
+ if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';
+ if (isBetween(n % 100, 11, 19)) return 'many';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '16': function (n) {
+ if (n % 10 == 1 && n != 11) return 'one';
+ return 'other';
+ },
+ '17': function (n) {
+ if (n == 3) return 'few';
+ if (n === 0) return 'zero';
+ if (n == 6) return 'many';
+ if (n == 2) return 'two';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '18': function (n) {
+ if (n === 0) return 'zero';
+ if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';
+ return 'other';
+ },
+ '19': function (n) {
+ if (isBetween(n, 2, 10)) return 'few';
+ if (isBetween(n, 0, 1)) return 'one';
+ return 'other';
+ },
+ '20': function (n) {
+ if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';
+ if (n % 1000000 === 0 && n !== 0) return 'many';
+ if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';
+ if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';
+ return 'other';
+ },
+ '21': function (n) {
+ if (n === 0) return 'zero';
+ if (n == 1) return 'one';
+ return 'other';
+ },
+ '22': function (n) {
+ if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';
+ return 'other';
+ },
+ '23': function (n) {
+ if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';
+ return 'other';
+ },
+ '24': function (n) {
+ if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';
+ if (isIn(n, [2, 12])) return 'two';
+ if (isIn(n, [1, 11])) return 'one';
+ return 'other';
+ }
+ };
+ var index = locales2rules[lang.replace(/-.*$/, '')];
+ if (!(index in pluralRules)) {
+ console.warn('plural form unknown for [' + lang + ']');
+ return function () {
+ return 'other';
+ };
+ }
+ return pluralRules[index];
+ }
+
+ gMacros.plural = function (str, param, key, prop) {
+ var n = parseFloat(param);
+ if (isNaN(n)) return str;
+ if (prop != gTextProp) return str;
+ if (!gMacros._pluralRules) {
+ gMacros._pluralRules = getPluralRules(gLanguage);
+ }
+ var index = '[' + gMacros._pluralRules(n) + ']';
+ if (n === 0 && key + '[zero]' in gL10nData) {
+ str = gL10nData[key + '[zero]'][prop];
+ } else if (n == 1 && key + '[one]' in gL10nData) {
+ str = gL10nData[key + '[one]'][prop];
+ } else if (n == 2 && key + '[two]' in gL10nData) {
+ str = gL10nData[key + '[two]'][prop];
+ } else if (key + index in gL10nData) {
+ str = gL10nData[key + index][prop];
+ } else if (key + '[other]' in gL10nData) {
+ str = gL10nData[key + '[other]'][prop];
+ }
+ return str;
+ };
+
+ function getL10nData(key, args, fallback) {
+ var data = gL10nData[key];
+ if (!data) {
+ console.warn('#' + key + ' is undefined.');
+ if (!fallback) {
+ return null;
+ }
+ data = fallback;
+ }
+ var rv = {};
+ for (var prop in data) {
+ var str = data[prop];
+ str = substIndexes(str, args, key, prop);
+ str = substArguments(str, args, key);
+ rv[prop] = str;
+ }
+ return rv;
+ }
+
+ function substIndexes(str, args, key, prop) {
+ var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/;
+ var reMatch = reIndex.exec(str);
+ if (!reMatch || !reMatch.length) return str;
+ var macroName = reMatch[1];
+ var paramName = reMatch[2];
+ var param;
+ if (args && paramName in args) {
+ param = args[paramName];
+ } else if (paramName in gL10nData) {
+ param = gL10nData[paramName];
+ }
+ if (macroName in gMacros) {
+ var macro = gMacros[macroName];
+ str = macro(str, param, key, prop);
+ }
+ return str;
+ }
+
+ function substArguments(str, args, key) {
+ var reArgs = /\{\{\s*(.+?)\s*\}\}/g;
+ return str.replace(reArgs, function (matched_text, arg) {
+ if (args && arg in args) {
+ return args[arg];
+ }
+ if (arg in gL10nData) {
+ return gL10nData[arg];
+ }
+ console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');
+ return matched_text;
+ });
+ }
+
+ function translateElement(element) {
+ var l10n = getL10nAttributes(element);
+ if (!l10n.id) return;
+ var data = getL10nData(l10n.id, l10n.args);
+ if (!data) {
+ console.warn('#' + l10n.id + ' is undefined.');
+ return;
+ }
+ if (data[gTextProp]) {
+ if (getChildElementCount(element) === 0) {
+ element[gTextProp] = data[gTextProp];
+ } else {
+ var children = element.childNodes;
+ var found = false;
+ for (var i = 0, l = children.length; i < l; i++) {
+ if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) {
+ if (found) {
+ children[i].nodeValue = '';
+ } else {
+ children[i].nodeValue = data[gTextProp];
+ found = true;
+ }
+ }
+ }
+ if (!found) {
+ var textNode = document.createTextNode(data[gTextProp]);
+ element.prepend(textNode);
+ }
+ }
+ delete data[gTextProp];
+ }
+ for (var k in data) {
+ element[k] = data[k];
+ }
+ }
+
+ function getChildElementCount(element) {
+ if (element.children) {
+ return element.children.length;
+ }
+ if (typeof element.childElementCount !== 'undefined') {
+ return element.childElementCount;
+ }
+ var count = 0;
+ for (var i = 0; i < element.childNodes.length; i++) {
+ count += element.nodeType === 1 ? 1 : 0;
+ }
+ return count;
+ }
+
+ function translateFragment(element) {
+ element = element || document.documentElement;
+ var children = getTranslatableChildren(element);
+ var elementCount = children.length;
+ for (var i = 0; i < elementCount; i++) {
+ translateElement(children[i]);
+ }
+ translateElement(element);
+ }
+
+ return {
+ get: function (key, args, fallbackString) {
+ var index = key.lastIndexOf('.');
+ var prop = gTextProp;
+ if (index > 0) {
+ prop = key.substring(index + 1);
+ key = key.substring(0, index);
+ }
+ var fallback;
+ if (fallbackString) {
+ fallback = {};
+ fallback[prop] = fallbackString;
+ }
+ var data = getL10nData(key, args, fallback);
+ if (data && prop in data) {
+ return data[prop];
+ }
+ return '{{' + key + '}}';
+ },
+ getData: function () {
+ return gL10nData;
+ },
+ getText: function () {
+ return gTextData;
+ },
+ getLanguage: function () {
+ return gLanguage;
+ },
+ setLanguage: function (lang, callback) {
+ loadLocale(lang, function () {
+ if (callback) callback();
+ });
+ },
+ getDirection: function () {
+ var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
+ var shortCode = gLanguage.split('-', 1)[0];
+ return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';
+ },
+ translate: translateFragment,
+ getReadyState: function () {
+ return gReadyState;
+ },
+ ready: function (callback) {
+ if (!callback) {
+ return;
+ } else if (gReadyState == 'complete' || gReadyState == 'interactive') {
+ window.setTimeout(function () {
+ callback();
+ });
+ } else if (document.addEventListener) {
+ document.addEventListener('localized', function once() {
+ document.removeEventListener('localized', once);
+ callback();
+ });
+ }
+ }
+ };
+ }(window, document);
+
+ /***/
+ }),
+ /* 46 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.GenericScripting = void 0;
+ exports.docProperties = docProperties;
+ var _pdfjsLib = __webpack_require__(4);
+
+ async function docProperties(pdfDocument) {
+ const url = "",
+ baseUrl = url.split("#")[0];
+ let {
+ info,
+ metadata,
+ contentDispositionFilename,
+ contentLength
+ } = await pdfDocument.getMetadata();
+ if (!contentLength) {
+ const {
+ length
+ } = await pdfDocument.getDownloadInfo();
+ contentLength = length;
+ }
+ return {
+ ...info,
+ baseURL: baseUrl,
+ filesize: contentLength,
+ filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url),
+ metadata: metadata?.getRaw(),
+ authors: metadata?.get("dc:creator"),
+ numPages: pdfDocument.numPages,
+ URL: url
+ };
+ }
+
+ class GenericScripting {
+ constructor(sandboxBundleSrc) {
+ this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => {
+ return window.pdfjsSandbox.QuickJSSandbox();
+ });
+ }
+
+ async createSandbox(data) {
+ const sandbox = await this._ready;
+ sandbox.create(data);
+ }
+
+ async dispatchEventInSandbox(event) {
+ const sandbox = await this._ready;
+ setTimeout(() => sandbox.dispatchEvent(event), 0);
+ }
+
+ async destroySandbox() {
+ const sandbox = await this._ready;
+ sandbox.nukeSandbox();
+ }
+ }
+
+ exports.GenericScripting = GenericScripting;
+
+ /***/
+ }),
+ /* 47 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.PDFPrintService = void 0;
+ var _pdfjsLib = __webpack_require__(4);
+ var _app = __webpack_require__(2);
+ var _print_utils = __webpack_require__(48);
+ let activeService = null;
+ let dialog = null;
+ let overlayManager = null;
+
+ function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise) {
+ const scratchCanvas = activeService.scratchCanvas;
+ const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF;
+ scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
+ scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
+ const ctx = scratchCanvas.getContext("2d");
+ ctx.save();
+ ctx.fillStyle = "rgb(255, 255, 255)";
+ ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);
+ ctx.restore();
+ return Promise.all([pdfDocument.getPage(pageNumber), printAnnotationStoragePromise]).then(function ([pdfPage, printAnnotationStorage]) {
+ const renderContext = {
+ canvasContext: ctx,
+ transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
+ viewport: pdfPage.getViewport({
+ scale: 1,
+ rotation: size.rotation
+ }),
+ intent: "print",
+ annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE,
+ optionalContentConfigPromise,
+ printAnnotationStorage
+ };
+ return pdfPage.render(renderContext).promise;
+ });
+ }
+
+ class PDFPrintService {
+ constructor(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, printAnnotationStoragePromise = null, l10n) {
+ this.pdfDocument = pdfDocument;
+ this.pagesOverview = pagesOverview;
+ this.printContainer = printContainer;
+ this._printResolution = printResolution || 150;
+ this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig();
+ this._printAnnotationStoragePromise = printAnnotationStoragePromise || Promise.resolve();
+ this.l10n = l10n;
+ this.currentPage = -1;
+ this.scratchCanvas = document.createElement("canvas");
+ }
+
+ layout() {
+ this.throwIfInactive();
+ const body = document.querySelector("body");
+ body.setAttribute("data-pdfjsprinting", true);
+ const {
+ width,
+ height
+ } = this.pagesOverview[0];
+ const hasEqualPageSizes = this.pagesOverview.every(size => size.width === width && size.height === height);
+ if (!hasEqualPageSizes) {
+ console.warn("Not all pages have the same size. The printed result may be incorrect!");
+ }
+ this.pageStyleSheet = document.createElement("style");
+ this.pageStyleSheet.textContent = `@page { size: ${width}pt ${height}pt;}`;
+ body.append(this.pageStyleSheet);
+ }
+
+ destroy() {
+ if (activeService !== this) {
+ return;
+ }
+ this.printContainer.textContent = "";
+ const body = document.querySelector("body");
+ body.removeAttribute("data-pdfjsprinting");
+ if (this.pageStyleSheet) {
+ this.pageStyleSheet.remove();
+ this.pageStyleSheet = null;
+ }
+ this.scratchCanvas.width = this.scratchCanvas.height = 0;
+ this.scratchCanvas = null;
+ activeService = null;
+ ensureOverlay().then(function () {
+ if (overlayManager.active === dialog) {
+ overlayManager.close(dialog);
+ }
+ });
+ }
+
+ renderPages() {
+ if (this.pdfDocument.isPureXfa) {
+ (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument);
+ return Promise.resolve();
+ }
+ const pageCount = this.pagesOverview.length;
+ const renderNextPage = (resolve, reject) => {
+ this.throwIfInactive();
+ if (++this.currentPage >= pageCount) {
+ renderProgress(pageCount, pageCount, this.l10n);
+ resolve();
+ return;
+ }
+ const index = this.currentPage;
+ renderProgress(index, pageCount, this.l10n);
+ renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise, this._printAnnotationStoragePromise).then(this.useRenderedPage.bind(this)).then(function () {
+ renderNextPage(resolve, reject);
+ }, reject);
+ };
+ return new Promise(renderNextPage);
+ }
+
+ useRenderedPage() {
+ this.throwIfInactive();
+ const img = document.createElement("img");
+ const scratchCanvas = this.scratchCanvas;
+ if ("toBlob" in scratchCanvas) {
+ scratchCanvas.toBlob(function (blob) {
+ img.src = URL.createObjectURL(blob);
+ });
+ } else {
+ img.src = scratchCanvas.toDataURL();
+ }
+ const wrapper = document.createElement("div");
+ wrapper.className = "printedPage";
+ wrapper.append(img);
+ this.printContainer.append(wrapper);
+ return new Promise(function (resolve, reject) {
+ img.onload = resolve;
+ img.onerror = reject;
+ });
+ }
+
+ performPrint() {
+ this.throwIfInactive();
+ return new Promise(resolve => {
+ setTimeout(() => {
+ if (!this.active) {
+ resolve();
+ return;
+ }
+ print.call(window);
+ setTimeout(resolve, 20);
+ }, 0);
+ });
+ }
+
+ get active() {
+ return this === activeService;
+ }
+
+ throwIfInactive() {
+ if (!this.active) {
+ throw new Error("This print request was cancelled or completed.");
+ }
+ }
+ }
+
+ exports.PDFPrintService = PDFPrintService;
+ const print = window.print;
+ window.print = function () {
+ if (activeService) {
+ console.warn("Ignored window.print() because of a pending print job.");
+ return;
+ }
+ ensureOverlay().then(function () {
+ if (activeService) {
+ overlayManager.open(dialog);
+ }
+ });
+ try {
+ dispatchEvent("beforeprint");
+ } finally {
+ if (!activeService) {
+ console.error("Expected print service to be initialized.");
+ ensureOverlay().then(function () {
+ if (overlayManager.active === dialog) {
+ overlayManager.close(dialog);
+ }
+ });
+ return;
+ }
+ const activeServiceOnEntry = activeService;
+ activeService.renderPages().then(function () {
+ return activeServiceOnEntry.performPrint();
+ }).catch(function () {
+ }).then(function () {
+ if (activeServiceOnEntry.active) {
+ abort();
+ }
+ });
+ }
+ };
+
+ function dispatchEvent(eventType) {
+ const event = new CustomEvent(eventType, {
+ bubbles: false,
+ cancelable: false,
+ detail: "custom"
+ });
+ window.dispatchEvent(event);
+ }
+
+ function abort() {
+ if (activeService) {
+ activeService.destroy();
+ dispatchEvent("afterprint");
+ }
+ }
+
+ function renderProgress(index, total, l10n) {
+ dialog ||= document.getElementById("printServiceDialog");
+ const progress = Math.round(100 * index / total);
+ const progressBar = dialog.querySelector("progress");
+ const progressPerc = dialog.querySelector(".relative-progress");
+ progressBar.value = progress;
+ l10n.get("print_progress_percent", {
+ progress
+ }).then(msg => {
+ progressPerc.textContent = msg;
+ });
+ }
+
+ window.addEventListener("keydown", function (event) {
+ if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
+ window.print();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+ }, true);
+ if ("onbeforeprint" in window) {
+ const stopPropagationIfNeeded = function (event) {
+ if (event.detail !== "custom") {
+ event.stopImmediatePropagation();
+ }
+ };
+ window.addEventListener("beforeprint", stopPropagationIfNeeded);
+ window.addEventListener("afterprint", stopPropagationIfNeeded);
+ }
+ let overlayPromise;
+
+ function ensureOverlay() {
+ if (!overlayPromise) {
+ overlayManager = _app.PDFViewerApplication.overlayManager;
+ if (!overlayManager) {
+ throw new Error("The overlay manager has not yet been initialized.");
+ }
+ dialog ||= document.getElementById("printServiceDialog");
+ overlayPromise = overlayManager.register(dialog, true);
+ document.getElementById("printCancel").onclick = abort;
+ dialog.addEventListener("close", abort);
+ }
+ return overlayPromise;
+ }
+
+ _app.PDFPrintServiceFactory.instance = {
+ supportsPrinting: true,
+ createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n) {
+ if (activeService) {
+ throw new Error("The print service is created and active.");
+ }
+ activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n);
+ return activeService;
+ }
+ };
+
+ /***/
+ }),
+ /* 48 */
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting;
+ var _pdfjsLib = __webpack_require__(4);
+ var _pdf_link_service = __webpack_require__(7);
+ var _xfa_layer_builder = __webpack_require__(38);
+
+ function getXfaHtmlForPrinting(printContainer, pdfDocument) {
+ const xfaHtml = pdfDocument.allXfaHtml;
+ const linkService = new _pdf_link_service.SimpleLinkService();
+ const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;
+ for (const xfaPage of xfaHtml.children) {
+ const page = document.createElement("div");
+ page.className = "xfaPrintedPage";
+ printContainer.append(page);
+ const builder = new _xfa_layer_builder.XfaLayerBuilder({
+ pageDiv: page,
+ pdfPage: null,
+ annotationStorage: pdfDocument.annotationStorage,
+ linkService,
+ xfaHtml: xfaPage
+ });
+ const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, {
+ scale
+ });
+ builder.render(viewport, "print");
+ }
+ }
+
+ /***/
+ })
+ /******/]);
+ /************************************************************************/
+ /******/ // The module cache
+ /******/
+ var __webpack_module_cache__ = {};
+ /******/
+ /******/ // The require function
+ /******/
+ function __webpack_require__(moduleId) {
+ /******/ // Check if module is in cache
+ /******/
+ var cachedModule = __webpack_module_cache__[moduleId];
+ /******/
+ if (cachedModule !== undefined) {
+ /******/
+ return cachedModule.exports;
+ /******/
+ }
+ /******/ // Create a new module (and put it into the cache)
+ /******/
+ var module = __webpack_module_cache__[moduleId] = {
+ /******/ // no module.id needed
+ /******/ // no module.loaded needed
+ /******/ exports: {}
+ /******/
+ };
+ /******/
+ /******/ // Execute the module function
+ /******/
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+ /******/
+ /******/ // Return the exports of the module
+ /******/
+ return module.exports;
+ /******/
+ }
+
+ /******/
+ /************************************************************************/
+ var __webpack_exports__ = {};
+// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
+ (() => {
+ var exports = __webpack_exports__;
+
+
+ Object.defineProperty(exports, "__esModule", ({
+ value: true
+ }));
+ Object.defineProperty(exports, "PDFViewerApplication", ({
+ enumerable: true,
+ get: function () {
+ return _app.PDFViewerApplication;
+ }
+ }));
+ exports.PDFViewerApplicationConstants = void 0;
+ Object.defineProperty(exports, "PDFViewerApplicationOptions", ({
+ enumerable: true,
+ get: function () {
+ return _app_options.AppOptions;
+ }
+ }));
+ __webpack_require__(1);
+ __webpack_require__(47);
+ var _ui_utils = __webpack_require__(3);
+ var _app_options = __webpack_require__(5);
+ var _pdf_link_service = __webpack_require__(7);
+ var _app = __webpack_require__(2);
+ const pdfjsVersion = '3.11.174';
+ const pdfjsBuild = 'ce8716743';
+ const AppConstants = {
+ LinkTarget: _pdf_link_service.LinkTarget,
+ RenderingStates: _ui_utils.RenderingStates,
+ ScrollMode: _ui_utils.ScrollMode,
+ SpreadMode: _ui_utils.SpreadMode
+ };
+ exports.PDFViewerApplicationConstants = AppConstants;
+ window.PDFViewerApplication = _app.PDFViewerApplication;
+ window.PDFViewerApplicationConstants = AppConstants;
+ window.PDFViewerApplicationOptions = _app_options.AppOptions;
+
+ function getViewerConfiguration() {
+ return {
+ appContainer: document.body,
+ mainContainer: document.getElementById("viewerContainer"),
+ viewerContainer: document.getElementById("viewer"),
+ toolbar: {
+ container: document.getElementById("toolbarViewer"),
+ numPages: document.getElementById("numPages"),
+ pageNumber: document.getElementById("pageNumber"),
+ scaleSelect: document.getElementById("scaleSelect"),
+ customScaleOption: document.getElementById("customScaleOption"),
+ previous: document.getElementById("previous"),
+ next: document.getElementById("next"),
+ zoomIn: document.getElementById("zoomIn"),
+ zoomOut: document.getElementById("zoomOut"),
+ viewFind: document.getElementById("viewFind"),
+ openFile: document.getElementById("openFile"),
+ print: document.getElementById("print"),
+ editorFreeTextButton: document.getElementById("editorFreeText"),
+ editorFreeTextParamsToolbar: document.getElementById("editorFreeTextParamsToolbar"),
+ editorInkButton: document.getElementById("editorInk"),
+ editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"),
+ editorStampButton: document.getElementById("editorStamp"),
+ editorStampParamsToolbar: document.getElementById("editorStampParamsToolbar"),
+ download: document.getElementById("download")
+ },
+ secondaryToolbar: {
+ toolbar: document.getElementById("secondaryToolbar"),
+ toggleButton: document.getElementById("secondaryToolbarToggle"),
+ presentationModeButton: document.getElementById("presentationMode"),
+ openFileButton: document.getElementById("secondaryOpenFile"),
+ printButton: document.getElementById("secondaryPrint"),
+ downloadButton: document.getElementById("secondaryDownload"),
+ viewBookmarkButton: document.getElementById("viewBookmark"),
+ firstPageButton: document.getElementById("firstPage"),
+ lastPageButton: document.getElementById("lastPage"),
+ pageRotateCwButton: document.getElementById("pageRotateCw"),
+ pageRotateCcwButton: document.getElementById("pageRotateCcw"),
+ cursorSelectToolButton: document.getElementById("cursorSelectTool"),
+ cursorHandToolButton: document.getElementById("cursorHandTool"),
+ scrollPageButton: document.getElementById("scrollPage"),
+ scrollVerticalButton: document.getElementById("scrollVertical"),
+ scrollHorizontalButton: document.getElementById("scrollHorizontal"),
+ scrollWrappedButton: document.getElementById("scrollWrapped"),
+ spreadNoneButton: document.getElementById("spreadNone"),
+ spreadOddButton: document.getElementById("spreadOdd"),
+ spreadEvenButton: document.getElementById("spreadEven"),
+ documentPropertiesButton: document.getElementById("documentProperties")
+ },
+ sidebar: {
+ outerContainer: document.getElementById("outerContainer"),
+ sidebarContainer: document.getElementById("sidebarContainer"),
+ toggleButton: document.getElementById("sidebarToggle"),
+ resizer: document.getElementById("sidebarResizer"),
+ thumbnailButton: document.getElementById("viewThumbnail"),
+ outlineButton: document.getElementById("viewOutline"),
+ attachmentsButton: document.getElementById("viewAttachments"),
+ layersButton: document.getElementById("viewLayers"),
+ thumbnailView: document.getElementById("thumbnailView"),
+ outlineView: document.getElementById("outlineView"),
+ attachmentsView: document.getElementById("attachmentsView"),
+ layersView: document.getElementById("layersView"),
+ outlineOptionsContainer: document.getElementById("outlineOptionsContainer"),
+ currentOutlineItemButton: document.getElementById("currentOutlineItem")
+ },
+ findBar: {
+ bar: document.getElementById("findbar"),
+ toggleButton: document.getElementById("viewFind"),
+ findField: document.getElementById("findInput"),
+ highlightAllCheckbox: document.getElementById("findHighlightAll"),
+ caseSensitiveCheckbox: document.getElementById("findMatchCase"),
+ matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"),
+ entireWordCheckbox: document.getElementById("findEntireWord"),
+ findMsg: document.getElementById("findMsg"),
+ findResultsCount: document.getElementById("findResultsCount"),
+ findPreviousButton: document.getElementById("findPrevious"),
+ findNextButton: document.getElementById("findNext")
+ },
+ passwordOverlay: {
+ dialog: document.getElementById("passwordDialog"),
+ label: document.getElementById("passwordText"),
+ input: document.getElementById("password"),
+ submitButton: document.getElementById("passwordSubmit"),
+ cancelButton: document.getElementById("passwordCancel")
+ },
+ documentProperties: {
+ dialog: document.getElementById("documentPropertiesDialog"),
+ closeButton: document.getElementById("documentPropertiesClose"),
+ fields: {
+ fileName: document.getElementById("fileNameField"),
+ fileSize: document.getElementById("fileSizeField"),
+ title: document.getElementById("titleField"),
+ author: document.getElementById("authorField"),
+ subject: document.getElementById("subjectField"),
+ keywords: document.getElementById("keywordsField"),
+ creationDate: document.getElementById("creationDateField"),
+ modificationDate: document.getElementById("modificationDateField"),
+ creator: document.getElementById("creatorField"),
+ producer: document.getElementById("producerField"),
+ version: document.getElementById("versionField"),
+ pageCount: document.getElementById("pageCountField"),
+ pageSize: document.getElementById("pageSizeField"),
+ linearized: document.getElementById("linearizedField")
+ }
+ },
+ altTextDialog: {
+ dialog: document.getElementById("altTextDialog"),
+ optionDescription: document.getElementById("descriptionButton"),
+ optionDecorative: document.getElementById("decorativeButton"),
+ textarea: document.getElementById("descriptionTextarea"),
+ cancelButton: document.getElementById("altTextCancel"),
+ saveButton: document.getElementById("altTextSave")
+ },
+ annotationEditorParams: {
+ editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"),
+ editorFreeTextColor: document.getElementById("editorFreeTextColor"),
+ editorInkColor: document.getElementById("editorInkColor"),
+ editorInkThickness: document.getElementById("editorInkThickness"),
+ editorInkOpacity: document.getElementById("editorInkOpacity"),
+ editorStampAddImage: document.getElementById("editorStampAddImage")
+ },
+ printContainer: document.getElementById("printContainer"),
+ openFileInput: document.getElementById("fileInput"),
+ debuggerScriptPath: "./debugger.js"
+ };
+ }
+
+ function webViewerLoad() {
+ const config = getViewerConfiguration();
+ const event = new CustomEvent("webviewerloaded", {
+ bubbles: true,
+ cancelable: true,
+ detail: {
+ source: window
+ }
+ });
+ try {
+ parent.document.dispatchEvent(event);
+ } catch (ex) {
+ console.error(`webviewerloaded: ${ex}`);
+ document.dispatchEvent(event);
+ }
+ _app.PDFViewerApplication.run(config);
+ }
+
+ document.blockUnblockOnload?.(true);
+ if (document.readyState === "interactive" || document.readyState === "complete") {
+ webViewerLoad();
+ } else {
+ document.addEventListener("DOMContentLoaded", webViewerLoad, true);
+ }
+ })();
+
+ /******/
+})()
+;
+//# sourceMappingURL=viewer.js.map
\ No newline at end of file
diff --git a/src/main/resources/static/pdfjs/js/viewer.js.map b/src/main/resources/static/pdfjs/js/viewer.js.map
new file mode 100644
index 000000000..faf37bc98
--- /dev/null
+++ b/src/main/resources/static/pdfjs/js/viewer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/alt_text_manager.js","webpack://pdf.js/web/annotation_editor_params.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/annotation_editor_layer_builder.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_accessibility.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside GENERIC build.'\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager() {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n CursorTool,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport {\n AnnotationEditorType,\n build,\n FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n PDFWorker,\n PromiseCapability,\n shadow,\n UnexpectedResponseException,\n version,\n} from \"pdfjs-lib\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { AltTextManager } from \"web-alt_text_manager\";\nimport { AnnotationEditorParams } from \"web-annotation_editor_params\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"web-pdf_attachment_viewer\";\nimport { PDFCursorTools } from \"web-pdf_cursor_tools\";\nimport { PDFDocumentProperties } from \"web-pdf_document_properties\";\nimport { PDFFindBar } from \"web-pdf_find_bar\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"web-pdf_layer_viewer\";\nimport { PDFOutlineViewer } from \"web-pdf_outline_viewer\";\nimport { PDFPresentationMode } from \"web-pdf_presentation_mode\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"web-pdf_sidebar\";\nimport { PDFThumbnailViewer } from \"web-pdf_thumbnail_viewer\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"web-secondary_toolbar\";\nimport { Toolbar } from \"web-toolbar\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager() {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsPinchToZoom() {\n return shadow(this, \"supportsPinchToZoom\", true);\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n\n static updateEditorStates(data) {\n throw new Error(\"Not implemented: updateEditorStates\");\n }\n\n static get canvasMaxAreaInBytes() {\n return shadow(this, \"canvasMaxAreaInBytes\", -1);\n }\n\n static getNimbusExperimentData() {\n return shadow(this, \"getNimbusExperimentData\", Promise.resolve(null));\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: new PromiseCapability(),\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n /** @type {AnnotationEditorParams} */\n annotationEditorParams: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _wheelUnusedFactor: 1,\n _touchUnusedTicks: 0,\n _touchUnusedFactor: 1,\n _PDFBug: null,\n _hasAnnotationEditors: false,\n _title: document.title,\n _printAnnotationStoragePromise: null,\n _touchInfo: null,\n _isCtrlKeyDown: false,\n _nimbusDataPromise: null,\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n if (\n typeof PDFJSDev === \"undefined\"\n ? window.isGECKOVIEW\n : PDFJSDev.test(\"GECKOVIEW\")\n ) {\n this._nimbusDataPromise = this.externalServices.getNimbusExperimentData();\n }\n\n await this._initializeOptions();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an