diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f4d37599..de3b3569 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,14 +3,8 @@ name: "Build repo" on: push: branches: ["main"] - paths-ignore: - - ".github/**" - - "**/*.md" pull_request: branches: ["main"] - paths-ignore: - - ".github/**" - - "**/*.md" jobs: build: @@ -36,7 +30,7 @@ jobs: - uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 7.6 + gradle-version: 8.7 - name: Build with Gradle run: ./gradlew build --no-build-cache diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index f8fc4200..8bcf7803 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -24,7 +24,7 @@ jobs: - uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 7.6 + gradle-version: 8.7 - name: Run Gradle Command run: ./gradlew clean build diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index f9b5f2b0..151e126e 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -29,7 +29,7 @@ jobs: - uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 7.6 + gradle-version: 8.7 - name: Generate jar (With Security=${{ matrix.enable_security }}) run: ./gradlew clean createExe diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eef33335..0852bcf9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,6 +32,15 @@ jobs: sudo curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # sudo chmod +x /usr/local/bin/docker-compose + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.7" + + - name: Pip requirements + run: | + pip install -r ./cucumber/requirements.txt + - name: Run Docker Compose Tests run: | chmod +x ./test.sh diff --git a/Endpoint-groups.md b/Endpoint-groups.md index d88ce058..9f906586 100644 --- a/Endpoint-groups.md +++ b/Endpoint-groups.md @@ -1,46 +1,47 @@ -| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript | -|---------------------|---------|---------|----------|-------|------|--------|--------|-------------|----------|----------|------------| -| adjust-contrast | ✔️ | | | | | | | | | | ✔️ | -| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | | -| crop | ✔️ | | | | | | | | | ✔️ | | -| extract-page | ✔️ | | | | | | | | | ✔️ | | -| merge-pdfs | ✔️ | | | | | | | | | ✔️ | | -| multi-page-layout | ✔️ | | | | | | | | | ✔️ | | -| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ | -| pdf-to-single-page | ✔️ | | | | | | | | | ✔️ | | -| remove-pages | ✔️ | | | | | | | | | ✔️ | | -| rotate-pdf | ✔️ | | | | | | | | | ✔️ | | -| scale-pages | ✔️ | | | | | | | | | ✔️ | | -| split-pdfs | ✔️ | | | | | | | | | ✔️ | | -| file-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | -| img-to-pdf | | ✔️ | | | | | | | | ✔️ | | -| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-img | | ✔️ | | | | | | | | ✔️ | | -| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | | -| pdf-to-markdown | | ✔️ | | | | | | | | ✔️ | | -| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-xml | | ✔️ | | | ✔️ | | | ✔️ | | | | -| xlsx-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | -| add-password | | | ✔️ | | | | | | | ✔️ | | -| add-watermark | | | ✔️ | | | | | | | ✔️ | | -| cert-sign | | | ✔️ | | | | | | | ✔️ | | -| change-permissions | | | ✔️ | | | | | | | ✔️ | | -| remove-password | | | ✔️ | | | | | | | ✔️ | | -| sanitize-pdf | | | ✔️ | | | | | | | ✔️ | | -| add-image | | | | ✔️ | | | | | | ✔️ | | -| add-page-numbers | | | | ✔️ | | | | | | ✔️ | | -| auto-rename | | | | ✔️ | | | | | | ✔️ | | -| change-metadata | | | | ✔️ | | | | | | ✔️ | | -| compare | | | | ✔️ | | | | | | | ✔️ | -| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | -| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | -| extract-images | | | | ✔️ | | | | | | ✔️ | | -| flatten | | | | ✔️ | | | | | | | ✔️ | -| get-info-on-pdf | | | | ✔️ | | | | | | ✔️ | | -| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | -| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | -| repair | | | | ✔️ | ✔️ | | | ✔️ | | | | -| show-javascript | | | | ✔️ | | | | | | | ✔️ | -| sign | | | | ✔️ | | | | | | | ✔️ | \ No newline at end of file +| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript | +| ------------------- | ------- | ------- | -------- | ----- | --- | ------ | ------ | ----------- | -------- | ---- | ---------- | +| adjust-contrast | ✔️ | | | | | | | | | | ✔️ | +| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | | +| crop | ✔️ | | | | | | | | | ✔️ | | +| extract-page | ✔️ | | | | | | | | | ✔️ | | +| merge-pdfs | ✔️ | | | | | | | | | ✔️ | | +| multi-page-layout | ✔️ | | | | | | | | | ✔️ | | +| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ | +| pdf-to-single-page | ✔️ | | | | | | | | | ✔️ | | +| remove-pages | ✔️ | | | | | | | | | ✔️ | | +| rotate-pdf | ✔️ | | | | | | | | | ✔️ | | +| scale-pages | ✔️ | | | | | | | | | ✔️ | | +| split-pdfs | ✔️ | | | | | | | | | ✔️ | | +| file-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | +| img-to-pdf | | ✔️ | | | | | | | | ✔️ | | +| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-img | | ✔️ | | | | | | | | ✔️ | | +| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | | +| pdf-to-markdown | | ✔️ | | | | | | | | ✔️ | | +| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-xml | | ✔️ | | | ✔️ | | | ✔️ | | | | +| xlsx-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | +| add-password | | | ✔️ | | | | | | | ✔️ | | +| add-watermark | | | ✔️ | | | | | | | ✔️ | | +| cert-sign | | | ✔️ | | | | | | | ✔️ | | +| remove-cert-sign | | | ✔️ | | | | | | | ✔️ | | +| change-permissions | | | ✔️ | | | | | | | ✔️ | | +| remove-password | | | ✔️ | | | | | | | ✔️ | | +| sanitize-pdf | | | ✔️ | | | | | | | ✔️ | | +| add-image | | | | ✔️ | | | | | | ✔️ | | +| add-page-numbers | | | | ✔️ | | | | | | ✔️ | | +| auto-rename | | | | ✔️ | | | | | | ✔️ | | +| change-metadata | | | | ✔️ | | | | | | ✔️ | | +| compare | | | | ✔️ | | | | | | | ✔️ | +| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | +| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | +| extract-images | | | | ✔️ | | | | | | ✔️ | | +| flatten | | | | ✔️ | | | | | | | ✔️ | +| get-info-on-pdf | | | | ✔️ | | | | | | ✔️ | | +| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | +| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | +| repair | | | | ✔️ | ✔️ | | | ✔️ | | | | +| show-javascript | | | | ✔️ | | | | | | | ✔️ | +| sign | | | | ✔️ | | | | | | | ✔️ | \ No newline at end of file diff --git a/README.md b/README.md index 4f5dbb8d..8d6f7fcf 100644 --- a/README.md +++ b/README.md @@ -165,33 +165,34 @@ Stirling PDF currently supports 28! | ------------------------------------------- | -------------------------------------- | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| Arabic (العربية) (ar_AR) | ![41%](https://geps.dev/progress/41) | -| German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | +| Arabic (العربية) (ar_AR) | ![40%](https://geps.dev/progress/40) | +| German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) | | French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | -| Spanish (Español) (es_ES) | ![96%](https://geps.dev/progress/96) | -| Simplified Chinese (简体中文) (zh_CN) | ![96%](https://geps.dev/progress/96) | -| Traditional Chinese (繁體中文) (zh_TW) | ![95%](https://geps.dev/progress/95) | +| Spanish (Español) (es_ES) | ![95%](https://geps.dev/progress/95) | +| Simplified Chinese (简体中文) (zh_CN) | ![95%](https://geps.dev/progress/95) | +| Traditional Chinese (繁體中文) (zh_TW) | ![94%](https://geps.dev/progress/94) | | Catalan (Català) (ca_CA) | ![49%](https://geps.dev/progress/49) | -| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Swedish (Svenska) (sv_SE) | ![41%](https://geps.dev/progress/41) | +| Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) | +| Swedish (Svenska) (sv_SE) | ![40%](https://geps.dev/progress/40) | | Polish (Polski) (pl_PL) | ![43%](https://geps.dev/progress/43) | | Romanian (Română) (ro_RO) | ![40%](https://geps.dev/progress/40) | -| Korean (한국어) (ko_KR) | ![88%](https://geps.dev/progress/88) | -| Portuguese Brazilian (Português) (pt_BR) | ![62%](https://geps.dev/progress/62) | -| Russian (Русский) (ru_RU) | ![88%](https://geps.dev/progress/88) | -| Basque (Euskara) (eu_ES) | ![64%](https://geps.dev/progress/64) | -| Japanese (日本語) (ja_JP) | ![88%](https://geps.dev/progress/88) | -| Dutch (Nederlands) (nl_NL) | ![86%](https://geps.dev/progress/86) | -| Greek (Ελληνικά) (el_GR) | ![86%](https://geps.dev/progress/86) | -| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | +| Korean (한국어) (ko_KR) | ![87%](https://geps.dev/progress/87) | +| Portuguese Brazilian (Português) (pt_BR) | ![61%](https://geps.dev/progress/61) | +| Russian (Русский) (ru_RU) | ![87%](https://geps.dev/progress/87) | +| Basque (Euskara) (eu_ES) | ![63%](https://geps.dev/progress/63) | +| Japanese (日本語) (ja_JP) | ![87%](https://geps.dev/progress/87) | +| Dutch (Nederlands) (nl_NL) | ![85%](https://geps.dev/progress/85) | +| Greek (Ελληνικά) (el_GR) | ![85%](https://geps.dev/progress/85) | +| Turkish (Türkçe) (tr_TR) | ![98%](https://geps.dev/progress/98) | | Indonesia (Bahasa Indonesia) (id_ID) | ![79%](https://geps.dev/progress/79) | -| Hindi (हिंदी) (hi_IN) | ![80%](https://geps.dev/progress/80) | -| Hungarian (Magyar) (hu_HU) | ![79%](https://geps.dev/progress/79) | -| Bulgarian (Български) (bg_BG) | ![96%](https://geps.dev/progress/96) | +| Hindi (हिंदी) (hi_IN) | ![79%](https://geps.dev/progress/79) | +| Hungarian (Magyar) (hu_HU) | ![78%](https://geps.dev/progress/78) | +| Bulgarian (Български) (bg_BG) | ![98%](https://geps.dev/progress/98) | | Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![81%](https://geps.dev/progress/81) | | Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) | | Slovakian (Slovensky) (sk_SK) | ![96%](https://geps.dev/progress/96) | | Czech (Česky) (cs_CZ) | ![94%](https://geps.dev/progress/94) | +| Croatian (Hrvatski) (hr_HR) | ![94%](https://geps.dev/progress/94) | ## Contributing (creating issues, translations, fixing bugs, etc.) @@ -213,10 +214,10 @@ For example in the settings.yml you have ```yaml system: - defaultLocale: 'en-US' + enableLogin: 'true' ``` -To have this via an environment variable you would have ``SYSTEM_DEFAULTLOCALE`` +To have this via an environment variable you would have ``SYSTEM_ENABLELOGIN`` The Current list of settings is diff --git a/Version-groups.md b/Version-groups.md index 8c37e22d..2495ae4d 100644 --- a/Version-groups.md +++ b/Version-groups.md @@ -1,52 +1,53 @@ -| Technology | Ultra-Lite | Full | -|----------------|:----------:|:----:| -| Java | ✔️ | ✔️ | -| JavaScript | ✔️ | ✔️ | -| Libre | | ✔️ | -| Python | | ✔️ | -| OpenCV | | ✔️ | -| OCRmyPDF | | ✔️ | +| Technology | Ultra-Lite | Full | +| ---------- | :--------: | :---: | +| Java | ✔️ | ✔️ | +| JavaScript | ✔️ | ✔️ | +| Libre | | ✔️ | +| Python | | ✔️ | +| OpenCV | | ✔️ | +| OCRmyPDF | | ✔️ | -Operation | Ultra-Lite | Full --------------------------|------------|----- -add-page-numbers | ✔️ | ✔️ -add-password | ✔️ | ✔️ -add-image | ✔️ | ✔️ -add-watermark | ✔️ | ✔️ -adjust-contrast | ✔️ | ✔️ -auto-split-pdf | ✔️ | ✔️ -auto-redact | ✔️ | ✔️ -auto-rename | ✔️ | ✔️ -cert-sign | ✔️ | ✔️ -crop | ✔️ | ✔️ -change-metadata | ✔️ | ✔️ -change-permissions | ✔️ | ✔️ -compare | ✔️ | ✔️ -extract-page | ✔️ | ✔️ -extract-images | ✔️ | ✔️ -flatten | ✔️ | ✔️ -get-info-on-pdf | ✔️ | ✔️ -img-to-pdf | ✔️ | ✔️ -markdown-to-pdf | ✔️ | ✔️ -merge-pdfs | ✔️ | ✔️ -multi-page-layout | ✔️ | ✔️ -overlay-pdf | ✔️ | ✔️ -pdf-organizer | ✔️ | ✔️ -pdf-to-csv | ✔️ | ✔️ -pdf-to-img | ✔️ | ✔️ -pdf-to-single-page | ✔️ | ✔️ -remove-pages | ✔️ | ✔️ -remove-password | ✔️ | ✔️ -rotate-pdf | ✔️ | ✔️ -sanitize-pdf | ✔️ | ✔️ -scale-pages | ✔️ | ✔️ -sign | ✔️ | ✔️ -show-javascript | ✔️ | ✔️ -split-by-size-or-count | ✔️ | ✔️ -split-pdf-by-sections | ✔️ | ✔️ -split-pdfs | ✔️ | ✔️ -compress-pdf | | ✔️ -extract-image-scans | | ✔️ -ocr-pdf | | ✔️ -pdf-to-pdfa | | ✔️ -remove-blanks | | ✔️ +| Operation | Ultra-Lite | Full | +| ---------------------- | ---------- | ---- | +| add-page-numbers | ✔️ | ✔️ | +| add-password | ✔️ | ✔️ | +| add-image | ✔️ | ✔️ | +| add-watermark | ✔️ | ✔️ | +| adjust-contrast | ✔️ | ✔️ | +| auto-split-pdf | ✔️ | ✔️ | +| auto-redact | ✔️ | ✔️ | +| auto-rename | ✔️ | ✔️ | +| cert-sign | ✔️ | ✔️ | +| remove-cert-sign | ✔️ | ✔️ | +| crop | ✔️ | ✔️ | +| change-metadata | ✔️ | ✔️ | +| change-permissions | ✔️ | ✔️ | +| compare | ✔️ | ✔️ | +| extract-page | ✔️ | ✔️ | +| extract-images | ✔️ | ✔️ | +| flatten | ✔️ | ✔️ | +| get-info-on-pdf | ✔️ | ✔️ | +| img-to-pdf | ✔️ | ✔️ | +| markdown-to-pdf | ✔️ | ✔️ | +| merge-pdfs | ✔️ | ✔️ | +| multi-page-layout | ✔️ | ✔️ | +| overlay-pdf | ✔️ | ✔️ | +| pdf-organizer | ✔️ | ✔️ | +| pdf-to-csv | ✔️ | ✔️ | +| pdf-to-img | ✔️ | ✔️ | +| pdf-to-single-page | ✔️ | ✔️ | +| remove-pages | ✔️ | ✔️ | +| remove-password | ✔️ | ✔️ | +| rotate-pdf | ✔️ | ✔️ | +| sanitize-pdf | ✔️ | ✔️ | +| scale-pages | ✔️ | ✔️ | +| sign | ✔️ | ✔️ | +| show-javascript | ✔️ | ✔️ | +| split-by-size-or-count | ✔️ | ✔️ | +| split-pdf-by-sections | ✔️ | ✔️ | +| split-pdfs | ✔️ | ✔️ | +| compress-pdf | | ✔️ | +| extract-image-scans | | ✔️ | +| ocr-pdf | | ✔️ | +| pdf-to-pdfa | | ✔️ | +| remove-blanks | | ✔️ | diff --git a/build.gradle b/build.gradle index 0b3c26da..b1380a6a 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ plugins { import com.github.jk1.license.render.* group = 'stirling.software' -version = '0.24.6' +version = '0.25.0' //17 is lowest but we support and recommend 21 sourceCompatibility = '17' @@ -21,7 +21,6 @@ repositories { mavenCentral() } - licenseReport { renderers = [new JsonReportRenderer()] } diff --git a/chart/stirling-pdf/Chart.yaml b/chart/stirling-pdf/Chart.yaml index aa960f02..68eaee65 100644 --- a/chart/stirling-pdf/Chart.yaml +++ b/chart/stirling-pdf/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 0.24.6 +appVersion: 0.25.0 description: locally hosted web application that allows you to perform various operations on PDF files home: https://github.com/Stirling-Tools/Stirling-PDF diff --git a/cucumber/features/external.feature b/cucumber/features/external.feature index bf6ca9dd..1d503135 100644 --- a/cucumber/features/external.feature +++ b/cucumber/features/external.feature @@ -28,7 +28,28 @@ Feature: API Validation And the response file should have size greater than 0 And the response status code should be 200 + @ocr @positive + Scenario: Extract Image Scans + Given I generate a PDF file as "fileInput" + And the pdf contains 3 images on 2 pages + And the request data includes + | parameter | value | + | angleThreshold | 5 | + | tolerance | 20 | + | minArea | 8000 | + | minContourArea | 500 | + | borderSize | 1 | + When I send the API request to the endpoint "/api/v1/misc/extract-image-scans" + Then the response content type should be "application/octet-stream" + And the response file should have extension ".zip" + And the response ZIP should contain 2 files + And the response file should have size greater than 0 + And the response status code should be 200 + + + + @ocr @negative Scenario: Process PDF with text and OCR with type normal Given I generate a PDF file as "fileInput" And the pdf contains 3 pages with random text @@ -79,6 +100,7 @@ Feature: API Validation When I send the API request to the endpoint "/api/v1/misc/ocr-pdf" Then the response content type should be "application/octet-stream" And the response file should have extension ".zip" + And the response ZIP should contain 2 files And the response file should have size greater than 0 And the response status code should be 200 @@ -101,8 +123,30 @@ Feature: API Validation | odt | .odt | | doc | .doc | - - + @ocr + Scenario: PDFA + Given I generate a PDF file as "fileInput" + And the pdf contains 3 pages with random text + And the request data includes + | parameter | value | + | outputFormat | pdfa | + When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa" + Then the response status code should be 200 + And the response file should have extension ".pdf" + And the response file should have size greater than 100 + + @ocr + Scenario: PDFA1 + Given I generate a PDF file as "fileInput" + And the pdf contains 3 pages with random text + And the request data includes + | parameter | value | + | outputFormat | pdfa-1 | + When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa" + Then the response status code should be 200 + And the response file should have extension ".pdf" + And the response file should have size greater than 100 + @compress @ghostscript @positive Scenario: Compress Given I generate a PDF file as "fileInput" diff --git a/cucumber/features/general.feature b/cucumber/features/general.feature index 81b801be..229d37b5 100644 --- a/cucumber/features/general.feature +++ b/cucumber/features/general.feature @@ -1,7 +1,8 @@ @general Feature: API Validation - @split-pdf-by-sections + + @split-pdf-by-sections @positive Scenario Outline: split-pdf-by-sections with different parameters Given I generate a PDF file as "fileInput" And the pdf contains 2 pages @@ -23,7 +24,7 @@ Feature: API Validation | 1 | 2 | 12 | | 2 | 2 | 18 | - @split-pdf-by-sections + @split-pdf-by-sections @positive Scenario Outline: split-pdf-by-sections with different parameters Given I generate a PDF file as "fileInput" And the pdf contains 2 pages @@ -47,7 +48,7 @@ Feature: API Validation - @split-pdf-by-pages + @split-pdf-by-pages @positive Scenario Outline: split-pdf-by-pages with different parameters Given I generate a PDF file as "fileInput" And the pdf contains 20 pages @@ -70,7 +71,7 @@ Feature: API Validation - @split-pdf-by-size-or-count + @split-pdf-by-size-or-count @positive Scenario Outline: split-pdf-by-size-or-count with different parameters Given I generate a PDF file as "fileInput" And the pdf contains 20 pages diff --git a/cucumber/features/steps/step_definitions.py b/cucumber/features/steps/step_definitions.py index 40ddd22b..60479b6e 100644 --- a/cucumber/features/steps/step_definitions.py +++ b/cucumber/features/steps/step_definitions.py @@ -66,6 +66,59 @@ def step_pdf_contains_blank_pages(context, page_count): context.files[context.param_name].close() context.files[context.param_name] = open(context.file_name, 'rb') + + +def create_black_box_image(file_name, size): + can = canvas.Canvas(file_name, pagesize=size) + width, height = size + can.setFillColorRGB(0, 0, 0) + can.rect(0, 0, width, height, fill=1) + can.showPage() + can.save() + +def create_pdf_with_black_boxes(file_name, image_count, page_count): + page_width, page_height = letter + box_size = 72 # 1 inch by 1 inch black box + boxes_per_page = image_count // page_count + (1 if image_count % page_count != 0 else 0) + + writer = PdfWriter() + box_counter = 0 + + for page in range(page_count): + packet = io.BytesIO() + can = canvas.Canvas(packet, pagesize=letter) + + for i in range(boxes_per_page): + if box_counter >= image_count: + break + x = (i % (page_width // box_size)) * box_size + y = page_height - ((i // (page_width // box_size) + 1) * box_size) + can.setFillColorRGB(0, 0, 0) + can.rect(x, y, box_size, box_size, fill=1) + box_counter += 1 + + can.showPage() + can.save() + packet.seek(0) + new_pdf = PdfReader(packet) + writer.add_page(new_pdf.pages[0]) + + with open(file_name, 'wb') as f: + writer.write(f) + +@given('the pdf contains {image_count:d} images on {page_count:d} pages') +def step_pdf_contains_images(context, image_count, page_count): + if not hasattr(context, 'param_name'): + context.param_name = "default" + context.file_name = "genericNonCustomisableName.pdf" + create_pdf_with_black_boxes(context.file_name, image_count, page_count) + if not hasattr(context, 'files'): + context.files = {} + if context.param_name in context.files: + context.files[context.param_name].close() + context.files[context.param_name] = open(context.file_name, 'rb') + + @given('the pdf contains {page_count:d} pages with random text') def step_pdf_contains_pages_with_random_text(context, page_count): buffer = io.BytesIO() diff --git a/cucumber/requirements.txt b/cucumber/requirements.txt index 52f20fd2..e5da3c1b 100644 --- a/cucumber/requirements.txt +++ b/cucumber/requirements.txt @@ -1,4 +1,5 @@ behave requests PyPDF2 -reportlab \ No newline at end of file +reportlab +PyCryptodome diff --git a/exampleYmlFiles/docker-compose-latest-security-with-sso.yml b/exampleYmlFiles/docker-compose-latest-security-with-sso.yml index 592daeff..a71d88da 100644 --- a/exampleYmlFiles/docker-compose-latest-security-with-sso.yml +++ b/exampleYmlFiles/docker-compose-latest-security-with-sso.yml @@ -27,6 +27,8 @@ services: SECURITY_OAUTH2_CLIENTID: ".apps.googleusercontent.com" # Client ID from your provider SECURITY_OAUTH2_CLIENTSECRET: "" # Client Secret from your provider SECURITY_OAUTH2_SCOPES: "openid,profile,email" # Expected OAuth2 Scope + SECURITY_OAUTH2_USEASUSERNAME: "email" # Default is 'email'; custom fields can be used as the username + SECURITY_OAUTH2_PROVIDER: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak' PUID: 1002 PGID: 1002 UMASK: "022" diff --git a/src/main/java/stirling/software/SPDF/config/AppConfig.java b/src/main/java/stirling/software/SPDF/config/AppConfig.java index 16618e1e..3723e4f8 100644 --- a/src/main/java/stirling/software/SPDF/config/AppConfig.java +++ b/src/main/java/stirling/software/SPDF/config/AppConfig.java @@ -2,8 +2,10 @@ package stirling.software.SPDF.config; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Properties; +import java.util.function.Predicate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; @@ -108,4 +110,28 @@ public class AppConfig { public boolean missingActivSecurity() { return false; } + + @Bean(name = "watchedFoldersDir") + public String watchedFoldersDir() { + return "./pipeline/watchedFolders/"; + } + + @Bean(name = "finishedFoldersDir") + public String finishedFoldersDir() { + return "./pipeline/finishedFolders/"; + } + + @Bean(name = "directoryFilter") + public Predicate processPDFOnlyFilter() { + return path -> { + if (Files.isDirectory(path)) { + return !path.toString() + .contains( + "processing"); + } else { + String fileName = path.getFileName().toString(); + return fileName.endsWith(".pdf"); + } + }; + } } diff --git a/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java b/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java index d258ea51..874d43c3 100644 --- a/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java +++ b/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java @@ -1,8 +1,10 @@ package stirling.software.SPDF.config; +import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; @@ -45,15 +47,27 @@ public class ConfigInitializer } } } else { - Path templatePath = - Paths.get( - getClass() - .getClassLoader() - .getResource("settings.yml.template") - .toURI()); - Path userPath = Paths.get("configs", "settings.yml"); + // Load the template content from classpath + List templateLines; + try (InputStream in = + getClass().getClassLoader().getResourceAsStream("settings.yml.template")) { + if (in == null) { + throw new FileNotFoundException( + "Resource file not found: settings.yml.template"); + } + templateLines = new ArrayList<>(); + try (var reader = new InputStreamReader(in)) { + try (var bufferedReader = new BufferedReader(reader)) { + String line; + while ((line = bufferedReader.readLine()) != null) { + templateLines.add(line); + } + } + } + } - List templateLines = Files.readAllLines(templatePath); + // Read the user settings file if it exists + Path userPath = Paths.get("configs", "settings.yml"); List userLines = Files.exists(userPath) ? Files.readAllLines(userPath) : new ArrayList<>(); @@ -87,6 +101,7 @@ public class ConfigInitializer Files.write(userPath, resultLines); } + // Ensure the custom settings file exists Path customSettingsPath = Paths.get("configs", "custom_settings.yml"); if (!Files.exists(customSettingsPath)) { Files.createFile(customSettingsPath); diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index b145b478..43180753 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -116,6 +116,7 @@ public class EndpointConfiguration { addEndpointToGroup("Security", "change-permissions"); addEndpointToGroup("Security", "add-watermark"); addEndpointToGroup("Security", "cert-sign"); + addEndpointToGroup("Security", "remove-cert-sign"); addEndpointToGroup("Security", "sanitize-pdf"); addEndpointToGroup("Security", "auto-redact"); @@ -200,6 +201,7 @@ public class EndpointConfiguration { addEndpointToGroup("Java", "extract-images"); addEndpointToGroup("Java", "change-metadata"); addEndpointToGroup("Java", "cert-sign"); + addEndpointToGroup("Java", "remove-cert-sign"); addEndpointToGroup("Java", "multi-page-layout"); addEndpointToGroup("Java", "scale-pages"); addEndpointToGroup("Java", "add-page-numbers"); diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java index c6740b5f..5e6b3dfd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java @@ -3,7 +3,6 @@ package stirling.software.SPDF.controller.api.converters; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,34 +40,35 @@ public class ConvertOfficeController { // Save the uploaded file to a temporary location Path tempInputFile = Files.createTempFile("input_", "." + FilenameUtils.getExtension(originalFilename)); - Files.copy(inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING); + inputFile.transferTo(tempInputFile); // Prepare the output file path Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - // Run the LibreOffice command - List command = - new ArrayList<>( - Arrays.asList( - "unoconv", - "-vvv", - "-f", - "pdf", - "-o", - tempOutputFile.toString(), - tempInputFile.toString())); - ProcessExecutorResult returnCode = - ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE) - .runCommandWithOutputHandling(command); + try { + // Run the LibreOffice command + List command = + new ArrayList<>( + Arrays.asList( + "unoconv", + "-vvv", + "-f", + "pdf", + "-o", + tempOutputFile.toString(), + tempInputFile.toString())); + ProcessExecutorResult returnCode = + ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE) + .runCommandWithOutputHandling(command); - // Read the converted PDF file - byte[] pdfBytes = Files.readAllBytes(tempOutputFile); - - // Clean up the temporary files - Files.delete(tempInputFile); - Files.delete(tempOutputFile); - - return pdfBytes; + // Read the converted PDF file + byte[] pdfBytes = Files.readAllBytes(tempOutputFile); + return pdfBytes; + } finally { + // Clean up the temporary files + if (tempInputFile != null) Files.deleteIfExists(tempInputFile); + Files.deleteIfExists(tempOutputFile); + } } private boolean isValidFileExtension(String fileExtension) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java index aec4e347..e3578826 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java @@ -61,8 +61,8 @@ public class ConvertPDFToPDFA { byte[] pdfBytes = Files.readAllBytes(tempOutputFile); // Clean up the temporary files - Files.delete(tempInputFile); - Files.delete(tempOutputFile); + Files.deleteIfExists(tempInputFile); + Files.deleteIfExists(tempOutputFile); // Return the optimized PDF as a response String outputFilename = diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java index 9e3d6a99..12dd625c 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java @@ -136,10 +136,10 @@ public class CompressController { // Increase optimization level for next iteration optimizeLevel++; if (autoMode && optimizeLevel > 4) { - System.out.println("Skipping level 5 due to bad results in auto mode"); + logger.info("Skipping level 5 due to bad results in auto mode"); sizeMet = true; } else { - System.out.println( + logger.info( "Increasing ghostscript optimisation level to " + optimizeLevel); } } @@ -230,10 +230,10 @@ public class CompressController { if (currentSize > expectedOutputSize) { // Log the current file size and scaleFactor - System.out.println( + logger.info( "Current file size: " + FileUtils.byteCountToDisplaySize(currentSize)); - System.out.println("Current scale factor: " + scaleFactor); + logger.info("Current scale factor: " + scaleFactor); // The file is still too large, reduce scaleFactor and try again scaleFactor *= 0.9f; // reduce scaleFactor by 10% @@ -256,7 +256,6 @@ public class CompressController { } } } - // Read the optimized PDF file pdfBytes = Files.readAllBytes(tempOutputFile); @@ -269,17 +268,18 @@ public class CompressController { // Read the original file again pdfBytes = Files.readAllBytes(tempInputFile); } + // Return the optimized PDF as a response + String outputFilename = + Filenames.toSimpleFileName(inputFile.getOriginalFilename()) + .replaceFirst("[.][^.]+$", "") + + "_Optimized.pdf"; + return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); + } finally { // Clean up the temporary files - Files.delete(tempInputFile); - Files.delete(tempOutputFile); + // deleted by multipart file handler deu to transferTo? + // Files.deleteIfExists(tempInputFile); + Files.deleteIfExists(tempOutputFile); } - - // Return the optimized PDF as a response - String outputFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_Optimized.pdf"; - return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java index 9ed00dd8..bda228d0 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java @@ -5,7 +5,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -103,10 +102,7 @@ public class ExtractImageScansController { } } else { tempInputFile = Files.createTempFile("input_", "." + extension); - Files.copy( - form.getFileInput().getInputStream(), - tempInputFile, - StandardCopyOption.REPLACE_EXISTING); + form.getFileInput().transferTo(tempInputFile); // Add input file path to images list images.add(tempInputFile.toString()); } @@ -176,11 +172,15 @@ public class ExtractImageScansController { byte[] zipBytes = Files.readAllBytes(tempZipFile); // Clean up the temporary zip file - Files.delete(tempZipFile); + Files.deleteIfExists(tempZipFile); return WebResponseUtils.bytesToWebResponse( zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); + } + if (processedImageBytes.size() == 0) { + throw new IllegalArgumentException("No images detected"); } else { + // Return the processed image as a response byte[] imageBytes = processedImageBytes.get(0); return WebResponseUtils.bytesToWebResponse( @@ -201,7 +201,7 @@ public class ExtractImageScansController { if (tempZipFile != null && Files.exists(tempZipFile)) { try { - Files.delete(tempZipFile); + Files.deleteIfExists(tempZipFile); } catch (IOException e) { logger.error("Failed to delete temporary zip file: " + tempZipFile, e); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java index 07947587..bb8a18cd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java @@ -5,7 +5,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -91,139 +90,145 @@ public class OCRController { } // Save the uploaded file to a temporary location Path tempInputFile = Files.createTempFile("input_", ".pdf"); - Files.copy(inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING); - - // Prepare the output file path Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - - // Prepare the output file path Path sidecarTextPath = null; - // Run OCR Command - String languageOption = String.join("+", selectedLanguages); + try { + inputFile.transferTo(tempInputFile.toFile()); - List command = - new ArrayList<>( - Arrays.asList( - "ocrmypdf", - "--verbose", - "2", - "--output-type", - "pdf", - "--pdf-renderer", - ocrRenderType)); + // Run OCR Command + String languageOption = String.join("+", selectedLanguages); - if (sidecar != null && sidecar) { - sidecarTextPath = Files.createTempFile("sidecar", ".txt"); - command.add("--sidecar"); - command.add(sidecarTextPath.toString()); - } - - if (deskew != null && deskew) { - command.add("--deskew"); - } - if (clean != null && clean) { - command.add("--clean"); - } - if (cleanFinal != null && cleanFinal) { - command.add("--clean-final"); - } - if (ocrType != null && !"".equals(ocrType)) { - if ("skip-text".equals(ocrType)) { - command.add("--skip-text"); - } else if ("force-ocr".equals(ocrType)) { - command.add("--force-ocr"); - } else if ("Normal".equals(ocrType)) { + List command = + new ArrayList<>( + Arrays.asList( + "ocrmypdf", + "--verbose", + "2", + "--output-type", + "pdf", + "--pdf-renderer", + ocrRenderType)); + if (sidecar != null && sidecar) { + sidecarTextPath = Files.createTempFile("sidecar", ".txt"); + command.add("--sidecar"); + command.add(sidecarTextPath.toString()); } - } - command.addAll( - Arrays.asList( - "--language", - languageOption, - tempInputFile.toString(), - tempOutputFile.toString())); + if (deskew != null && deskew) { + command.add("--deskew"); + } + if (clean != null && clean) { + command.add("--clean"); + } + if (cleanFinal != null && cleanFinal) { + command.add("--clean-final"); + } + if (ocrType != null && !"".equals(ocrType)) { + if ("skip-text".equals(ocrType)) { + command.add("--skip-text"); + } else if ("force-ocr".equals(ocrType)) { + command.add("--force-ocr"); + } else if ("Normal".equals(ocrType)) { - // Run CLI command - ProcessExecutorResult result = - ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF) - .runCommandWithOutputHandling(command); - if (result.getRc() != 0 - && result.getMessages().contains("multiprocessing/synchronize.py") - && result.getMessages().contains("OSError: [Errno 38] Function not implemented")) { - command.add("--jobs"); - command.add("1"); - result = + } + } + + command.addAll( + Arrays.asList( + "--language", + languageOption, + tempInputFile.toString(), + tempOutputFile.toString())); + + // Run CLI command + ProcessExecutorResult result = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF) .runCommandWithOutputHandling(command); - } - - // Remove images from the OCR processed PDF if the flag is set to true - if (removeImagesAfter != null && removeImagesAfter) { - Path tempPdfWithoutImages = Files.createTempFile("output_", "_no_images.pdf"); - - List gsCommand = - Arrays.asList( - "gs", - "-sDEVICE=pdfwrite", - "-dFILTERIMAGE", - "-o", - tempPdfWithoutImages.toString(), - tempOutputFile.toString()); - - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) - .runCommandWithOutputHandling(gsCommand); - tempOutputFile = tempPdfWithoutImages; - } - // Read the OCR processed PDF file - byte[] pdfBytes = Files.readAllBytes(tempOutputFile); - // Clean up the temporary files - Files.delete(tempInputFile); - - // Return the OCR processed PDF as a response - String outputFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_OCR.pdf"; - - if (sidecar != null && sidecar) { - // Create a zip file containing both the PDF and the text file - String outputZipFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_OCR.zip"; - Path tempZipFile = Files.createTempFile("output_", ".zip"); - - try (ZipOutputStream zipOut = - new ZipOutputStream(new FileOutputStream(tempZipFile.toFile()))) { - // Add PDF file to the zip - ZipEntry pdfEntry = new ZipEntry(outputFilename); - zipOut.putNextEntry(pdfEntry); - Files.copy(tempOutputFile, zipOut); - zipOut.closeEntry(); - - // Add text file to the zip - ZipEntry txtEntry = new ZipEntry(outputFilename.replace(".pdf", ".txt")); - zipOut.putNextEntry(txtEntry); - Files.copy(sidecarTextPath, zipOut); - zipOut.closeEntry(); + if (result.getRc() != 0 + && result.getMessages().contains("multiprocessing/synchronize.py") + && result.getMessages() + .contains("OSError: [Errno 38] Function not implemented")) { + command.add("--jobs"); + command.add("1"); + result = + ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF) + .runCommandWithOutputHandling(command); } - byte[] zipBytes = Files.readAllBytes(tempZipFile); + // Remove images from the OCR processed PDF if the flag is set to true + if (removeImagesAfter != null && removeImagesAfter) { + Path tempPdfWithoutImages = Files.createTempFile("output_", "_no_images.pdf"); - // Clean up the temporary zip file - Files.delete(tempZipFile); - Files.delete(tempOutputFile); - Files.delete(sidecarTextPath); + List gsCommand = + Arrays.asList( + "gs", + "-sDEVICE=pdfwrite", + "-dFILTERIMAGE", + "-o", + tempPdfWithoutImages.toString(), + tempOutputFile.toString()); + + ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) + .runCommandWithOutputHandling(gsCommand); + tempOutputFile = tempPdfWithoutImages; + } + // Read the OCR processed PDF file + byte[] pdfBytes = Files.readAllBytes(tempOutputFile); - // Return the zip file containing both the PDF and the text file - return WebResponseUtils.bytesToWebResponse( - zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); - } else { // Return the OCR processed PDF as a response - Files.delete(tempOutputFile); - return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); + String outputFilename = + Filenames.toSimpleFileName(inputFile.getOriginalFilename()) + .replaceFirst("[.][^.]+$", "") + + "_OCR.pdf"; + + if (sidecar != null && sidecar) { + // Create a zip file containing both the PDF and the text file + String outputZipFilename = + Filenames.toSimpleFileName(inputFile.getOriginalFilename()) + .replaceFirst("[.][^.]+$", "") + + "_OCR.zip"; + Path tempZipFile = Files.createTempFile("output_", ".zip"); + + try (ZipOutputStream zipOut = + new ZipOutputStream(new FileOutputStream(tempZipFile.toFile()))) { + // Add PDF file to the zip + ZipEntry pdfEntry = new ZipEntry(outputFilename); + zipOut.putNextEntry(pdfEntry); + Files.copy(tempOutputFile, zipOut); + zipOut.closeEntry(); + + // Add text file to the zip + ZipEntry txtEntry = new ZipEntry(outputFilename.replace(".pdf", ".txt")); + zipOut.putNextEntry(txtEntry); + Files.copy(sidecarTextPath, zipOut); + zipOut.closeEntry(); + } + + byte[] zipBytes = Files.readAllBytes(tempZipFile); + + // Clean up the temporary zip file + Files.deleteIfExists(tempZipFile); + Files.deleteIfExists(tempOutputFile); + Files.deleteIfExists(sidecarTextPath); + + // Return the zip file containing both the PDF and the text file + return WebResponseUtils.bytesToWebResponse( + zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); + } else { + // Return the OCR processed PDF as a response + Files.deleteIfExists(tempOutputFile); + return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); + } + } finally { + // Clean up the temporary files + Files.deleteIfExists(tempOutputFile); + // Comment out as transferTo makes multipart handle cleanup + // Files.deleteIfExists(tempInputFile); + if (sidecarTextPath != null) { + Files.deleteIfExists(sidecarTextPath); + } } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java index 85d4560c..06c652a2 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java @@ -41,34 +41,35 @@ public class RepairController { MultipartFile inputFile = request.getFileInput(); // Save the uploaded file to a temporary location Path tempInputFile = Files.createTempFile("input_", ".pdf"); - inputFile.transferTo(tempInputFile.toFile()); - - // Prepare the output file path Path tempOutputFile = Files.createTempFile("output_", ".pdf"); + byte[] pdfBytes = null; + inputFile.transferTo(tempInputFile.toFile()); + try { - List command = new ArrayList<>(); - command.add("gs"); - command.add("-o"); - command.add(tempOutputFile.toString()); - command.add("-sDEVICE=pdfwrite"); - command.add(tempInputFile.toString()); + List command = new ArrayList<>(); + command.add("gs"); + command.add("-o"); + command.add(tempOutputFile.toString()); + command.add("-sDEVICE=pdfwrite"); + command.add(tempInputFile.toString()); - ProcessExecutorResult returnCode = - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) - .runCommandWithOutputHandling(command); + ProcessExecutorResult returnCode = + ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) + .runCommandWithOutputHandling(command); - // Read the optimized PDF file - byte[] pdfBytes = Files.readAllBytes(tempOutputFile); + // Read the optimized PDF file + pdfBytes = Files.readAllBytes(tempOutputFile); - // Clean up the temporary files - Files.delete(tempInputFile); - Files.delete(tempOutputFile); - - // Return the optimized PDF as a response - String outputFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_repaired.pdf"; - return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); + // Return the optimized PDF as a response + String outputFilename = + Filenames.toSimpleFileName(inputFile.getOriginalFilename()) + .replaceFirst("[.][^.]+$", "") + + "_repaired.pdf"; + return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); + } finally { + // Clean up the temporary files + Files.deleteIfExists(tempInputFile); + Files.deleteIfExists(tempOutputFile); + } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java index c61b29e9..ce7e1b94 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java @@ -19,6 +19,7 @@ import java.util.stream.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.scheduling.annotation.Scheduled; @@ -28,6 +29,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import stirling.software.SPDF.model.PipelineConfig; import stirling.software.SPDF.model.PipelineOperation; +import stirling.software.SPDF.utils.FileMonitor; @Service public class PipelineDirectoryProcessor { @@ -35,11 +37,18 @@ public class PipelineDirectoryProcessor { private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class); @Autowired private ObjectMapper objectMapper; @Autowired private ApiDocService apiDocService; - - final String watchedFoldersDir = "./pipeline/watchedFolders/"; - final String finishedFoldersDir = "./pipeline/finishedFolders/"; - @Autowired PipelineProcessor processor; + @Autowired FileMonitor fileMonitor; + + final String watchedFoldersDir; + final String finishedFoldersDir; + + public PipelineDirectoryProcessor( + @Qualifier("watchedFoldersDir") String watchedFoldersDir, + @Qualifier("finishedFoldersDir") String finishedFoldersDir) { + this.watchedFoldersDir = watchedFoldersDir; + this.finishedFoldersDir = finishedFoldersDir; + } @Scheduled(fixedRate = 60000) public void scanFolders() { @@ -130,7 +139,7 @@ public class PipelineDirectoryProcessor { throws IOException { try (Stream paths = Files.list(dir)) { if ("automated".equals(operation.getParameters().get("fileInput"))) { - return paths.filter(path -> !Files.isDirectory(path) && !path.equals(jsonFile)) + return paths.filter(path -> !Files.isDirectory(path) && !path.equals(jsonFile) && fileMonitor.isFileReadyForProcessing(path)) .map(Path::toFile) .toArray(File[]::new); } else { diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java new file mode 100644 index 00000000..98d1e3a7 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java @@ -0,0 +1,71 @@ +package stirling.software.SPDF.controller.api.security; + +import java.io.ByteArrayOutputStream; + +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDDocumentCatalog; +import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; +import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.github.pixee.security.Filenames; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +import stirling.software.SPDF.model.api.PDFFile; +import stirling.software.SPDF.utils.WebResponseUtils; + +@RestController +@RequestMapping("/api/v1/security") +@Tag(name = "Security", description = "Security APIs") +public class RemoveCertSignController { + + private static final Logger logger = LoggerFactory.getLogger(RemoveCertSignController.class); + + @PostMapping(consumes = "multipart/form-data", value = "/remove-cert-sign") + @Operation( + summary = "Remove digital signature from PDF", + description = + "This endpoint accepts a PDF file and returns the PDF file without the digital signature. Input: PDF, Output: PDF") + public ResponseEntity removeCertSignPDF(@ModelAttribute PDFFile request) + throws Exception { + MultipartFile pdf = request.getFileInput(); + + // Convert MultipartFile to byte[] + byte[] pdfBytes = pdf.getBytes(); + + // Create a ByteArrayOutputStream to hold the resulting PDF + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + // Load the PDF document + PDDocument document = Loader.loadPDF(pdfBytes); + + // Get the document catalog + PDDocumentCatalog catalog = document.getDocumentCatalog(); + + // Get the AcroForm + PDAcroForm acroForm = catalog.getAcroForm(); + if (acroForm != null) { + // Remove signature fields + acroForm.getFields().removeIf(field -> field instanceof PDSignatureField); + } + + // Save the modified document to the ByteArrayOutputStream + document.save(baos); + document.close(); + + // Return the modified PDF as a response + return WebResponseUtils.boasToWebResponse( + baos, + Filenames.toSimpleFileName(pdf.getOriginalFilename()).replaceFirst("[.][^.]+$", "") + + "_unsigned.pdf"); + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java index b0490fb5..904a8ba0 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java @@ -129,6 +129,8 @@ public class AccountWebController { case "invalid_request": erroroauth = "login.oauth2invalidRequest"; break; + case "invalid_id_token": + erroroauth = "login.oauth2InvalidIdToken"; default: break; } diff --git a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java index 68b16d89..927e9bb8 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java @@ -53,6 +53,13 @@ public class SecurityWebController { return "security/cert-sign"; } + @GetMapping("/remove-cert-sign") + @Hidden + public String certUnSignForm(Model model) { + model.addAttribute("currentPage", "remove-cert-sign"); + return "security/remove-cert-sign"; + } + @GetMapping("/sanitize-pdf") @Hidden public String sanitizeForm(Model model) { diff --git a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java index c2253b21..8b78e130 100644 --- a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java +++ b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java @@ -357,7 +357,7 @@ public class ApplicationProperties { public Provider get(String registrationId) throws Exception { switch (registrationId) { - case "gogole": + case "google": return getGoogle(); case "github": return getGithub(); diff --git a/src/main/java/stirling/software/SPDF/utils/FileMonitor.java b/src/main/java/stirling/software/SPDF/utils/FileMonitor.java new file mode 100644 index 00000000..c11352ef --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/FileMonitor.java @@ -0,0 +1,167 @@ +package stirling.software.SPDF.utils; + +import static java.nio.file.StandardWatchEventKinds.*; + +import java.io.IOException; +import java.nio.file.*; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class FileMonitor { + private static final Logger logger = LoggerFactory.getLogger(FileMonitor.class); + private final Map path2KeyMapping; + private final Set newlyDiscoveredFiles; + private final ConcurrentHashMap.KeySetView readyForProcessingFiles; + private final WatchService watchService; + private final Predicate pathFilter; + private final Path rootDir; + private Set stagingFiles; + + /** + * @param rootDirectory the root directory to monitor + * @param pathFilter the filter to apply to the paths, return true if the path should be monitored, false otherwise + */ + @Autowired + public FileMonitor( + @Qualifier("watchedFoldersDir") String rootDirectory, + @Qualifier("directoryFilter") Predicate pathFilter) + throws IOException { + this.newlyDiscoveredFiles = new HashSet<>(); + this.path2KeyMapping = new HashMap<>(); + this.stagingFiles = new HashSet<>(); + this.pathFilter = pathFilter; + this.readyForProcessingFiles = ConcurrentHashMap.newKeySet(); + this.watchService = FileSystems.getDefault().newWatchService(); + this.rootDir = Path.of(rootDirectory); + } + + private boolean shouldNotProcess(Path path) { + return !pathFilter.test(path); + } + + private void recursivelyRegisterEntry(Path dir) throws IOException { + WatchKey key = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); + path2KeyMapping.put(dir, key); + logger.info("Registered directory: {}", dir); + + try (Stream directoryVisitor = Files.walk(dir, 1)) { + final Iterator iterator = directoryVisitor.iterator(); + while (iterator.hasNext()) { + Path path = iterator.next(); + if (path.equals(dir) || shouldNotProcess(path)) continue; + + if (Files.isDirectory(path)) { + recursivelyRegisterEntry(path); + } else if (Files.isRegularFile(path)) { + handleFileCreation(path); + } + } + } + } + + @Scheduled(fixedRate = 5000) + public void trackFiles() { + /* + All files observed changes in the last iteration will be considered as staging files. + If those files are not modified in current iteration, they will be considered as ready for processing. + */ + stagingFiles = new HashSet<>(newlyDiscoveredFiles); + readyForProcessingFiles.clear(); + + if (path2KeyMapping.isEmpty()) { + logger.warn( + "not monitoring any directory, even the root directory itself: {}", rootDir); + if (Files.exists( + rootDir)) { // if the root directory exists, re-register the root directory + try { + recursivelyRegisterEntry(rootDir); + } catch (IOException e) { + logger.error("unable to register monitoring", e); + } + } + } + + WatchKey key; + while ((key = watchService.poll()) != null) { + final Path watchingDir = (Path) key.watchable(); + key.pollEvents() + .forEach( + (evt) -> { + final Path path = (Path) evt.context(); + final WatchEvent.Kind kind = evt.kind(); + if (shouldNotProcess(path)) return; + + try { + if (Files.isDirectory(path)) { + if (kind == ENTRY_CREATE) { + handleDirectoryCreation(path); + } + /* + we don't need to handle directory deletion or modification + - directory deletion will be handled by key.reset() + - directory modification indicates a new file creation or deletion, which is handled by below + */ + } + Path relativePathFromRoot = watchingDir.resolve(path); + if (kind == ENTRY_CREATE) { + handleFileCreation(relativePathFromRoot); + } else if (kind == ENTRY_DELETE) { + handleFileRemoval(relativePathFromRoot); + } else if (kind == ENTRY_MODIFY) { + handleFileModification(relativePathFromRoot); + } + } catch (Exception e) { + logger.error("Error while processing file: {}", path, e); + } + }); + + boolean isKeyValid = key.reset(); + if (!isKeyValid) { // key is invalid when the directory itself is no longer exists + path2KeyMapping.remove((Path) key.watchable()); + } + } + readyForProcessingFiles.addAll(stagingFiles); + } + + private void handleDirectoryCreation(Path dir) throws IOException { + WatchKey key = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); + path2KeyMapping.put(dir, key); + } + + private void handleFileRemoval(Path path) { + newlyDiscoveredFiles.remove(path); + stagingFiles.remove(path); + } + + private void handleFileCreation(Path path) { + newlyDiscoveredFiles.add(path); + stagingFiles.remove(path); + } + + private void handleFileModification(Path path) { + // the logic is the same + handleFileCreation(path); + } + + /** + * Check if the file is ready for processing. + * + *

A file is ready for processing if it is not being modified for 5000ms. + * + * @param path the path of the file + * @return true if the file is ready for processing, false otherwise + */ + public boolean isFileReadyForProcessing(Path path) { + return readyForProcessingFiles.contains(path); + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/FileToPdf.java b/src/main/java/stirling/software/SPDF/utils/FileToPdf.java index da408a23..a381583c 100644 --- a/src/main/java/stirling/software/SPDF/utils/FileToPdf.java +++ b/src/main/java/stirling/software/SPDF/utils/FileToPdf.java @@ -42,6 +42,7 @@ public class FileToPdf { List command = new ArrayList<>(); if (!htmlFormatsInstalled) { command.add("weasyprint"); + command.add("-e utf-8"); command.add(tempInputFile.toString()); command.add(tempOutputFile.toString()); @@ -79,8 +80,8 @@ public class FileToPdf { } finally { // Clean up temporary files - Files.delete(tempOutputFile); - Files.delete(tempInputFile); + Files.deleteIfExists(tempOutputFile); + Files.deleteIfExists(tempInputFile); } return pdfBytes; diff --git a/src/main/java/stirling/software/SPDF/utils/PDFToFile.java b/src/main/java/stirling/software/SPDF/utils/PDFToFile.java index 38579aa8..f5297a10 100644 --- a/src/main/java/stirling/software/SPDF/utils/PDFToFile.java +++ b/src/main/java/stirling/software/SPDF/utils/PDFToFile.java @@ -6,7 +6,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -47,8 +46,7 @@ public class PDFToFile { try { // Save the uploaded file to a temporary location tempInputFile = Files.createTempFile("input_", ".pdf"); - Files.copy( - inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING); + inputFile.transferTo(tempInputFile); // Prepare the output directory tempOutputDir = Files.createTempDirectory("output_"); @@ -85,7 +83,7 @@ public class PDFToFile { } finally { // Clean up the temporary files - if (tempInputFile != null) Files.delete(tempInputFile); + if (tempInputFile != null) Files.deleteIfExists(tempInputFile); if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile()); } @@ -127,8 +125,7 @@ public class PDFToFile { try { // Save the uploaded file to a temporary location tempInputFile = Files.createTempFile("input_", ".pdf"); - Files.copy( - inputFile.getInputStream(), tempInputFile, StandardCopyOption.REPLACE_EXISTING); + inputFile.transferTo(tempInputFile); // Prepare the output directory tempOutputDir = Files.createTempDirectory("output_"); @@ -180,7 +177,7 @@ public class PDFToFile { } finally { // Clean up the temporary files - if (tempInputFile != null) Files.delete(tempInputFile); + Files.deleteIfExists(tempInputFile); if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile()); } System.out.println("fileBytes=" + fileBytes.length); diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index c38d74bb..3888584d 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=الاسم certSign.submit=تسجيل PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=إزالة الفراغات removeBlanks.header=إزالة الصفحات الفارغة diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 3bf590bc..bbdbc104 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -59,8 +59,8 @@ deleteCurrentUserMessage=Не може да се изтрие вписания deleteUsernameExistsMessage=Потребителското име не съществува и не може да бъде изтрито. downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител downgradeCurrentUserLongMessage=Не може да се понижи ролята на текущия потребител. Следователно текущият потребител няма да бъде показан. -userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user. -userAlreadyExistsWebMessage=The user already exists as an web user. +userAlreadyExistsOAuthMessage=Потребителят вече съществува като OAuth2 потребител. +userAlreadyExistsWebMessage=Потребителят вече съществува като уеб-потребител. error=Грешка oops=Опаа! help=Помощ @@ -105,18 +105,18 @@ pipelineOptions.validateButton=Валидирай ############# # NAVBAR # ############# -navbar.favorite=Favorites +navbar.favorite=Любими navbar.darkmode=Тъмна тема -navbar.language=Languages +navbar.language=Езици navbar.settings=Настройки -navbar.allTools=Tools -navbar.multiTool=Multi Tools -navbar.sections.organize=Organize -navbar.sections.convertTo=Convert to PDF -navbar.sections.convertFrom=Convert from PDF -navbar.sections.security=Sign & Security -navbar.sections.advance=Advanced -navbar.sections.edit=View & Edit +navbar.allTools=Инструменти +navbar.multiTool=Мулти инструменти +navbar.sections.organize=Организирайте +navbar.sections.convertTo=Преобразуване в PDF +navbar.sections.convertFrom=Преобразуване от PDF +navbar.sections.security=Подписване и сигурност +navbar.sections.advance=Разширено +navbar.sections.edit=Преглед и редактиране ############# # SETTINGS # @@ -185,7 +185,7 @@ adminUserSettings.internalApiUser=Вътрешен API потребител adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане adminUserSettings.submit=Съхранете потребителя adminUserSettings.changeUserRole=Промяна на ролята на потребителя -adminUserSettings.authenticated=Authenticated +adminUserSettings.authenticated=Удостоверен ############# # HOME-PAGE # @@ -267,7 +267,7 @@ home.fileToPDF.desc=Преобразуване почти всеки файл к fileToPDF.tags=трансформация,формат,документ,изображение,слайд,текст,преобразуване,офис,документи,word,excel,powerpoint home.ocr.title=OCR / Почистващи сканирания -home.ocr.desc=Почистване, сканира и открива текст от изображения към PDF и го добавя отново като текст. +home.ocr.desc=Почиства, сканира и открива текст от изображения в PDF и го добавя отново като текст. ocr.tags=разпознаване,текст,изображение,сканиране,четене,идентифициране,откриване,редактиране @@ -313,7 +313,7 @@ home.flatten.desc=Премахнете всички интерактивни е flatten.tags=статичен,деактивиран,неинтерактивен,рационализиран home.repair.title=Поправи -home.repair.desc=Опитва се да поправи повреден/счупен PDF +home.repair.desc=Опитва се да поправи повреден PDF repair.tags=поправка,възстановяване,корекция,възстановяване home.removeBlanks.title=Премахване на празни страници @@ -332,6 +332,10 @@ home.certSign.title=Подпишете със сертификат home.certSign.desc=Подписва PDF със сертификат/ключ (PEM/P12) certSign.tags=удостоверяване,PEM,P12,официален,шифроване +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Оформление с няколко страници home.pageLayout.desc=Слейте няколко страници от PDF документ в една страница pageLayout.tags=сливане,комбиниран,единичен изглед,организиране @@ -364,7 +368,7 @@ home.autoSplitPDF.title=Автоматично разделяне на стра home.autoSplitPDF.desc=Автоматично разделяне на сканиран PDF файл с QR код за разделяне на физически сканирани страници autoSplitPDF.tags=QR-базиран,отделен,сканиране-сегмент,организиране -home.sanitizePdf.title=Дезинфенкцирам +home.sanitizePdf.title=Обеззаразяване home.sanitizePdf.desc=Премахване на скриптове и други елементи от PDF файлове sanitizePdf.tags=чисти,сигурни,безопасни,премахване-заплахи @@ -382,8 +386,8 @@ home.MarkdownToPDF.desc=Преобразува всеки Markdown файл къ MarkdownToPDF.tags=маркиране,уеб-съдържание,трансформация,преобразуване -home.getPdfInfo.title=Вземете ЦЯЛАТА информация към PDF -home.getPdfInfo.desc=Взема всяка възможна информация от PDF файлове +home.getPdfInfo.title=Вземете ЦЯЛАТА информация от PDF +home.getPdfInfo.desc=Взима всяка възможна информация от PDF файлове getPdfInfo.tags=информация,данни,статистики,статистика @@ -405,7 +409,7 @@ home.autoRedact.title=Автоматично редактиране home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст autoRedact.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит -home.tableExtraxt.title=PDF to CSV +home.tableExtraxt.title=PDF в CSV home.tableExtraxt.desc=Извлича таблици от PDF, като ги конвертира в CSV tableExtraxt.tags=CSV,извличане на таблица,извличане,конвертиране @@ -452,11 +456,12 @@ login.locked=Вашият акаунт е заключен. login.signinTitle=Моля впишете се login.ssoSignIn=Влизане чрез еднократно влизане login.oauth2AutoCreateDisabled=OAUTH2 Автоматично създаване на потребител е деактивирано -login.oauth2RequestNotFound=Authorization request not found -login.oauth2InvalidUserInfoResponse=Invalid User Info Response -login.oauth2invalidRequest=Invalid Request -login.oauth2AccessDenied=Access Denied -login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2RequestNotFound=Заявката за оторизация не е намерена +login.oauth2InvalidUserInfoResponse=Невалидна информация за потребителя +login.oauth2invalidRequest=Невалидна заявка +login.oauth2AccessDenied=Отказан достъп +login.oauth2InvalidTokenResponse=Невалиден отговор на токена +login.oauth2InvalidIdToken=Невалиден токен за идентификатор #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Изтегли #crop crop.title=Изрязване -crop.header=Изрязване на изображение +crop.header=Изрязване на PDF crop.submit=Подайте @@ -637,7 +642,7 @@ scalePages.submit=Подайте #certSign -certSign.title=Подписване на сертификат +certSign.title=Подписване със сертификат certSign.header=Подпишете PDF с вашия сертификат (В процес на работа) certSign.selectPDF=Изберете PDF файл за подписване: certSign.jksNote=Забележка: Ако вашият тип сертификат не е в списъка по-долу, моля, конвертирайте го във файл на Java Keystore (.jks) с помощта на инструмента за команден ред keytool. След това изберете опцията за .jks файл по-долу. @@ -654,6 +659,13 @@ certSign.name=Име certSign.submit=Подпишете PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Премахване на празни места removeBlanks.header=Премахване на празни страници @@ -757,7 +769,7 @@ extractImages.submit=Извличане fileToPDF.title=Файл към PDF fileToPDF.header=Конвертирайте всеки файл към PDF fileToPDF.credit=Тази услуга използва LibreOffice и Unoconv за преобразуване на файлове. -fileToPDF.supportedFileTypesInfo=Supported File types +fileToPDF.supportedFileTypesInfo=Поддържание файлови типове fileToPDF.supportedFileTypes=Поддържаните типове файлове трябва да включват по-долу, но за пълен актуализиран списък на поддържаните формати, моля, вижте документацията на LibreOffice fileToPDF.submit=Преобразуване към PDF @@ -766,10 +778,10 @@ fileToPDF.submit=Преобразуване към PDF compress.title=Компресиране compress.header=Компресиране на PDF compress.credit=Тази услуга използва Ghostscript за PDF компресиране/оптимизиране. -compress.selectText.1=Ръчен режим - От 1 до 4 +compress.selectText.1=Ръчен режим - от 1 до 4 compress.selectText.2=Ниво на оптимизация: compress.selectText.3=4 (Ужасно за текстови изображения) -compress.selectText.4=Автоматичен режим - Автоматично настройва качеството, за да получи PDF точен размер +compress.selectText.4=Автоматичен режим - Автоматично настройва качеството, за да получи PDF с точен размер compress.selectText.5=Очакван PDF размер (напр. 25МБ, 10.8МБ, 25КБ) compress.submit=Компресиране @@ -810,7 +822,7 @@ pdfOrganiser.placeholder=(напр. 1,3,2 или 4-8,2,10-12 или 2n-1) #multiTool multiTool.title=PDF Мулти инструмент multiTool.header=PDF Мулти инструмент -multiTool.uploadPrompts=File Name +multiTool.uploadPrompts=Име на файл #view pdf viewPdf.title=Преглед на PDF @@ -909,8 +921,8 @@ watermark.selectText.7=Непрозрачност (0% - 100%): watermark.selectText.8=Тип воден знак: watermark.selectText.9=Изображение за воден знак: watermark.submit=Добавяне на воден знак -watermark.type.1=Text -watermark.type.2=Image +watermark.type.1=Текст +watermark.type.2=Изображение #Change permissions diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 1b1da164..e4310f13 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -332,6 +332,10 @@ home.certSign.title=Signa amb Certificat home.certSign.desc=Sign PDF amb Certificate/Clau (PEM/P12) certSign.tags=authentica,PEM,P12,official,encripta +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Talla -crop.header=Talla Imatge +crop.header=Talla PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Nom certSign.submit=Firma PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Elimina els espais en blanc removeBlanks.header=Elimina les pàgines en blanc diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index d86d4b84..58ae8463 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -332,6 +332,10 @@ home.certSign.title=Podpis s certifikátem home.certSign.desc=Podpis PDF s certifikátem/klíčem (PEM/P12) certSign.tags=autentizace,PEM,P12,oficiální,šifrování +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Vícestránkové rozložení home.pageLayout.desc=Sloučení více stránek dokumentu PDF do jedné stránky pageLayout.tags=sloučit,kompozitní,jedno zobrazení,organizovat @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Stáhnout #crop crop.title=Oříznout -crop.header=Oříznout obrázek +crop.header=Oříznout PDF crop.submit=Odeslat @@ -654,6 +659,13 @@ certSign.name=Název certSign.submit=Podepsat PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Odebrat prázdné stránky removeBlanks.header=Odebrat prázdné stránky diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index dea7c393..57d528d3 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -332,6 +332,10 @@ home.certSign.title=Mit Zertifikat signieren home.certSign.desc=Ein PDF mit einem Zertifikat/Schlüssel (PEM/P12) signieren certSign.tags=authentifizieren,pem,p12,offiziell,verschlüsseln +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Mehrseitiges Layout home.pageLayout.desc=Mehrere Seiten eines PDF zu einer Seite zusammenführen pageLayout.tags=zusammenführen,zusammensetzen,einzelansicht,organisieren @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Ungültige Benutzerinformationsantwort login.oauth2invalidRequest=ungültige Anfrage login.oauth2AccessDenied=Zugriff abgelehnt login.oauth2InvalidTokenResponse=Ungültige Token-Antwort +login.oauth2InvalidIdToken=Ungültiges ID-Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Herunterladen #crop crop.title=Zuschneiden -crop.header=Bild zuschneiden +crop.header=PDF zuschneiden crop.submit=Abschicken @@ -654,6 +659,13 @@ certSign.name=Name certSign.submit=PDF signieren +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Leere Seiten entfernen removeBlanks.header=Leere Seiten entfernen diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index 045a9dbe..a1984be8 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -332,6 +332,10 @@ home.certSign.title=Υπογραφή με Πιστοποιητικό home.certSign.desc=Υπογραφή ενός PDF αρχείου με ένα Πιστοποιητικό/Κλειδί (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Διάταξη πολλών σελίδων home.pageLayout.desc=Συγχώνευση πολλαπλών σελίδων ενός εγγράφου PDF σε μία μόνο σελίδα pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Λήψη #crop crop.title=Κοπή -crop.header=Κοπή Εικόνας +crop.header=Περικοπή PDF crop.submit=Υποβολή @@ -654,6 +659,13 @@ certSign.name=Όνομα certSign.submit=Υπογραφή PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Αφαίρεση Κενών removeBlanks.header=Αφαίρεση Κενών Σελίδων diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index e9f2ad8d..544227f1 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Name certSign.submit=Sign PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Remove Blanks removeBlanks.header=Remove Blank Pages diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index f7ec59d7..46467dad 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Name certSign.submit=Sign PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Remove Blanks removeBlanks.header=Remove Blank Pages diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 468d2c8d..62368133 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -332,6 +332,10 @@ home.certSign.title=Firmar con certificado home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) certSign.tags=autentificar,PEM,P12,oficial,encriptar +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Diseño de varias páginas home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página pageLayout.tags=unir,compuesto,vista única,organizar @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Descargar #crop crop.title=Recortar -crop.header=Recortar Imagen +crop.header=Recortar PDF crop.submit=Entregar @@ -654,6 +659,13 @@ certSign.name=Nombre certSign.submit=Firmar PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Eliminar espacios en blanco removeBlanks.header=Eliminar páginas en blanco diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 5b875c39..405be891 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -332,6 +332,10 @@ home.certSign.title=Sinatu ziurtagiriarekin home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Zenbait orrialderen diseinua home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Distira #crop crop.title=Moztu -crop.header=Irudia Moztu +crop.header=Moztu PDF crop.submit=Bidali @@ -654,6 +659,13 @@ certSign.name=Izena certSign.submit=Sinatu PDFa +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Ezabatu zuriuneak removeBlanks.header=Ezabatu orrialde zuriak diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index ea7f00dd..57671c51 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -22,18 +22,18 @@ close=Fermer filesSelected=fichiers sélectionnés noFavourites=Aucun favori ajouté downloadComplete=Téléchargement terminé -bored=Ennuyé d’attendre ? +bored=Marre d’attendre ? alphabet=Alphabet downloadPdf=Télécharger le PDF text=Texte font=Police selectFillter=-- Sélectionnez -- -pageNum=numéro de page +pageNum=Numéro de page sizes.small=Petit sizes.medium=Moyen sizes.large=Grand sizes.x-large=Très grand -error.pdfPassword=Le document PDF est protégé par un mot de passe et le mot de passe n’a pas été fourni ou était incorrect +error.pdfPassword=Le document PDF est protégé par un mot de passe qui n’a pas été fourni ou était incorrect delete=Supprimer username=Nom d’utilisateur password=Mot de passe @@ -78,13 +78,13 @@ info=Info ############### # Pipeline # ############### -pipeline.header=Menu Pipeline (Alpha) +pipeline.header=Menu Pipeline (Beta) pipeline.uploadButton=Charger une personnalisation pipeline.configureButton=Configurer pipeline.defaultOption=Personnaliser pipeline.submitButton=Soumettre -pipeline.help=Pipeline Help -pipeline.scanHelp=Folder Scanning Help +pipeline.help=Aide Pipeline +pipeline.scanHelp=Aide analyse de dossier ###################### # Pipeline Options # @@ -107,16 +107,16 @@ pipelineOptions.validateButton=Valider ############# navbar.favorite=Favoris navbar.darkmode=Mode sombre -navbar.language=Langages +navbar.language=Langues navbar.settings=Paramètres -navbar.allTools=OUtils -navbar.multiTool=Multi Outils -navbar.sections.organize=Oragnisation +navbar.allTools=Outils +navbar.multiTool=Outils Multiples +navbar.sections.organize=Organisation navbar.sections.convertTo=Convertir en PDF navbar.sections.convertFrom=Convertir depuis PDF navbar.sections.security=Signature et sécurité navbar.sections.advance=Mode avancé -navbar.sections.edit=Voir la modification +navbar.sections.edit=Voir et modifier ############# # SETTINGS # @@ -132,7 +132,7 @@ settings.downloadOption.3=Télécharger le fichier settings.zipThreshold=Compresser les fichiers en ZIP lorsque le nombre de fichiers téléchargés dépasse settings.signOut=Déconnexion settings.accountSettings=Paramètres du compte -settings.bored.help=Enables easter egg game +settings.bored.help=Activer les jeux cachés settings.cacheInputs.name=Sauvegarder les entrées du formulaire settings.cacheInputs.help=Permet de stocker les entrées précédemment utilisées pour les exécutions futures @@ -181,7 +181,7 @@ adminUserSettings.apiUser=Utilisateur API limité adminUserSettings.extraApiUser=Utilisateur limité supplémentaire de l’API adminUserSettings.webOnlyUser=Utilisateur Web uniquement adminUserSettings.demoUser=Demo User (Paramètres par défaut) -adminUserSettings.internalApiUser=Internal API User +adminUserSettings.internalApiUser=Utilisateur de l'API interne adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion adminUserSettings.submit=Ajouter adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur @@ -332,6 +332,10 @@ home.certSign.title=Signer avec un certificat home.certSign.desc=Signez un PDF avec un certificat ou une clé (PEM/P12). certSign.tags=signer,chiffrer,certificat,authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Fusionner des pages home.pageLayout.desc=Fusionnez plusieurs pages d’un PDF en une seule. pageLayout.tags=fusionner,merge,composite,single-view,organize @@ -357,7 +361,7 @@ home.adjust-contrast.desc=Ajustez le contraste, la saturation et la luminosité adjust-contrast.tags=ajuster,couleurs,amélioration,color-correction,tune,modify,enhance home.crop.title=Redimensionner -home.crop.desc=Redimmensionnez un PDF pour réduire sa taille (en conservant le texte !). +home.crop.desc=Redimensionnez un PDF pour réduire sa taille (en conservant le texte !). crop.tags=redimensionner,trim,shrink,edit,shape home.autoSplitPDF.title=Séparer automatiquement les pages @@ -428,11 +432,11 @@ home.AddStampRequest.desc=Ajouter un texte ou l’image d’un tampon à un empl AddStampRequest.tags=Tampon,Ajouter,Stamp,Add image,center image,Watermark,PDF,Embed,Customize -home.PDFToBook.title=PDF to Book +home.PDFToBook.title=PDF vers eBook home.PDFToBook.desc=Convertit le PDF en formats livre/bande dessinée à l'aide de calibre PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle -home.BookToPDF.title=Book to PDF +home.BookToPDF.title=eBook vers PDF home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -480,8 +485,8 @@ showJS.submit=Afficher #pdfToSinglePage -pdfToSinglePage.title=Fusionner des pages -pdfToSinglePage.header=Fusionner des pages +pdfToSinglePage.title=Fusionner les pages +pdfToSinglePage.header=Fusionner les pages pdfToSinglePage.submit=Convertir en une seule page @@ -654,6 +659,13 @@ certSign.name=Nom certSign.submit=Signer +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Supprimer les pages vierges removeBlanks.header=Supprimer les pages vierges diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 361d2c19..7b933cd2 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -332,6 +332,10 @@ home.certSign.title=प्रमाणपत्र के साथ हस्त home.certSign.desc=पीडीएफ़ को प्रमाणपत्र/कुंजी (PEM/P12) के साथ हस्ताक्षरित करता है। certSign.tags=प्रमाणीकरण, PEM, P12, आधिकारिक, एन्क्रिप्ट +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=मल्टी-पेज लेआउट home.pageLayout.desc=पीडीएफ़ दस्तावेज़ के कई पेजों को एक ही पेज में मर्ज करता है। pageLayout.tags=मर्ज, संयोजित, एकल दृश्य, संगठित @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=डाउनलोड #crop crop.title=कटौती -crop.header=छवि काटो +crop.header=क्रॉप पीडीएफ़ crop.submit=प्रस्तुत करें @@ -654,6 +659,13 @@ certSign.name=नाम certSign.submit=पीडीएफ़ पर हस्ताक्षर करें +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=खाली पेज हटाएं removeBlanks.header=खाली पेज हटाएं diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties new file mode 100644 index 00000000..391fc96b --- /dev/null +++ b/src/main/resources/messages_hr_HR.properties @@ -0,0 +1,1081 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr=left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Odaberi PDF(ove) +multiPdfPrompt=Odaberi PDF-ove (2+) +multiPdfDropPrompt=Odaberi (ili povuci i ispusti) sve potrebne PDF-ove +imgPrompt=Odaberi sliku (slike) +genericSubmit=Pošalji +processTimeWarning=Upozorenje: Ovaj proces može trajati i do minutu, u zavisnosti od veličine dokumenta +pageOrderPrompt=Prilagođeni redoslijed stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) : +pageSelectionPrompt=Prilagođeni odabir stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) : +goToPage=Idi na stranicu +true=Točno +false=Netočno +unknown=Nepoznato +save=Spremi +saveToBrowser=spremi u Preglednik +close=Zatvori +filesSelected=odabrane datoteke +noFavourites=Nema dodanih favorita +downloadComplete=Preuzimanje završeno +bored=Dosađujete se čekajući? +alphabet=Abeceda +downloadPdf=Preuzmi PDF +text=Tekst +font=Font +selectFillter=-- Odaberi -- +pageNum=Broj stranice +sizes.small=Malo +sizes.medium=Srednje +sizes.large=Veliko +sizes.x-large=Jako veliko +error.pdfPassword=PDF dokument je šifriran i zaporka nije dana ili je netočna +delete=Izbriši +username=Korisničko ime +password=Zaporka +welcome=Dobrodošli +property=Svojstvo +black=Crno +white=Bijelo +red=Crveno +green=Zeleno +blue=Plavo +custom=Prilagođeno... +WorkInProgess=Radovi u tijeku, u slučaju grešaka molimo prijavite probleme! +poweredBy=Pokreće +yes=Da +no=Ne +changedCredsMessage=Podaci za prijavu uspješno promijenjeni! +notAuthenticatedMessage=Korisnik nije autentificiran. +userNotFoundMessage=Korisnik nije pronađen. +incorrectPasswordMessage=Kriva zaporka. +usernameExistsMessage=Korisničko ime već postoji +invalidUsernameMessage=Nevažeće korisničko ime, korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte. +deleteCurrentUserMessage=Nije moguće izbrisati trenutno prijavljenog korisnika. +deleteUsernameExistsMessage=Korisničko ime ne postoji i ne može se izbrisati. +downgradeCurrentUserMessage=Nije moguće vratiti unazad ulogu trenutnog korisnika +downgradeCurrentUserLongMessage=Nije moguće vratiti unazad ulogu trenutnog korisnika. Dakle, trenutni korisnik neće biti prikazan. +userAlreadyExistsOAuthMessage=Korisnik već postoji kao OAuth2 korisnik. +userAlreadyExistsWebMessage=Korisnik već postoji kao web korisnik. +error=Greška +oops=Ups! +help=Pomoć +goHomepage=Idi na početnu stranicu +joinDiscord=Pridruži se našem Discord serveru +seeDockerHub=Vidi Docker Hub +visitGithub=Posjeti Github Repository +donate=Doniraj +color=Boja +sponsor=Sponzor +info=Info + + + +############### +# Pipeline # +############### +pipeline.header=Pipeline Meni (Beta) +pipeline.uploadButton=Prenesi prilagođeno +pipeline.configureButton=Konfigurirati +pipeline.defaultOption=Prilagođeno +pipeline.submitButton=Pošalji +pipeline.help=Pipeline Pomoć +pipeline.scanHelp=Pomoć za skeniranje mapa + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Konfiguracija +pipelineOptions.pipelineNameLabel=Pipeline Ime +pipelineOptions.saveSettings=Spremi Postavke +pipelineOptions.pipelineNamePrompt=Unesite naziv pipeline-a ovdje +pipelineOptions.selectOperation=Odaberite Operaciju +pipelineOptions.addOperationButton=Dodajte operaciju +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Preuzmi datoteku +pipelineOptions.validateButton=Potvrdi + + + + +############# +# NAVBAR # +############# +navbar.favorite=Favoriti +navbar.darkmode=Tamni Način Rada +navbar.language=Jezici +navbar.settings=Postavke +navbar.allTools=Alati +navbar.multiTool=Multi Tools (Alati) +navbar.sections.organize=Organizirati +navbar.sections.convertTo=Pretvori u PDF +navbar.sections.convertFrom=Pretvori iz PDF +navbar.sections.security=Potpis & sigurnost +navbar.sections.advance=Napredno +navbar.sections.edit=Pregled & Uređivanje + +############# +# SETTINGS # +############# +settings.title=Postavke +settings.update=Dostupno ažuriranje +settings.updateAvailable={0} je trenutno instalirana verzija. Dostupna je nova verzija ({1}). +settings.appVersion=Verzija aplikacije: +settings.downloadOption.title=Odaberite opciju preuzimanja (Za preuzimanje pojedinačnih datoteka bez zip formata): +settings.downloadOption.1=Otvori u istom prozoru +settings.downloadOption.2=Otvori u novom prozoru +settings.downloadOption.3=Preuzmi datoteku +settings.zipThreshold=Spremi .zip datoteku kada broj preuzetih datoteka pređe +settings.signOut=Odjava +settings.accountSettings=Postavke računa +settings.bored.help=Omogućuje "easter egg" igru +settings.cacheInputs.name=Spremi unose obrazaca +settings.cacheInputs.help=omogućiti pohranjivanje prethodno korištenih ulaza za buduća izvođenja + +changeCreds.title=Promijeni pristupne podatke +changeCreds.header=Ažurirajte korisničke podatke +changeCreds.changePassword=Koristite zadanu lozinku za prijavu. Unesite novu lozinku +changeCreds.newUsername=Novo korisničko ime +changeCreds.oldPassword=Trenutna zaporka +changeCreds.newPassword=Nova zaporka +changeCreds.confirmNewPassword=Potvrdite novu lozinku +changeCreds.submit=Potvrdi + + + +account.title=Postavke računa +account.accountSettings=Postavke računa +account.adminSettings=Admin Postavka - Pregled i dodavanje korisnika +account.userControlSettings=Postavke kontrole korisnika +account.changeUsername=Promijeni korisničko ime +account.newUsername=Novo korisničko ime +account.password=Potvrda lozinke +account.oldPassword=Stara zaporka +account.newPassword=Nova zaporka +account.changePassword=Promijeni lozinku +account.confirmNewPassword=Potvrdi novu lozinku +account.signOut=Odjava +account.yourApiKey=Tvoj API ključ +account.syncTitle=Sinkronizirajte postavke preglednika s računom +account.settingsCompare=Usporedba postavki: +account.property=Svojstvo +account.webBrowserSettings=Postavka web-preglednika +account.syncToBrowser=Sinkronizacija Račun -> Preglednik +account.syncToAccount=Sinkronizacija Račun <- Preglednik + + +adminUserSettings.title=Postavka kontrole korisnika +adminUserSettings.header=Postavka kontrole korisnika za administratora +adminUserSettings.admin=Administrator +adminUserSettings.user=Korisnik +adminUserSettings.addUser=Dodaj novog korisnika +adminUserSettings.usernameInfo=Korisničko ime može sadržavati samo slova, brojke i sljedeće posebne znakove @._+- ili mora biti važeća adresa e-pošte. +adminUserSettings.roles=Uloge +adminUserSettings.role=Uloga +adminUserSettings.actions=Akcije +adminUserSettings.apiUser=Korisnik s ograničenim API pristupom +adminUserSettings.extraApiUser=Dodatni korisnik s ograničenim API pristupom +adminUserSettings.webOnlyUser=Web Korisnik +adminUserSettings.demoUser=Demo korisnik (Bez prilagođenih Postavki) +adminUserSettings.internalApiUser=Interni API Korisnik +adminUserSettings.forceChange=Prisiliti korisnika da promijeni lozinku prilikom prijave +adminUserSettings.submit=Spremi korisnika +adminUserSettings.changeUserRole=Promijenite korisničku ulogu +adminUserSettings.authenticated=Autentificirano + +############# +# HOME-PAGE # +############# +home.desc=Sve na jednom mjestu za sve vaše PDF potrebe. +home.searchBar=Pretraži funkcije... + + +home.viewPdf.title=Pregledaj PDF +home.viewPdf.desc=Pregledaj, komentiraj, dodaj tekst ili slike +viewPdf.tags=pregled,čitanje,komentiranje,tekst,slika + +home.multiTool.title=PDF Višestruki alat +home.multiTool.desc=Spajanje, rotiranje, preuređivanje i uklanjanje stranica +multiTool.tags=Višestruki alat, više operacija, korisničko sučelje, povlačenje klikom, prednji kraj, strana klijenta, interaktivno, nepopravljivo, pomicanje + +home.merge.title=Spajanje +home.merge.desc=Jednostavno spojite više PDF-ova u jedan. +merge.tags=spajanje,Operacije sa stranicama,Backend,poslužiteljska strana + +home.split.title=Razdvajanje +home.split.desc=Razdvojite PDF-ove u više dokumenata +split.tags=Operacije stranice, dijeljenje, više stranica, rezanje,poslužiteljska strana + +home.rotate.title=Rotacija +home.rotate.desc=Jednostavno rotirajte vaše PDF-ove. +rotate.tags=poslužiteljska strana + + +home.imageToPdf.title=Slika u PDF +home.imageToPdf.desc=Pretvorite sliku (PNG, JPEG, GIF) u PDF. +imageToPdf.tags=konverzija,pretvaranje,img,jpg,slika,foto + +home.pdfToImage.title=PDF u Sliku +home.pdfToImage.desc=Pretvorite PDF u sliku. (PNG, JPEG, GIF) +pdfToImage.tags=konverzija,img,jpg,slika,foto + +home.pdfOrganiser.title=Organiziranje +home.pdfOrganiser.desc=Uklonite/preuredite stranice bilo kojim redoslijedom +pdfOrganiser.tags=duplex,even,odd,sort,move + + +home.addImage.title=Dodaj sliku +home.addImage.desc=Dodaje sliku na zadano mjesto u PDF-u +addImage.tags=img,jpg,slika,foto + +home.watermark.title=Dodaj vodeni žig +home.watermark.desc=DDodajte prilagođeni vodeni žig svom PDF dokumentu. +watermark.tags=Tekst,ponavljanje,etiketa,vlastiti,autorsko pravo,zaštita, img,jpg,slika,foto + +home.permissions.title=Promjena dopuštenja +home.permissions.desc=Promijenite dopuštenja svog PDF dokumenta +permissions.tags=čitanje,pisanje,izmjena,print + + +home.removePages.title=Ukloniti +home.removePages.desc=Izbrišite neželjene stranice iz svog PDF dokumenta. +removePages.tags=Ukloni stranice,izbriši stranice + +home.addPassword.title=Dodaj lozinku +home.addPassword.desc=Šifrirajte svoj PDF dokument lozinkom.. +addPassword.tags=sigurno, sigurnost + +home.removePassword.title=Ukloni lozinku +home.removePassword.desc=Uklonite zaštitu lozinkom sa svog PDF dokumenta.. +removePassword.tags=sigurno, dešifriranje, sigurnost, poništi lozinku, izbriši lozinku + +home.compressPdfs.title=Komprimiraj +home.compressPdfs.desc=Komprimirajte PDF-ove kako biste smanjili njihovu veličinu. +compressPdfs.tags=squish, mali, maleni + + +home.changeMetadata.title=Promjena metapodataka +home.changeMetadata.desc=Promjeni/Ukloni/Dodaj metapodatke iz PDF dokumenta +changeMetadata.tags=Naslov,autor,datum,kreacije,vrijeme,izdavač,proizvođač,statistike + +home.fileToPDF.title=Pretvori datoteku u PDF +home.fileToPDF.desc=Pretvorite gotovo sve datoteke u PDF (DOCX, PNG, XLS, PPT, TXT i više) +fileToPDF.tags=transformacija,format,dokument,slika,slajd,tekst,konverzija,office,docs,word,excel,powerpoint + +home.ocr.title=OCR / Čišćenje skeniranih dokumenata +home.ocr.desc=Čišćenje skenira i otkriva tekst sa slika unutar PDF-a i ponovno ga dodaje kao tekst. +ocr.tags=prepoznavanje,tekst,slika,sken,čitanje,identifikacija,detektiranje,uređivanje + + +home.extractImages.title=Ekstrakt slika +home.extractImages.desc=Izdvaja sve slike iz PDF-a i sprema ih u zip format +extractImages.tags=slika, fotografija, spremanje, arhiva, zip, snimanje, zgrabi + +home.pdfToPDFA.title=PDF u PDF/A +home.pdfToPDFA.desc=Pretvorite PDF u PDF/A za dugoročnu pohranu +pdfToPDFA.tags=arhiva,dugoročno,standardno,konverzija,čuvanje,čuvanje + +home.PDFToWord.title=PDF u Word +home.PDFToWord.desc=Pretvorite PDF u Word formate (DOC, DOCX i ODT) +PDFToWord.tags=doc,docx,odt,word,transformacija,format,konverzija,office,microsoft,docfile + +home.PDFToPresentation.title=PDF u Prezentaciju +home.PDFToPresentation.desc=Pretvorite PDF u formate za prezentaciju (PPT, PPTX i ODP) +PDFToPresentation.tags=slajdovi,prikaz,office,microsoft + +home.PDFToText.title=PDF u RTF (Tekst) +home.PDFToText.desc=Pretvorite PDF u tekst ili RTF format +PDFToText.tags=richformat,richtextformat,rich text format + +home.PDFToHTML.title=PDF u HTML +home.PDFToHTML.desc=Pretvorite PDF u HTML format +PDFToHTML.tags=web sadržaj,prijateljski za pretraživače + + +home.PDFToXML.title=PDF u XML +home.PDFToXML.desc=Pretvorite PDF u XML format +PDFToXML.tags=izdvajanje-podataka,strukturirani-sadržaj,interop,transformacija,konvertiranje + +home.ScannerImageSplit.title=Otkrij/razdvoji skenirane fotografije +home.ScannerImageSplit.desc=Razdvaja više fotografija iz fotografije/PDF-a +ScannerImageSplit.tags=razdvoji,auto-detekcija,skeniranja,višestruke fotografije,organizacija + +home.sign.title=Potpisati +home.sign.desc=Dodaje potpis u PDF crtežom, tekstom ili slikom +sign.tags=autorizacija,inicijali,crtani-potpis,tekstualni-potpis,slikovni-potpis + +home.flatten.title=Ravnanje (Flatten) +home.flatten.desc=Uklonite sve interaktivne elemente i obrasce iz PDF-a +flatten.tags=statično,deaktivirati,neinteraktivno,usmjeriti + +home.repair.title=Popravi +home.repair.desc=Pokušava popraviti oštećeni/pokvareni PDF +repair.tags=popravi,vrati,korekcija,obnovi + +home.removeBlanks.title=Ukloni prazne stranice +home.removeBlanks.desc=Otkriva i uklanja prazne stranice iz dokumenta +removeBlanks.tags=čišćenje,usmjeriti,ne-sadržaj,organizacija + +home.removeAnnotations.title=Ukloni komentare +home.removeAnnotations.desc=Uklanja sve komentare/anotacije iz PDF-a +removeAnnotations.tags=komentari,isticanje,bilješke,oznake,ukloni + +home.compare.title=Uporedi +home.compare.desc=Uspoređuje i pokazuje razlike između 2 PDF dokumenta +compare.tags=razlikovati,kontrast,izmjene,analiza + +home.certSign.title=Potpišite s certifikatom +home.certSign.desc=Potpisuje PDF s certifikatom/ključem (PEM/P12) +certSign.tags=autentifikacija,PEM,P12,zvanično,šifriranje + +home.pageLayout.title=Izgled s više stranica +home.pageLayout.desc=Spojite više stranica PDF dokumenta u jednu stranicu +pageLayout.tags=spajanje,kompozitni,pojedinačan-prikaz,organizacija + +home.scalePages.title=Prilagodite veličinu/razmjer stranice +home.scalePages.desc=Promijenite veličinu/razmjer stranice i/ili njezin sadržaj. +scalePages.tags=izmjena,modifikacija,dimenzija,adaptacija + +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Izvršite više radnji na PDF-ovima definiranjem skripti u pipeline-u +pipeline.tags=automatizacija,sekvenciranje,skriptirano,batch-process + +home.add-page-numbers.title=Dodaj brojeve stranica +home.add-page-numbers.desc=Dodajte brojeve stranica kroz dokument na određeno mjesto +add-page-numbers.tags=paginirati, označiti, organizirati, indeksirati + +home.auto-rename.title=Automatsko preimenovanje PDF datoteka +home.auto-rename.desc=Automatski preimenuje PDF datoteku na temelju otkrivenog zaglavlja +auto-rename.tags=auto-detekcija,zaglavlje-bazirano,organizacija,preimenovanje + +home.adjust-contrast.title=Podesi boje/kontrast +home.adjust-contrast.desc=Podesite kontrast, zasićenost i svjetlinu PDF-a +adjust-contrast.tags=korekcija boje, ugađanje, modificiranje, poboljšanje + +home.crop.title=Izrežite PDF +home.crop.desc=Izrežite PDF kako biste smanjili njegovu veličinu (zadržava tekst!) +crop.tags=obrezivanje, smanjivanje, uređivanje, oblikovanje + +home.autoSplitPDF.title=Automatsko dijeljenje stranica +home.autoSplitPDF.desc=Automatsko dijeljenje skeniranog PDF-a s fizičkim QR kodom za dijeljenje stranica +autoSplitPDF.tags=QR-bazirano,razdvoji,segment-skeniranja,organizacija + +home.sanitizePdf.title=Dezinficirati (Sanitize) +home.sanitizePdf.desc=Uklonite skripte i druge elemente iz PDF datoteka +sanitizePdf.tags=čisto, sigurno, sigurno, uklanjanje prijetnji + +home.URLToPDF.title=URL/Webstranica u PDF +home.URLToPDF.desc=Pretvara bilo koji http(s)URL u PDF +URLToPDF.tags=uhvati-web,sačuvaj-stranicu,web-u-doc,arhiva + +home.HTMLToPDF.title=HTML u PDF +home.HTMLToPDF.desc=Pretvara bilo koji HTML datoteku ili zip u PDF +HTMLToPDF.tags=oznake,web-sadržaj,transformacija,konvertiranje + + +home.MarkdownToPDF.title=Markdown u PDF +home.MarkdownToPDF.desc=Pretvara bilo koju Markdown datoteku u PDF +MarkdownToPDF.tags=oznake,web-sadržaj,transformacija,konvertiranje + + +home.getPdfInfo.title=Dohvati SVE informacije o PDF-u +home.getPdfInfo.desc=Dohvaća sve moguće informacije o PDF-ovima +getPdfInfo.tags=informacije,podaci,statistike + + +home.extractPage.title=Izdvoji stranicu(e) +home.extractPage.desc=Izdvaja odabrane stranice iz PDF-a +extractPage.tags=izdvajanje + + +home.PdfToSinglePage.title=PDF u Jednu Veliku Stranicu +home.PdfToSinglePage.desc=Spaja sve PDF stranice u jednu veliku stranicu +PdfToSinglePage.tags=jedna-stranica + + +home.showJS.title=Prikaži JavaScript +home.showJS.desc=Pretražuje i prikazuje bilo koji JavaScript umetnut u PDF +showJS.tags=JS + +home.autoRedact.title=Automatsko uređivanje +home.autoRedact.desc=Automatski redigira (zacrni) tekst u PDF-u na temelju unosa teksta +autoRedact.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno + +home.tableExtraxt.title=PDF u CSV +home.tableExtraxt.desc=Izdvaja tablice iz PDF-a pretvarajući ga u CSV +tableExtraxt.tags=CSV,Izdvajanje tabela,izdvajanje,pretvaranje + + +home.autoSizeSplitPDF.title=Automatska podjela po veličini/broju +home.autoSizeSplitPDF.desc=Podijelite jedan PDF na više dokumenata na temelju veličine, broja stranica ili broja dokumenata +autoSizeSplitPDF.tags=pdf,podjela,dokumenti,organizacija + + +home.overlay-pdfs.title=Preklapanje PDF-ova +home.overlay-pdfs.desc=Preklapa PDF-ove na drugi PDF +overlay-pdfs.tags=Preklapanje + +home.split-by-sections.title=Podijeli PDF po odjeljcima +home.split-by-sections.desc=Svaku stranicu PDF-a podijelite na manje vodoravne i okomite dijelove +split-by-sections.tags=Dijeljenje odjeljaka,Dijeljenje,Postavke + +home.AddStampRequest.title=Dodaj pečat u PDF +home.AddStampRequest.desc=Dodajte tekst ili dodajte slikovne oznake na postavljenim mjestima +AddStampRequest.tags=Pečat, dodavanje slike, središnja slika, vodeni žig, PDF, ugradnja, prilagodba + + +home.PDFToBook.title=PDF u Book +home.PDFToBook.desc=Pretvara PDF u format knjige/stripa pomoću calibre +PDFToBook.tags=Knjiga,Strip,Calibre,Pretvori,manga,amazon,kindle + +home.BookToPDF.title=Book u PDF +home.BookToPDF.desc=Pretvara format knjige/stripa u PDF format pomoću calibre +BookToPDF.tags=Knjiga,Strip,Calibre,Pretvori,manga,amazon,kindle + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Prijavite se +login.header=Prijavite se +login.signin=Prijavite se +login.rememberme=Zapamti me +login.invalid=Neispravno korisničko ime ili zaporka. +login.locked=Vaš račun je zaključan. +login.signinTitle=Molimo vas da se prijavite +login.ssoSignIn=Prijavite se putem jedinstvene prijave +login.oauth2AutoCreateDisabled=OAUTH2 automatsko kreiranje korisnika je onemogućeno +login.oauth2RequestNotFound=Zahtjev za autorizaciju nije pronađen +login.oauth2InvalidUserInfoResponse=Nevažeće informacije o korisniku +login.oauth2invalidRequest=Neispravan zahtjev +login.oauth2AccessDenied=Pristup odbijen +login.oauth2InvalidTokenResponse=Nevažeći odgovor tokena +login.oauth2InvalidIdToken=Nevažeći ID token + + +#auto-redact +autoRedact.title=Automatsko uređivanje +autoRedact.header=Automatsko uređivanje +autoRedact.colorLabel=Boja +autoRedact.textsToRedactLabel=Tekst za uređivanje (razdvojen linijama) +autoRedact.textsToRedactPlaceholder=npr. \nPovjerljivo \nStrogo čuvana tajna +autoRedact.useRegexLabel=Koristi Regex +autoRedact.wholeWordSearchLabel=Pretraživanje cijelih riječi +autoRedact.customPaddingLabel=Dodatni prazan prostor +autoRedact.convertPDFToImageLabel=Pretvorite PDF u PDF-sliku (koristi se za uklanjanje teksta iza okvira) +autoRedact.submitButton=Potvrdi + + +#showJS +showJS.title=Prikaži Javascript +showJS.header=Prikaži Javascript +showJS.downloadJS=Preuzmite Javascript +showJS.submit=Prikaži + + +#pdfToSinglePage +pdfToSinglePage.title=PDF u Jednu Stranicu +pdfToSinglePage.header=PDF u Jednu Stranicu +pdfToSinglePage.submit=Pretvori u Jednu Stranicu + + +#pageExtracter +pageExtracter.title=Izdvojiti stranice +pageExtracter.header=Izdvojiti stranice +pageExtracter.submit=Izdvoji +pageExtracter.placeholder=(t.j. 1,2,8 ili 4,7,12-16 ili 2n-1) + + +#getPdfInfo +getPdfInfo.title=Informacije o PDF-u +getPdfInfo.header=Informacije o PDF-u +getPdfInfo.submit=Informacije +getPdfInfo.downloadJson=Preuzmite JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown u PDF +MarkdownToPDF.header=Markdown u PDF +MarkdownToPDF.submit=Pretvori +MarkdownToPDF.help=Rad u toku +MarkdownToPDF.credit=Koristi WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL u PDF +URLToPDF.header=URL u PDF +URLToPDF.submit=Pretvori +URLToPDF.credit=Koristi WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML u PDF +HTMLToPDF.header=HTML u PDF +HTMLToPDF.help=Prihvaća HTML datoteke i ZIP-ove koji sadrže html/css/slike itd. potrebno +HTMLToPDF.submit=Pretvori +HTMLToPDF.credit=Koristi WeasyPrint +HTMLToPDF.zoom=Razina zumiranja za prikaz web stranice. +HTMLToPDF.pageWidth=Širina stranice u centimetrima. (Prazno u Zadano) +HTMLToPDF.pageHeight=Visina stranice u centimetrima. (Prazno u Zadano) +HTMLToPDF.marginTop=Gornja margina stranice u milimetrima. (Prazno u Zadano) +HTMLToPDF.marginBottom=Donja margina stranice u milimetrima. (Prazno u Zadano) +HTMLToPDF.marginLeft=Lijeva margina stranice u milimetrima. (Prazno u Zadano) +HTMLToPDF.marginRight=Desna margina stranice u milimetrima. (Prazno u Zadano) +HTMLToPDF.printBackground=Prikaz pozadine web stranica. +HTMLToPDF.defaultHeader=Omogući zadano zaglavlje (Ime i broj stranice) +HTMLToPDF.cssMediaType=Promijenite vrstu CSS medija stranice. +HTMLToPDF.none=Nijedan +HTMLToPDF.print=Ispis +HTMLToPDF.screen=Zaslon + + +#AddStampRequest +AddStampRequest.header=Pečat PDF +AddStampRequest.title=Pečat PDF +AddStampRequest.stampType=Pečat Tip +AddStampRequest.stampText=Pečat Tekst +AddStampRequest.stampImage=Pečat Slika +AddStampRequest.alphabet=Abeceda +AddStampRequest.fontSize=Veličina fonta/slike +AddStampRequest.rotation=Rotacija +AddStampRequest.opacity=Neprozirnost +AddStampRequest.position=Položaj +AddStampRequest.overrideX=Poništi X koordinatu +AddStampRequest.overrideY=Poništi Y koordinatu +AddStampRequest.customMargin=Prilagođena margina +AddStampRequest.customColor=Prilagođena boja teksta +AddStampRequest.submit=Pošalji + + +#sanitizePDF +sanitizePDF.title=Sanirajte PDF +sanitizePDF.header=Sanirajte PDF datoteku +sanitizePDF.selectText.1=Ukloni JavaScript akcije +sanitizePDF.selectText.2=Ukloni ugrađene datoteke +sanitizePDF.selectText.3=Ukloni metapodatke +sanitizePDF.selectText.4=Ukloni poveznice +sanitizePDF.selectText.5=Uklonite fontove +sanitizePDF.submit=Sanirajte PDF + + +#addPageNumbers +addPageNumbers.title=Dodavanje brojeva stranica +addPageNumbers.header=Dodavanje brojeva stranica +addPageNumbers.selectText.1=Odaberi PDF datoteku: +addPageNumbers.selectText.2=Veličina margine +addPageNumbers.selectText.3=Položaj +addPageNumbers.selectText.4=Početni broj +addPageNumbers.selectText.5=Brojanje stranica +addPageNumbers.selectText.6=Prilagođeni tekst +addPageNumbers.customTextDesc=Prilagođeni tekst +addPageNumbers.numberPagesDesc=Koje stranice numerirati, zadano je 'sve', također prihvaća 1-5 ili 2,5,9 itd. +addPageNumbers.customNumberDesc=Zadano je {n}, također prihvaća 'Stranica {n} od {total}', 'Tekst-{n}', '{ime datoteke}-{n}' +addPageNumbers.submit=Dodaj brojeve stranica + + +#auto-rename +auto-rename.title=Automatski preimenuj +auto-rename.header=Automatski preimenuj PDF +auto-rename.submit=Automatski preimenuj + + +#adjustContrast +adjustContrast.title=Podesite kontrast +adjustContrast.header=Podesite kontrast +adjustContrast.contrast=Kontrast: +adjustContrast.brightness=Osvjetljenje: +adjustContrast.saturation=Zasićenje: +adjustContrast.download=Preuzmi + + +#crop +crop.title=Izreži +crop.header=Izreži sliku +crop.submit=Potvrdi + + +#autoSplitPDF +autoSplitPDF.title=Automatsko dijeljenje PDF-a +autoSplitPDF.header=Automatsko dijeljenje PDF-a +autoSplitPDF.description=Ispišite, umetnite, skenirajte, učitajte i dopustite nam da automatski odvojimo vaše dokumente. Nije potrebno ručno sortiranje. +autoSplitPDF.selectText.1=Ispišite nekoliko razdjelnih listova odozdo (crno-bijelo je u redu). +autoSplitPDF.selectText.2=Skenirajte sve dokumente odjednom umetanjem razdjelnog lista između njih. +autoSplitPDF.selectText.3=Prenesite jednu veliku skeniranu PDF datoteku i pustite našem PDF-u da se pobrine za ostalo. +autoSplitPDF.selectText.4=Razdjelne stranice automatski se otkrivaju i uklanjaju, jamčeći uredan konačni dokument. +autoSplitPDF.formPrompt=Pošaljite PDF koji sadrži naše razdjelnike stranica: +autoSplitPDF.duplexMode=Obostrani način rada (skeniranje s prednje i stražnje strane) +autoSplitPDF.dividerDownload1=Preuzmite 'Auto Splitter Divider (minimalan).pdf' +autoSplitPDF.dividerDownload2=Preuzmite 'Auto Splitter Divider (s uputama).pdf' +autoSplitPDF.submit=Potvrdi + + +#pipeline +pipeline.title=Tok rada + + +#pageLayout +pageLayout.title=Izgled s više stranica +pageLayout.header=Izgled s više stranica +pageLayout.pagesPerSheet=Broj stranica po listu: +pageLayout.addBorder=Dodajte granice dokumenta +pageLayout.submit=Potvrdi + + +#scalePages +scalePages.title=Podesite veličinu stranice +scalePages.header=Podesite veličinu stranice +scalePages.pageSize=Veličina stranice dokumenta. +scalePages.scaleFactor=Razina zumiranja (obrezivanje) stranice. +scalePages.submit=Potvrdi + + +#certSign +certSign.title=Potpisivanje Certifikatom +certSign.header=Potpišite PDF svojim certifikatom (Rad u tijeku) +certSign.selectPDF=Odaberite PDF datoteku za potpisivanje: +certSign.jksNote=Napomena: Ako vrsta vašeg certifikata nije navedena u nastavku, pretvorite ga u datoteku Java Keystore (.jks) pomoću alata naredbenog retka keytool. Zatim odaberite opciju .jks datoteke u nastavku. +certSign.selectKey=Odaberite svoju datoteku privatnog ključa (format PKCS#8, može biti .pem ili .der): +certSign.selectCert=Odaberite svoju datoteku certifikata (format X.509, može biti .pem ili .der): +certSign.selectP12=Odaberite svoju PKCS#12 datoteku pohrane ključeva (.p12 ili .pfx) (neobavezno, ako je dostupna, trebala bi sadržavati vaš privatni ključ i certifikat): +certSign.selectJKS=Odaberite datoteku Java Keystore (.jks ili .keystore): +certSign.certType=Tip certifikata +certSign.password=Unesite svoju lozinku za skladište ključeva ili privatni ključ (ako postoji): +certSign.showSig=Prikaži potpis +certSign.reason=Razlog +certSign.location=Mjesto +certSign.name=Ime +certSign.submit=Potpiši PDF + + +#removeBlanks +removeBlanks.title=Uklonite prazne stranice +removeBlanks.header=Uklonite prazne stranice +removeBlanks.threshold=Prag bjeline piksela: +removeBlanks.thresholdDesc=Prag za određivanje koliko bijeli piksel mora biti bijel da bi bio klasificiran kao 'bijeli'. 0 = crno, 255 čisto bijelo. +removeBlanks.whitePercent=Postotak bijele boje (%): +removeBlanks.whitePercentDesc=Postotak stranice koji mora biti "bijeli" piksel da bi se uklonio +removeBlanks.submit=Uklonite prazne stranice + + +#removeAnnotations +removeAnnotations.title=Ukloni komentare +removeAnnotations.header=Ukloni komentare +removeAnnotations.submit=Ukloni + + +#compare +compare.title=Uporedite +compare.header=Usporedite PDF-ove +compare.document.1=Dokument 1 +compare.document.2=Dokument 2 +compare.submit=Uporedi + +#BookToPDF +BookToPDF.title=Knjige i stripovi u PDF +BookToPDF.header=Knjiga u PDF +BookToPDF.credit=Koristi Calibre +BookToPDF.submit=Pretvori + +#PDFToBook +PDFToBook.title=PDF u Knjigu +PDFToBook.header=PDF u Knjigu +PDFToBook.selectText.1=Format +PDFToBook.credit=Koristi Calibre +PDFToBook.submit=Pretvori + +#sign +sign.title=Potpišite +sign.header=Potpišite PDF-ove +sign.upload=Učitaj sliku +sign.draw=Nacrtaj potpis +sign.text=Tekstualni unos +sign.clear=Obriši +sign.add=Dodaj + + +#repair +repair.title=Popravi +repair.header=Popravi PDF datoteku +repair.submit=Popravi + + +#flatten +flatten.title=Izravnati +flatten.header=Izravnati pdf +flatten.flattenOnlyForms=Izravnati samo obrasce +flatten.submit=Izravnati + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Kutni prag: +ScannerImageSplit.selectText.2=Postavlja minimalni apsolutni kut potreban za rotiranje slike (zadano: 10). +ScannerImageSplit.selectText.3=Tolerancija: +ScannerImageSplit.selectText.4=Određuje raspon varijacije boje oko procijenjene boje pozadine (zadano: 30). +ScannerImageSplit.selectText.5=Minimalna površina: +ScannerImageSplit.selectText.6=Postavlja minimalni prag površine za fotografiju (zadano: 10000). +ScannerImageSplit.selectText.7=Minimalna konturna površina: +ScannerImageSplit.selectText.8=Postavlja minimalni prag površine konture za fotografiju +ScannerImageSplit.selectText.9=Veličina obruba: +ScannerImageSplit.selectText.10=Postavlja veličinu obruba koji se dodaje i uklanja kako bi se spriječili bijeli obrubi u ispisu (zadano: 1). + + +#OCR +ocr.title=OCR / čišćenje skeniranja +ocr.header=Čišćenje skeniranja / OCR (optičko prepoznavanje znakova) +ocr.selectText.1=Odaberite jezike koji će se otkriti unutar PDF-a (navedeni su oni koji su trenutno otkriveni): +ocr.selectText.2=Izradite tekstualnu datoteku koja sadrži OCR tekst uz OCR-ovani PDF +ocr.selectText.3=Ispravne stranice su skenirane pod nagnutim kutom rotiranjem na mjesto +ocr.selectText.4=Očistite stranicu tako da je manja vjerojatnost da će OCR pronaći tekst u pozadinskoj buci. (Bez promjene izlaza) +ocr.selectText.5=Očisti stranicu tako da je manja vjerojatnost da će OCR pronaći tekst u pozadinskoj buci, održava čišćenje u izlazu. +ocr.selectText.6=Ignorira stranice koje na sebi imaju interaktivni tekst, samo OCR stranice koje su slike +ocr.selectText.7=Prinudni OCR, OCR će za svaku stranicu ukloniti sve izvorne elemente teksta +ocr.selectText.8=Normalno (Bit će pogreška ako PDF sadrži tekst) +ocr.selectText.9=Dodatne postavke +ocr.selectText.10=OCR način +ocr.selectText.11=Ukloni slike nakon OCR-a (Uklanja SVE slike, korisno samo ako je dio koraka konverzije) +ocr.selectText.12=Vrsta iscrtavanja (napredno) +ocr.help=Pročitajte ovu dokumentaciju o tome kako ovo koristiti za druge jezike i/ili koristiti ne u dockeru +ocr.credit=Ova usluga koristi OCRmyPDF i Tesseract za OCR. +ocr.submit=Obradi PDF sa OCR-om + + +#extractImages +extractImages.title=Ekstrakt slika +extractImages.header=Ekstrakt slika +extractImages.selectText=Odaberite format slike za pretvaranje izdvojenih slika +extractImages.submit=Izdvajanje + + +#File to PDF +fileToPDF.title=datoteku u PDF +fileToPDF.header=Pretvori bilo koji datoteku u PDF +fileToPDF.credit=Ova usluga koristi LibreOffice i Unoconv za pretvaranje datoteka. +fileToPDF.supportedFileTypesInfo=Podržane vrste datoteka +fileToPDF.supportedFileTypes=Podržane vrste datoteka trebale bi uključivati dolje, no za potpuni ažurirani popis podržanih formata pogledajte dokumentaciju LibreOfficea +fileToPDF.submit=Pretvori u PDF + + +#compress +compress.title=Komprimirajte +compress.header=Komprimirajte PDF +compress.credit=Ova usluga koristi Ghostscript za komprimiranje / optimizaciju PDF-a. +compress.selectText.1=Ručni režim - Od 1 do 4 +compress.selectText.2=Nivo optimizacije: +compress.selectText.3=4 (Užasno za tekstualne slike) +compress.selectText.4=Automatski način - Automatski prilagođava kvalitetu kako bi PDF dobio točnu veličinu +compress.selectText.5=Očekivana veličina PDF-a (npr. 25 MB, 10,8 MB, 25 KB) +compress.submit=Kompresiraj + + +#Add image +addImage.title=Dodaj sliku +addImage.header=Dodaj sliku u PDF +addImage.everyPage=Na svakoj stranici? +addImage.upload=Dodaj sliku +addImage.submit=Dodaj sliku + + +#merge +merge.title=Spajanje +merge.header=Spajanje više PDF-ova (2+) +merge.sortByName=Poredaj po imenu +merge.sortByDate=Poredaj po datumu +merge.submit=Spajanje + + +#pdfOrganiser +pdfOrganiser.title=Organizator stranica +pdfOrganiser.header=Organizator stranica u PDF-u +pdfOrganiser.submit=preuredite stranice +pdfOrganiser.mode=Način rada +pdfOrganiser.mode.1=Prilagođeni redoslijed stranica +pdfOrganiser.mode.2=Obrnuti redoslijed +pdfOrganiser.mode.3=Duplex sortiranje +pdfOrganiser.mode.4=Booklet sortiranje +pdfOrganiser.mode.5=Knjižica s bočnim ubodom +pdfOrganiser.mode.6=Par-Nepar Podjela +pdfOrganiser.mode.7=Ukloni Prvu +pdfOrganiser.mode.8=Ukloni Zadnju +pdfOrganiser.mode.9=Ukloni Prvu i Zadnju +pdfOrganiser.placeholder=(npr. 1,3,2 ili 4-8,2,10-12 ili 2n-1) + + +#multiTool +multiTool.title=PDF Višenamjenski alat +multiTool.header=PDF Višenamjenski alat +multiTool.uploadPrompts=Naziv datoteke + +#view pdf +viewPdf.title=Pogledaj +viewPdf.header=Pogledaj PDF + +#pageRemover +pageRemover.title=Uklanjanje stranica +pageRemover.header=Uklanjanje stranica iz PDF-a +pageRemover.pagesToDelete=Stranice za brisanje (Unesite listu brojeva stranica odvojenih zarezima) : +pageRemover.submit=Obriši stranice +pageRemover.placeholder=(npr. 1,2,6 ili 1-10,15-30) + + +#rotate +rotate.title=Zakreni PDF +rotate.header=Zakreni PDF +rotate.selectAngle=Odaberite kut rotacije (u umnošcima od 90 stupnjeva): +rotate.submit=Zakreni + + +#split-pdfs +split.title=Razdvajanje PDF-a +split.header=Razdvajanje PDF-a +split.desc.1=Brojevi koje odaberete su brojevi stranica na kojima želite napraviti podjelu +split.desc.2=s takvim odabirom 1,3,7-9 bi se dokument od 10 stranica podijelio u 6 zasebnih PDF-ova sa: +split.desc.3=Dokument #1: Stranica 1 +split.desc.4=Dokument #2: Stranice 2 i 3 +split.desc.5=Dokument #3: Stranice 4, 5, 6 i 7 +split.desc.6=Dokument #4: Stranica 8 +split.desc.7=Dokument #5: Stranica 9 +split.desc.8=Dokument #6: Stranice 10 +split.splitPages=Unesite stranice za razdvajanje: +split.submit=Razdvoji + + +#merge +imageToPDF.title=Slika u PDF +imageToPDF.header=Slika u PDF +imageToPDF.submit=Pretvori +imageToPDF.selectLabel=Opcije prilagodbe slike +imageToPDF.fillPage=Ispuni stranicu +imageToPDF.fitDocumentToImage=Prilagodi stranicu slici +imageToPDF.maintainAspectRatio=Sačuvaj omjere slike +imageToPDF.selectText.2=Automatsko zaktretanje PDF-a +imageToPDF.selectText.3=Logika više datoteka (omogućeno samo ako radite s više slika) +imageToPDF.selectText.4=Spojite u jedan PDF +imageToPDF.selectText.5=Pretvori u zasebne PDF-ove + + +#pdfToImage +pdfToImage.title=PDF u sliku +pdfToImage.header=PDF u sliku +pdfToImage.selectText=Format slike +pdfToImage.singleOrMultiple=Vrsta rezultata Stranica u sliku +pdfToImage.single=Jedna velika slika koja sadrži sve stranice +pdfToImage.multi=Više slika, jedna slika po stranici +pdfToImage.colorType=Tip boje +pdfToImage.color=Boja +pdfToImage.grey=Sivi tonovi +pdfToImage.blackwhite=Crno-bijelo (mogu se izgubiti podaci!) +pdfToImage.submit=Pretvori + + +#addPassword +addPassword.title=Dodajte zaporku +addPassword.header=Dodajte zaporku (kriptiraj) +addPassword.selectText.1=Odaberite PDF za šifriranje +addPassword.selectText.2=Korisnička Zaporka +addPassword.selectText.3=Dužina ključa šifriranja +addPassword.selectText.4=Više vrijednosti su jače, ali niže vrijednosti imaju bolju kompatibilnost. +addPassword.selectText.5=Dopuštenja za postavljanje (preporučuje se korištenje uz vlasničku lozinku) +addPassword.selectText.6=Spriječiti sastavljanje dokumenta +addPassword.selectText.7=Spriječite izdvajanje sadržaja +addPassword.selectText.8=Spriječite izvlačenje radi pristupačnosti +addPassword.selectText.9=Spriječiti ispunjavanje obrasca +addPassword.selectText.10=Spriječiti izmjene +addPassword.selectText.11=Spriječi modificiranje napomena +addPassword.selectText.12=Spriječiti ispis +addPassword.selectText.13=Spriječite ispis različitih formata +addPassword.selectText.14=Zaporka vlasnika +addPassword.selectText.15=Ograničava što se može učiniti s dokumentom nakon što se otvori (ne podržavaju svi čitači) +addPassword.selectText.16=Ograničava otvaranje samog dokumenta +addPassword.submit=Šifriraj + + +#watermark +watermark.title=Dodaj vodeni žig +watermark.header=Dodaj vodeni žig +watermark.selectText.1=Izaberite PDF za dodavanje vodenog žiga: +watermark.selectText.2=Tekst vodenog žiga: +watermark.selectText.3=Veličina fonta: +watermark.selectText.4=Rotacija (0-360): +watermark.selectText.5=Širina razmaka (Razmak između svakog vodenog žiga vodoravno): +watermark.selectText.6=Visina razmaka (Razmak između svakog vodenog žiga okomito): +watermark.selectText.7=Neprozirnost (0% - 100%): +watermark.selectText.8=Vrsta vodenog žiga: +watermark.selectText.9=Slika vodenog žiga: +watermark.submit=Dodaj vodeni žig +watermark.type.1=Tekst +watermark.type.2=Slika + + +#Change permissions +permissions.title=Promjena dopuštenja +permissions.header=Promjena dopuštenja +permissions.warning=Upozorenje: da ove dozvole budu nepromjenjive, preporuča se da ih postavite lozinkom putem stranice za dodavanje lozinke +permissions.selectText.1=Odaberite PDF za promjenu dopuštenja +permissions.selectText.2=Dopuštenja za postavljanje +permissions.selectText.3=Spriječiti sastavljanje dokumenta +permissions.selectText.4=Spriječiti izdvajanje sadržaja +permissions.selectText.5=Spriječite izvlačenje radi pristupačnosti +permissions.selectText.6=Spriječiti ispunjavanje obrasca +permissions.selectText.7=Spriječiti izmjene +permissions.selectText.8=Spriječi modificiranje napomena +permissions.selectText.9=Spriječiti ispis +permissions.selectText.10=Spriječite ispis različitih formata +permissions.submit=Promijeniti + + +#remove password +removePassword.title=Ukloni zaporku +removePassword.header=Ukloni zaporku (dekriptiraj) +removePassword.selectText.1=Odaberite PDF za dekriptiranje +removePassword.selectText.2=Zaporka +removePassword.submit=Ukloniti + + +#changeMetadata +changeMetadata.title=Promjena metapodataka +changeMetadata.header=Promjena metapodataka +changeMetadata.selectText.1=Uredite varijable koje želite promijeniti +changeMetadata.selectText.2=Izbriši sve metapodatke +changeMetadata.selectText.3=Prikaži prilagođene metapodatke: +changeMetadata.author=Autor: +changeMetadata.creationDate=Datum stvaranja (gggg/MM/dd HH:mm:ss): +changeMetadata.creator=Kreator: +changeMetadata.keywords=Ključne riječi: +changeMetadata.modDate=Datum izmjene (gggg/MM/dd HH:mm:ss): +changeMetadata.producer=Proizvođač: +changeMetadata.subject=Predmet: +changeMetadata.trapped=Zarobljen: +changeMetadata.selectText.4=Ostali metapodaci: +changeMetadata.selectText.5=Dodaj prilagođeni unos metapodataka +changeMetadata.submit=Promijeniti + + +#pdfToPDFA +pdfToPDFA.title=PDF u PDF/A +pdfToPDFA.header=PDF u PDF/A +pdfToPDFA.credit=Ova usluga koristi OCRmyPDF za PDF/A pretvorbu +pdfToPDFA.submit=Pretvoriti +pdfToPDFA.tip=Trenutno ne radi za više unosa odjednom +pdfToPDFA.outputFormat=Izlazni format + + +#PDFToWord +PDFToWord.title=PDF u Word +PDFToWord.header=PDF u Word +PDFToWord.selectText.1=Format izlazne datoteke +PDFToWord.credit=Ova usluga koristi LibreOffice za konverziju datoteka. +PDFToWord.submit=Pretvoriti + + +#PDFToPresentation +PDFToPresentation.title=PDF u Prezentaciju +PDFToPresentation.header=PDF u Prezentaciju +PDFToPresentation.selectText.1=Format izlazne datoteke +PDFToPresentation.credit=Ova usluga koristi LibreOffice za konverziju datoteka. +PDFToPresentation.submit=Pretvoriti + + +#PDFToText +PDFToText.title=PDF u RTF (Tekst) +PDFToText.header=PDF u RTF (Tekst) +PDFToText.selectText.1=Format izlazne datoteke +PDFToText.credit=Ova usluga koristi LibreOffice za konverziju datoteka. +PDFToText.submit=Pretvoriti + + +#PDFToHTML +PDFToHTML.title=PDF u HTML +PDFToHTML.header=PDF u HTML +PDFToHTML.credit=Ova usluga koristi pdftohtml za konverziju datoteka. +PDFToHTML.submit=Pretvoriti + + +#PDFToXML +PDFToXML.title=PDF u XML +PDFToXML.header=PDF u XML +PDFToXML.credit=Ova usluga koristi LibreOffice za konverziju datoteka. +PDFToXML.submit=Pretvoriti + +#PDFToCSV +PDFToCSV.title=PDF u CSV +PDFToCSV.header=PDF u CSV +PDFToCSV.prompt=Odaberite stranicu za izdvajanje tablice +PDFToCSV.submit=Izvuci + +#split-by-size-or-count +split-by-size-or-count.title=Podijeli PDF prema veličini ili broju +split-by-size-or-count.header=Podijeli PDF prema veličini ili broju +split-by-size-or-count.type.label=Odaberite vrstu dijeljenja +split-by-size-or-count.type.size=Po veličini +split-by-size-or-count.type.pageCount=Po broju stranica +split-by-size-or-count.type.docCount=Po broju dokumenata +split-by-size-or-count.value.label=Unesite vrijednost +split-by-size-or-count.value.placeholder=Unesite veličinu (npr. 2MB ili 3KB) ili broj (npr. 5) +split-by-size-or-count.submit=Potvrdite + + +#overlay-pdfs +overlay-pdfs.header=Prekrivanje PDF datoteka +overlay-pdfs.baseFile.label=Odaberite Osnovnu PDF datoteka +overlay-pdfs.overlayFiles.label=Izaberite PDF datoteke za prekrivanje +overlay-pdfs.mode.label=Odaberite način preklapanja +overlay-pdfs.mode.sequential=Sekvencijalno preklapanje +overlay-pdfs.mode.interleaved=Isprepleteni sloj +overlay-pdfs.mode.fixedRepeat=Popravljeni sloj ponavljanja +overlay-pdfs.counts.label=Brojevi preklapanja (za način fiksnog ponavljanja) +overlay-pdfs.counts.placeholder=Unesite brojeve odvojene zarezima (npr. 2,3,1) +overlay-pdfs.position.label=Odaberite položaj preklapanja +overlay-pdfs.position.foreground=Prednji plan +overlay-pdfs.position.background=Pozadina +overlay-pdfs.submit=Potvrditi + + +#split-by-sections +split-by-sections.title=Podijeli PDF po odjeljcima +split-by-sections.header=Podijeli PDF u odjeljke +split-by-sections.horizontal.label=Vodoravne podjele +split-by-sections.vertical.label=Okomite podjele +split-by-sections.horizontal.placeholder=Unesite broj vodoravnih podjela +split-by-sections.vertical.placeholder=Unesite broj okomitih podjela +split-by-sections.submit=Razdvojiti PDF +split-by-sections.merge=Spoji u jedan PDF + + +#printFile +printFile.title=Ispis datoteke +printFile.header=Ispis datoteke na pisač +printFile.selectText.1=Odaberite Datoteku za ispis +printFile.selectText.2=Unesite naziv pisača +printFile.submit=Ispis + + +#licenses +licenses.nav=Licence +licenses.title=Licence treće strane +licenses.header=Licence treće strane +licenses.module=Modul +licenses.version=Verzija +licenses.license=Licenca + + +#error +error.sorry=Oprostite zbog problema! +error.needHelp=Trebate pomoć / Pronašli ste problem? +error.contactTip=Ako i dalje imate problema, ne ustručavajte se obratiti nam se za pomoć. Tiket možete poslati na našoj GitHub stranici ili nas kontaktirati putem Discorda: +error.404.head=404 - Stranica nije pronađena | Ups, spotaknuli smo se u kodu! +error.404.1=Čini se da ne možemo pronaći stranicu koju tražite. +error.404.2=Nešto je pošlo po zlu +error.github=Pošaljite ticket na GitHub +error.showStack=Prikaži Stack Trace +error.copyStack=Kopiraj Stack Trace +error.githubSubmit=GitHub - Pošaljite ticket +error.discordSubmit=Discord - Pošalji objavu podrške + diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 0f460d69..4bef0665 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -332,6 +332,10 @@ home.certSign.title=Aláírás Tanúsítvánnyal home.certSign.desc=PDF aláírása tanúsítvánnyal/kulccsal (PEM/P12) certSign.tags=hitelesítés,PEM,P12,hivatalos,segitít,álca +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Több oldal elrendezése home.pageLayout.desc=Több oldal egyesítése egy PDF dokumentumban egyetlen oldallá pageLayout.tags=egyesítés,kompozit,egy oldal,megszervez @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Letöltés #crop crop.title=Körülvágás -crop.header=Kép körülvégésa +crop.header=Crop PDF crop.submit=Elküldés @@ -654,6 +659,13 @@ certSign.name=Név certSign.submit=PDF aláírása +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Üres oldalak eltávolítása removeBlanks.header=Üres oldalak eltávolítása diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index c978f544..b078892d 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -332,6 +332,10 @@ home.certSign.title=Tanda tangani dengan Sertifikat home.certSign.desc=Menandatangani PDF dengan Certificate/Key (PEM/P12) certSign.tags=mengotentikasi, PEM, P12, resmi, mengenkripsi +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Tata Letak Multi-Halaman home.pageLayout.desc=Menggabungkan beberapa halaman dokumen PDF menjadi satu halaman pageLayout.tags=menggabungkan, komposit, tampilan tunggal, mengatur @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Unduh #crop crop.title=Pangkas -crop.header=Pangkas Gambar +crop.header=Pangkas PDF crop.submit=Kirim @@ -654,6 +659,13 @@ certSign.name=Nama certSign.submit=Tanda tangani PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Hapus Halaman Kosong removeBlanks.header=Remove Blank Pages diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 92c13e6e..4ed322ba 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -332,6 +332,10 @@ home.certSign.title=Firma con certificato home.certSign.desc=Firma un PDF con un certificato/chiave (PEM/P12) certSign.tags=autenticare,PEM,P12,ufficiale,crittografare +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Layout multipagina home.pageLayout.desc=Unisci più pagine di un documento PDF in un'unica pagina pageLayout.tags=unire,comporre,visualizzazione singola,organizzare @@ -417,7 +421,7 @@ autoSizeSplitPDF.tags=pdf,diviso,documento,organizzazione home.overlay-pdfs.title=Sovrapposizione di PDF home.overlay-pdfs.desc=Sovrappone i PDF sopra un altro PDF -overlay-pdfs.tags=Svrapponi +overlay-pdfs.tags=Sovrapponi home.split-by-sections.title=Dividi PDF per sezioni home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Risposta relativa alle informazioni utente n login.oauth2invalidRequest=Richiesta non valida login.oauth2AccessDenied=Accesso negato login.oauth2InvalidTokenResponse=Risposta token non valida +login.oauth2InvalidIdToken=Id Token non valido #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Ritaglia -crop.header=Ritaglia l'immagine +crop.header=Ritaglia PDF crop.submit=Invia @@ -654,6 +659,13 @@ certSign.name=Nome certSign.submit=Firma PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Rimuovi spazi vuoti removeBlanks.header=Rimuovi pagine vuote diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index a835a71e..700363c8 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -332,6 +332,10 @@ home.certSign.title=証明書による署名 home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=マルチページレイアウト home.pageLayout.desc=PDFの複数のページを1ページに結合します。 pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=ダウンロード #crop crop.title=切り抜き -crop.header=画像の切り抜き +crop.header=PDFのトリミング crop.submit=送信 @@ -654,6 +659,13 @@ certSign.name=名前 certSign.submit=PDFに署名 +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=空白の削除 removeBlanks.header=空白ページの削除 diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index a4b09c3c..94045ef3 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -332,6 +332,10 @@ home.certSign.title=인증서로 서명 home.certSign.desc=PDF 문서에 인증서 또는 키로 서명합니다. (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=다중 페이지 레이아웃 home.pageLayout.desc=PDF 문서의 여러 페이지를 한 페이지로 합칩니다. pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=다운로드 #crop crop.title=잘라내기 -crop.header=잘라내기 +crop.header=PDF 잘라내기 crop.submit=확인 @@ -654,6 +659,13 @@ certSign.name=이름 certSign.submit=PDF 서명 +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=빈 페이지 제거 removeBlanks.header=빈 페이지 제거 diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index cd1674de..bd9abc2c 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -332,6 +332,10 @@ home.certSign.title=Ondertekenen met certificaat home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12) certSign.tags=authenticeren,PEM,P12,officieel,versleutelen +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-pagina indeling home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina pageLayout.tags=samenvoegen,composiet,enkel-zicht,organiseren @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Downloaden #crop crop.title=Bijwerken -crop.header=Afbeelding bijwerken +crop.header=PDF bijsnijden crop.submit=Indienen @@ -654,6 +659,13 @@ certSign.name=Naam certSign.submit=PDF ondertekenen +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Verwijder blanco's removeBlanks.header=Verwijder lege pagina's diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index c82910a0..9eb70812 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -332,6 +332,10 @@ home.certSign.title=Podpisz certyfikatem home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Układ wielu stron home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Nazwa certSign.submit=Podpisz PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Usuń puste removeBlanks.header=Usuń puste strony diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 9a859f4e..e95eff74 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -332,6 +332,10 @@ home.certSign.title=Assinar com Certificado home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12) certSign.tags=autenticar,PEM,P12,oficial,criptografar +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Layout de Múltiplas Páginas home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página pageLayout.tags=mesclar,composto,vista-única,organizar @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Cortar -crop.header=Cortar Imagem +crop.header=Cortar PDF crop.submit=Enviar @@ -654,6 +659,13 @@ certSign.name=Nome certSign.submit=Assinar PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Remover Páginas em Branco removeBlanks.header=Remover Páginas em Branco diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 16b3bf81..99751ec7 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -332,6 +332,10 @@ home.certSign.title=Assinar com Certificado home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12) certSign.tags=autenticar,PEM,P12,oficial,criptografar +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Layout de Múltiplas Páginas home.pageLayout.desc=Juntar várias páginas de um documento PDF em uma única página pageLayout.tags=juntar,composto,vista-única,organizar @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Cortar -crop.header=Cortar Imagem +crop.header=Cortar PDF crop.submit=Enviar @@ -654,6 +659,13 @@ certSign.name=Nome certSign.submit=Assinar PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Remover Páginas em Branco removeBlanks.header=Remover Páginas em Branco diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 97a672b5..11d67688 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -332,6 +332,10 @@ home.certSign.title=Semnare cu certificat home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Numele certSign.submit=Semnează PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Elimină pagini goale removeBlanks.header=Elimină pagini goale diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 58a5a21b..40d882e9 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -332,6 +332,10 @@ home.certSign.title=Подписать сертификатом home.certSign.desc=Подписать PDF сертификатом/ключом (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Объединить страницы home.pageLayout.desc=Объединение нескольких страниц документа PDF в одну страницу pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Скачать #crop crop.title=Обрезать -crop.header=Обрезать изображение +crop.header=Обрезать PDF-файл crop.submit=Отправить @@ -654,6 +659,13 @@ certSign.name=Имя certSign.submit=Подписать PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Удалить Пустые removeBlanks.header=Удалить Пустые Страницы diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 959bf0ef..3066982d 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -332,6 +332,10 @@ home.certSign.title=Podpísať s certifikátom home.certSign.desc=Podpísať PDF s certifikátom/kľúčom (PEM/P12) certSign.tags=autentifikovať,PEM,P12,oficiálne,šifrovať +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Viacstranové usporiadanie home.pageLayout.desc=Zlúčte viacero stránok PDF dokumentu do jednej stránky pageLayout.tags=zlúčiť,zjednotiť,jednostranový pohľad,organizovať @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Stiahnuť #crop crop.title=Orezať -crop.header=Orezať obrázok +crop.header=Orezať PDF crop.submit=Odoslať @@ -654,6 +659,13 @@ certSign.name=Meno certSign.submit=Podpísať PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Odstrániť prázdne stránky removeBlanks.header=Odstrániť prázdne stránky diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index ae4f1386..7939f5a9 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -332,6 +332,10 @@ home.certSign.title=Potpis sa sertifikatom home.certSign.desc=Potpisuje PDF sa sertifikatom/ključem (PEM/P12) certSign.tags=autentifikacija,PEM,P12,zvanično,šifrovanje +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Višestruki prikaz stranica home.pageLayout.desc=Spaja više stranica PDF dokumenta u jednu stranicu pageLayout.tags=spajanje,kompozit,pojedinačan-prikaz,organizacija @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Preuzmi #crop crop.title=Iseci -crop.header=Iseci Sliku +crop.header=Skraćivanje PDF-a crop.submit=Potvrdi @@ -654,6 +659,13 @@ certSign.name=Ime certSign.submit=Potpiši PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Ukloni prazne stranice removeBlanks.header=Ukloni prazne stranice diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index e8a9a955..f1a04de0 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -332,6 +332,10 @@ home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Download #crop crop.title=Crop -crop.header=Crop Image +crop.header=Crop PDF crop.submit=Submit @@ -654,6 +659,13 @@ certSign.name=Namn certSign.submit=Skriv under PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Ta bort tomrum removeBlanks.header=Ta bort tomma sidor diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index f27437bb..2999eec3 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -332,6 +332,10 @@ home.certSign.title=Sertifika ile İmzala home.certSign.desc=Bir PDF'i Sertifika/Anahtar (PEM/P12) ile imzalar certSign.tags=doğrula,PEM,P12,resmi,şifrele +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Çoklu-Sayfa Düzeni home.pageLayout.desc=Bir PDF belgesinin çoklu sayfalarını tek bir sayfada birleştirir pageLayout.tags=birleştir,kompozit,tek-görünüm,düzenle @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=İndir #crop crop.title=Kırp -crop.header=Resmi Kırp +crop.header=PDF'i Kırp crop.submit=Gönder @@ -654,6 +659,13 @@ certSign.name=İsim certSign.submit=PDF'i İmzala +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Boşları Kaldır removeBlanks.header=Boş Sayfaları Kaldır diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 60b6399a..9fb68d2d 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -332,6 +332,10 @@ home.certSign.title=Підписати сертифікатом home.certSign.desc=Підписати PDF сертифікатом/ключем (PEM/P12) certSign.tags=authenticate,PEM,P12,official,encrypt +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=Об'єднати сторінки home.pageLayout.desc=Об'єднання кількох сторінок документа PDF в одну сторінку pageLayout.tags=merge,composite,single-view,organize @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=Завантажити #crop crop.title=Обрізати -crop.header=Обрізати зображення +crop.header=Обрізати PDF-файл crop.submit=Надіслати @@ -654,6 +659,13 @@ certSign.name=Ім'я certSign.submit=Підписати PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=Видалити порожні removeBlanks.header=Видалити порожні сторінки diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index b9c60a4c..e165d91b 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -332,6 +332,10 @@ home.certSign.title=使用证书签署 home.certSign.desc=使用证书/密钥(PEM/P12)对PDF进行签署 certSign.tags=身份验证、PEM、P12、官方、加密 +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=多页布局 home.pageLayout.desc=将PDF文档的多个页面合并成一页 pageLayout.tags=合并、组合、单视图、整理 @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=下载 #crop crop.title=裁剪 -crop.header=裁剪图像 +crop.header=裁剪PDF crop.submit=提交 @@ -654,6 +659,13 @@ certSign.name=名称 certSign.submit=签署 PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=删除空白 removeBlanks.header=删除空白页 diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 51607d5d..59f606d1 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -332,6 +332,10 @@ home.certSign.title=使用憑證簽章 home.certSign.desc=使用憑證/金鑰(PEM/P12)簽章 PDF certSign.tags=驗證,PEM,P12,官方,加密 +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + home.pageLayout.title=多頁面版面配置 home.pageLayout.desc=將 PDF 檔案的多個頁面合併到單一頁面 pageLayout.tags=合併,複合,單一檢視,組織 @@ -457,6 +461,7 @@ login.oauth2InvalidUserInfoResponse=Invalid User Info Response login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token #auto-redact @@ -597,7 +602,7 @@ adjustContrast.download=下載 #crop crop.title=裁剪 -crop.header=裁剪影像 +crop.header=裁剪 PDF crop.submit=送出 @@ -654,6 +659,13 @@ certSign.name=名稱 certSign.submit=簽章 PDF +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + #removeBlanks removeBlanks.title=移除空白頁面 removeBlanks.header=移除空白頁面 diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 97025001..472d6528 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -343,6 +343,13 @@ "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" }, + { + "moduleName": "jakarta.servlet:jakarta.servlet-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "6.0.0", + "moduleLicense": "GPL2 w/ CPE", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, { "moduleName": "jakarta.transaction:jakarta.transaction-api", "moduleUrl": "https://projects.eclipse.org/projects/ee4j.jta", @@ -357,6 +364,20 @@ "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" }, + { + "moduleName": "jakarta.websocket:jakarta.websocket-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.1.1", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.websocket:jakarta.websocket-client-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.1.1", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, { "moduleName": "jakarta.xml.bind:jakarta.xml.bind-api", "moduleUrl": "https://www.eclipse.org", @@ -452,13 +473,6 @@ "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, - { - "moduleName": "org.apache.tomcat.embed:tomcat-embed-core", - "moduleUrl": "https://tomcat.apache.org/", - "moduleVersion": "10.1.19", - "moduleLicense": "Eclipse Public License - v 2.0", - "moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt" - }, { "moduleName": "org.apache.tomcat.embed:tomcat-embed-el", "moduleUrl": "https://tomcat.apache.org/", @@ -466,13 +480,6 @@ "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, - { - "moduleName": "org.apache.tomcat.embed:tomcat-embed-websocket", - "moduleUrl": "https://tomcat.apache.org/", - "moduleVersion": "10.1.19", - "moduleLicense": "Apache License, Version 2.0", - "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" - }, { "moduleName": "org.apache.xmlgraphics:batik-all", "moduleVersion": "1.17", @@ -540,6 +547,188 @@ "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" }, + { + "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-alpn-client", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-client", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-http", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-io", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-jndi", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-plus", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-security", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-server", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-session", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-util", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, + { + "moduleName": "org.eclipse.jetty:jetty-xml", + "moduleUrl": "https://eclipse.dev/jetty/", + "moduleVersion": "12.0.7", + "moduleLicense": "Eclipse Public License - Version 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" + }, { "moduleName": "org.glassfish.jaxb:jaxb-core", "moduleUrl": "https://www.eclipse.org", @@ -599,7 +788,21 @@ { "moduleName": "org.ow2.asm:asm", "moduleUrl": "http://asm.ow2.org", - "moduleVersion": "9.3", + "moduleVersion": "9.6", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.ow2.asm:asm-commons", + "moduleUrl": "http://asm.ow2.org", + "moduleVersion": "9.6", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.ow2.asm:asm-tree", + "moduleUrl": "http://asm.ow2.org", + "moduleVersion": "9.6", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -705,6 +908,13 @@ "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-jetty", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.4", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, { "moduleName": "org.springframework.boot:spring-boot-starter-json", "moduleUrl": "https://spring.io/projects/spring-boot", @@ -740,13 +950,6 @@ "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, - { - "moduleName": "org.springframework.boot:spring-boot-starter-tomcat", - "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.2.4", - "moduleLicense": "Apache License, Version 2.0", - "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" - }, { "moduleName": "org.springframework.boot:spring-boot-starter-web", "moduleUrl": "https://spring.io/projects/spring-boot", diff --git a/src/main/resources/static/css/home.css b/src/main/resources/static/css/home.css index a6f89ed0..07a1350f 100644 --- a/src/main/resources/static/css/home.css +++ b/src/main/resources/static/css/home.css @@ -5,7 +5,7 @@ font-size: 16px; margin-bottom: 2rem; padding: 0.75rem 3.5rem; - border: 0.1rem solid var(--md-sys-color-outline-variant); + border: 1px solid var(--md-sys-color-outline-variant); border-radius: 3rem; outline-color: var(--md-sys-color-outline-variant); } @@ -19,12 +19,12 @@ .features-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 3fr)); - gap: 25px 30px; + gap: 30px 30px; } .feature-card { - border: 2px solid var(--md-sys-color-surface-5); - border-radius: 2rem; + border: 1px solid var(--md-sys-color-surface-5); + border-radius: 1.75rem; padding: 1.25rem; display: flex; flex-direction: column; @@ -47,13 +47,13 @@ } .feature-card .card-text { - flex: 1; + font-size: .875rem; } .feature-card:hover { cursor: pointer; - transform: scale(1.1); - box-shadow: var(--md-sys-elevation-3); + transform: scale(1.08); + box-shadow: var(--md-sys-elevation-2); } .card-title.text-primary { @@ -79,11 +79,12 @@ } #tool-text { - margin: 0.5rem 0.5rem 0rem; + margin: 0.0rem 0 0 1.25rem; } .card-title { margin-bottom: 1rem; + font-size: 1.1rem; } /* Only show the favorite icons when the parent card is being hovered over */ diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index ddeab5aa..a8845f29 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -75,7 +75,7 @@ } .icon-text { - margin-left: 4px; + margin-left: 8px; margin-right: 4px; display: inline-flex; flex-direction: column; diff --git a/src/main/resources/static/css/theme/componentes.css b/src/main/resources/static/css/theme/componentes.css index d767d59d..7e3f744e 100644 --- a/src/main/resources/static/css/theme/componentes.css +++ b/src/main/resources/static/css/theme/componentes.css @@ -187,8 +187,8 @@ td { .feature-card .nav-icon { vertical-align: middle; font-size: 2rem !important; - padding: 0.5rem; - border-radius: 1.25rem; + padding: 0.75rem; + border-radius: 0.9rem; color: var(--md-sys-color-surface); } @@ -798,6 +798,8 @@ textarea.form-control { } .nav-link { + display: flex; + align-items: center; transition: none !important; padding: 0.5rem 1rem !important; border: 1px transparent; diff --git a/src/main/resources/static/css/theme/font.css b/src/main/resources/static/css/theme/font.css index dfb1c1b8..f245dd32 100644 --- a/src/main/resources/static/css/theme/font.css +++ b/src/main/resources/static/css/theme/font.css @@ -7,7 +7,7 @@ .material-symbols-rounded { font-family: 'Material Symbols Rounded'; - font-weight: normal; + font-weight: 300; font-style: normal; font-size: 24px; line-height: 1; diff --git a/src/main/resources/static/css/theme/theme.css b/src/main/resources/static/css/theme/theme.css index 3c9565d1..4f7be33e 100644 --- a/src/main/resources/static/css/theme/theme.css +++ b/src/main/resources/static/css/theme/theme.css @@ -30,5 +30,5 @@ } .no-fill { - font-variation-settings: var(--md-sys-icon-fill-0); + /* font-variation-settings: var(--md-sys-icon-fill-0); */ } \ No newline at end of file diff --git a/src/main/resources/static/images/flags/hr.svg b/src/main/resources/static/images/flags/hr.svg new file mode 100644 index 00000000..44fed27d --- /dev/null +++ b/src/main/resources/static/images/flags/hr.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/js/multitool/PdfContainer.js b/src/main/resources/static/js/multitool/PdfContainer.js index bb76d409..5daaf8ca 100644 --- a/src/main/resources/static/js/multitool/PdfContainer.js +++ b/src/main/resources/static/js/multitool/PdfContainer.js @@ -138,7 +138,7 @@ class PdfContainer { } async toRenderer(objectUrl) { - pdfjsLib.GlobalWorkerOptions.workerSrc = "pdfjs/pdf.worker.js"; + pdfjsLib.GlobalWorkerOptions.workerSrc = "./pdfjs/pdf.worker.mjs"; const pdf = await pdfjsLib.getDocument(objectUrl).promise; return { document: pdf, diff --git a/src/main/resources/static/pdfjs/cmaps/LICENSE b/src/main/resources/static/pdfjs/cmaps/LICENSE index 79dd9f77..b1ad168a 100644 --- a/src/main/resources/static/pdfjs/cmaps/LICENSE +++ b/src/main/resources/static/pdfjs/cmaps/LICENSE @@ -13,12 +13,12 @@ %%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: 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: written permission. %%Copyright: %%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND %%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, diff --git a/src/main/resources/static/pdfjs/css/viewer.css b/src/main/resources/static/pdfjs/css/viewer.css index ab0ad406..22d8080d 100644 --- a/src/main/resources/static/pdfjs/css/viewer.css +++ b/src/main/resources/static/pdfjs/css/viewer.css @@ -13,2536 +13,3194 @@ * limitations under the License. */ -:root { - --highlight-bg-color: rgba(180, 0, 170, 1); - --highlight-selected-bg-color: rgba(0, 100, 0, 1); +.textLayer{ + position:absolute; + text-align:initial; + inset:0; + overflow:clip; + opacity:1; + 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; + caret-color:CanvasText; + z-index:0; } -@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%); +.textLayer.highlighting{ + touch-action:none; } - .annotationLayer .textWidgetAnnotation :is(input, textarea):required, - .annotationLayer .choiceWidgetAnnotation select:required, - .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required { - outline: 1.5px solid selectedItem; +.textLayer :is(span, br){ + color:transparent; + position:absolute; + white-space:pre; + cursor:text; + transform-origin:0% 0%; } - .annotationLayer .linkAnnotation:hover { - -webkit-backdrop-filter: var(--hcm-highligh-filter); - backdrop-filter: var(--hcm-highligh-filter); +.textLayer > :not(.markedContent), + .textLayer .markedContent span:not(.markedContent){ + z-index:1; } - .annotationLayer .linkAnnotation > a:hover { - opacity: 0 !important; - background: none !important; - box-shadow: none; +.textLayer span.markedContent{ + top:0; + height:0; } - .annotationLayer .popupAnnotation .popup { - outline: calc(1.5px * var(--scale-factor)) solid CanvasText !important; - background-color: ButtonFace !important; - color: ButtonText !important; +.textLayer .highlight{ + --highlight-bg-color:rgb(180 0 170 / 0.25); + --highlight-selected-bg-color:rgb(0 100 0 / 0.25); + --highlight-backdrop-filter:none; + --highlight-selected-backdrop-filter:none; + + margin:-1px; + padding:1px; + background-color:var(--highlight-bg-color); + -webkit-backdrop-filter:var(--highlight-backdrop-filter); + backdrop-filter:var(--highlight-backdrop-filter); + border-radius:4px; } - .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; +@media screen and (forced-colors: active){ + +.textLayer .highlight{ + --highlight-bg-color:transparent; + --highlight-selected-bg-color:transparent; + --highlight-backdrop-filter:var(--hcm-highlight-filter); + --highlight-selected-backdrop-filter:var( + --hcm-highlight-selected-filter + ); + } + } + +.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); + -webkit-backdrop-filter:var(--highlight-selected-backdrop-filter); + backdrop-filter:var(--highlight-selected-backdrop-filter); + } + +.textLayer ::-moz-selection{ + background:rgba(0 0 255 / 0.25); + background:color-mix(in srgb, AccentColor, transparent 75%); } - .annotationLayer .popupAnnotation.focused .popup { - outline: calc(3px * var(--scale-factor)) solid Highlight !important; +.textLayer ::selection{ + background:rgba(0 0 255 / 0.25); + background:color-mix(in srgb, AccentColor, transparent 75%); } + +.textLayer br::-moz-selection{ + background:transparent; + } + +.textLayer br::selection{ + background:transparent; + } + +.textLayer .endOfContent{ + display:block; + position:absolute; + inset:100% 0 0; + z-index:0; + cursor:default; + -webkit-user-select:none; + -moz-user-select:none; + user-select:none; + } + +.textLayer .endOfContent.active{ + top:0; + } + +.annotationLayer{ + --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; + + position:absolute; + top:0; + left:0; + pointer-events:none; + transform-origin:0 0; } -.annotationLayer { - position: absolute; - top: 0; - left: 0; - pointer-events: none; - transform-origin: 0 0; - z-index: 3; +@media screen and (forced-colors: active){ + +.annotationLayer{ + --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; } -.annotationLayer[data-main-rotation="90"] .norotate { - transform: rotate(270deg) translateX(-100%); -} + .annotationLayer .textWidgetAnnotation :is(input, textarea):required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required{ + outline:1.5px solid selectedItem; + } -.annotationLayer[data-main-rotation="180"] .norotate { - transform: rotate(180deg) translate(-100%, -100%); -} + .annotationLayer .linkAnnotation{ + outline:var(--link-outline); + } -.annotationLayer[data-main-rotation="270"] .norotate { - transform: rotate(90deg) translateY(-100%); -} + .annotationLayer .linkAnnotation:hover{ + -webkit-backdrop-filter:var(--hcm-highlight-filter); + backdrop-filter:var(--hcm-highlight-filter); + } -.annotationLayer canvas { - position: absolute; - width: 100%; - height: 100%; - pointer-events: none; -} + .annotationLayer .linkAnnotation > a:hover{ + opacity:0 !important; + background:none !important; + box-shadow:none; + } -.annotationLayer section { - position: absolute; - text-align: initial; - pointer-events: auto; - box-sizing: border-box; - transform-origin: 0 0; -} + .annotationLayer .popupAnnotation .popup{ + outline:calc(1.5px * var(--scale-factor)) solid CanvasText !important; + background-color:ButtonFace !important; + color:ButtonText !important; + } -.annotationLayer .linkAnnotation { - outline: var(--link-outline); -} + .annotationLayer .highlightArea:hover::after{ + position:absolute; + top:0; + left:0; + width:100%; + height:100%; + -webkit-backdrop-filter:var(--hcm-highlight-filter); + backdrop-filter:var(--hcm-highlight-filter); + content:""; + pointer-events:none; + } -.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a { - position: absolute; - font-size: 1em; - top: 0; - left: 0; - width: 100%; - height: 100%; -} + .annotationLayer .popupAnnotation.focused .popup{ + outline:calc(3px * var(--scale-factor)) solid Highlight !important; + } + } -.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[data-main-rotation="90"] .norotate{ + transform:rotate(270deg) translateX(-100%); + } -.annotationLayer .linkAnnotation.hasBorder:hover { - background-color: rgba(255, 255, 0, 0.2); -} +.annotationLayer[data-main-rotation="180"] .norotate{ + transform:rotate(180deg) translate(-100%, -100%); + } -.annotationLayer .hasBorder { - background-size: 100% 100%; -} +.annotationLayer[data-main-rotation="270"] .norotate{ + transform:rotate(90deg) translateY(-100%); + } -.annotationLayer .textAnnotation img { - position: absolute; - cursor: pointer; - width: 100%; - height: 100%; - top: 0; - left: 0; -} +.annotationLayer.disabled section, + .annotationLayer.disabled .popup{ + pointer-events:none; + } -.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 .annotationContent{ + position:absolute; + width:100%; + height:100%; + pointer-events:none; + } -.annotationLayer .textWidgetAnnotation :is(input, textarea):required, -.annotationLayer .choiceWidgetAnnotation select:required, -.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required { - outline: 1.5px solid red; -} +.annotationLayer .annotationContent.freetext{ + background:transparent; + border:none; + inset:0; + overflow:visible; + white-space:nowrap; + font:10px sans-serif; + line-height:1.35; + -webkit-user-select:none; + -moz-user-select:none; + user-select:none; + } -.annotationLayer .choiceWidgetAnnotation select option { - padding: 0; -} +.annotationLayer section{ + position:absolute; + text-align:initial; + pointer-events:auto; + box-sizing:border-box; + transform-origin:0 0; + } -.annotationLayer .buttonWidgetAnnotation.radioButton input { - border-radius: 50%; -} +.annotationLayer section:has(div.annotationContent) canvas.annotationContent{ + display:none; + } -.annotationLayer .textWidgetAnnotation textarea { - resize: none; -} +.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a{ + position:absolute; + font-size:1em; + top:0; + left:0; + width:100%; + height:100%; + } -.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 :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder) + > a:hover{ + opacity:0.2; + background-color:rgb(255 255 0); + box-shadow:0 2px 10px rgb(255 255 0); + } -.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 .linkAnnotation.hasBorder:hover{ + background-color:rgb(255 255 0 / 0.2); + } -.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, -.annotationLayer .choiceWidgetAnnotation select:hover, -.annotationLayer .buttonWidgetAnnotation.checkBox input:hover { - border-radius: 2px; -} +.annotationLayer .hasBorder{ + background-size:100% 100%; + } -.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 .textAnnotation img{ + position:absolute; + cursor:pointer; + width:100%; + height:100%; + top:0; + left:0; + } -.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus { - background-image: none; - background-color: transparent; -} +.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 .buttonWidgetAnnotation.checkBox :focus { - border: 2px solid var(--input-focus-border-color); - border-radius: 2px; - outline: var(--input-focus-outline); -} +.annotationLayer .textWidgetAnnotation :is(input, textarea):required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required{ + outline:1.5px solid red; + } -.annotationLayer .buttonWidgetAnnotation.radioButton :focus { - border: 2px solid var(--input-focus-border-color); - outline: var(--input-focus-outline); -} +.annotationLayer .choiceWidgetAnnotation select option{ + padding:0; + } + +.annotationLayer .buttonWidgetAnnotation.radioButton input{ + border-radius:50%; + } + +.annotationLayer .textWidgetAnnotation textarea{ + resize:none; + } + +.annotationLayer .textWidgetAnnotation [disabled]:is(input, textarea), .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::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; + .annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after{ + height:80%; + left:45%; + width:1px; } - .xfaLayer *:required { - outline: 1.5px solid selectedItem; +.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:25%; + top:25%; + width:50%; + } + +.annotationLayer .textWidgetAnnotation input.comb{ + font-family:monospace; + padding-left:2px; + padding-right:0; + } + +.annotationLayer .textWidgetAnnotation input.comb: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:rgb(255 255 153); + box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) rgb(136 136 136); + 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 rgb(51 51 51); + 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{ + background-color:transparent; } -.xfaLayer .highlight { - margin: -1px; - padding: 1px; - background-color: rgba(239, 203, 237, 1); - border-radius: 4px; +.xfaLayer .highlight{ + margin:-1px; + padding:1px; + background-color:rgb(239 203 237); + border-radius:4px; } -.xfaLayer .highlight.appended { - position: initial; +.xfaLayer .highlight.appended{ + position:initial; } -.xfaLayer .highlight.begin { - border-radius: 4px 0 0 4px; +.xfaLayer .highlight.begin{ + border-radius:4px 0 0 4px; } -.xfaLayer .highlight.end { - border-radius: 0 4px 4px 0; +.xfaLayer .highlight.end{ + border-radius:0 4px 4px 0; } -.xfaLayer .highlight.middle { - border-radius: 0; +.xfaLayer .highlight.middle{ + border-radius:0; } -.xfaLayer .highlight.selected { - background-color: rgba(203, 223, 203, 1); +.xfaLayer .highlight.selected{ + background-color:rgb(203 223 203); } -.xfaPage { - overflow: hidden; - position: relative; +.xfaPage{ + overflow:hidden; + position:relative; } -.xfaContentarea { - position: absolute; +.xfaContentarea{ + position:absolute; } -.xfaPrintOnly { - display: none; +.xfaPrintOnly{ + display:none; } -.xfaLayer { - position: absolute; - text-align: initial; - top: 0; - left: 0; - transform-origin: 0 0; - line-height: 1.2; +.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 *{ + 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 *:required{ + outline:1.5px solid red; } .xfaLayer div, .xfaLayer svg, -.xfaLayer svg * { - pointer-events: none; +.xfaLayer svg *{ + pointer-events:none; } -.xfaLayer a { - color: blue; +.xfaLayer a{ + color:blue; } -.xfaRich li { - margin-left: 3em; +.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; +.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; +.xfaCaption{ + overflow:hidden; + flex:0 0 auto; } -.xfaCaptionForCheckButton { - overflow: hidden; - flex: 1 1 auto; +.xfaCaptionForCheckButton{ + overflow:hidden; + flex:1 1 auto; } -.xfaLabel { - height: 100%; - width: 100%; +.xfaLabel{ + height:100%; + width:100%; } -.xfaLeft { - display: flex; - flex-direction: row; - align-items: center; +.xfaLeft{ + display:flex; + flex-direction:row; + align-items:center; } -.xfaRight { - display: flex; - flex-direction: row-reverse; - align-items: center; +.xfaRight{ + display:flex; + flex-direction:row-reverse; + align-items:center; } -:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton) { - max-height: 100%; +:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton){ + max-height:100%; } -.xfaTop { - display: flex; - flex-direction: column; - align-items: flex-start; +.xfaTop{ + display:flex; + flex-direction:column; + align-items:flex-start; } -.xfaBottom { - display: flex; - flex-direction: column-reverse; - align-items: flex-start; +.xfaBottom{ + display:flex; + flex-direction:column-reverse; + align-items:flex-start; } -:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton) { - width: 100%; +:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton){ + width:100%; } -.xfaBorder { - background-color: transparent; - position: absolute; - pointer-events: none; +.xfaBorder{ + background-color:transparent; + position:absolute; + pointer-events:none; } -.xfaWrapped { - width: 100%; - height: 100%; +.xfaWrapped{ + width:100%; + height:100%; } -:is(.xfaTextfield, .xfaSelect):focus { - background-image: none; - background-color: transparent; - outline: var(--xfa-focus-outline); - outline-offset: -1px; +: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); +: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{ + height:100%; + width:100%; + flex:1 1 auto; + border:none; + resize:none; + background-image:var(--xfa-unfocused-field-background); } -.xfaSelect { - padding-inline: 2px; +.xfaSelect{ + padding-inline:2px; } -:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect) { - flex: 0 1 auto; +:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect){ + flex:0 1 auto; } -.xfaButton { - cursor: pointer; - width: 100%; - height: 100%; - border: none; - text-align: center; +.xfaButton{ + cursor:pointer; + width:100%; + height:100%; + border:none; + text-align:center; } -.xfaLink { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; +.xfaLink{ + width:100%; + height:100%; + position:absolute; + top:0; + left:0; } .xfaCheckbox, -.xfaRadio { - width: 100%; - height: 100%; - flex: 0 0 auto; - border: none; +.xfaRadio{ + width:100%; + height:100%; + flex:0 0 auto; + border:none; } -.xfaRich { - white-space: pre-wrap; - width: 100%; - height: 100%; +.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%; +.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; +.xfaTb{ + display:flex; + flex-direction:column; + align-items:stretch; } -.xfaLr { - display: flex; - flex-direction: row; - align-items: stretch; +.xfaLr{ + display:flex; + flex-direction:row; + align-items:stretch; } -.xfaRl { - display: flex; - flex-direction: row-reverse; - align-items: stretch; +.xfaRl{ + display:flex; + flex-direction:row-reverse; + align-items:stretch; } -.xfaTb > div { - justify-content: left; +.xfaTb > div{ + justify-content:left; } -.xfaPosition { - position: relative; +.xfaPosition{ + position:relative; } -.xfaArea { - position: relative; +.xfaArea{ + position:relative; } -.xfaValignMiddle { - display: flex; - align-items: center; +.xfaValignMiddle{ + display:flex; + align-items:center; } -.xfaTable { - display: flex; - flex-direction: column; - align-items: stretch; +.xfaTable{ + display:flex; + flex-direction:column; + align-items:stretch; } -.xfaTable .xfaRow { - display: flex; - flex-direction: row; - 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{ + display:flex; + flex-direction:row-reverse; + align-items:stretch; + flex:1; } -.xfaTable .xfaRlRow > div { - flex: 1; +.xfaTable .xfaRlRow > div{ + flex:1; } -:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea) { - background: initial; +:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea){ + background:initial; } -@media print { +@media print{ .xfaTextfield, - .xfaSelect { - background: transparent; + .xfaSelect{ + background:transparent; } - .xfaSelect { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - text-indent: 1px; - text-overflow: ""; + .xfaSelect{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + text-indent:1px; + text-overflow:""; } } -/* Ignored in GECKOVIEW builds: */ +.canvasWrapper svg{ + transform:none; + } -: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; +.canvasWrapper svg[data-main-rotation="90"] mask, + .canvasWrapper svg[data-main-rotation="90"] use:not(.clip, .mask){ + transform:matrix(0, 1, -1, 0, 1, 0); + } - --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); +.canvasWrapper svg[data-main-rotation="180"] mask, + .canvasWrapper svg[data-main-rotation="180"] use:not(.clip, .mask){ + transform:matrix(-1, 0, 0, -1, 1, 1); + } + +.canvasWrapper svg[data-main-rotation="270"] mask, + .canvasWrapper svg[data-main-rotation="270"] use:not(.clip, .mask){ + transform:matrix(0, -1, 1, 0, 0, 1); + } + +.canvasWrapper svg.highlight{ + --blend-mode:multiply; + + position:absolute; + mix-blend-mode:var(--blend-mode); + } + +@media screen and (forced-colors: active){ + +.canvasWrapper svg.highlight{ + --blend-mode:difference; + } + } + +.canvasWrapper svg.highlight:not(.free){ + fill-rule:evenodd; + } + +.canvasWrapper svg.highlightOutline{ + position:absolute; + mix-blend-mode:normal; + fill-rule:evenodd; + fill:none; + } + +.canvasWrapper svg.highlightOutline.hovered:not(.free):not(.selected){ + stroke:var(--hover-outline-color); + stroke-width:var(--outline-width); + } + +.canvasWrapper svg.highlightOutline.selected:not(.free) .mainOutline{ + stroke:var(--outline-around-color); + stroke-width:calc( + var(--outline-width) + 2 * var(--outline-around-width) + ); + } + +.canvasWrapper svg.highlightOutline.selected:not(.free) .secondaryOutline{ + stroke:var(--outline-color); + stroke-width:var(--outline-width); + } + +.canvasWrapper svg.highlightOutline.free.hovered:not(.selected){ + stroke:var(--hover-outline-color); + stroke-width:calc(2 * var(--outline-width)); + } + +.canvasWrapper svg.highlightOutline.free.selected .mainOutline{ + stroke:var(--outline-around-color); + stroke-width:calc( + 2 * (var(--outline-width) + var(--outline-around-width)) + ); + } + +.canvasWrapper svg.highlightOutline.free.selected .secondaryOutline{ + stroke:var(--outline-color); + stroke-width:calc(2 * var(--outline-width)); + } + +.toggle-button{ + --button-background-color:#f0f0f4; + --button-background-color-hover:#e0e0e6; + --button-background-color-active:#cfcfd8; + --color-accent-primary:#0060df; + --color-accent-primary-hover:#0250bb; + --color-accent-primary-active:#054096; + --border-interactive-color:#8f8f9d; + --border-radius-circle:9999px; + --border-width:1px; + --size-item-small:16px; + --size-item-large:32px; + --color-canvas:white; + + --toggle-background-color:var(--button-background-color); + --toggle-background-color-hover:var(--button-background-color-hover); + --toggle-background-color-active:var(--button-background-color-active); + --toggle-background-color-pressed:var(--color-accent-primary); + --toggle-background-color-pressed-hover:var(--color-accent-primary-hover); + --toggle-background-color-pressed-active:var(--color-accent-primary-active); + --toggle-border-color:var(--border-interactive-color); + --toggle-border-color-hover:var(--toggle-border-color); + --toggle-border-color-active:var(--toggle-border-color); + --toggle-border-radius:var(--border-radius-circle); + --toggle-border-width:var(--border-width); + --toggle-height:var(--size-item-small); + --toggle-width:var(--size-item-large); + --toggle-dot-background-color:var(--toggle-border-color); + --toggle-dot-background-color-hover:var(--toggle-dot-background-color); + --toggle-dot-background-color-active:var(--toggle-dot-background-color); + --toggle-dot-background-color-on-pressed:var(--color-canvas); + --toggle-dot-margin:1px; + --toggle-dot-height:calc( + var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * + var(--toggle-border-width) + ); + --toggle-dot-width:var(--toggle-dot-height); + --toggle-dot-transform-x:calc( + var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width) + ); + + -webkit-appearance:none; + + -moz-appearance:none; + + appearance:none; + padding:0; + margin:0; + border:var(--toggle-border-width) solid var(--toggle-border-color); + height:var(--toggle-height); + width:var(--toggle-width); + border-radius:var(--toggle-border-radius); + background:var(--toggle-background-color); + box-sizing:border-box; + flex-shrink:0; } -@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 (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) .toggle-button{ + --button-background-color:color-mix(in srgb, currentColor 7%, transparent); + --button-background-color-hover:color-mix( + in srgb, + currentColor 14%, + transparent + ); + --button-background-color-active:color-mix( + in srgb, + currentColor 21%, + transparent + ); + --color-accent-primary:#0df; + --color-accent-primary-hover:#80ebff; + --color-accent-primary-active:#aaf2ff; + --border-interactive-color:#bfbfc9; + --color-canvas:#1c1b22; +} + } + +:where(html.is-dark) .toggle-button{ + --button-background-color:color-mix(in srgb, currentColor 7%, transparent); + --button-background-color-hover:color-mix( + in srgb, + currentColor 14%, + transparent + ); + --button-background-color-active:color-mix( + in srgb, + currentColor 21%, + transparent + ); + --color-accent-primary:#0df; + --color-accent-primary-hover:#80ebff; + --color-accent-primary-active:#aaf2ff; + --border-interactive-color:#bfbfc9; + --color-canvas:#1c1b22; +} + +@media (forced-colors: active){ + +.toggle-button{ + --color-accent-primary:ButtonText; + --color-accent-primary-hover:SelectedItem; + --color-accent-primary-active:SelectedItem; + --border-interactive-color:ButtonText; + --button-background-color:ButtonFace; + --border-interactive-color-hover:SelectedItem; + --border-interactive-color-active:SelectedItem; + --border-interactive-color-disabled:GrayText; + --color-canvas:ButtonText; +} + } + +.toggle-button:focus-visible{ + outline:var(--focus-outline); + outline-offset:var(--focus-outline-offset); + } + +.toggle-button:enabled:hover{ + background:var(--toggle-background-color-hover); + border-color:var(--toggle-border-color); + } + +.toggle-button:enabled:active{ + background:var(--toggle-background-color-active); + border-color:var(--toggle-border-color); + } + +.toggle-button[aria-pressed="true"]{ + background:var(--toggle-background-color-pressed); + border-color:transparent; + } + +.toggle-button[aria-pressed="true"]:enabled:hover{ + background:var(--toggle-background-color-pressed-hover); + border-color:transparent; + } + +.toggle-button[aria-pressed="true"]:enabled:active{ + background:var(--toggle-background-color-pressed-active); + border-color:transparent; + } + +.toggle-button::before{ + display:block; + content:""; + background-color:var(--toggle-dot-background-color); + height:var(--toggle-dot-height); + width:var(--toggle-dot-width); + margin:var(--toggle-dot-margin); + border-radius:var(--toggle-border-radius); + translate:0; + } + +.toggle-button[aria-pressed="true"]::before{ + translate:var(--toggle-dot-transform-x); + background-color:var(--toggle-dot-background-color-on-pressed); + } + +.toggle-button[aria-pressed="true"]:enabled:hover::before, + .toggle-button[aria-pressed="true"]:enabled:active::before{ + background-color:var(--toggle-dot-background-color-on-pressed); + } + +[dir="rtl"] .toggle-button[aria-pressed="true"]::before{ + translate:calc(-1 * var(--toggle-dot-transform-x)); + } + +@media (prefers-reduced-motion: no-preference){ + .toggle-button::before{ + transition:translate 100ms; + } + } + +@media (prefers-contrast){ + .toggle-button:enabled:hover{ + border-color:var(--toggle-border-color-hover); + } + + .toggle-button:enabled:active{ + border-color:var(--toggle-border-color-active); + } + + .toggle-button[aria-pressed="true"]:enabled{ + border-color:var(--toggle-border-color); + position:relative; + } + + .toggle-button[aria-pressed="true"]:enabled:hover, + .toggle-button[aria-pressed="true"]:enabled:hover:active{ + border-color:var(--toggle-border-color-hover); + } + + .toggle-button[aria-pressed="true"]:enabled:active{ + background-color:var(--toggle-dot-background-color-active); + border-color:var(--toggle-dot-background-color-hover); + } + + .toggle-button:hover::before, + .toggle-button:active::before{ + background-color:var(--toggle-dot-background-color-hover); + } + } + +@media (forced-colors){ + +.toggle-button{ + --toggle-dot-background-color:var(--color-accent-primary); + --toggle-dot-background-color-hover:var(--color-accent-primary-hover); + --toggle-dot-background-color-active:var(--color-accent-primary-active); + --toggle-dot-background-color-on-pressed:var(--button-background-color); + --toggle-background-color-disabled:var(--button-background-color-disabled); + --toggle-border-color-hover:var(--border-interactive-color-hover); + --toggle-border-color-active:var(--border-interactive-color-active); + --toggle-border-color-disabled:var(--border-interactive-color-disabled); +} + + .toggle-button[aria-pressed="true"]:enabled::after{ + border:1px solid var(--button-background-color); + content:""; + position:absolute; + height:var(--toggle-height); + width:var(--toggle-width); + display:block; + border-radius:var(--toggle-border-radius); + inset:-2px; + } + + .toggle-button[aria-pressed="true"]:enabled:active::after{ + border-color:var(--toggle-border-color-active); + } + } + +: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; + --editorHighlight-editing-cursor:url(../images/cursor-editorTextHighlight.svg) 24 24, text; + --editorFreeHighlight-editing-cursor:url(../images/cursor-editorFreeHighlight.svg) 1 18, pointer; +} +.visuallyHidden{ + position:absolute; + top:0; + left:0; + border:0; + margin:0; + padding:0; + width:0; + height:0; + overflow:hidden; + white-space:nowrap; + font-size:0; +} + +.textLayer.highlighting{ + cursor:var(--editorFreeHighlight-editing-cursor); +} + +.textLayer.highlighting:not(.free) span{ + cursor:var(--editorHighlight-editing-cursor); + } + +.textLayer.highlighting.free span{ + cursor:var(--editorFreeHighlight-editing-cursor); + } + +@media (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; +@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; } } -[data-editor-rotation="90"] { - transform: rotate(90deg); +[data-editor-rotation="90"]{ + transform:rotate(90deg); } -[data-editor-rotation="180"] { - transform: rotate(180deg); +[data-editor-rotation="180"]{ + transform:rotate(180deg); } -[data-editor-rotation="270"] { - transform: rotate(270deg); +[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{ + background:transparent; + position:absolute; + inset:0; + font-size:calc(100px * var(--scale-factor)); + transform-origin:0 0; + cursor:auto; } -.annotationEditorLayer.waiting { - content: ""; - cursor: wait; - position: absolute; - inset: 0; - width: 100%; - height: 100%; +.annotationEditorLayer.waiting{ + content:""; + cursor:wait; + position:absolute; + inset:0; + width:100%; + height:100%; } -.annotationEditorLayer.freeTextEditing { - cursor: var(--editorFreeText-editing-cursor); +.annotationEditorLayer.disabled{ + pointer-events:none; } -.annotationEditorLayer.inkEditing { - cursor: var(--editorInk-editing-cursor); +.annotationEditorLayer.freetextEditing{ + cursor:var(--editorFreeText-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.inkEditing{ + cursor:var(--editorInk-editing-cursor); } -.annotationEditorLayer .draggable.selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) { - cursor: move; +.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 .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) { - border: var(--focus-outline); - outline: var(--focus-outline-around); +.annotationEditorLayer .draggable.selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor){ + cursor:move; + } + +.annotationEditorLayer .moving:is(.freeTextEditor, .inkEditor, .stampEditor){ + touch-action:none; + } + +.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor){ + border:var(--focus-outline); + outline:var(--focus-outline-around); + } + +.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor)::before{ + 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); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + --editor-toolbar-delete-image:url(../images/editor-toolbar-delete.svg); + --editor-toolbar-bg-color:#f0f0f4; + --editor-toolbar-highlight-image:url(../images/toolbarButton-editorHighlight.svg); + --editor-toolbar-fg-color:#2e2e56; + --editor-toolbar-border-color:#8f8f9d; + --editor-toolbar-hover-border-color:var(--editor-toolbar-border-color); + --editor-toolbar-hover-bg-color:#e0e0e6; + --editor-toolbar-hover-fg-color:var(--editor-toolbar-fg-color); + --editor-toolbar-hover-outline:none; + --editor-toolbar-focus-outline-color:#0060df; + --editor-toolbar-shadow:0 2px 6px 0 rgb(58 57 68 / 0.2); + --editor-toolbar-vert-offset:6px; + --editor-toolbar-height:28px; + --editor-toolbar-padding:2px; + + display:flex; + width:-moz-fit-content; + width:fit-content; + height:var(--editor-toolbar-height); + flex-direction:column; + justify-content:center; + align-items:center; + cursor:default; + pointer-events:auto; + box-sizing:content-box; + padding:var(--editor-toolbar-padding); + + position:absolute; + inset-inline-end:0; + inset-block-start:calc(100% + var(--editor-toolbar-vert-offset)); + + border-radius:6px; + background-color:var(--editor-toolbar-bg-color); + border:1px solid var(--editor-toolbar-border-color); + box-shadow:var(--editor-toolbar-shadow); + } + +@media (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + --editor-toolbar-bg-color:#2b2a33; + --editor-toolbar-fg-color:#fbfbfe; + --editor-toolbar-hover-bg-color:#52525e; + --editor-toolbar-focus-outline-color:#0df; + } + } + +:where(html.is-dark) :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + --editor-toolbar-bg-color:#2b2a33; + --editor-toolbar-fg-color:#fbfbfe; + --editor-toolbar-hover-bg-color:#52525e; + --editor-toolbar-focus-outline-color:#0df; + } + +@media screen and (forced-colors: active){ + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + --editor-toolbar-bg-color:ButtonFace; + --editor-toolbar-fg-color:ButtonText; + --editor-toolbar-border-color:ButtonText; + --editor-toolbar-hover-border-color:AccentColor; + --editor-toolbar-hover-bg-color:ButtonFace; + --editor-toolbar-hover-fg-color:AccentColor; + --editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color); + --editor-toolbar-focus-outline-color:ButtonBorder; + --editor-toolbar-shadow:none; + } + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar.hidden{ + display:none; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar:has(:focus-visible){ + border-color:transparent; + } + +[dir="ltr"] :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + transform-origin:100% 0; + } + +[dir="rtl"] :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{ + transform-origin:0 0; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons{ + display:flex; + justify-content:center; + align-items:center; + gap:0; + height:100%; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .divider{ + width:1px; + height:calc( + 2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height) + ); + background-color:var(--editor-toolbar-border-color); + display:inline-block; + margin-inline:2px; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton{ + width:var(--editor-toolbar-height); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton::before{ + content:""; + -webkit-mask-image:var(--editor-toolbar-highlight-image); + mask-image:var(--editor-toolbar-highlight-image); + -webkit-mask-repeat:no-repeat; + mask-repeat:no-repeat; + -webkit-mask-position:center; + mask-position:center; + display:inline-block; + background-color:var(--editor-toolbar-fg-color); + width:100%; + height:100%; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton:hover::before{ + background-color:var(--editor-toolbar-hover-fg-color); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete{ + width:var(--editor-toolbar-height); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete::before{ + content:""; + -webkit-mask-image:var(--editor-toolbar-delete-image); + mask-image:var(--editor-toolbar-delete-image); + -webkit-mask-repeat:no-repeat; + mask-repeat:no-repeat; + -webkit-mask-position:center; + mask-position:center; + display:inline-block; + background-color:var(--editor-toolbar-fg-color); + width:100%; + height:100%; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete:hover::before{ + background-color:var(--editor-toolbar-hover-fg-color); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > *{ + height:var(--editor-toolbar-height); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider){ + border:none; + background-color:transparent; + cursor:pointer; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):hover{ + border-radius:2px; + background-color:var(--editor-toolbar-hover-bg-color); + color:var(--editor-toolbar-hover-fg-color); + outline:var(--editor-toolbar-hover-outline); + outline-offset:1px; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):hover:active{ + outline:none; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):focus-visible{ + border-radius:2px; + outline:2px solid var(--editor-toolbar-focus-outline-color); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText{ + --alt-text-add-image:url(../images/altText_add.svg); + --alt-text-done-image:url(../images/altText_done.svg); + + display:flex; + align-items:center; + justify-content:center; + width:-moz-max-content; + width:max-content; + padding-inline:8px; + pointer-events:all; + font:menu; + font-weight:590; + font-size:12px; + color:var(--editor-toolbar-fg-color); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText:disabled{ + pointer-events:none; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .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(--editor-toolbar-fg-color); + margin-inline-end:4px; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText:hover::before{ + background-color:var(--editor-toolbar-hover-fg-color); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText.done::before{ + -webkit-mask-image:var(--alt-text-done-image); + mask-image:var(--alt-text-done-image); + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip{ + display:none; + } + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .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 rgb(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){ + +:where(html:not(.is-light)) :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{ + --alt-text-tooltip-bg:#1c1b22; + --alt-text-tooltip-fg:#fbfbfe; + --alt-text-tooltip-shadow:0px 2px 6px 0px #15141a; + } + } + +:where(html.is-dark) :is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .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){ + +:is(.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{ + --alt-text-tooltip-bg:Canvas; + --alt-text-tooltip-fg:CanvasText; + --alt-text-tooltip-border:CanvasText; + --alt-text-tooltip-shadow:none; + } + } + +.annotationEditorLayer .freeTextEditor{ + padding:calc(var(--freetext-padding) * var(--scale-factor)); + width:auto; + height:auto; + touch-action:none; } -.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 .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 :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor) { - border: var(--hover-outline); - outline: var(--hover-outline-around); +.annotationEditorLayer .freeTextEditor .overlay{ + position:absolute; + display:none; + background:transparent; + inset:0; + width:100%; + height:100%; } -.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor)::before { - content: ""; - position: absolute; - inset: 0; - border: var(--focus-outline-around); +.annotationEditorLayer freeTextEditor .overlay.enabled{ + display:block; } -.annotationEditorLayer .freeTextEditor { - padding: calc(var(--freetext-padding) * var(--scale-factor)); - width: auto; - height: auto; - touch-action: none; +.annotationEditorLayer .freeTextEditor .internal:empty::before{ + content:attr(default-content); + color:gray; } -.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 .internal:focus{ + outline:none; + -webkit-user-select:auto; + -moz-user-select:auto; + user-select:auto; } -.annotationEditorLayer .freeTextEditor .overlay { - position: absolute; - display: none; - background: transparent; - inset: 0; - width: 100%; - height: 100%; +.annotationEditorLayer .inkEditor{ + width:100%; + height:100%; } -.annotationEditorLayer .freeTextEditor .overlay.enabled { - display: block; +.annotationEditorLayer .inkEditor.editing{ + cursor:inherit; } -.annotationEditorLayer .freeTextEditor .internal:empty::before { - content: attr(default-content); - color: gray; +.annotationEditorLayer .inkEditor .inkEditorCanvas{ + position:absolute; + inset:0; + width:100%; + height:100%; + touch-action:none; } -.annotationEditorLayer .freeTextEditor .internal:focus { - outline: none; - -webkit-user-select: auto; - -moz-user-select: auto; - user-select: auto; +.annotationEditorLayer .stampEditor{ + width:auto; + height:auto; } -.annotationEditorLayer .inkEditor { - width: 100%; - height: 100%; -} +.annotationEditorLayer .stampEditor canvas{ + position:absolute; + width:100%; + height:100%; + margin:0; + } -.annotationEditorLayer .inkEditor.editing { - cursor: inherit; -} +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers{ + position:absolute; + inset:0; + } -.annotationEditorLayer .inkEditor .inkEditorCanvas { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - touch-action: none; -} +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers.hidden{ + display:none; + } -.annotationEditorLayer .stampEditor { - width: auto; - height: auto; -} +.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 .stampEditor canvas { - width: 100%; - height: 100%; -} +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topLeft{ + top:var(--resizer-shift); + left:var(--resizer-shift); + } -.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers { - position: absolute; - inset: 0; -} +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topMiddle{ + top:var(--resizer-shift); + left:calc(50% + var(--resizer-shift)); + } -.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers.hidden { - display: none; -} +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topRight{ + top:var(--resizer-shift); + right:var(--resizer-shift); + } -.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.middleRight{ + top:calc(50% + var(--resizer-shift)); + right:var(--resizer-shift); + } -.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topLeft { - top: var(--resizer-shift); - left: 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.topMiddle { - top: var(--resizer-shift); - left: calc(50% + 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.topRight { - top: var(--resizer-shift); - right: 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.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 :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; -} + :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; -} + :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; -} + :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; -} + :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; -} + :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; -} + :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; -} + :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; -} + :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; -} + :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"] + ) .editToolbar{ + 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"] + ) .editToolbar{ + inset-inline-end:calc(0px - var(--editor-toolbar-vert-offset)); + inset-block-start:0; + } -[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; -} +[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"] + ) .editToolbar{ + inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset)); + 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); -} + :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"] + ) .editToolbar{ + rotate:180deg; + inset-inline-end:100%; + inset-block-start:calc(0pc - var(--editor-toolbar-vert-offset)); + } .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; + :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"] + ) .editToolbar{ + 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"] + ) .editToolbar{ + inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset)); + inset-block-start:100%; + } + +[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"] + ) .editToolbar{ + inset-inline-start:calc(0px - var(--editor-toolbar-vert-offset)); + inset-block-start:0; + } + +#altTextDialog{ + --dialog-bg-color:white; + --dialog-border-color:white; + --dialog-shadow:0 2px 14px 0 rgb(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); + + 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); } -.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; +@media (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) #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:#0df; + --hover-filter:brightness(1.4); + + --textarea-bg-color:#42414d; + + --radio-bg-color:#2b2a33; + --radio-checked-bg-color:#15141a; + --radio-checked-border-color:#0df; + + --button-cancel-bg-color:#2b2a33; + --button-save-bg-color:#0df; + --button-save-fg-color:#15141a; +} + } + +:where(html.is-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:#0df; + --hover-filter:brightness(1.4); + + --textarea-bg-color:#42414d; + + --radio-bg-color:#2b2a33; + --radio-checked-bg-color:#15141a; + --radio-checked-border-color:#0df; + + --button-cancel-bg-color:#2b2a33; + --button-save-bg-color:#0df; + --button-save-fg-color:#15141a; } -[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); +@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; +} + } + +#altTextDialog::backdrop{ + -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); + } + +.colorPicker{ + --hover-outline-color:#0250bb; + --selected-outline-color:#0060df; + --swatch-border-color:#cfcfd8; } -[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; +@media (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) .colorPicker{ + --hover-outline-color:#80ebff; + --selected-outline-color:#aaf2ff; + --swatch-border-color:#52525e; +} + } + +:where(html.is-dark) .colorPicker{ + --hover-outline-color:#80ebff; + --selected-outline-color:#aaf2ff; + --swatch-border-color:#52525e; } -[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); +@media screen and (forced-colors: active){ + +.colorPicker{ + --hover-outline-color:Highlight; + --selected-outline-color:var(--hover-outline-color); + --swatch-border-color:ButtonText; +} + } + +.colorPicker .swatch{ + width:16px; + height:16px; + border:1px solid var(--swatch-border-color); + border-radius:100%; + outline-offset:2px; + box-sizing:border-box; + forced-color-adjust:none; + } + +.colorPicker button:is(:hover, .selected) > .swatch{ + border:none; + } + +.annotationEditorLayer[data-main-rotation="0"] .highlightEditor:not(.free) > .editToolbar{ + rotate:0deg; + } + +.annotationEditorLayer[data-main-rotation="90"] .highlightEditor:not(.free) > .editToolbar{ + rotate:270deg; + } + +.annotationEditorLayer[data-main-rotation="180"] .highlightEditor:not(.free) > .editToolbar{ + rotate:180deg; + } + +.annotationEditorLayer[data-main-rotation="270"] .highlightEditor:not(.free) > .editToolbar{ + rotate:90deg; + } + +.annotationEditorLayer .highlightEditor{ + position:absolute; + background:transparent; + z-index:1; + cursor:auto; + max-width:100%; + max-height:100%; + border:none; + outline:none; + pointer-events:none; + transform-origin:0 0; + } + +.annotationEditorLayer .highlightEditor:not(.free){ + transform:none; + } + +.annotationEditorLayer .highlightEditor .internal{ + position:absolute; + top:0; + left:0; + width:100%; + height:100%; + pointer-events:auto; + } + +.annotationEditorLayer .highlightEditor.disabled .internal{ + pointer-events:none; + } + +.annotationEditorLayer .highlightEditor.selectedEditor .internal{ + cursor:pointer; + } + +.annotationEditorLayer .highlightEditor .editToolbar{ + --editor-toolbar-colorpicker-arrow-image:url(../images/toolbarButton-menuArrow.svg); + + transform-origin:center !important; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker{ + position:relative; + width:auto; + display:flex; + justify-content:center; + align-items:center; + gap:4px; + padding:4px; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker::after{ + content:""; + -webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image); + mask-image:var(--editor-toolbar-colorpicker-arrow-image); + -webkit-mask-repeat:no-repeat; + mask-repeat:no-repeat; + -webkit-mask-position:center; + mask-position:center; + display:inline-block; + background-color:var(--editor-toolbar-fg-color); + width:12px; + height:12px; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:hover::after{ + background-color:var(--editor-toolbar-hover-fg-color); + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden)){ + background-color:var(--editor-toolbar-hover-bg-color); + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden))::after{ + scale:-1; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown{ + position:absolute; + display:flex; + justify-content:center; + align-items:center; + flex-direction:column; + gap:11px; + padding-block:8px; + border-radius:6px; + background-color:var(--editor-toolbar-bg-color); + border:1px solid var(--editor-toolbar-border-color); + box-shadow:var(--editor-toolbar-shadow); + inset-block-start:calc(100% + 4px); + width:calc(100% + 2 * var(--editor-toolbar-padding)); + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button{ + width:100%; + height:auto; + border:none; + cursor:pointer; + display:flex; + justify-content:center; + align-items:center; + background:none; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:active, :focus-visible){ + outline:none; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button > .swatch{ + outline-offset:2px; + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button[aria-selected="true"] > .swatch{ + outline:2px solid var(--selected-outline-color); + } + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:hover, :active, :focus-visible) > .swatch{ + outline:2px solid var(--hover-outline-color); + } + +.editorParamsToolbar:has(#highlightParamsToolbarContainer){ + padding:unset; } -[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%; +#highlightParamsToolbarContainer{ + height:auto; + padding-inline:10px; + padding-block:10px 16px; + gap:16px; + display:flex; + flex-direction:column; + box-sizing:border-box; } -.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; +#highlightParamsToolbarContainer .editorParamsLabel{ + width:-moz-fit-content; + width:fit-content; + inset-inline-start:0; + } - 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); +#highlightParamsToolbarContainer .colorPicker{ + display:flex; + flex-direction:column; + gap:8px; + } - position: absolute; - inset-block-end: 8px; - inset-inline-start: 8px; +#highlightParamsToolbarContainer .colorPicker .dropdown{ + display:flex; + justify-content:space-between; + align-items:center; + flex-direction:row; + height:auto; + } + +#highlightParamsToolbarContainer .colorPicker .dropdown button{ + width:auto; + height:auto; + border:none; + cursor:pointer; + display:flex; + justify-content:center; + align-items:center; + background:none; + flex:0 0 auto; + } + +#highlightParamsToolbarContainer .colorPicker .dropdown button .swatch{ + width:24px; + height:24px; + } + +#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:active, :focus-visible){ + outline:none; + } + +#highlightParamsToolbarContainer .colorPicker .dropdown button[aria-selected="true"] > .swatch{ + outline:2px solid var(--selected-outline-color); + } + +#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:hover, :active, :focus-visible) > .swatch{ + outline:2px solid var(--hover-outline-color); + } + +#highlightParamsToolbarContainer #editorHighlightThickness{ + display:flex; + flex-direction:column; + align-items:center; + gap:4px; + align-self:stretch; + } + +#highlightParamsToolbarContainer #editorHighlightThickness .editorParamsLabel{ + width:100%; + height:auto; + align-self:stretch; + } + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{ + display:flex; + justify-content:space-between; + align-items:center; + align-self:stretch; + + --example-color:#bfbfc9; + } + +@media (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{ + --example-color:#80808e; + } + } + +:where(html.is-dark) #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{ + --example-color:#80808e; + } + +@media screen and (forced-colors: active){ + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{ + --example-color:CanvasText; + } + } + +:is(#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker > .editorParamsSlider[disabled]){ + opacity:0.4; + } + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::before, + #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::after{ + content:""; + width:8px; + aspect-ratio:1; + display:block; + border-radius:100%; + background-color:var(--example-color); + } + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::after{ + width:24px; + } + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker .editorParamsSlider{ + width:unset; + height:14px; + } + +#highlightParamsToolbarContainer #editorHighlightVisibility{ + display:flex; + flex-direction:column; + align-items:flex-start; + gap:8px; + align-self:stretch; + } + +#highlightParamsToolbarContainer #editorHighlightVisibility .divider{ + --divider-color:#d7d7db; + + margin-block:4px; + width:100%; + height:1px; + background-color:var(--divider-color); + } + +@media (prefers-color-scheme: dark){ + +:where(html:not(.is-light)) #highlightParamsToolbarContainer #editorHighlightVisibility .divider{ + --divider-color:#8f8f9d; + } + } + +:where(html.is-dark) #highlightParamsToolbarContainer #editorHighlightVisibility .divider{ + --divider-color:#8f8f9d; + } + +@media screen and (forced-colors: active){ + +#highlightParamsToolbarContainer #editorHighlightVisibility .divider{ + --divider-color:CanvasText; + } + } + +#highlightParamsToolbarContainer #editorHighlightVisibility .toggler{ + display:flex; + justify-content:space-between; + align-items:center; + align-self:stretch; + } + +: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; } -[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){ + :root{ + --pdfViewer-padding-bottom:9px; + --page-margin:8px auto -1px; + --page-border:1px solid CanvasText; + --spreadHorizontalWrapped-margin-LR:3.5px; } } -@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; +[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, +.hiddenCanvasElement{ + position:absolute; + top:0; + left:0; + width:0; + height:0; + display:none; +} + +.pdfViewer{ + --scale-factor:1; + + padding-bottom:var(--pdfViewer-padding-bottom); + + --hcm-highlight-filter:none; + --hcm-highlight-selected-filter:none; +} + +@media screen and (forced-colors: active){ + +.pdfViewer{ + --hcm-highlight-filter:invert(100%); +} } -} -#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; +.pdfViewer .canvasWrapper{ + overflow:hidden; + width:100%; + height:100%; } + +.pdfViewer .canvasWrapper canvas{ + margin:0; + display:block; + } + +.pdfViewer .canvasWrapper canvas[hidden]{ + display:none; + } + +.pdfViewer .canvasWrapper canvas[zooming]{ + width:100%; + height:100%; + } + +.pdfViewer .canvasWrapper canvas .structTree{ + contain:strict; + } + +.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:rgb(255 255 255); } -@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; - } +.pdfViewer .dummyPage{ + position:relative; + width:0; + height:var(--viewer-container-height); } -#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); +.pdfViewer.noUserSelect{ + -webkit-user-select:none; + -moz-user-select:none; + user-select:none; } -#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.removePageBorders .page{ + margin:0 auto 10px; + border:none; } .pdfViewer:is(.scrollHorizontal, .scrollWrapped), -.spread { - margin-inline: 3.5px; - text-align: center; +.spread{ + margin-inline:3.5px; + text-align:center; } .pdfViewer.scrollHorizontal, -.spread { - white-space: nowrap; +.spread{ + white-space:nowrap; } .pdfViewer.removePageBorders, -.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .spread { - margin-inline: 0; +.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; +.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:is(.scrollHorizontal, .scrollWrapped) .page{ + margin-inline:var(--spreadHorizontalWrapped-margin-LR); } .pdfViewer.removePageBorders .spread .page, -.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page { - margin-inline: 5px; +.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page{ + margin-inline:5px; } -.pdfViewer .page canvas { - margin: 0; - display: block; +.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; + transition-property:display; + transition-delay:var(--loading-icon-delay); + z-index:5; + contain:strict; } -.pdfViewer .page canvas .structTree { - contain: strict; +.pdfViewer .page.loading::after{ + display:block; } -.pdfViewer .page canvas[hidden] { - display: none; +.pdfViewer .page:not(.loading)::after{ + transition-property:none; + display:none; } -.pdfViewer .page canvas[zooming] { - width: 100%; - height: 100%; +.pdfPresentationMode .pdfViewer{ + padding-bottom:0; } -.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; +.pdfPresentationMode .spread{ + margin:0; } -.pdfViewer .page.loading::after { - display: block; +.pdfPresentationMode .pdfViewer .page{ + margin:0 auto; + border:2px solid transparent; } -.pdfViewer .page:not(.loading)::after { - transition-property: none; - display: none; +: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; + --editor-toolbar-base-offset:105px; + + --main-color:rgb(12 12 13); + --body-bg-color:rgb(212 212 215); + --progressBar-color:rgb(10 132 255); + --progressBar-bg-color:rgb(221 221 222); + --progressBar-blend-color:rgb(116 177 239); + --scrollbar-color:auto; + --scrollbar-bg-color:auto; + --toolbar-icon-bg-color:rgb(0 0 0); + --toolbar-icon-hover-bg-color:rgb(0 0 0); + + --sidebar-narrow-bg-color:rgb(212 212 215 / 0.9); + --sidebar-toolbar-bg-color:rgb(245 246 247); + --toolbar-bg-color:rgb(249 249 250); + --toolbar-border-color:rgb(184 184 184); + --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 rgb(0 0 0 / 0.25), 0 1px 0 rgb(0 0 0 / 0.15), 0 0 1px rgb(0 0 0 / 0.1); + --toolbarSidebar-border-bottom:none; + --button-hover-color:rgb(221 222 223); + --toggled-btn-color:rgb(0 0 0); + --toggled-btn-bg-color:rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color:rgb(0 0 0 / 0.4); + --toggled-hover-btn-outline:none; + --dropdown-btn-bg-color:rgb(215 215 219); + --dropdown-btn-border:none; + --separator-color:rgb(0 0 0 / 0.3); + --field-color:rgb(6 6 6); + --field-bg-color:rgb(255 255 255); + --field-border-color:rgb(187 187 188); + --treeitem-color:rgb(0 0 0 / 0.8); + --treeitem-bg-color:rgb(0 0 0 / 0.15); + --treeitem-hover-color:rgb(0 0 0 / 0.9); + --treeitem-selected-color:rgb(0 0 0 / 0.9); + --treeitem-selected-bg-color:rgb(0 0 0 / 0.25); + --thumbnail-hover-color:rgb(0 0 0 / 0.1); + --thumbnail-selected-color:rgb(0 0 0 / 0.2); + --doorhanger-bg-color:rgb(255 255 255); + --doorhanger-border-color:rgb(12 12 13 / 0.2); + --doorhanger-hover-color:rgb(12 12 13); + --doorhanger-hover-bg-color:rgb(237 237 237); + --doorhanger-separator-color:rgb(222 222 222); + --dialog-button-border:none; + --dialog-button-bg-color:rgb(12 12 13 / 0.1); + --dialog-button-hover-bg-color:rgb(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-editorHighlight-icon:url(../images/toolbarButton-editorHighlight.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-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); + --toolbarButton-backToHome-icon:url(../images/toolbarButton-home.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); } -.pdfPresentationMode .pdfViewer { - padding-bottom: 0; +[dir="rtl"]:root{ + --dir-factor:-1; + --inline-start:right; + --inline-end:left; } -.pdfPresentationMode .spread { - margin: 0; -} +@media (prefers-color-scheme: dark){ + :root:where(:not(.is-light)){ + --main-color:rgb(249 249 250); + --body-bg-color:rgb(42 42 46); + --progressBar-color:rgb(0 96 223); + --progressBar-bg-color:rgb(40 40 43); + --progressBar-blend-color:rgb(20 68 133); + --scrollbar-color:rgb(121 121 123); + --scrollbar-bg-color:rgb(35 35 39); + --toolbar-icon-bg-color:rgb(255 255 255); + --toolbar-icon-hover-bg-color:rgb(255 255 255); -.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); + --sidebar-narrow-bg-color:rgb(42 42 46 / 0.9); + --sidebar-toolbar-bg-color:rgb(50 50 52); + --toolbar-bg-color:rgb(56 56 61); + --toolbar-border-color:rgb(12 12 13); + --button-hover-color:rgb(102 102 103); + --toggled-btn-color:rgb(255 255 255); + --toggled-btn-bg-color:rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color:rgb(0 0 0 / 0.4); + --dropdown-btn-bg-color:rgb(74 74 79); + --separator-color:rgb(0 0 0 / 0.3); + --field-color:rgb(250 250 250); + --field-bg-color:rgb(64 64 68); + --field-border-color:rgb(115 115 115); + --treeitem-color:rgb(255 255 255 / 0.8); + --treeitem-bg-color:rgb(255 255 255 / 0.15); + --treeitem-hover-color:rgb(255 255 255 / 0.9); + --treeitem-selected-color:rgb(255 255 255 / 0.9); + --treeitem-selected-bg-color:rgb(255 255 255 / 0.25); + --thumbnail-hover-color:rgb(255 255 255 / 0.1); + --thumbnail-selected-color:rgb(255 255 255 / 0.2); + --doorhanger-bg-color:rgb(74 74 79); + --doorhanger-border-color:rgb(39 39 43); + --doorhanger-hover-color:rgb(249 249 250); + --doorhanger-hover-bg-color:rgb(93 94 98); + --doorhanger-separator-color:rgb(92 92 97); + --dialog-button-bg-color:rgb(92 92 97); + --dialog-button-hover-bg-color:rgb(115 115 115); } } -@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); +:root:where(.is-dark){ + --main-color:rgb(249 249 250); + --body-bg-color:rgb(42 42 46); + --progressBar-color:rgb(0 96 223); + --progressBar-bg-color:rgb(40 40 43); + --progressBar-blend-color:rgb(20 68 133); + --scrollbar-color:rgb(121 121 123); + --scrollbar-bg-color:rgb(35 35 39); + --toolbar-icon-bg-color:rgb(255 255 255); + --toolbar-icon-hover-bg-color:rgb(255 255 255); + + --sidebar-narrow-bg-color:rgb(42 42 46 / 0.9); + --sidebar-toolbar-bg-color:rgb(50 50 52); + --toolbar-bg-color:rgb(56 56 61); + --toolbar-border-color:rgb(12 12 13); + --button-hover-color:rgb(102 102 103); + --toggled-btn-color:rgb(255 255 255); + --toggled-btn-bg-color:rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color:rgb(0 0 0 / 0.4); + --dropdown-btn-bg-color:rgb(74 74 79); + --separator-color:rgb(0 0 0 / 0.3); + --field-color:rgb(250 250 250); + --field-bg-color:rgb(64 64 68); + --field-border-color:rgb(115 115 115); + --treeitem-color:rgb(255 255 255 / 0.8); + --treeitem-bg-color:rgb(255 255 255 / 0.15); + --treeitem-hover-color:rgb(255 255 255 / 0.9); + --treeitem-selected-color:rgb(255 255 255 / 0.9); + --treeitem-selected-bg-color:rgb(255 255 255 / 0.25); + --thumbnail-hover-color:rgb(255 255 255 / 0.1); + --thumbnail-selected-color:rgb(255 255 255 / 0.2); + --doorhanger-bg-color:rgb(74 74 79); + --doorhanger-border-color:rgb(39 39 43); + --doorhanger-hover-color:rgb(249 249 250); + --doorhanger-hover-bg-color:rgb(93 94 98); + --doorhanger-separator-color:rgb(92 92 97); + --dialog-button-bg-color:rgb(92 92 97); + --dialog-button-hover-bg-color:rgb(115 115 115); + } + +@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; +@media screen and (prefers-reduced-motion: reduce){ + :root{ + --sidebar-transition-duration:0; } } -* { - padding: 0; - margin: 0; +*{ + padding:0; + margin:0; } html, -body { - height: 100%; - width: 100%; +body{ + height:100%; + width:100%; } -body { - background-color: var(--body-bg-color); - scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); +body{ + background-color:var(--body-bg-color); + scrollbar-color:var(--scrollbar-color) var(--scrollbar-bg-color); } .hidden, -[hidden] { - display: none !important; +[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:rgb(0 0 0); + width:100%; + height:100%; + overflow:hidden; + cursor:none; + -webkit-user-select:none; + -moz-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:fullscreen section:not([data-internal-link]){ + pointer-events: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:fullscreen .textLayer span{ + cursor:none; } .pdfPresentationMode.pdfPresentationModeControls > *, -.pdfPresentationMode.pdfPresentationModeControls .textLayer span { - cursor: default; +.pdfPresentationMode.pdfPresentationModeControls .textLayer span{ + cursor:default; } -#outerContainer { - width: 100%; - height: 100%; - position: relative; +#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); +#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 rgb(51 51 51); + 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:is(.sidebarMoving, .sidebarOpen) #sidebarContainer{ + visibility:visible; +} +#outerContainer.sidebarOpen #sidebarContainer{ + inset-inline-start:0; } -#outerContainer.sidebarOpen #sidebarContainer { - inset-inline-start: 0; +#mainContainer{ + position:absolute; + inset:0; + min-width:350px; } -#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 rgb(0 0 0 / 0.25); } -#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); } -#viewerContainer { - overflow: auto; - position: absolute; - inset: 32px 0 0; - outline: none; +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode){ + inset-inline-start:var(--sidebar-width); + transition-property:inset-inline-start; } -#viewerContainer:not(.pdfPresentationMode) { - transition-duration: var(--sidebar-transition-duration); - transition-timing-function: var(--sidebar-transition-timing-function); +.toolbar{ + position:relative; + inset-inline:0; + z-index:9999; + cursor:default; + font:message-box; } -#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { - inset-inline-start: var(--sidebar-width); - transition-property: inset-inline-start; +:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer) + :is(input, button, select), +.secondaryToolbar :is(input, button, a, select){ + outline:none; + font:message-box; } -.toolbar { - position: relative; - inset-inline: 0; - z-index: 9999; - cursor: default; - font: message-box; +#toolbarContainer{ + width:100%; } -:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer) :is(input, button, select), -.secondaryToolbar :is(input, button, a, select) { - outline: none; - font: message-box; +#toolbarSidebar{ + width:100%; + height:32px; + background-color:var(--sidebar-toolbar-bg-color); + box-shadow:var(--toolbarSidebar-box-shadow); + border-bottom:var(--toolbarSidebar-border-bottom); } -#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; +#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: 35px; - background-color: var(--toolbar-bg-color); - box-shadow: var(--toolbar-box-shadow); - border-bottom: var(--toolbar-border-bottom); +.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: 35px; +#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; +#loadingBar{ + --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); + 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); +#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; +#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))); +@keyframes progressIndeterminate{ + 0%{ + transform:translateX(calc(-142px * var(--dir-factor))); } - 100% { - transform: translateX(0); + 100%{ + transform:translateX(0); } } -#loadingBar.indeterminate .progress { - transform: none; - background-color: var(--progressBar-bg-color); - transition: none; +#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( +#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, @@ -2551,255 +3209,247 @@ body { var(--progressBar-color) 95px, var(--progressBar-blend-color) 100px ); - animation: progressIndeterminate 1s linear infinite; + 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; +#outerContainer.sidebarResizing + :is(#sidebarContainer, #viewerContainer, #loadingBar){ + 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; +.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{ + inset-inline-start:64px; + min-width:300px; + background-color:var(--toolbar-bg-color); } - -.findbar > div { - height: 32px; +.findbar > div{ + height:32px; } - -.findbar > div#findbarInputContainer { - margin-inline-end: 4px; +.findbar > div#findbarInputContainer{ + margin-inline-end:4px; } - .findbar.wrapContainers > div, -.findbar.wrapContainers > div#findbarMessageContainer > * { - clear: both; +.findbar.wrapContainers > div#findbarMessageContainer > *{ + clear:both; +} +.findbar.wrapContainers > div#findbarMessageContainer{ + height:auto; } -.findbar.wrapContainers > div#findbarMessageContainer { - height: auto; +.findbar input[type="checkbox"]{ + pointer-events:none; } -.findbar input[type="checkbox"] { - pointer-events: none; -} - -.findbar label { - -webkit-user-select: none; - -moz-user-select: none; - user-select: 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 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); +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel{ + background-color:var(--toggled-btn-bg-color) !important; + color:var(--toggled-btn-color); } -#findInput { - width: 200px; +#findInput{ + width:200px; } -#findInput::-moz-placeholder { - font-style: normal; -} +#findInput::-moz-placeholder{ + font-style:normal; + } -#findInput::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)); -} +.loadingInput:has(> #findInput[data-status="pending"])::after{ + display:block; + visibility:visible; + } -#findInput[data-status="notFound"] { - background-color: rgba(255, 102, 102, 1); -} +#findInput[data-status="notFound"]{ + background-color:rgb(255 102 102); + } .secondaryToolbar, -.editorParamsToolbar { - padding: 6px 0 10px; - inset-inline-end: 4px; - height: auto; - background-color: var(--doorhanger-bg-color); +.editorParamsToolbar{ + padding:6px 0 10px; + inset-inline-end:4px; + height:auto; + background-color:var(--doorhanger-bg-color); } -.editorParamsToolbarContainer { - width: 220px; - margin-bottom: -4px; +.editorParamsToolbarContainer{ + width:220px; + margin-bottom:-4px; } -.editorParamsToolbarContainer > .editorParamsSetter { - min-height: 26px; - display: flex; - align-items: center; - justify-content: space-between; - padding-inline: 10px; +.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 .editorParamsLabel{ + padding-inline-end:10px; + flex:none; + font:menu; + font-size:13px; + font-style:normal; + font-weight:400; + line-height:150%; + color:var(--main-color); } -.editorParamsToolbarContainer .editorParamsColor { - width: 32px; - height: 32px; - flex: none; +.editorParamsToolbarContainer .editorParamsColor{ + width:32px; + height:32px; + flex:none; } -.editorParamsToolbarContainer .editorParamsSlider { - background-color: transparent; - width: 90px; - flex: 0 1 0; +.editorParamsToolbarContainer .editorParamsSlider{ + background-color:transparent; + width:90px; + flex:0 1 0; } -.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { - background-color: black; +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress{ + background-color:black; } .editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track, -.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { - background-color: black; +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track{ + background-color:black; } .editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, -.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { - background-color: white; +.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; +#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); +#editorStampParamsToolbar{ + inset-inline-end:calc(var(--editor-toolbar-base-offset) + 0px); } -#editorInkParamsToolbar { - inset-inline-end: 68px; - background-color: var(--toolbar-bg-color); +#editorInkParamsToolbar{ + inset-inline-end:calc(var(--editor-toolbar-base-offset) + 28px); } -#editorFreeTextParamsToolbar { - inset-inline-end: 96px; - background-color: var(--toolbar-bg-color); +#editorFreeTextParamsToolbar{ + inset-inline-end:calc(var(--editor-toolbar-base-offset) + 56px); } -#editorStampAddImage::before { - -webkit-mask-image: var(--editorParams-stampAddImage-icon); - mask-image: var(--editorParams-stampAddImage-icon); +#editorHighlightParamsToolbar{ + inset-inline-end:calc(var(--editor-toolbar-base-offset) + 84px); +} + +#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); +.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); +:is(.doorHanger, .doorHangerRight)::before{ + bottom:100%; + border:8px solid rgb(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; } -.doorHanger::after { - inset-inline-start: 10px; - margin-inline-start: -8px; - border-bottom-color: var(--toolbar-bg-color); +#findResultsCount{ + background-color:rgb(217 217 217); + color:rgb(82 82 82); + text-align:center; + padding:4px 5px; + margin:5px; } -.doorHangerRight::after { - inset-inline-end: 10px; - margin-inline-end: -8px; - border-bottom-color: var(--doorhanger-bg-color); +#findMsg[data-status="notFound"]{ + font-weight:bold; } -:is(.doorHanger, .doorHangerRight)::before { - border-bottom-color: var(--doorhanger-border-color); - border-width: 9px; +:is(#findResultsCount, #findMsg):empty{ + display:none; } -.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%); +#toolbarViewerMiddle{ + position:absolute; + left:50%; + transform:translateX(-50%); } #toolbarViewerLeft, -#toolbarSidebarLeft { - float: var(--inline-start); +#toolbarSidebarLeft{ + float:var(--inline-start); } - #toolbarViewerRight, -#toolbarSidebarRight { - float: var(--inline-end); +#toolbarSidebarRight{ + float:var(--inline-end); } #toolbarViewerLeft > *, @@ -2807,227 +3457,216 @@ body { #toolbarViewerRight > *, #toolbarSidebarLeft *, #toolbarSidebarRight *, -.findbar * { - position: relative; - float: var(--inline-start); +.findbar *{ + position:relative; + float:var(--inline-start); } -#toolbarViewerLeft { - padding-inline-start: 1px; +#toolbarViewerLeft{ + padding-inline-start:1px; +} +#toolbarViewerRight{ + padding-inline-end:1px; +} +#toolbarSidebarRight{ + padding-inline-end:2px; } -#toolbarViewerRight { - padding-inline-end: 1px; +.splitToolbarButton{ + margin:2px; + display:inline-block; } - -#toolbarSidebarRight { - padding-inline-end: 2px; -} - -.splitToolbarButton { - margin: 2px; - display: inline-block; -} - -.splitToolbarButton > .toolbarButton { - float: var(--inline-start); +.splitToolbarButton > .toolbarButton{ + float:var(--inline-start); } .toolbarButton, .secondaryToolbarButton, -.dialogButton { - border: none; - background: none; - width: 28px; - height: 28px; - outline: none; +.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){ + background-color:var(--dialog-button-hover-bg-color); } -.dialogButton:is(:hover, :focus-visible) > span { - color: var(--dialog-button-hover-color); +.dialogButton:is(:hover, :focus-visible) > span{ + color:var(--dialog-button-hover-color); } -.toolbarButton > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; +.toolbarButton > span{ + display:inline-block; + width:0; + height:0; + overflow:hidden; } -:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled] { - opacity: 0.5; +:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled]{ + opacity:0.5; } .splitToolbarButton > .toolbarButton:is(:hover, :focus-visible), -.dropdownToolbarButton:hover { - background-color: var(--button-hover-color); +.dropdownToolbarButton:hover{ + background-color:var(--button-hover-color); +} +.splitToolbarButton > .toolbarButton{ + position:relative; + margin:0; +} +#toolbarSidebar .splitToolbarButton > .toolbarButton{ + margin-inline-end:2px; } -.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); +.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; +.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); +.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); +.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); +.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; +.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::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); +.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{ + display:flex; + width:-moz-fit-content; + width:fit-content; + min-width:140px; + 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::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; + min-width:inherit; + height:28px; + font-size:12px; + color:var(--main-color); + margin:0; + padding-block:1px 2px; + padding-inline:6px 38px; + 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); } -.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; +.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; +.dropdownToolbarButton::after{ + position:absolute; + display:inline-block; + width:16px; + height:16px; - content: ""; - background-color: var(--toolbar-icon-bg-color); - -webkit-mask-size: cover; - mask-size: cover; + 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); +.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::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: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; +.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)); +#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)); +#secondaryToolbarToggle::before{ + -webkit-mask-image:var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image:var(--toolbarButton-secondaryToolbarToggle-icon); + transform:scaleX(var(--dir-factor)); } #backToHome::before { @@ -3036,693 +3675,677 @@ body { transform: scaleX(var(--dir-factor)); } -#findPrevious::before { - -webkit-mask-image: var(--findbarButton-previous-icon); - mask-image: var(--findbarButton-previous-icon); +#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); +#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); +#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); +#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); +#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); +#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); +#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); +#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); +#editorHighlight::before{ + -webkit-mask-image:var(--toolbarButton-editorHighlight-icon); + mask-image:var(--toolbarButton-editorHighlight-icon); } -#editorStamp::before { - -webkit-mask-image: var(--toolbarButton-editorStamp-icon); - mask-image: var(--toolbarButton-editorStamp-icon); +#editorInk::before{ + -webkit-mask-image:var(--toolbarButton-editorInk-icon); + mask-image:var(--toolbarButton-editorInk-icon); } -#print::before, -#secondaryPrint::before { - -webkit-mask-image: var(--toolbarButton-print-icon); - mask-image: var(--toolbarButton-print-icon); +#editorStamp::before{ + -webkit-mask-image:var(--toolbarButton-editorStamp-icon); + mask-image:var(--toolbarButton-editorStamp-icon); } -:is(#openFile, #secondaryOpenFile)::before { - -webkit-mask-image: var(--toolbarButton-openFile-icon); - mask-image: var(--toolbarButton-openFile-icon); +:is(#print, #secondaryPrint)::before{ + -webkit-mask-image:var(--toolbarButton-print-icon); + mask-image:var(--toolbarButton-print-icon); } -:is(#backToHome, #secondaryBackToHome)::before { - -webkit-mask-image: var(--toolbarButton-backToHome-icon); - mask-image: var(--toolbarButton-backToHome-icon); +#secondaryOpenFile::before, #openFile::before{ + -webkit-mask-image:var(--toolbarButton-openFile-icon); + mask-image:var(--toolbarButton-openFile-icon); } -:is(#download, #secondaryDownload)::before { - -webkit-mask-image: var(--toolbarButton-download-icon); - mask-image: var(--toolbarButton-download-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.secondaryToolbarButton{ + padding-top:5px; + text-decoration:none; +} +a:is(.toolbarButton, .secondaryToolbarButton)[href="#"]{ + opacity:0.5; + pointer-events: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); } -#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); } -#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)); } -#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); } -#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); } -#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)); } -#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); } -#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; + content:""; + background-color:rgb(112 219 85); + height:9px; + width:9px; + border-radius:50%; } -.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; } -.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; +#firstPage::before{ + -webkit-mask-image:var(--secondaryToolbarButton-firstPage-icon); + mask-image:var(--secondaryToolbarButton-firstPage-icon); } -.secondaryToolbarButton > span { - padding-inline-end: 4px; +#lastPage::before{ + -webkit-mask-image:var(--secondaryToolbarButton-lastPage-icon); + mask-image:var(--secondaryToolbarButton-lastPage-icon); } -#firstPage::before { - -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); - mask-image: var(--secondaryToolbarButton-firstPage-icon); +#pageRotateCcw::before{ + -webkit-mask-image:var(--secondaryToolbarButton-rotateCcw-icon); + mask-image:var(--secondaryToolbarButton-rotateCcw-icon); } -#lastPage::before { - -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); - mask-image: var(--secondaryToolbarButton-lastPage-icon); +#pageRotateCw::before{ + -webkit-mask-image:var(--secondaryToolbarButton-rotateCw-icon); + mask-image:var(--secondaryToolbarButton-rotateCw-icon); } -#pageRotateCcw::before { - -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); - mask-image: var(--secondaryToolbarButton-rotateCcw-icon); +#cursorSelectTool::before{ + -webkit-mask-image:var(--secondaryToolbarButton-selectTool-icon); + mask-image:var(--secondaryToolbarButton-selectTool-icon); } -#pageRotateCw::before { - -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); - mask-image: var(--secondaryToolbarButton-rotateCw-icon); +#cursorHandTool::before{ + -webkit-mask-image:var(--secondaryToolbarButton-handTool-icon); + mask-image:var(--secondaryToolbarButton-handTool-icon); } -#cursorSelectTool::before { - -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); - mask-image: var(--secondaryToolbarButton-selectTool-icon); +#scrollPage::before{ + -webkit-mask-image:var(--secondaryToolbarButton-scrollPage-icon); + mask-image:var(--secondaryToolbarButton-scrollPage-icon); } -#cursorHandTool::before { - -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); - mask-image: var(--secondaryToolbarButton-handTool-icon); +#scrollVertical::before{ + -webkit-mask-image:var(--secondaryToolbarButton-scrollVertical-icon); + mask-image:var(--secondaryToolbarButton-scrollVertical-icon); } -#scrollPage::before { - -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon); - mask-image: var(--secondaryToolbarButton-scrollPage-icon); +#scrollHorizontal::before{ + -webkit-mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon); } -#scrollVertical::before { - -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); - mask-image: var(--secondaryToolbarButton-scrollVertical-icon); +#scrollWrapped::before{ + -webkit-mask-image:var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image:var(--secondaryToolbarButton-scrollWrapped-icon); } -#scrollHorizontal::before { - -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); - mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); +#spreadNone::before{ + -webkit-mask-image:var(--secondaryToolbarButton-spreadNone-icon); + mask-image:var(--secondaryToolbarButton-spreadNone-icon); } -#scrollWrapped::before { - -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); - mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); +#spreadOdd::before{ + -webkit-mask-image:var(--secondaryToolbarButton-spreadOdd-icon); + mask-image:var(--secondaryToolbarButton-spreadOdd-icon); } -#spreadNone::before { - -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); - mask-image: var(--secondaryToolbarButton-spreadNone-icon); +#spreadEven::before{ + -webkit-mask-image:var(--secondaryToolbarButton-spreadEven-icon); + mask-image:var(--secondaryToolbarButton-spreadEven-icon); } -#spreadOdd::before { - -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); - mask-image: var(--secondaryToolbarButton-spreadOdd-icon); +#documentProperties::before{ + -webkit-mask-image:var(--secondaryToolbarButton-documentProperties-icon); + mask-image:var(--secondaryToolbarButton-documentProperties-icon); } -#spreadEven::before { - -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); - mask-image: var(--secondaryToolbarButton-spreadEven-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); } -#documentProperties::before { - -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); - mask-image: var(--secondaryToolbarButton-documentProperties-icon); +.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; } -.verticalToolbarSeparator { - display: block; - margin: 5px 2px; - width: 1px; - height: 22px; - background-color: var(--separator-color); +.toolbarField[type="checkbox"]{ + opacity:0; + position:absolute !important; + left:0; + margin:10px 0 3px; + margin-inline-start:7px; } -.horizontalToolbarSeparator { - display: block; - margin: 6px 0; - height: 1px; - width: 100%; - background-color: var(--doorhanger-separator-color); +#pageNumber{ + -moz-appearance:textfield; + text-align:end; + width:40px; + background-size:0 0; + transition-property:none; } -.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; +#pageNumber::-webkit-inner-spin-button{ + -webkit-appearance:none; + } + +.loadingInput:has(> #pageNumber.loading)::after{ + display:block; + visibility:visible; + + transition-property:visibility; + transition-delay:var(--loading-icon-delay); + } + +.loadingInput::after{ + position:absolute; + visibility:hidden; + display:none; + top:calc(50% - 8px); + width:16px; + height:16px; + + content:""; + background-color:var(--toolbar-icon-bg-color); + -webkit-mask-size:cover; + mask-size:cover; + -webkit-mask-image:var(--loading-icon); + mask-image:var(--loading-icon); + } + +.loadingInput.start::after{ + inset-inline-start:4px; + } + +.loadingInput.end::after{ + inset-inline-end:4px; + } + +.toolbarField:focus{ + border-color:#0a84ff; } -.toolbarField[type="checkbox"] { - opacity: 0; - position: absolute !important; - left: 0; - margin: 10px 0 3px; - margin-inline-start: 7px; +.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; } -#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; +#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; +#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 { - width: calc(100% - 60px); - padding: 10px 30px 0; +#thumbnailView > a:is(:active, :focus){ + outline:0; } -#thumbnailView > a:is(:active, :focus) { - outline: 0; +.thumbnail{ + --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; } -.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; +#thumbnailView > a:last-of-type > .thumbnail{ + margin-bottom:10px; } a:focus > .thumbnail, -.thumbnail:hover { - border-color: var(--thumbnail-hover-color); +.thumbnail:hover{ + border-color:var(--thumbnail-hover-color); +} +.thumbnail.selected{ + border-color:var(--thumbnail-selected-color) !important; } -.thumbnail.selected { - border-color: var(--thumbnail-selected-color) !important; +.thumbnailImage{ + width:var(--thumbnail-width); + height:var(--thumbnail-height); + opacity:0.9; } - -.thumbnailImage { - width: var(--thumbnail-width); - height: var(--thumbnail-height); - opacity: 0.9; -} - a:focus > .thumbnail > .thumbnailImage, -.thumbnail:hover > .thumbnailImage { - opacity: 0.95; +.thumbnail:hover > .thumbnailImage{ + opacity:0.95; +} +.thumbnail.selected > .thumbnailImage{ + opacity:1 !important; } -.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); +.thumbnail:not([data-loaded]) > .thumbnailImage{ + width:calc(var(--thumbnail-width) - 2px); + height:calc(var(--thumbnail-height) - 2px); + border:1px dashed rgb(132 132 132); } .treeWithDeepNesting > .treeItem, -.treeItem > .treeItems { - margin-inline-start: 20px; +.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; +.treeItem > a{ + text-decoration:none; + display:inline-block; + 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 *{ + cursor:pointer; +} +#layersView .treeItem > a > label{ + padding-inline-start:4px; +} +#layersView .treeItem > a > label > input{ + float:var(--inline-start); + margin-top:1px; } -#layersView .treeItem > a > label { - padding-inline-start: 4px; +.treeItemToggler{ + position:relative; + float:var(--inline-start); + height:0; + width:0; + color:rgb(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; } -#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); +.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); +.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; +#outlineOptionsContainer{ + display:none; } -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); +#sidebarContainer:has(#outlineView:not(.hidden)) #outlineOptionsContainer{ + display:inherit; + } + +.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::backdrop { - background-color: rgba(0, 0, 0, 0.2); +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 rgb(0 0 0 / 0.5); + border-radius:4px; + box-shadow:0 1px 4px rgb(0 0 0 / 0.3); +} +dialog::backdrop{ + background-color:rgb(0 0 0 / 0.2); } -dialog > .row { - display: table-row; +dialog > .row{ + display:table-row; } -dialog > .row > * { - display: table-cell; +dialog > .row > *{ + display:table-cell; } -dialog .toolbarField { - margin: 5px 0; +dialog .toolbarField{ + margin:5px 0; } -dialog .separator { - display: block; - margin: 4px 0; - height: 1px; - width: 100%; - background-color: var(--separator-color); +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 .buttonRow{ + text-align:center; + vertical-align:middle; } -dialog :link { - color: rgba(255, 255, 255, 1); +dialog :link{ + color:rgb(255 255 255); } -#passwordDialog { - text-align: center; +#passwordDialog{ + text-align:center; +} +#passwordDialog .toolbarField{ + width:200px; } -#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; } -#documentPropertiesDialog { - text-align: left; +.grab-to-pan-grab{ + cursor:grab !important; } - -#documentPropertiesDialog .row > * { - min-width: 100px; - text-align: start; +.grab-to-pan-grab + *:not(input):not(textarea):not(button):not(select):not(:link){ + cursor:inherit !important; } - -#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{ + cursor:grabbing !important; +} +.grab-to-pan-grabbing{ + position:fixed; + background:rgb(0 0 0 / 0); + display:block; + inset:0; + overflow:hidden; + z-index:50000; } -.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; } -@page { - margin: 0; +#printContainer{ + display:none; } -#printContainer { - display: none; -} +@media print{ + body{ + background:rgb(0 0 0 / 0) none; + } + body[data-pdfjsprinting] #outerContainer{ + display:none; + } + body[data-pdfjsprinting] #printContainer{ + display:block; + } + #printContainer{ + height:100%; + } + #printContainer > .printedPage{ + page-break-after:always; + page-break-inside:avoid; + height:100%; + width:100%; -@media print { - body { - background: rgba(0, 0, 0, 0) none; + display:flex; + flex-direction:column; + justify-content:center; + align-items:center; } - body[data-pdfjsprinting] #outerContainer { - display: none; + #printContainer > .xfaPrintedPage .xfaPage{ + position:absolute; } - body[data-pdfjsprinting] #printContainer { - display: block; + #printContainer > .xfaPrintedPage{ + page-break-after:always; + page-break-inside:avoid; + width:100%; + height:100%; + position:relative; } - #printContainer { - height: 100%; - } + #printContainer > .printedPage :is(canvas, img){ + max-width:100%; + max-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; + direction:ltr; + display:block; } } -.visibleLargeView, -.visibleMediumView { - display: none; +.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: 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); +@media all and (max-width: 840px){ + #sidebarContainer{ + background-color:var(--sidebar-narrow-bg-color); } - - #outerContainer.sidebarOpen #viewerContainer { - inset-inline-start: 0 !important; + #outerContainer.sidebarOpen #viewerContainer{ + inset-inline-start:0 !important; } } -@media all and (max-width: 820px) { - #outerContainer .hiddenLargeView { - display: none; +@media all and (max-width: 750px){ + :root{ + --editor-toolbar-base-offset:40px; } - - #outerContainer .visibleLargeView { - display: inherit; + #outerContainer .hiddenMediumView{ + display:none; + } + #outerContainer .visibleMediumView{ + display:inherit; } } -@media all and (max-width: 750px) { - #outerContainer .hiddenMediumView { - display: none; - } - - #outerContainer .visibleMediumView { - display: inherit; - } -} - -@media all and (max-width: 690px) { +@media all and (max-width: 690px){ .hiddenSmallView, - .hiddenSmallView * { - display: none; + .hiddenSmallView *{ + display:none; } - - .toolbarButtonSpacer { - width: 0; + .toolbarButtonSpacer{ + width:0; } - - .findbar { - inset-inline-start: 34px; + .findbar{ + inset-inline-start:34px; } } -@media all and (max-width: 560px) { - #scaleSelectContainer { - display: none; +@media all and (max-width: 560px){ + #scaleSelectContainer{ + display:none; } } diff --git a/src/main/resources/static/pdfjs/images/altText_add.svg b/src/main/resources/static/pdfjs/images/altText_add.svg index 6730edff..3451b536 100644 --- a/src/main/resources/static/pdfjs/images/altText_add.svg +++ b/src/main/resources/static/pdfjs/images/altText_add.svg @@ -1,4 +1,3 @@ - - + + diff --git a/src/main/resources/static/pdfjs/images/altText_done.svg b/src/main/resources/static/pdfjs/images/altText_done.svg index defc9318..f54924eb 100644 --- a/src/main/resources/static/pdfjs/images/altText_done.svg +++ b/src/main/resources/static/pdfjs/images/altText_done.svg @@ -1,4 +1,3 @@ - - + + diff --git a/src/main/resources/static/pdfjs/images/annotation-check.svg b/src/main/resources/static/pdfjs/images/annotation-check.svg index b6849b30..71cd16df 100644 --- a/src/main/resources/static/pdfjs/images/annotation-check.svg +++ b/src/main/resources/static/pdfjs/images/annotation-check.svg @@ -1,11 +1,11 @@ + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z" + id="path4" + style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" /> diff --git a/src/main/resources/static/pdfjs/images/annotation-comment.svg b/src/main/resources/static/pdfjs/images/annotation-comment.svg index 83fbfb44..86f1f172 100644 --- a/src/main/resources/static/pdfjs/images/annotation-comment.svg +++ b/src/main/resources/static/pdfjs/images/annotation-comment.svg @@ -1,16 +1,16 @@ + xmlns="http://www.w3.org/2000/svg" + height="40" + width="40" + viewBox="0 0 40 40"> + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + width="33.76017" + height="33.76017" + x="3.119915" + y="3.119915" /> + d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> diff --git a/src/main/resources/static/pdfjs/images/annotation-help.svg b/src/main/resources/static/pdfjs/images/annotation-help.svg index 81a00ac1..00938fef 100644 --- a/src/main/resources/static/pdfjs/images/annotation-help.svg +++ b/src/main/resources/static/pdfjs/images/annotation-help.svg @@ -1,26 +1,26 @@ + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + + - - - - - + transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)"> + + + diff --git a/src/main/resources/static/pdfjs/images/annotation-insert.svg b/src/main/resources/static/pdfjs/images/annotation-insert.svg index ca9e9e20..519ef682 100644 --- a/src/main/resources/static/pdfjs/images/annotation-insert.svg +++ b/src/main/resources/static/pdfjs/images/annotation-insert.svg @@ -1,10 +1,10 @@ - + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + diff --git a/src/main/resources/static/pdfjs/images/annotation-key.svg b/src/main/resources/static/pdfjs/images/annotation-key.svg index 733edc0b..8d09d537 100644 --- a/src/main/resources/static/pdfjs/images/annotation-key.svg +++ b/src/main/resources/static/pdfjs/images/annotation-key.svg @@ -1,11 +1,11 @@ - + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + diff --git a/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg b/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg index e75f9807..38d2497d 100644 --- a/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg +++ b/src/main/resources/static/pdfjs/images/annotation-newparagraph.svg @@ -1,11 +1,11 @@ - + xmlns="http://www.w3.org/2000/svg" + width="64" + height="64" + viewBox="0 0 64 64"> + diff --git a/src/main/resources/static/pdfjs/images/annotation-noicon.svg b/src/main/resources/static/pdfjs/images/annotation-noicon.svg index 21423057..c07d1080 100644 --- a/src/main/resources/static/pdfjs/images/annotation-noicon.svg +++ b/src/main/resources/static/pdfjs/images/annotation-noicon.svg @@ -1,7 +1,7 @@ + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> diff --git a/src/main/resources/static/pdfjs/images/annotation-note.svg b/src/main/resources/static/pdfjs/images/annotation-note.svg index f5f2c16a..70173651 100644 --- a/src/main/resources/static/pdfjs/images/annotation-note.svg +++ b/src/main/resources/static/pdfjs/images/annotation-note.svg @@ -1,42 +1,42 @@ - - - - - + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + + + + + diff --git a/src/main/resources/static/pdfjs/images/annotation-paperclip.svg b/src/main/resources/static/pdfjs/images/annotation-paperclip.svg index a93960b2..2bed2250 100644 --- a/src/main/resources/static/pdfjs/images/annotation-paperclip.svg +++ b/src/main/resources/static/pdfjs/images/annotation-paperclip.svg @@ -2,5 +2,5 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/src/main/resources/static/pdfjs/images/annotation-paragraph.svg b/src/main/resources/static/pdfjs/images/annotation-paragraph.svg index be06ce9b..6ae5212b 100644 --- a/src/main/resources/static/pdfjs/images/annotation-paragraph.svg +++ b/src/main/resources/static/pdfjs/images/annotation-paragraph.svg @@ -1,16 +1,16 @@ - - + xmlns="http://www.w3.org/2000/svg" + width="40" + height="40" + viewBox="0 0 40 40"> + + diff --git a/src/main/resources/static/pdfjs/images/annotation-pushpin.svg b/src/main/resources/static/pdfjs/images/annotation-pushpin.svg index 325f9d3f..6e0896cf 100644 --- a/src/main/resources/static/pdfjs/images/annotation-pushpin.svg +++ b/src/main/resources/static/pdfjs/images/annotation-pushpin.svg @@ -2,6 +2,6 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + diff --git a/src/main/resources/static/pdfjs/images/cursor-editorFreeHighlight.svg b/src/main/resources/static/pdfjs/images/cursor-editorFreeHighlight.svg new file mode 100644 index 00000000..513f6bdf --- /dev/null +++ b/src/main/resources/static/pdfjs/images/cursor-editorFreeHighlight.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg b/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg index 42ba1f6a..de2838ef 100644 --- a/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg +++ b/src/main/resources/static/pdfjs/images/cursor-editorFreeText.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/cursor-editorInk.svg b/src/main/resources/static/pdfjs/images/cursor-editorInk.svg index 249f4634..1dadb5c0 100644 --- a/src/main/resources/static/pdfjs/images/cursor-editorInk.svg +++ b/src/main/resources/static/pdfjs/images/cursor-editorInk.svg @@ -1,6 +1,4 @@ - - + + diff --git a/src/main/resources/static/pdfjs/images/cursor-editorTextHighlight.svg b/src/main/resources/static/pdfjs/images/cursor-editorTextHighlight.svg new file mode 100644 index 00000000..800340cb --- /dev/null +++ b/src/main/resources/static/pdfjs/images/cursor-editorTextHighlight.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/resources/static/pdfjs/images/editor-toolbar-delete.svg b/src/main/resources/static/pdfjs/images/editor-toolbar-delete.svg new file mode 100644 index 00000000..f84520d8 --- /dev/null +++ b/src/main/resources/static/pdfjs/images/editor-toolbar-delete.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/pdfjs/images/findbarButton-next.svg b/src/main/resources/static/pdfjs/images/findbarButton-next.svg index dba19fe3..8cb39bec 100644 --- a/src/main/resources/static/pdfjs/images/findbarButton-next.svg +++ b/src/main/resources/static/pdfjs/images/findbarButton-next.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/findbarButton-previous.svg b/src/main/resources/static/pdfjs/images/findbarButton-previous.svg index 34137059..b610879d 100644 --- a/src/main/resources/static/pdfjs/images/findbarButton-previous.svg +++ b/src/main/resources/static/pdfjs/images/findbarButton-previous.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg b/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg index 0e82606b..d56cf3ce 100644 --- a/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg +++ b/src/main/resources/static/pdfjs/images/gv-toolbarButton-download.svg @@ -1,5 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg b/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg deleted file mode 100644 index 1aa278f2..00000000 --- a/src/main/resources/static/pdfjs/images/gv-toolbarButton-openinapp.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/main/resources/static/pdfjs/images/loading.svg b/src/main/resources/static/pdfjs/images/loading.svg index d63eaf01..0a15ff68 100644 --- a/src/main/resources/static/pdfjs/images/loading.svg +++ b/src/main/resources/static/pdfjs/images/loading.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - \ No newline at end of file + \ 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 index 2fc1915e..dd3917b9 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-documentProperties.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-documentProperties.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg index 42fb45eb..f5c917f1 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-firstPage.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg index a67b3c50..b7073b59 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-handTool.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg index ab9a4dea..c04f6507 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-lastPage.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg index 0cf4058b..da73a1b1 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCcw.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg index 243f809f..c41ce736 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-rotateCw.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg index 955cae02..fb440b94 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg index 4f4762ea..64a9f500 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollPage.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg index 8713d497..dc7e8052 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollVertical.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg index 162db0b2..75fe26bc 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg index 1f3f22ce..94d51410 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-selectTool.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg index c51c427d..ce201e33 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadEven.svg @@ -1,5 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg index e768bf94..e8d487fa 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadNone.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg index 1788cae1..9211a427 100644 --- a/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg +++ b/src/main/resources/static/pdfjs/images/secondaryToolbarButton-spreadOdd.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg b/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg index e8711178..c4c37c90 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-bookmark.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg b/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg index cfdb8f69..01e67623 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-currentOutlineItem.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-download.svg b/src/main/resources/static/pdfjs/images/toolbarButton-download.svg index 57a847d2..e2e850ad 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-download.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-download.svg @@ -1,6 +1,4 @@ - - + + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg index 247409dc..13a67bd9 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorFreeText.svg @@ -1,4 +1,5 @@ - + + + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorHighlight.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorHighlight.svg new file mode 100644 index 00000000..b3cd7fda --- /dev/null +++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorHighlight.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg index 7586ebcd..b579eec7 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorInk.svg @@ -1,6 +1,4 @@ - - + + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg b/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg index 81b95819..a1fef492 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-editorStamp.svg @@ -1,9 +1,8 @@ - - - - + + + + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg b/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg index a9a1c68a..82ffeaab 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-menuArrow.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg b/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg index 946baf64..e773781d 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-openFile.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg b/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg index 2de1fbdc..1fc12e73 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-pageDown.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg b/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg index bcc315d7..0936b9a5 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-pageUp.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg b/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg index 57a7bb38..901d5672 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-presentationMode.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-print.svg b/src/main/resources/static/pdfjs/images/toolbarButton-print.svg index a20be253..97a39047 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-print.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-print.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-search.svg b/src/main/resources/static/pdfjs/images/toolbarButton-search.svg index d213e1b9..0cc7ae21 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-search.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-search.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg b/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg index 93cbadf0..cace8637 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg b/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg index 03a2399f..1d8d0e4b 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-sidebarToggle.svg @@ -1,5 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg index 9e825095..ab73f6e6 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewAttachments.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg index 817e4e00..1d726682 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewLayers.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg index 8a031fc5..7ed1bd97 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewOutline.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg b/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg index b34f5c9b..040d1232 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-viewThumbnail.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg b/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg index 595e0d59..30ec51a2 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-zoomIn.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg b/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg index fe55e30a..f273b599 100644 --- a/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg +++ b/src/main/resources/static/pdfjs/images/toolbarButton-zoomOut.svg @@ -1,4 +1,3 @@ - + diff --git a/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg b/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg index 084d133f..831cddfc 100644 --- a/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg +++ b/src/main/resources/static/pdfjs/images/treeitem-collapsed.svg @@ -1,3 +1 @@ - - - \ No newline at end of file + \ 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 index ca2dba2f..2d45f0c8 100644 --- a/src/main/resources/static/pdfjs/images/treeitem-expanded.svg +++ b/src/main/resources/static/pdfjs/images/treeitem-expanded.svg @@ -1,3 +1 @@ - - - \ No newline at end of file + \ 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 deleted file mode 100644 index 3ed440f6..00000000 --- a/src/main/resources/static/pdfjs/js/viewer.js +++ /dev/null @@ -1,14902 +0,0 @@ -/** - * @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 deleted file mode 100644 index faf37bc9..00000000 --- a/src/main/resources/static/pdfjs/js/viewer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 Item 0\" and texts[0] = \"Item 0\";\n *\n * @param {Array} divs\n * @param {Array} texts\n */\n setTextMapping(divs, texts) {\n this.textDivs = divs;\n this.textContentItemsStr = texts;\n }\n\n /**\n * Start listening for events to update the highlighter and check if there are\n * any current matches that need be highlighted.\n */\n enable() {\n if (!this.textDivs || !this.textContentItemsStr) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n if (this.enabled) {\n throw new Error(\"TextHighlighter is already enabled.\");\n }\n this.enabled = true;\n if (!this._onUpdateTextLayerMatches) {\n this._onUpdateTextLayerMatches = evt => {\n if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\n this._updateMatches();\n }\n };\n this.eventBus._on(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n }\n this._updateMatches();\n }\n\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this._onUpdateTextLayerMatches) {\n this.eventBus._off(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n this._onUpdateTextLayerMatches = null;\n }\n this._updateMatches(/* reset = */ true);\n }\n\n _convertMatches(matches, matchesLength) {\n // Early exit if there is nothing to convert.\n if (!matches) {\n return [];\n }\n const { textContentItemsStr } = this;\n\n let i = 0,\n iIndex = 0;\n const end = textContentItemsStr.length - 1;\n const result = [];\n\n for (let m = 0, mm = matches.length; m < mm; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error(\"Could not find a matching mapping\");\n }\n\n const match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n matchIdx += matchesLength[m];\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n result.push(match);\n }\n return result;\n }\n\n _renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n const { findController, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n\n const isSelectedPage = pageIdx === findController.selected.pageIdx;\n const selectedMatchIdx = findController.selected.matchIdx;\n const highlightAll = findController.state.highlightAll;\n let prevEnd = null;\n const infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n const divIdx = begin.divIdx;\n textDivs[divIdx].textContent = \"\";\n return appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n if (div.nodeType === Node.TEXT_NODE) {\n const span = document.createElement(\"span\");\n div.before(span);\n span.append(div);\n textDivs[divIdx] = span;\n div = span;\n }\n const content = textContentItemsStr[divIdx].substring(\n fromOffset,\n toOffset\n );\n const node = document.createTextNode(content);\n if (className) {\n const span = document.createElement(\"span\");\n span.className = `${className} appended`;\n span.append(node);\n div.append(span);\n return className.includes(\"selected\") ? span.offsetLeft : 0;\n }\n div.append(node);\n return 0;\n }\n\n let i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n let lastDivIdx = -1;\n let lastOffset = -1;\n for (let i = i0; i < i1; i++) {\n const match = matches[i];\n const begin = match.begin;\n if (begin.divIdx === lastDivIdx && begin.offset === lastOffset) {\n // It's possible to be in this situation if we searched for a 'f' and we\n // have a ligature 'ff' in the text. The 'ff' has to be highlighted two\n // times.\n continue;\n }\n lastDivIdx = begin.divIdx;\n lastOffset = begin.offset;\n\n const end = match.end;\n const isSelected = isSelectedPage && i === selectedMatchIdx;\n const highlightSuffix = isSelected ? \" selected\" : \"\";\n let selectedLeft = 0;\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n end.offset,\n \"highlight\" + highlightSuffix\n );\n } else {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n infinity.offset,\n \"highlight begin\" + highlightSuffix\n );\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = \"highlight middle\" + highlightSuffix;\n }\n beginText(end, \"highlight end\" + highlightSuffix);\n }\n prevEnd = end;\n\n if (isSelected) {\n // Attempt to scroll the selected match into view.\n findController.scrollMatchIntoView({\n element: textDivs[begin.divIdx],\n selectedLeft,\n pageIndex: pageIdx,\n matchIndex: selectedMatchIdx,\n });\n }\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n _updateMatches(reset = false) {\n if (!this.enabled && !reset) {\n return;\n }\n const { findController, matches, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (const match of matches) {\n const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n const div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = \"\";\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (!findController?.highlightMatches || reset) {\n return;\n }\n // Convert the matches on the `findController` into the match format\n // used for the textLayer.\n const pageMatches = findController.pageMatches[pageIdx] || null;\n const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\n\n this.matches = this._convertMatches(pageMatches, pageMatchesLength);\n this._renderMatches(this.matches);\n }\n}\n\nexport { TextHighlighter };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../src/display/api\").TextContent} TextContent */\n/** @typedef {import(\"./text_highlighter\").TextHighlighter} TextHighlighter */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n\nimport { normalizeUnicode, renderTextLayer, updateTextLayer } from \"pdfjs-lib\";\nimport { removeNullCharacters } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {TextHighlighter} highlighter - Optional object that will handle\n * highlighting text from the find controller.\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {boolean} [isOffscreenCanvasSupported] - Allows to use an\n * OffscreenCanvas if needed.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n #enablePermissions = false;\n\n #rotation = 0;\n\n #scale = 0;\n\n #textContentSource = null;\n\n constructor({\n highlighter = null,\n accessibilityManager = null,\n isOffscreenCanvasSupported = true,\n enablePermissions = false,\n }) {\n this.textContentItemsStr = [];\n this.renderingDone = false;\n this.textDivs = [];\n this.textDivProperties = new WeakMap();\n this.textLayerRenderTask = null;\n this.highlighter = highlighter;\n this.accessibilityManager = accessibilityManager;\n this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this.#enablePermissions = enablePermissions === true;\n\n this.div = document.createElement(\"div\");\n this.div.className = \"textLayer\";\n this.hide();\n }\n\n #finishRendering() {\n this.renderingDone = true;\n\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.div.append(endOfContent);\n\n this.#bindMouse();\n }\n\n get numTextDivs() {\n return this.textDivs.length;\n }\n\n /**\n * Renders the text layer.\n * @param {PageViewport} viewport\n */\n async render(viewport) {\n if (!this.#textContentSource) {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const { rotation } = viewport;\n if (this.renderingDone) {\n const mustRotate = rotation !== this.#rotation;\n const mustRescale = scale !== this.#scale;\n if (mustRotate || mustRescale) {\n this.hide();\n updateTextLayer({\n container: this.div,\n viewport,\n textDivs: this.textDivs,\n textDivProperties: this.textDivProperties,\n isOffscreenCanvasSupported: this.isOffscreenCanvasSupported,\n mustRescale,\n mustRotate,\n });\n this.#scale = scale;\n this.#rotation = rotation;\n }\n this.show();\n return;\n }\n\n this.cancel();\n this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);\n this.accessibilityManager?.setTextMapping(this.textDivs);\n\n this.textLayerRenderTask = renderTextLayer({\n textContentSource: this.#textContentSource,\n container: this.div,\n viewport,\n textDivs: this.textDivs,\n textDivProperties: this.textDivProperties,\n textContentItemsStr: this.textContentItemsStr,\n isOffscreenCanvasSupported: this.isOffscreenCanvasSupported,\n });\n\n await this.textLayerRenderTask.promise;\n this.#finishRendering();\n this.#scale = scale;\n this.#rotation = rotation;\n this.show();\n this.accessibilityManager?.enable();\n }\n\n hide() {\n if (!this.div.hidden) {\n // We turn off the highlighter in order to avoid to scroll into view an\n // element of the text layer which could be hidden.\n this.highlighter?.disable();\n this.div.hidden = true;\n }\n }\n\n show() {\n if (this.div.hidden && this.renderingDone) {\n this.div.hidden = false;\n this.highlighter?.enable();\n }\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n this.highlighter?.disable();\n this.accessibilityManager?.disable();\n this.textContentItemsStr.length = 0;\n this.textDivs.length = 0;\n this.textDivProperties = new WeakMap();\n }\n\n /**\n * @param {ReadableStream | TextContent} source\n */\n setTextContentSource(source) {\n this.cancel();\n this.#textContentSource = source;\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n */\n #bindMouse() {\n const { div } = this;\n\n div.addEventListener(\"mousedown\", evt => {\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n adjustTop &&=\n getComputedStyle(end).getPropertyValue(\"-moz-user-select\") !==\n \"none\";\n }\n if (adjustTop) {\n const divBounds = div.getBoundingClientRect();\n const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + \"%\";\n }\n }\n end.classList.add(\"active\");\n });\n\n div.addEventListener(\"mouseup\", () => {\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n end.style.top = \"\";\n }\n end.classList.remove(\"active\");\n });\n\n div.addEventListener(\"copy\", event => {\n if (!this.#enablePermissions) {\n const selection = document.getSelection();\n event.clipboardData.setData(\n \"text/plain\",\n removeNullCharacters(normalizeUnicode(selection.toString()))\n );\n }\n event.preventDefault();\n event.stopPropagation();\n });\n }\n}\n\nexport { TextLayerBuilder };\n","/* Copyright 2021 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\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/annotation_storage\").AnnotationStorage} AnnotationStorage */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaLayer } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} XfaLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {Object} [xfaHtml]\n */\n\nclass XfaLayerBuilder {\n /**\n * @param {XfaLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n annotationStorage = null,\n linkService,\n xfaHtml = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.annotationStorage = annotationStorage;\n this.linkService = linkService;\n this.xfaHtml = xfaHtml;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise} A promise that is resolved when rendering\n * of the XFA layer is complete. The first rendering will return an object\n * with a `textDivs` property that can be used with the TextHighlighter.\n */\n async render(viewport, intent = \"display\") {\n if (intent === \"print\") {\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml: this.xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n // Create an xfa layer div and render the form\n const div = document.createElement(\"div\");\n this.pageDiv.append(div);\n parameters.div = div;\n\n return XfaLayer.render(parameters);\n }\n\n // intent === \"display\"\n const xfaHtml = await this.pdfPage.getXfa();\n if (this._cancelled || !xfaHtml) {\n return { textDivs: [] };\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n if (this.div) {\n return XfaLayer.update(parameters);\n }\n // Create an xfa layer div and render the form\n this.div = document.createElement(\"div\");\n this.pageDiv.append(this.div);\n parameters.div = this.div;\n\n return XfaLayer.render(parameters);\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { XfaLayerBuilder };\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 CursorTool,\n ScrollMode,\n SpreadMode,\n toggleCheckedBtn,\n toggleExpandedBtn,\n} from \"./ui_utils.js\";\nimport { PagesCountLimit } from \"./pdf_viewer.js\";\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\n * bookmark link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {EventBus} eventBus\n */\n constructor(options, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.buttons = [\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n close: true,\n },\n { element: options.printButton, eventName: \"print\", close: true },\n { element: options.downloadButton, eventName: \"download\", close: true },\n { element: options.viewBookmarkButton, eventName: null, close: true },\n { element: options.firstPageButton, eventName: \"firstpage\", close: true },\n { element: options.lastPageButton, eventName: \"lastpage\", close: true },\n {\n element: options.pageRotateCwButton,\n eventName: \"rotatecw\",\n close: false,\n },\n {\n element: options.pageRotateCcwButton,\n eventName: \"rotateccw\",\n close: false,\n },\n {\n element: options.cursorSelectToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.SELECT },\n close: true,\n },\n {\n element: options.cursorHandToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.HAND },\n close: true,\n },\n {\n element: options.scrollPageButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.PAGE },\n close: true,\n },\n {\n element: options.scrollVerticalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.VERTICAL },\n close: true,\n },\n {\n element: options.scrollHorizontalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.HORIZONTAL },\n close: true,\n },\n {\n element: options.scrollWrappedButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.WRAPPED },\n close: true,\n },\n {\n element: options.spreadNoneButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.NONE },\n close: true,\n },\n {\n element: options.spreadOddButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.ODD },\n close: true,\n },\n {\n element: options.spreadEvenButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.EVEN },\n close: true,\n },\n {\n element: options.documentPropertiesButton,\n eventName: \"documentproperties\",\n close: true,\n },\n ];\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.buttons.push({\n element: options.openFileButton,\n eventName: \"openfile\",\n close: true,\n });\n }\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.eventBus = eventBus;\n this.opened = false;\n\n // Bind the event listeners for click, cursor tool, and scroll/spread mode\n // actions.\n this.#bindClickListeners();\n this.#bindCursorToolsListener(options);\n this.#bindScrollModeListener(options);\n this.#bindSpreadModeListener(options);\n\n this.reset();\n }\n\n /**\n * @type {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this.#updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this.#updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this.#updateUIState();\n\n // Reset the Scroll/Spread buttons too, since they're document specific.\n this.eventBus.dispatch(\"secondarytoolbarreset\", { source: this });\n }\n\n #updateUIState() {\n this.items.firstPage.disabled = this.pageNumber <= 1;\n this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n #bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener(\"click\", this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (const { element, eventName, close, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this, ...eventDetails });\n }\n if (close) {\n this.close();\n }\n this.eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"buttons\",\n data: { id: element.id },\n },\n });\n });\n }\n }\n\n #bindCursorToolsListener({ cursorSelectToolButton, cursorHandToolButton }) {\n this.eventBus._on(\"cursortoolchanged\", ({ tool }) => {\n toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT);\n toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND);\n });\n }\n\n #bindScrollModeListener({\n scrollPageButton,\n scrollVerticalButton,\n scrollHorizontalButton,\n scrollWrappedButton,\n spreadNoneButton,\n spreadOddButton,\n spreadEvenButton,\n }) {\n const scrollModeChanged = ({ mode }) => {\n toggleCheckedBtn(scrollPageButton, mode === ScrollMode.PAGE);\n toggleCheckedBtn(scrollVerticalButton, mode === ScrollMode.VERTICAL);\n toggleCheckedBtn(scrollHorizontalButton, mode === ScrollMode.HORIZONTAL);\n toggleCheckedBtn(scrollWrappedButton, mode === ScrollMode.WRAPPED);\n\n // Permanently *disable* the Scroll buttons when PAGE-scrolling is being\n // enforced for *very* long/large documents; please see the `BaseViewer`.\n const forceScrollModePage =\n this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\n scrollPageButton.disabled = forceScrollModePage;\n scrollVerticalButton.disabled = forceScrollModePage;\n scrollHorizontalButton.disabled = forceScrollModePage;\n scrollWrappedButton.disabled = forceScrollModePage;\n\n // Temporarily *disable* the Spread buttons when horizontal scrolling is\n // enabled, since the non-default Spread modes doesn't affect the layout.\n const isHorizontal = mode === ScrollMode.HORIZONTAL;\n spreadNoneButton.disabled = isHorizontal;\n spreadOddButton.disabled = isHorizontal;\n spreadEvenButton.disabled = isHorizontal;\n };\n this.eventBus._on(\"scrollmodechanged\", scrollModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n scrollModeChanged({ mode: ScrollMode.VERTICAL });\n }\n });\n }\n\n #bindSpreadModeListener({\n spreadNoneButton,\n spreadOddButton,\n spreadEvenButton,\n }) {\n const spreadModeChanged = ({ mode }) => {\n toggleCheckedBtn(spreadNoneButton, mode === SpreadMode.NONE);\n toggleCheckedBtn(spreadOddButton, mode === SpreadMode.ODD);\n toggleCheckedBtn(spreadEvenButton, mode === SpreadMode.EVEN);\n };\n this.eventBus._on(\"spreadmodechanged\", spreadModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n spreadModeChanged({ mode: SpreadMode.NONE });\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n toggleExpandedBtn(this.toggleButton, true, this.toolbar);\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n toggleExpandedBtn(this.toggleButton, false, this.toolbar);\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n}\n\nexport { SecondaryToolbar };\n","/* Copyright 2016 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 DEFAULT_SCALE,\n DEFAULT_SCALE_VALUE,\n MAX_SCALE,\n MIN_SCALE,\n toggleCheckedBtn,\n} from \"./ui_utils.js\";\nimport { AnnotationEditorType, noContextMenu } from \"pdfjs-lib\";\n\nconst PAGE_NUMBER_LOADING_INDICATOR = \"visiblePageIsLoading\";\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * Its width is adjusted, when necessary, on UI localization.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} editorFreeTextButton - Button to switch to\n * FreeText editing.\n * @property {HTMLButtonElement} download - Button to download the document.\n */\n\nclass Toolbar {\n #wasLocalized = false;\n\n /**\n * @param {ToolbarOptions} options\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.toolbar = options.container;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.buttons = [\n { element: options.previous, eventName: \"previouspage\" },\n { element: options.next, eventName: \"nextpage\" },\n { element: options.zoomIn, eventName: \"zoomin\" },\n { element: options.zoomOut, eventName: \"zoomout\" },\n { element: options.print, eventName: \"print\" },\n { element: options.download, eventName: \"download\" },\n {\n element: options.editorFreeTextButton,\n eventName: \"switchannotationeditormode\",\n eventDetails: {\n get mode() {\n const { classList } = options.editorFreeTextButton;\n return classList.contains(\"toggled\")\n ? AnnotationEditorType.NONE\n : AnnotationEditorType.FREETEXT;\n },\n },\n },\n {\n element: options.editorInkButton,\n eventName: \"switchannotationeditormode\",\n eventDetails: {\n get mode() {\n const { classList } = options.editorInkButton;\n return classList.contains(\"toggled\")\n ? AnnotationEditorType.NONE\n : AnnotationEditorType.INK;\n },\n },\n },\n {\n element: options.editorStampButton,\n eventName: \"switchannotationeditormode\",\n eventDetails: {\n get mode() {\n const { classList } = options.editorStampButton;\n return classList.contains(\"toggled\")\n ? AnnotationEditorType.NONE\n : AnnotationEditorType.STAMP;\n },\n },\n },\n ];\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.buttons.push({ element: options.openFile, eventName: \"openfile\" });\n }\n this.items = {\n numPages: options.numPages,\n pageNumber: options.pageNumber,\n scaleSelect: options.scaleSelect,\n customScaleOption: options.customScaleOption,\n previous: options.previous,\n next: options.next,\n zoomIn: options.zoomIn,\n zoomOut: options.zoomOut,\n };\n\n // Bind the event listeners for click and various other actions.\n this.#bindListeners(options);\n\n this.reset();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this.#updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this.#updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = (pageScaleValue || pageScale).toString();\n this.pageScale = pageScale;\n this.#updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this.#updateUIState(true);\n this.updateLoadingIndicatorState();\n\n // Reset the Editor buttons too, since they're document specific.\n this.eventBus.dispatch(\"toolbarreset\", { source: this });\n }\n\n #bindListeners(options) {\n const { pageNumber, scaleSelect } = this.items;\n const self = this;\n\n // The buttons within the toolbar.\n for (const { element, eventName, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this, ...eventDetails });\n }\n });\n }\n // The non-button elements within the toolbar.\n pageNumber.addEventListener(\"click\", function () {\n this.select();\n });\n pageNumber.addEventListener(\"change\", function () {\n self.eventBus.dispatch(\"pagenumberchanged\", {\n source: self,\n value: this.value,\n });\n });\n\n scaleSelect.addEventListener(\"change\", function () {\n if (this.value === \"custom\") {\n return;\n }\n self.eventBus.dispatch(\"scalechanged\", {\n source: self,\n value: this.value,\n });\n });\n // Here we depend on browsers dispatching the \"click\" event *after* the\n // \"change\" event, when the -element changes.\n scaleSelect.addEventListener(\"click\", function ({ target }) {\n // Remove focus when an