mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-08-03 12:57:20 +02:00
Merge branch 'master' into scientific
This commit is contained in:
commit
9c3a752388
49
.github/workflows/update_locales.yml
vendored
Normal file
49
.github/workflows/update_locales.yml
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
name: Update locales
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * 5" # Every Friday at midnight UTC
|
||||||
|
workflow_dispatch: # Allow manual triggering
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-locales:
|
||||||
|
name: Update locales
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Use Node.js LTS
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: lts/*
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Import translations from mozilla-central
|
||||||
|
run: npx gulp importl10n
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
if [ -z "$(git status --porcelain l10n/)" ]; then
|
||||||
|
echo "No locale changes to commit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git switch -C update-locales
|
||||||
|
git add l10n/
|
||||||
|
git commit -m "l10n: Update locale files"
|
||||||
|
git push --force origin update-locales
|
||||||
|
gh pr create \
|
||||||
|
--title "l10n: Update locale files" \
|
||||||
|
--body "Automated weekly update of locale files from mozilla-central." \
|
||||||
|
--label l10n || true
|
||||||
11
external/importL10n/locales.mjs
vendored
11
external/importL10n/locales.mjs
vendored
@ -91,7 +91,7 @@ async function downloadL10n(root) {
|
|||||||
await downloadLanguageFiles(root, langCode);
|
await downloadLanguageFiles(root, langCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
const removeCodes = [];
|
const rmCodes = [];
|
||||||
for (const entry of fs.readdirSync(root)) {
|
for (const entry of fs.readdirSync(root)) {
|
||||||
const dirPath = path.join(root, entry),
|
const dirPath = path.join(root, entry),
|
||||||
stat = fs.lstatSync(dirPath);
|
stat = fs.lstatSync(dirPath);
|
||||||
@ -101,14 +101,13 @@ async function downloadL10n(root) {
|
|||||||
entry !== DEFAULT_LOCALE &&
|
entry !== DEFAULT_LOCALE &&
|
||||||
!langCodes.includes(entry)
|
!langCodes.includes(entry)
|
||||||
) {
|
) {
|
||||||
removeCodes.push(entry);
|
fs.rmSync(dirPath, { recursive: true, force: true });
|
||||||
|
rmCodes.push(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (removeCodes.length) {
|
if (rmCodes.length) {
|
||||||
console.log(
|
console.log(
|
||||||
"\nConsider removing the following unmaintained locales:\n" +
|
`\nRemoved the following unmaintained locales: ${rmCodes.join(", ")}\n`
|
||||||
removeCodes.join(", ") +
|
|
||||||
"\n"
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -537,6 +537,7 @@ pdfjs-editor-undo-bar-message-freetext = Тэкст выдалены
|
|||||||
pdfjs-editor-undo-bar-message-ink = Малюнак выдалены
|
pdfjs-editor-undo-bar-message-ink = Малюнак выдалены
|
||||||
pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены
|
pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены
|
||||||
pdfjs-editor-undo-bar-message-signature = Подпіс выдалены
|
pdfjs-editor-undo-bar-message-signature = Подпіс выдалены
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Каментарый выдалены
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
@ -644,24 +645,71 @@ pdfjs-editor-add-comment-button =
|
|||||||
## - layers.
|
## - layers.
|
||||||
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||||
|
|
||||||
|
pdfjs-toggle-views-manager-button =
|
||||||
|
.title = Паказаць/схаваць бакавую панэль
|
||||||
|
pdfjs-toggle-views-manager-notification-button =
|
||||||
|
.title = Паказаць/схаваць бакавую панэль (дакумент мае мініяцюры/змест/далучэнні/пласты)
|
||||||
|
pdfjs-toggle-views-manager-button-label = Паказаць/схаваць бакавую панэль
|
||||||
|
pdfjs-views-manager-sidebar =
|
||||||
|
.aria-label = Бакавая панэль
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Выгляд
|
.title = Выгляд
|
||||||
pdfjs-views-manager-view-selector-button-label = Выгляд
|
pdfjs-views-manager-view-selector-button-label = Выгляд
|
||||||
pdfjs-views-manager-pages-title = Старонкі
|
pdfjs-views-manager-pages-title = Старонкі
|
||||||
|
pdfjs-views-manager-outlines-title = Структура дакумента
|
||||||
pdfjs-views-manager-attachments-title = Далучэнні
|
pdfjs-views-manager-attachments-title = Далучэнні
|
||||||
pdfjs-views-manager-layers-title = Пласты
|
pdfjs-views-manager-layers-title = Пласты
|
||||||
pdfjs-views-manager-pages-option-label = Старонкі
|
pdfjs-views-manager-pages-option-label = Старонкі
|
||||||
|
pdfjs-views-manager-outlines-option-label = Структура дакумента
|
||||||
pdfjs-views-manager-attachments-option-label = Далучэнні
|
pdfjs-views-manager-attachments-option-label = Далучэнні
|
||||||
pdfjs-views-manager-layers-option-label = Пласты
|
pdfjs-views-manager-layers-option-label = Пласты
|
||||||
pdfjs-views-manager-add-file-button =
|
pdfjs-views-manager-add-file-button =
|
||||||
.title = Дадаць файл
|
.title = Дадаць файл
|
||||||
pdfjs-views-manager-add-file-button-label = Дадаць файл
|
pdfjs-views-manager-add-file-button-label = Дадаць файл
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages.
|
||||||
|
pdfjs-views-manager-pages-status-action-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Вылучана { $count }
|
||||||
|
[few] Вылучаны { $count }
|
||||||
|
*[many] Вылучана { $count }
|
||||||
|
}
|
||||||
pdfjs-views-manager-pages-status-none-action-label = Выбраць старонкі
|
pdfjs-views-manager-pages-status-none-action-label = Выбраць старонкі
|
||||||
pdfjs-views-manager-pages-status-action-button-label = Кіраваць
|
pdfjs-views-manager-pages-status-action-button-label = Кіраваць
|
||||||
pdfjs-views-manager-pages-status-copy-button-label = Капіяваць
|
pdfjs-views-manager-pages-status-copy-button-label = Капіяваць
|
||||||
pdfjs-views-manager-pages-status-cut-button-label = Выразаць
|
pdfjs-views-manager-pages-status-cut-button-label = Выразаць
|
||||||
pdfjs-views-manager-pages-status-delete-button-label = Выдаліць
|
pdfjs-views-manager-pages-status-delete-button-label = Выдаліць
|
||||||
pdfjs-views-manager-pages-status-save-as-button-label = Захаваць як…
|
pdfjs-views-manager-pages-status-save-as-button-label = Захаваць як…
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be cut.
|
||||||
|
pdfjs-views-manager-status-undo-cut-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Выразана { $count } старонка
|
||||||
|
[few] Выразана { $count } старонкі
|
||||||
|
*[many] Выразана { $count } старонак
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be copied.
|
||||||
|
pdfjs-views-manager-pages-status-undo-copy-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Скапіравана { $count } старонка
|
||||||
|
[few] Скапіравана { $count } старонкі
|
||||||
|
*[many] Скапіравана { $count } старонак
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be deleted.
|
||||||
|
pdfjs-views-manager-pages-status-undo-delete-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Выдалена { $count } старонка
|
||||||
|
[few] Выдалена { $count } старонкі
|
||||||
|
*[many] Выдалена { $count } старонак
|
||||||
|
}
|
||||||
|
pdfjs-views-manager-pages-status-waiting-ready-label = Рыхтуецца ваш файл…
|
||||||
|
pdfjs-views-manager-pages-status-waiting-uploading-label = Зацягваецца файл…
|
||||||
|
pdfjs-views-manager-status-warning-cut-label = Не ўдалося выразаць. Абнавіце старонку і паспрабуйце зноў.
|
||||||
|
pdfjs-views-manager-status-warning-copy-label = Не ўдалося скапіяваць. Абнавіце старонку і паспрабуйце зноў.
|
||||||
|
pdfjs-views-manager-status-warning-delete-label = Не ўдалося выдаліць. Абнавіце старонку і паспрабуйце зноў.
|
||||||
|
pdfjs-views-manager-status-warning-save-label = Не ўдалося захаваць. Абнавіце старонку і паспрабуйце зноў.
|
||||||
pdfjs-views-manager-status-undo-button-label = Адмяніць
|
pdfjs-views-manager-status-undo-button-label = Адмяніць
|
||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Закрыць
|
.title = Закрыць
|
||||||
|
|||||||
@ -706,6 +706,7 @@ pdfjs-views-manager-status-undo-button-label = Rückgängig
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Schließen
|
.title = Schließen
|
||||||
pdfjs-views-manager-status-close-button-label = Schließen
|
pdfjs-views-manager-status-close-button-label = Schließen
|
||||||
|
pdfjs-views-manager-paste-button-label = Einfügen
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Το κείμενο αφαιρέθηκ
|
|||||||
pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε
|
pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε
|
||||||
pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε
|
pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε
|
||||||
pdfjs-editor-undo-bar-message-signature = Η υπογραφή αφαιρέθηκε
|
pdfjs-editor-undo-bar-message-signature = Η υπογραφή αφαιρέθηκε
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Το σχόλιο αφαιρέθηκε
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
@ -642,6 +643,8 @@ pdfjs-editor-add-comment-button =
|
|||||||
|
|
||||||
pdfjs-toggle-views-manager-button =
|
pdfjs-toggle-views-manager-button =
|
||||||
.title = (Απ)ενεργοποίηση πλαϊνής γραμμής
|
.title = (Απ)ενεργοποίηση πλαϊνής γραμμής
|
||||||
|
pdfjs-toggle-views-manager-notification-button =
|
||||||
|
.title = (Απ)ενεργοποίηση πλαϊνής γραμμής (το έγγραφο περιέχει μικρογραφίες/περίγραμμα/συνημμένα/επίπεδα)
|
||||||
pdfjs-toggle-views-manager-button-label = (Απ)ενεργοποίηση πλαϊνής γραμμής
|
pdfjs-toggle-views-manager-button-label = (Απ)ενεργοποίηση πλαϊνής γραμμής
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Πλαϊνή γραμμή
|
.aria-label = Πλαϊνή γραμμή
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Thumbnail of Page { $page }
|
.aria-label = Thumbnail of Page { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Select page { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Toggle Sidebar
|
pdfjs-toggle-views-manager-button-label = Toggle Sidebar
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Sidebar
|
.aria-label = Sidebar
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Sidebar resizer
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Views
|
.title = Views
|
||||||
pdfjs-views-manager-view-selector-button-label = Views
|
pdfjs-views-manager-view-selector-button-label = Views
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = Undo
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Close
|
.title = Close
|
||||||
pdfjs-views-manager-status-close-button-label = Close
|
pdfjs-views-manager-status-close-button-label = Close
|
||||||
|
pdfjs-views-manager-paste-button-label = Paste
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -192,8 +192,9 @@ pdfjs-additional-layers = Additional Layers
|
|||||||
|
|
||||||
# Variables:
|
# Variables:
|
||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-title =
|
# $total (Number) - the number of pages
|
||||||
.title = Page { $page }
|
pdfjs-thumb-page-title1 =
|
||||||
|
.title = Page { $page } of { $total }
|
||||||
|
|
||||||
# Variables:
|
# Variables:
|
||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
@ -202,8 +203,8 @@ pdfjs-thumb-page-canvas =
|
|||||||
|
|
||||||
# Variables:
|
# Variables:
|
||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-checkbox =
|
pdfjs-thumb-page-checkbox1 =
|
||||||
.aria-label = Select page { $page }
|
.title = Select page { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -690,11 +691,11 @@ pdfjs-editor-add-comment-button =
|
|||||||
## - layers.
|
## - layers.
|
||||||
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||||
|
|
||||||
pdfjs-toggle-views-manager-button =
|
pdfjs-toggle-views-manager-button1 =
|
||||||
.title = Toggle Sidebar
|
.title = Manage pages
|
||||||
pdfjs-toggle-views-manager-notification-button =
|
pdfjs-toggle-views-manager-notification-button =
|
||||||
.title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)
|
.title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)
|
||||||
pdfjs-toggle-views-manager-button-label = Toggle Sidebar
|
pdfjs-toggle-views-manager-button1-label = Manage pages
|
||||||
|
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Sidebar
|
.aria-label = Sidebar
|
||||||
|
|||||||
@ -706,6 +706,7 @@ pdfjs-views-manager-status-undo-button-label = Deshacer
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Cerrar
|
.title = Cerrar
|
||||||
pdfjs-views-manager-status-close-button-label = Cerrar
|
pdfjs-views-manager-status-close-button-label = Cerrar
|
||||||
|
pdfjs-views-manager-paste-button-label = Pegar
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Vignette de la page { $page }
|
.aria-label = Vignette de la page { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Sélectionner la page { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -644,6 +648,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Afficher/Masquer le panneau latéral
|
pdfjs-toggle-views-manager-button-label = Afficher/Masquer le panneau latéral
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Panneau latéral
|
.aria-label = Panneau latéral
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Redimensionner le panneau latéral
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Vues
|
.title = Vues
|
||||||
pdfjs-views-manager-view-selector-button-label = Vues
|
pdfjs-views-manager-view-selector-button-label = Vues
|
||||||
@ -702,6 +708,7 @@ pdfjs-views-manager-status-undo-button-label = Annuler
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Fermer
|
.title = Fermer
|
||||||
pdfjs-views-manager-status-close-button-label = Fermer
|
pdfjs-views-manager-status-close-button-label = Fermer
|
||||||
|
pdfjs-views-manager-paste-button-label = Coller
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Tekst fuortsmiten
|
|||||||
pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten
|
pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten
|
||||||
pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten
|
pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten
|
||||||
pdfjs-editor-undo-bar-message-signature = Hantekening fuortsmiten
|
pdfjs-editor-undo-bar-message-signature = Hantekening fuortsmiten
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Opmerking fuortsmiten
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
|
|||||||
@ -647,6 +647,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Emoambue tenda yke
|
pdfjs-toggle-views-manager-button-label = Emoambue tenda yke
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Ta’ãngarupa yke
|
.aria-label = Ta’ãngarupa yke
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Tuichakue mongu’eha tenda yképe
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Hechaha
|
.title = Hechaha
|
||||||
pdfjs-views-manager-view-selector-button-label = Hechaha
|
pdfjs-views-manager-view-selector-button-label = Hechaha
|
||||||
@ -705,6 +707,7 @@ pdfjs-views-manager-status-undo-button-label = Mboguevi
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Mboty
|
.title = Mboty
|
||||||
pdfjs-views-manager-status-close-button-label = Mboty
|
pdfjs-views-manager-status-close-button-label = Mboty
|
||||||
|
pdfjs-views-manager-paste-button-label = Mboja
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = תצוגה מקדימה של עמוד { $page }
|
.aria-label = תצוגה מקדימה של עמוד { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = בחירת עמוד { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = החלפת תצוגת סרגל צד
|
pdfjs-toggle-views-manager-button-label = החלפת תצוגת סרגל צד
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = סרגל צד
|
.aria-label = סרגל צד
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = שינוי גודל סרגל הצד
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = תצוגות
|
.title = תצוגות
|
||||||
pdfjs-views-manager-view-selector-button-label = תצוגות
|
pdfjs-views-manager-view-selector-button-label = תצוגות
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = ביטול פעולה
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = סגירה
|
.title = סגירה
|
||||||
pdfjs-views-manager-status-close-button-label = סגירה
|
pdfjs-views-manager-status-close-button-label = סגירה
|
||||||
|
pdfjs-views-manager-paste-button-label = הדבקה
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Miniatura strony { $page }
|
.aria-label = Miniatura strony { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Stronu { $page } wubrać
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -722,6 +726,7 @@ pdfjs-views-manager-status-undo-button-label = Cofnyć
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Začinić
|
.title = Začinić
|
||||||
pdfjs-views-manager-status-close-button-label = Začinić
|
pdfjs-views-manager-status-close-button-label = Začinić
|
||||||
|
pdfjs-views-manager-paste-button-label = Zasadźić
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -706,6 +706,7 @@ pdfjs-views-manager-status-undo-button-label = Disfacer
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Clauder
|
.title = Clauder
|
||||||
pdfjs-views-manager-status-close-button-label = Clauder
|
pdfjs-views-manager-status-close-button-label = Clauder
|
||||||
|
pdfjs-views-manager-paste-button-label = Collar
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Miniatura della pagina { $page }
|
.aria-label = Miniatura della pagina { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Seleziona pagina { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Attiva/disattiva barra laterale
|
pdfjs-toggle-views-manager-button-label = Attiva/disattiva barra laterale
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Barra laterale
|
.aria-label = Barra laterale
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Regolatore della larghezza della barra laterale
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Viste
|
.title = Viste
|
||||||
pdfjs-views-manager-view-selector-button-label = Viste
|
pdfjs-views-manager-view-selector-button-label = Viste
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = Annulla
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Chiudi
|
.title = Chiudi
|
||||||
pdfjs-views-manager-status-close-button-label = Chiudi
|
pdfjs-views-manager-status-close-button-label = Chiudi
|
||||||
|
pdfjs-views-manager-paste-button-label = Incolla
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
@ -720,4 +727,3 @@ pdfjs-editor-add-signature-edit-button-label = Modifica descrizione
|
|||||||
## Edit signature description dialog
|
## Edit signature description dialog
|
||||||
|
|
||||||
pdfjs-editor-edit-signature-dialog-title = Modifica descrizione
|
pdfjs-editor-edit-signature-dialog-title = Modifica descrizione
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = { $page } парағы үшін кіші көрінісі
|
.aria-label = { $page } парағы үшін кіші көрінісі
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = { $page } бетін таңдау
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Бүйір панелін көрсету/жасыру
|
pdfjs-toggle-views-manager-button-label = Бүйір панелін көрсету/жасыру
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Бүйір панелі
|
.aria-label = Бүйір панелі
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Бүйір панелінің өлшемін өзгертуші
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Көріністер
|
.title = Көріністер
|
||||||
pdfjs-views-manager-view-selector-button-label = Көріністер
|
pdfjs-views-manager-view-selector-button-label = Көріністер
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = Болдырмау
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Жабу
|
.title = Жабу
|
||||||
pdfjs-views-manager-status-close-button-label = Жабу
|
pdfjs-views-manager-status-close-button-label = Жабу
|
||||||
|
pdfjs-views-manager-paste-button-label = Кірістіру
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = { $page } 페이지 미리보기
|
.aria-label = { $page } 페이지 미리보기
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = { $page } 페이지 선택
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -632,6 +636,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = 사이드바 표시/숨기기
|
pdfjs-toggle-views-manager-button-label = 사이드바 표시/숨기기
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = 사이드바
|
.aria-label = 사이드바
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = 사이드바 크기 조정
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = 보기
|
.title = 보기
|
||||||
pdfjs-views-manager-view-selector-button-label = 보기
|
pdfjs-views-manager-view-selector-button-label = 보기
|
||||||
@ -674,6 +680,7 @@ pdfjs-views-manager-status-undo-button-label = 실행 취소
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = 닫기
|
.title = 닫기
|
||||||
pdfjs-views-manager-status-close-button-label = 닫기
|
pdfjs-views-manager-status-close-button-label = 닫기
|
||||||
|
pdfjs-views-manager-paste-button-label = 붙여넣기
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Miniatuur van pagina { $page }
|
.aria-label = Miniatuur van pagina { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Pagina { $page } selecteren
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Zijbalk in-/uitschakelen
|
pdfjs-toggle-views-manager-button-label = Zijbalk in-/uitschakelen
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Zijbalk
|
.aria-label = Zijbalk
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Groottewijziging zijbalk
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Weergaven
|
.title = Weergaven
|
||||||
pdfjs-views-manager-view-selector-button-label = Weergaven
|
pdfjs-views-manager-view-selector-button-label = Weergaven
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = Ongedaan maken
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Sluiten
|
.title = Sluiten
|
||||||
pdfjs-views-manager-status-close-button-label = Sluiten
|
pdfjs-views-manager-status-close-button-label = Sluiten
|
||||||
|
pdfjs-views-manager-paste-button-label = Plakken
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -706,6 +706,7 @@ pdfjs-views-manager-status-undo-button-label = Angre
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Lat att
|
.title = Lat att
|
||||||
pdfjs-views-manager-status-close-button-label = Lat att
|
pdfjs-views-manager-status-close-button-label = Lat att
|
||||||
|
pdfjs-views-manager-paste-button-label = Lim inn
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -536,6 +536,7 @@ pdfjs-editor-undo-bar-message-freetext = Usunięto tekst
|
|||||||
pdfjs-editor-undo-bar-message-ink = Usunięto rysunek
|
pdfjs-editor-undo-bar-message-ink = Usunięto rysunek
|
||||||
pdfjs-editor-undo-bar-message-stamp = Usunięto obraz
|
pdfjs-editor-undo-bar-message-stamp = Usunięto obraz
|
||||||
pdfjs-editor-undo-bar-message-signature = Usunięto podpis
|
pdfjs-editor-undo-bar-message-signature = Usunięto podpis
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Usunięto komentarz
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
@ -636,6 +637,83 @@ pdfjs-editor-edit-comment-dialog-cancel-button = Anuluj
|
|||||||
pdfjs-editor-add-comment-button =
|
pdfjs-editor-add-comment-button =
|
||||||
.title = Dodaj komentarz
|
.title = Dodaj komentarz
|
||||||
|
|
||||||
|
## The view manager is a sidebar displaying different views:
|
||||||
|
## - thumbnails;
|
||||||
|
## - outline;
|
||||||
|
## - attachments;
|
||||||
|
## - layers.
|
||||||
|
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||||
|
|
||||||
|
pdfjs-toggle-views-manager-button =
|
||||||
|
.title = Przełącz panel boczny
|
||||||
|
pdfjs-toggle-views-manager-notification-button =
|
||||||
|
.title = Przełącz panel boczny (dokument zawiera miniatury/konspekt/załączniki/warstwy)
|
||||||
|
pdfjs-toggle-views-manager-button-label = Przełącz panel boczny
|
||||||
|
pdfjs-views-manager-sidebar =
|
||||||
|
.aria-label = Panel boczny
|
||||||
|
pdfjs-views-manager-view-selector-button =
|
||||||
|
.title = Widoki
|
||||||
|
pdfjs-views-manager-view-selector-button-label = Widoki
|
||||||
|
pdfjs-views-manager-pages-title = Strony
|
||||||
|
pdfjs-views-manager-outlines-title = Konspekt dokumentu
|
||||||
|
pdfjs-views-manager-attachments-title = Załączniki
|
||||||
|
pdfjs-views-manager-layers-title = Warstwy
|
||||||
|
pdfjs-views-manager-pages-option-label = Strony
|
||||||
|
pdfjs-views-manager-outlines-option-label = Konspekt dokumentu
|
||||||
|
pdfjs-views-manager-attachments-option-label = Załączniki
|
||||||
|
pdfjs-views-manager-layers-option-label = Warstwy
|
||||||
|
pdfjs-views-manager-add-file-button =
|
||||||
|
.title = Dodaj plik
|
||||||
|
pdfjs-views-manager-add-file-button-label = Dodaj plik
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages.
|
||||||
|
pdfjs-views-manager-pages-status-action-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] { $count } zaznaczona
|
||||||
|
[few] { $count } zaznaczone
|
||||||
|
*[many] { $count } zaznaczonych
|
||||||
|
}
|
||||||
|
pdfjs-views-manager-pages-status-none-action-label = Zaznacz strony
|
||||||
|
pdfjs-views-manager-pages-status-action-button-label = Zarządzaj
|
||||||
|
pdfjs-views-manager-pages-status-copy-button-label = Kopiuj
|
||||||
|
pdfjs-views-manager-pages-status-cut-button-label = Wytnij
|
||||||
|
pdfjs-views-manager-pages-status-delete-button-label = Usuń
|
||||||
|
pdfjs-views-manager-pages-status-save-as-button-label = Zapisz jako…
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be cut.
|
||||||
|
pdfjs-views-manager-status-undo-cut-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Wycięto 1 stronę
|
||||||
|
[few] Wycięto { $count } strony
|
||||||
|
*[many] Wycięto { $count } stron
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be copied.
|
||||||
|
pdfjs-views-manager-pages-status-undo-copy-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Skopiowano 1 stronę
|
||||||
|
[few] Skopiowano { $count } strony
|
||||||
|
*[many] Skopiowano { $count } stron
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be deleted.
|
||||||
|
pdfjs-views-manager-pages-status-undo-delete-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Usunięto 1 stronę
|
||||||
|
[few] Usunięto { $count } strony
|
||||||
|
*[many] Usunięto { $count } stron
|
||||||
|
}
|
||||||
|
pdfjs-views-manager-pages-status-waiting-ready-label = Przygotowywanie pliku…
|
||||||
|
pdfjs-views-manager-pages-status-waiting-uploading-label = Przesyłanie pliku…
|
||||||
|
pdfjs-views-manager-status-warning-cut-label = Nie udało się wyciąć. Odśwież stronę i spróbuj ponownie.
|
||||||
|
pdfjs-views-manager-status-warning-copy-label = Nie udało się skopiować. Odśwież stronę i spróbuj ponownie.
|
||||||
|
pdfjs-views-manager-status-warning-delete-label = Nie udało się usunąć. Odśwież stronę i spróbuj ponownie.
|
||||||
|
pdfjs-views-manager-status-warning-save-label = Nie udało się zachować. Odśwież stronę i spróbuj ponownie.
|
||||||
|
pdfjs-views-manager-status-undo-button-label = Cofnij
|
||||||
|
pdfjs-views-manager-status-close-button =
|
||||||
|
.title = Zamknij
|
||||||
|
pdfjs-views-manager-status-close-button-label = Zamknij
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
pdfjs-editor-delete-signature-button1 =
|
pdfjs-editor-delete-signature-button1 =
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Миниатюра страницы { $page }
|
.aria-label = Миниатюра страницы { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Выбрать страницу { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -652,6 +656,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Показать/скрыть боковую панель
|
pdfjs-toggle-views-manager-button-label = Показать/скрыть боковую панель
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Боковая панель
|
.aria-label = Боковая панель
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Изменение размера боковой панели
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Вид
|
.title = Вид
|
||||||
pdfjs-views-manager-view-selector-button-label = Вид
|
pdfjs-views-manager-view-selector-button-label = Вид
|
||||||
@ -714,6 +720,7 @@ pdfjs-views-manager-status-undo-button-label = Отменить
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Закрыть
|
.title = Закрыть
|
||||||
pdfjs-views-manager-status-close-button-label = Закрыть
|
pdfjs-views-manager-status-close-button-label = Закрыть
|
||||||
|
pdfjs-views-manager-paste-button-label = Вставить
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -540,6 +540,7 @@ pdfjs-editor-undo-bar-message-freetext = Besedilo odstranjeno
|
|||||||
pdfjs-editor-undo-bar-message-ink = Risba odstranjena
|
pdfjs-editor-undo-bar-message-ink = Risba odstranjena
|
||||||
pdfjs-editor-undo-bar-message-stamp = Slika odstranjena
|
pdfjs-editor-undo-bar-message-stamp = Slika odstranjena
|
||||||
pdfjs-editor-undo-bar-message-signature = Podpis odstranjen
|
pdfjs-editor-undo-bar-message-signature = Podpis odstranjen
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Komentar odstranjen
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Miniatyr av sida { $page }
|
.aria-label = Miniatyr av sida { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Välj sida { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -648,6 +652,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Visa/dölj sidofält
|
pdfjs-toggle-views-manager-button-label = Visa/dölj sidofält
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Sidofält
|
.aria-label = Sidofält
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Storleksändring av sidofält
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Vyer
|
.title = Vyer
|
||||||
pdfjs-views-manager-view-selector-button-label = Vyer
|
pdfjs-views-manager-view-selector-button-label = Vyer
|
||||||
@ -706,6 +712,7 @@ pdfjs-views-manager-status-undo-button-label = Ångra
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Stäng
|
.title = Stäng
|
||||||
pdfjs-views-manager-status-close-button-label = Stäng
|
pdfjs-views-manager-status-close-button-label = Stäng
|
||||||
|
pdfjs-views-manager-paste-button-label = Klistra in
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -288,9 +288,13 @@ pdfjs-web-fonts-disabled = Вебшрифти вимкнено: неможлив
|
|||||||
|
|
||||||
pdfjs-editor-free-text-button =
|
pdfjs-editor-free-text-button =
|
||||||
.title = Текст
|
.title = Текст
|
||||||
|
pdfjs-editor-color-picker-free-text-input =
|
||||||
|
.title = Змінити колір тексту
|
||||||
pdfjs-editor-free-text-button-label = Текст
|
pdfjs-editor-free-text-button-label = Текст
|
||||||
pdfjs-editor-ink-button =
|
pdfjs-editor-ink-button =
|
||||||
.title = Малювати
|
.title = Малювати
|
||||||
|
pdfjs-editor-color-picker-ink-input =
|
||||||
|
.title = Змінити колір малюнка
|
||||||
pdfjs-editor-ink-button-label = Малювати
|
pdfjs-editor-ink-button-label = Малювати
|
||||||
pdfjs-editor-stamp-button =
|
pdfjs-editor-stamp-button =
|
||||||
.title = Додати чи редагувати зображення
|
.title = Додати чи редагувати зображення
|
||||||
@ -302,6 +306,14 @@ pdfjs-highlight-floating-button1 =
|
|||||||
.title = Підсвітити
|
.title = Підсвітити
|
||||||
.aria-label = Підсвітити
|
.aria-label = Підсвітити
|
||||||
pdfjs-highlight-floating-button-label = Підсвітити
|
pdfjs-highlight-floating-button-label = Підсвітити
|
||||||
|
pdfjs-comment-floating-button =
|
||||||
|
.title = Коментувати
|
||||||
|
.aria-label = Коментувати
|
||||||
|
pdfjs-comment-floating-button-label = Коментувати
|
||||||
|
pdfjs-editor-comment-button =
|
||||||
|
.title = Коментар
|
||||||
|
.aria-label = Коментар
|
||||||
|
pdfjs-editor-comment-button-label = Коментар
|
||||||
pdfjs-editor-signature-button =
|
pdfjs-editor-signature-button =
|
||||||
.title = Додати підпис
|
.title = Додати підпис
|
||||||
pdfjs-editor-signature-button-label = Додати підпис
|
pdfjs-editor-signature-button-label = Додати підпис
|
||||||
@ -364,6 +376,22 @@ pdfjs-editor-add-saved-signature-button =
|
|||||||
pdfjs-free-text2 =
|
pdfjs-free-text2 =
|
||||||
.aria-label = Текстовий редактор
|
.aria-label = Текстовий редактор
|
||||||
.default-content = Напишіть щось…
|
.default-content = Напишіть щось…
|
||||||
|
# Used to show how many comments are present in the pdf file.
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of comments.
|
||||||
|
pdfjs-editor-comments-sidebar-title =
|
||||||
|
{ $count ->
|
||||||
|
[one] Коментар
|
||||||
|
[few] Коментарі
|
||||||
|
*[many] Коментарі
|
||||||
|
}
|
||||||
|
pdfjs-editor-comments-sidebar-close-button =
|
||||||
|
.title = Закрити бічну панель
|
||||||
|
.aria-label = Закрити бічну панель
|
||||||
|
pdfjs-editor-comments-sidebar-close-button-label = Закрити бічну панель
|
||||||
|
# Instructional copy to add a comment by selecting text or an annotations.
|
||||||
|
pdfjs-editor-comments-sidebar-no-comments1 = Бачите щось варте уваги? Підсвітіть і додайте коментар.
|
||||||
|
pdfjs-editor-comments-sidebar-no-comments-link = Докладніше
|
||||||
|
|
||||||
## Alt-text dialog
|
## Alt-text dialog
|
||||||
|
|
||||||
@ -494,6 +522,14 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = Показувати
|
|||||||
pdfjs-editor-alt-text-settings-show-dialog-description = Допомагає переконатися, що всі ваші зображення мають альтернативний текст.
|
pdfjs-editor-alt-text-settings-show-dialog-description = Допомагає переконатися, що всі ваші зображення мають альтернативний текст.
|
||||||
pdfjs-editor-alt-text-settings-close-button = Закрити
|
pdfjs-editor-alt-text-settings-close-button = Закрити
|
||||||
|
|
||||||
|
## Accessibility labels (announced by screen readers) for objects added to the editor.
|
||||||
|
|
||||||
|
pdfjs-editor-highlight-added-alert = Підсвічення додано
|
||||||
|
pdfjs-editor-freetext-added-alert = Текст додано
|
||||||
|
pdfjs-editor-ink-added-alert = Малюнок додано
|
||||||
|
pdfjs-editor-stamp-added-alert = Зображення додано
|
||||||
|
pdfjs-editor-signature-added-alert = Підпис додано
|
||||||
|
|
||||||
## "Annotations removed" bar
|
## "Annotations removed" bar
|
||||||
|
|
||||||
pdfjs-editor-undo-bar-message-highlight = Підсвічення вилучено
|
pdfjs-editor-undo-bar-message-highlight = Підсвічення вилучено
|
||||||
@ -501,6 +537,7 @@ pdfjs-editor-undo-bar-message-freetext = Текст вилучено
|
|||||||
pdfjs-editor-undo-bar-message-ink = Малюнок вилучено
|
pdfjs-editor-undo-bar-message-ink = Малюнок вилучено
|
||||||
pdfjs-editor-undo-bar-message-stamp = Зображення вилучено
|
pdfjs-editor-undo-bar-message-stamp = Зображення вилучено
|
||||||
pdfjs-editor-undo-bar-message-signature = Підпис вилучено
|
pdfjs-editor-undo-bar-message-signature = Підпис вилучено
|
||||||
|
pdfjs-editor-undo-bar-message-comment = Коментар вилучено
|
||||||
# Variables:
|
# Variables:
|
||||||
# $count (Number) - the number of removed annotations.
|
# $count (Number) - the number of removed annotations.
|
||||||
pdfjs-editor-undo-bar-message-multiple =
|
pdfjs-editor-undo-bar-message-multiple =
|
||||||
@ -563,6 +600,8 @@ pdfjs-editor-add-signature-save-checkbox = Зберегти підпис
|
|||||||
pdfjs-editor-add-signature-save-warning-message = Ви досягли ліміту в 5 збережених підписів. Вилучіть один, щоб зберегти інший.
|
pdfjs-editor-add-signature-save-warning-message = Ви досягли ліміту в 5 збережених підписів. Вилучіть один, щоб зберегти інший.
|
||||||
pdfjs-editor-add-signature-image-upload-error-title = Не вдалося вивантажити зображення
|
pdfjs-editor-add-signature-image-upload-error-title = Не вдалося вивантажити зображення
|
||||||
pdfjs-editor-add-signature-image-upload-error-description = Перевірте мережеве з'єднання або спробуйте інше зображення.
|
pdfjs-editor-add-signature-image-upload-error-description = Перевірте мережеве з'єднання або спробуйте інше зображення.
|
||||||
|
pdfjs-editor-add-signature-image-no-data-error-title = Не вдається конвертувати це зображення в підпис
|
||||||
|
pdfjs-editor-add-signature-image-no-data-error-description = Спробуйте вивантажити інше зображення.
|
||||||
pdfjs-editor-add-signature-error-close-button = Закрити
|
pdfjs-editor-add-signature-error-close-button = Закрити
|
||||||
|
|
||||||
## Dialog buttons
|
## Dialog buttons
|
||||||
@ -571,6 +610,111 @@ pdfjs-editor-add-signature-cancel-button = Скасувати
|
|||||||
pdfjs-editor-add-signature-add-button = Додати
|
pdfjs-editor-add-signature-add-button = Додати
|
||||||
pdfjs-editor-edit-signature-update-button = Оновити
|
pdfjs-editor-edit-signature-update-button = Оновити
|
||||||
|
|
||||||
|
## Comment popup
|
||||||
|
|
||||||
|
pdfjs-editor-edit-comment-popup-button-label = Редагувати коментар
|
||||||
|
pdfjs-editor-edit-comment-popup-button =
|
||||||
|
.title = Редагувати коментар
|
||||||
|
pdfjs-editor-delete-comment-popup-button-label = Вилучити коментар
|
||||||
|
pdfjs-editor-delete-comment-popup-button =
|
||||||
|
.title = Вилучити коментар
|
||||||
|
pdfjs-show-comment-button =
|
||||||
|
.title = Показати коментар
|
||||||
|
|
||||||
|
## Edit a comment dialog
|
||||||
|
|
||||||
|
# An existing comment is edited
|
||||||
|
pdfjs-editor-edit-comment-dialog-title-when-editing = Редагувати коментар
|
||||||
|
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Оновити
|
||||||
|
# No existing comment
|
||||||
|
pdfjs-editor-edit-comment-dialog-title-when-adding = Додати коментар
|
||||||
|
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Додати
|
||||||
|
pdfjs-editor-edit-comment-dialog-text-input =
|
||||||
|
.placeholder = Почніть вводити…
|
||||||
|
pdfjs-editor-edit-comment-dialog-cancel-button = Скасувати
|
||||||
|
|
||||||
|
## Edit a comment button in the editor toolbar
|
||||||
|
|
||||||
|
pdfjs-editor-add-comment-button =
|
||||||
|
.title = Додати коментар
|
||||||
|
|
||||||
|
## The view manager is a sidebar displaying different views:
|
||||||
|
## - thumbnails;
|
||||||
|
## - outline;
|
||||||
|
## - attachments;
|
||||||
|
## - layers.
|
||||||
|
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||||
|
|
||||||
|
pdfjs-toggle-views-manager-button =
|
||||||
|
.title = Перемкнути бічну панель
|
||||||
|
pdfjs-toggle-views-manager-notification-button =
|
||||||
|
.title = Перемкнути бічну панель (документ містить мініатюри/ескіз/вкладення/шари)
|
||||||
|
pdfjs-toggle-views-manager-button-label = Перемкнути бічну панель
|
||||||
|
pdfjs-views-manager-sidebar =
|
||||||
|
.aria-label = Бічна панель
|
||||||
|
pdfjs-views-manager-view-selector-button =
|
||||||
|
.title = Вигляд
|
||||||
|
pdfjs-views-manager-view-selector-button-label = Вигляд
|
||||||
|
pdfjs-views-manager-pages-title = Сторінки
|
||||||
|
pdfjs-views-manager-outlines-title = Схема документа
|
||||||
|
pdfjs-views-manager-attachments-title = Вкладення
|
||||||
|
pdfjs-views-manager-layers-title = Шари
|
||||||
|
pdfjs-views-manager-pages-option-label = Сторінки
|
||||||
|
pdfjs-views-manager-outlines-option-label = Схема документа
|
||||||
|
pdfjs-views-manager-attachments-option-label = Вкладення
|
||||||
|
pdfjs-views-manager-layers-option-label = Шари
|
||||||
|
pdfjs-views-manager-add-file-button =
|
||||||
|
.title = Додати файл
|
||||||
|
pdfjs-views-manager-add-file-button-label = Додати файл
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages.
|
||||||
|
pdfjs-views-manager-pages-status-action-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] Вибрано { $count }
|
||||||
|
[few] Вибрано { $count }
|
||||||
|
*[many] Вибрано { $count }
|
||||||
|
}
|
||||||
|
pdfjs-views-manager-pages-status-none-action-label = Вибрати сторінки
|
||||||
|
pdfjs-views-manager-pages-status-action-button-label = Керувати
|
||||||
|
pdfjs-views-manager-pages-status-copy-button-label = Копіювати
|
||||||
|
pdfjs-views-manager-pages-status-cut-button-label = Вирізати
|
||||||
|
pdfjs-views-manager-pages-status-delete-button-label = Видалити
|
||||||
|
pdfjs-views-manager-pages-status-save-as-button-label = Зберегти як…
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be cut.
|
||||||
|
pdfjs-views-manager-status-undo-cut-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] 1 сторінку вирізано
|
||||||
|
[few] { $count } сторінки вирізано
|
||||||
|
*[many] { $count } сторінок вирізано
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be copied.
|
||||||
|
pdfjs-views-manager-pages-status-undo-copy-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] 1 сторінку скопійовано
|
||||||
|
[few] { $count } сторінки скопійовано
|
||||||
|
*[many] { $count } сторінок скопійовано
|
||||||
|
}
|
||||||
|
# Variables:
|
||||||
|
# $count (Number) - the number of selected pages to be deleted.
|
||||||
|
pdfjs-views-manager-pages-status-undo-delete-label =
|
||||||
|
{ $count ->
|
||||||
|
[one] 1 сторінку видалено
|
||||||
|
[few] { $count } сторінки видалено
|
||||||
|
*[many] { $count } сторінок видалено
|
||||||
|
}
|
||||||
|
pdfjs-views-manager-pages-status-waiting-ready-label = Підготовка файлу…
|
||||||
|
pdfjs-views-manager-pages-status-waiting-uploading-label = Вивантаження файлу…
|
||||||
|
pdfjs-views-manager-status-warning-cut-label = Не вдалося вирізати. Оновіть сторінку та спробуйте ще раз.
|
||||||
|
pdfjs-views-manager-status-warning-copy-label = Не вдалося скопіювати. Оновіть сторінку та спробуйте ще раз.
|
||||||
|
pdfjs-views-manager-status-warning-delete-label = Не вдалося видалити. Оновіть сторінку та спробуйте ще раз.
|
||||||
|
pdfjs-views-manager-status-warning-save-label = Не вдалося зберегти. Оновіть сторінку та спробуйте ще раз.
|
||||||
|
pdfjs-views-manager-status-undo-button-label = Повернути
|
||||||
|
pdfjs-views-manager-status-close-button =
|
||||||
|
.title = Закрити
|
||||||
|
pdfjs-views-manager-status-close-button-label = Закрити
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
pdfjs-editor-delete-signature-button1 =
|
pdfjs-editor-delete-signature-button1 =
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = Ảnh thu nhỏ của trang { $page }
|
.aria-label = Ảnh thu nhỏ của trang { $page }
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = Chọn trang { $page }
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -632,6 +636,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = Bật/tắt thanh lề
|
pdfjs-toggle-views-manager-button-label = Bật/tắt thanh lề
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = Thanh lề
|
.aria-label = Thanh lề
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = Công cụ điều chỉnh kích thước thanh lề
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = Chế độ hiển thị
|
.title = Chế độ hiển thị
|
||||||
pdfjs-views-manager-view-selector-button-label = Chế độ hiển thị
|
pdfjs-views-manager-view-selector-button-label = Chế độ hiển thị
|
||||||
@ -674,6 +680,7 @@ pdfjs-views-manager-status-undo-button-label = Hoàn tác
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = Đóng
|
.title = Đóng
|
||||||
pdfjs-views-manager-status-close-button-label = Đóng
|
pdfjs-views-manager-status-close-button-label = Đóng
|
||||||
|
pdfjs-views-manager-paste-button-label = Dán
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
@ -201,6 +201,10 @@ pdfjs-thumb-page-title =
|
|||||||
# $page (Number) - the page number
|
# $page (Number) - the page number
|
||||||
pdfjs-thumb-page-canvas =
|
pdfjs-thumb-page-canvas =
|
||||||
.aria-label = 第 { $page } 頁的縮圖
|
.aria-label = 第 { $page } 頁的縮圖
|
||||||
|
# Variables:
|
||||||
|
# $page (Number) - the page number
|
||||||
|
pdfjs-thumb-page-checkbox =
|
||||||
|
.aria-label = 選擇第 { $page } 頁
|
||||||
|
|
||||||
## Find panel button title and messages
|
## Find panel button title and messages
|
||||||
|
|
||||||
@ -632,6 +636,8 @@ pdfjs-toggle-views-manager-notification-button =
|
|||||||
pdfjs-toggle-views-manager-button-label = 切換側邊欄
|
pdfjs-toggle-views-manager-button-label = 切換側邊欄
|
||||||
pdfjs-views-manager-sidebar =
|
pdfjs-views-manager-sidebar =
|
||||||
.aria-label = 側邊欄
|
.aria-label = 側邊欄
|
||||||
|
pdfjs-views-manager-sidebar-resizer =
|
||||||
|
.aria-label = 調整側邊欄大小
|
||||||
pdfjs-views-manager-view-selector-button =
|
pdfjs-views-manager-view-selector-button =
|
||||||
.title = 畫面
|
.title = 畫面
|
||||||
pdfjs-views-manager-view-selector-button-label = 畫面
|
pdfjs-views-manager-view-selector-button-label = 畫面
|
||||||
@ -674,6 +680,7 @@ pdfjs-views-manager-status-undo-button-label = 還原
|
|||||||
pdfjs-views-manager-status-close-button =
|
pdfjs-views-manager-status-close-button =
|
||||||
.title = 關閉
|
.title = 關閉
|
||||||
pdfjs-views-manager-status-close-button-label = 關閉
|
pdfjs-views-manager-status-close-button-label = 關閉
|
||||||
|
pdfjs-views-manager-paste-button-label = 貼上
|
||||||
|
|
||||||
## Main menu for adding/removing signatures
|
## Main menu for adding/removing signatures
|
||||||
|
|
||||||
|
|||||||
32
package-lock.json
generated
32
package-lock.json
generated
@ -108,7 +108,6 @@
|
|||||||
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
|
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.29.0",
|
"@babel/code-frame": "^7.29.0",
|
||||||
"@babel/generator": "^7.29.0",
|
"@babel/generator": "^7.29.0",
|
||||||
@ -1648,7 +1647,6 @@
|
|||||||
"integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
|
"integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@keyv/serialize": "^1.1.1"
|
"@keyv/serialize": "^1.1.1"
|
||||||
}
|
}
|
||||||
@ -1690,7 +1688,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.19.0"
|
"node": ">=20.19.0"
|
||||||
},
|
},
|
||||||
@ -1731,7 +1728,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.19.0"
|
"node": ">=20.19.0"
|
||||||
}
|
}
|
||||||
@ -3124,7 +3120,6 @@
|
|||||||
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
|
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/estree": "*",
|
"@types/estree": "*",
|
||||||
"@types/json-schema": "*"
|
"@types/json-schema": "*"
|
||||||
@ -3189,7 +3184,6 @@
|
|||||||
"integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
|
"integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/linkify-it": "^5",
|
"@types/linkify-it": "^5",
|
||||||
"@types/mdurl": "^2"
|
"@types/mdurl": "^2"
|
||||||
@ -3616,7 +3610,6 @@
|
|||||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
},
|
},
|
||||||
@ -4272,8 +4265,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz",
|
||||||
"integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==",
|
"integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0"
|
||||||
"peer": true
|
|
||||||
},
|
},
|
||||||
"node_modules/bare-fs": {
|
"node_modules/bare-fs": {
|
||||||
"version": "4.5.4",
|
"version": "4.5.4",
|
||||||
@ -4389,9 +4381,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/basic-ftp": {
|
"node_modules/basic-ftp": {
|
||||||
"version": "5.1.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz",
|
||||||
"integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==",
|
"integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -4509,7 +4501,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.9.0",
|
"baseline-browser-mapping": "^2.9.0",
|
||||||
"caniuse-lite": "^1.0.30001759",
|
"caniuse-lite": "^1.0.30001759",
|
||||||
@ -5770,8 +5761,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
|
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
|
||||||
"integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
|
"integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause"
|
||||||
"peer": true
|
|
||||||
},
|
},
|
||||||
"node_modules/dir-glob": {
|
"node_modules/dir-glob": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
@ -6308,7 +6298,6 @@
|
|||||||
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
|
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.8.0",
|
"@eslint-community/eslint-utils": "^4.8.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
@ -6369,7 +6358,6 @@
|
|||||||
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
|
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"eslint-config-prettier": "bin/cli.js"
|
"eslint-config-prettier": "bin/cli.js"
|
||||||
},
|
},
|
||||||
@ -7750,7 +7738,6 @@
|
|||||||
"integrity": "sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==",
|
"integrity": "sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob-watcher": "^6.0.0",
|
"glob-watcher": "^6.0.0",
|
||||||
"gulp-cli": "^3.1.0",
|
"gulp-cli": "^3.1.0",
|
||||||
@ -9832,7 +9819,6 @@
|
|||||||
"integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
|
"integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^2.0.1",
|
"argparse": "^2.0.1",
|
||||||
"entities": "^4.4.0",
|
"entities": "^4.4.0",
|
||||||
@ -9974,7 +9960,6 @@
|
|||||||
"integrity": "sha512-DkoXO1jz0UY+k1tj1LpxYLrN+jeGKBicbtsQYeYF8nX9QK4AGyGh4g421qsmEOGfZ02GjW1qxr1XP+8afwcTGQ==",
|
"integrity": "sha512-DkoXO1jz0UY+k1tj1LpxYLrN+jeGKBicbtsQYeYF8nX9QK4AGyGh4g421qsmEOGfZ02GjW1qxr1XP+8afwcTGQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": "^4.0.3",
|
"chokidar": "^4.0.3",
|
||||||
"commander": "^11.1.0",
|
"commander": "^11.1.0",
|
||||||
@ -11045,7 +11030,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.11",
|
"nanoid": "^3.3.11",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
@ -11198,7 +11182,6 @@
|
|||||||
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
|
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cssesc": "^3.0.0",
|
"cssesc": "^3.0.0",
|
||||||
"util-deprecate": "^1.0.2"
|
"util-deprecate": "^1.0.2"
|
||||||
@ -11251,7 +11234,6 @@
|
|||||||
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
|
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
},
|
},
|
||||||
@ -12128,7 +12110,6 @@
|
|||||||
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"fast-uri": "^3.0.1",
|
"fast-uri": "^3.0.1",
|
||||||
@ -13871,7 +13852,6 @@
|
|||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
@ -14125,7 +14105,6 @@
|
|||||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
@ -14512,7 +14491,6 @@
|
|||||||
"integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==",
|
"integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.7",
|
"@types/eslint-scope": "^3.7.7",
|
||||||
"@types/estree": "^1.0.8",
|
"@types/estree": "^1.0.8",
|
||||||
|
|||||||
@ -330,15 +330,21 @@ class AnnotationStorage {
|
|||||||
* contents. (Necessary since printing is triggered synchronously in browsers.)
|
* contents. (Necessary since printing is triggered synchronously in browsers.)
|
||||||
*/
|
*/
|
||||||
class PrintAnnotationStorage extends AnnotationStorage {
|
class PrintAnnotationStorage extends AnnotationStorage {
|
||||||
#serializable;
|
#serializable = SerializableEmpty;
|
||||||
|
|
||||||
constructor(parent) {
|
constructor(parent) {
|
||||||
super();
|
super();
|
||||||
const { map, hash, transfer } = parent.serializable;
|
|
||||||
|
const { serializable } = parent;
|
||||||
|
if (serializable === SerializableEmpty) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { map, hash, transfer } = serializable;
|
||||||
// Create a *copy* of the data, since Objects are passed by reference in JS.
|
// Create a *copy* of the data, since Objects are passed by reference in JS.
|
||||||
const clone = structuredClone(map, transfer ? { transfer } : null);
|
const clone = structuredClone(map, transfer ? { transfer } : null);
|
||||||
|
// The `PrintAnnotationStorage` instance is re-used for all pages,
|
||||||
this.#serializable = { map: clone, hash, transfer };
|
// hence we cannot transfer the data since that breaks printing.
|
||||||
|
this.#serializable = { map: clone, hash, transfer: [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1898,6 +1898,7 @@ class PDFPageProxy {
|
|||||||
annotationStorage: map,
|
annotationStorage: map,
|
||||||
modifiedIds,
|
modifiedIds,
|
||||||
},
|
},
|
||||||
|
/* queueingStrategy = */ undefined,
|
||||||
transfer
|
transfer
|
||||||
);
|
);
|
||||||
const reader = readableStream.getReader();
|
const reader = readableStream.getReader();
|
||||||
|
|||||||
@ -803,6 +803,10 @@ class Driver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task.pdfDoc = doc;
|
task.pdfDoc = doc;
|
||||||
|
if (!task.save && task.print && task.annotationStorage) {
|
||||||
|
doc.annotationStorage._setValues(task.annotationStorage);
|
||||||
|
task.printAnnotationStorage = doc.annotationStorage.print;
|
||||||
|
}
|
||||||
task.optionalContentConfigPromise = doc.getOptionalContentConfig({
|
task.optionalContentConfigPromise = doc.getOptionalContentConfig({
|
||||||
intent: task.print ? "print" : "display",
|
intent: task.print ? "print" : "display",
|
||||||
});
|
});
|
||||||
@ -969,7 +973,7 @@ class Driver {
|
|||||||
pageColors = null,
|
pageColors = null,
|
||||||
partialCrop = null;
|
partialCrop = null;
|
||||||
|
|
||||||
if (task.annotationStorage) {
|
if (!task.print && task.annotationStorage) {
|
||||||
task.pdfDoc.annotationStorage._setValues(task.annotationStorage);
|
task.pdfDoc.annotationStorage._setValues(task.annotationStorage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1079,6 +1083,8 @@ class Driver {
|
|||||||
} else if (renderPrint) {
|
} else if (renderPrint) {
|
||||||
if (task.annotationStorage) {
|
if (task.annotationStorage) {
|
||||||
renderContext.annotationMode = AnnotationMode.ENABLE_STORAGE;
|
renderContext.annotationMode = AnnotationMode.ENABLE_STORAGE;
|
||||||
|
renderContext.printAnnotationStorage =
|
||||||
|
task.printAnnotationStorage;
|
||||||
}
|
}
|
||||||
renderContext.intent = "print";
|
renderContext.intent = "print";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,12 +28,13 @@ import {
|
|||||||
kbDelete,
|
kbDelete,
|
||||||
loadAndWait,
|
loadAndWait,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
showViewsManager,
|
||||||
waitAndClick,
|
waitAndClick,
|
||||||
waitForDOMMutation,
|
waitForDOMMutation,
|
||||||
} from "./test_utils.mjs";
|
} from "./test_utils.mjs";
|
||||||
|
|
||||||
async function waitForThumbnailVisible(page, pageNums) {
|
async function waitForThumbnailVisible(page, pageNums) {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
const thumbSelector = "#thumbnailsView .thumbnailImageContainer > img";
|
const thumbSelector = "#thumbnailsView .thumbnailImageContainer > img";
|
||||||
await page.waitForSelector(thumbSelector, { visible: true });
|
await page.waitForSelector(thumbSelector, { visible: true });
|
||||||
@ -283,12 +284,12 @@ describe("Reorganize Pages View", () => {
|
|||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
const rect1 = await getRect(page, getThumbnailSelector(1));
|
const rect1 = await getRect(page, getThumbnailSelector(1));
|
||||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||||
await (await page.$(".thumbnail[page-id='14'")).scrollIntoView();
|
await (await page.$(".thumbnail[page-number='14'")).scrollIntoView();
|
||||||
await page.waitForSelector(getThumbnailSelector(14), {
|
await page.waitForSelector(getThumbnailSelector(14), {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
await page.click(`.thumbnail:has(${getThumbnailSelector(14)}) input`);
|
await page.click(`.thumbnail:has(${getThumbnailSelector(14)}) input`);
|
||||||
await (await page.$(".thumbnail[page-id='1'")).scrollIntoView();
|
await (await page.$(".thumbnail[page-number='1'")).scrollIntoView();
|
||||||
await page.waitForSelector(getThumbnailSelector(1), {
|
await page.waitForSelector(getThumbnailSelector(1), {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -262,7 +262,7 @@ function getAnnotationSelector(id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getThumbnailSelector(pageNumber) {
|
function getThumbnailSelector(pageNumber) {
|
||||||
return `.thumbnailImageContainer[data-l10n-args='{"page":${pageNumber}}']`;
|
return `.thumbnailImageContainer[data-l10n-args^='{"page":${pageNumber}']`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getSpanRectFromText(page, pageNumber, text) {
|
async function getSpanRectFromText(page, pageNumber, text) {
|
||||||
@ -645,6 +645,7 @@ function waitForEditorMovedInDOM(page) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function scrollIntoView(page, selector) {
|
async function scrollIntoView(page, selector) {
|
||||||
|
await page.waitForSelector(selector, { visible: true });
|
||||||
const handle = await page.evaluateHandle(
|
const handle = await page.evaluateHandle(
|
||||||
sel => [
|
sel => [
|
||||||
new Promise(resolve => {
|
new Promise(resolve => {
|
||||||
@ -964,6 +965,29 @@ async function highlightSpan(
|
|||||||
await page.waitForSelector(getEditorSelector(nextId));
|
await page.waitForSelector(getEditorSelector(nextId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function showViewsManager(page) {
|
||||||
|
const hasAnimations = await page.evaluate(
|
||||||
|
() => !window.matchMedia("(prefers-reduced-motion: reduce)").matches
|
||||||
|
);
|
||||||
|
const movingPromise = hasAnimations
|
||||||
|
? page.waitForSelector("#outerContainer.viewsManagerMoving", {
|
||||||
|
visible: true,
|
||||||
|
})
|
||||||
|
: Promise.resolve();
|
||||||
|
await page.click("#viewsManagerToggleButton");
|
||||||
|
if (hasAnimations) {
|
||||||
|
await movingPromise;
|
||||||
|
}
|
||||||
|
await page.waitForSelector("#viewsManager", { visible: true });
|
||||||
|
await page.waitForSelector(
|
||||||
|
"#outerContainer:not(.viewsManagerMoving).viewsManagerOpen",
|
||||||
|
{ visible: true }
|
||||||
|
);
|
||||||
|
await page.waitForSelector("#viewsManagerStatusActionButton:not(:disabled)", {
|
||||||
|
visible: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Unicode bidi isolation characters, Fluent adds these markers to the text.
|
// Unicode bidi isolation characters, Fluent adds these markers to the text.
|
||||||
const FSI = "\u2068";
|
const FSI = "\u2068";
|
||||||
const PDI = "\u2069";
|
const PDI = "\u2069";
|
||||||
@ -1030,6 +1054,7 @@ export {
|
|||||||
selectEditors,
|
selectEditors,
|
||||||
serializeBitmapDimensions,
|
serializeBitmapDimensions,
|
||||||
setCaretAt,
|
setCaretAt,
|
||||||
|
showViewsManager,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
unselectEditor,
|
unselectEditor,
|
||||||
waitAndClick,
|
waitAndClick,
|
||||||
|
|||||||
@ -2,16 +2,15 @@ import {
|
|||||||
awaitPromise,
|
awaitPromise,
|
||||||
closePages,
|
closePages,
|
||||||
FSI,
|
FSI,
|
||||||
|
getThumbnailSelector,
|
||||||
kbFocusNext,
|
kbFocusNext,
|
||||||
loadAndWait,
|
loadAndWait,
|
||||||
PDI,
|
PDI,
|
||||||
|
showViewsManager,
|
||||||
} from "./test_utils.mjs";
|
} from "./test_utils.mjs";
|
||||||
|
|
||||||
function waitForThumbnailVisible(page, pageNum) {
|
function waitForThumbnailVisible(page, pageNum) {
|
||||||
return page.waitForSelector(
|
return page.waitForSelector(getThumbnailSelector(pageNum), { visible: true });
|
||||||
`.thumbnailImageContainer[data-l10n-args='{"page":${pageNum}}']`,
|
|
||||||
{ visible: true }
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function waitForMenu(page, buttonSelector, visible = true) {
|
async function waitForMenu(page, buttonSelector, visible = true) {
|
||||||
@ -44,7 +43,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should render thumbnails without errors", async () => {
|
it("should render thumbnails without errors", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
const thumbSelector =
|
const thumbSelector =
|
||||||
"#thumbnailsView .thumbnailImageContainer > img";
|
"#thumbnailsView .thumbnailImageContainer > img";
|
||||||
@ -55,6 +54,14 @@ describe("PDF Thumbnail View", () => {
|
|||||||
await page.waitForSelector(`${thumbSelector}[src^="blob:http:"]`, {
|
await page.waitForSelector(`${thumbSelector}[src^="blob:http:"]`, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const title = await page.$eval(
|
||||||
|
getThumbnailSelector(1),
|
||||||
|
el => el.title
|
||||||
|
);
|
||||||
|
expect(title)
|
||||||
|
.withContext(`In ${browserName}`)
|
||||||
|
.toBe(`Page ${FSI}1${PDI} of ${FSI}14${PDI}`);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -62,7 +69,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should have accessible label on resizer", async () => {
|
it("should have accessible label on resizer", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
const ariaLabel = await page.$eval("#viewsManagerResizer", el =>
|
const ariaLabel = await page.$eval("#viewsManagerResizer", el =>
|
||||||
el.getAttribute("aria-label")
|
el.getAttribute("aria-label")
|
||||||
@ -104,13 +111,12 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should scroll the view", async () => {
|
it("should scroll the view", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
for (const pageNum of [14, 1, 13, 2]) {
|
for (const pageNum of [14, 1, 13, 2]) {
|
||||||
await goToPage(page, pageNum);
|
await goToPage(page, pageNum);
|
||||||
const thumbSelector = `.thumbnailImageContainer[data-l10n-args='{"page":${pageNum}}']`;
|
const thumbSelector = getThumbnailSelector(pageNum);
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`.thumbnail ${thumbSelector}[aria-current="page"]`,
|
`.thumbnail ${thumbSelector}[aria-current="page"]`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
@ -141,8 +147,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should navigate with the keyboard", async () => {
|
it("should navigate with the keyboard", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
await waitForThumbnailVisible(page, 2);
|
await waitForThumbnailVisible(page, 2);
|
||||||
await waitForThumbnailVisible(page, 3);
|
await waitForThumbnailVisible(page, 3);
|
||||||
@ -159,26 +164,25 @@ describe("PDF Thumbnail View", () => {
|
|||||||
|
|
||||||
await kbFocusNext(page);
|
await kbFocusNext(page);
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":1}']:focus`,
|
`#thumbnailsView ${getThumbnailSelector(1)}:focus`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.keyboard.press("ArrowDown");
|
await page.keyboard.press("ArrowDown");
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":2}']:focus`,
|
`#thumbnailsView ${getThumbnailSelector(2)}:focus`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.keyboard.press("ArrowUp");
|
await page.keyboard.press("ArrowUp");
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(`${getThumbnailSelector(1)}:focus`, {
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":1}']:focus`,
|
visible: true,
|
||||||
{ visible: true }
|
});
|
||||||
);
|
|
||||||
|
|
||||||
await page.keyboard.press("ArrowDown");
|
await page.keyboard.press("ArrowDown");
|
||||||
await page.keyboard.press("ArrowDown");
|
await page.keyboard.press("ArrowDown");
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":3}']:focus`,
|
`#thumbnailsView ${getThumbnailSelector(3)}:focus`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -191,13 +195,13 @@ describe("PDF Thumbnail View", () => {
|
|||||||
|
|
||||||
await page.keyboard.press("End");
|
await page.keyboard.press("End");
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":14}']:focus`,
|
`#thumbnailsView ${getThumbnailSelector(14)}:focus`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.keyboard.press("Home");
|
await page.keyboard.press("Home");
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":1}']:focus`,
|
`#thumbnailsView ${getThumbnailSelector(1)}:focus`,
|
||||||
{ visible: true }
|
{ visible: true }
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
@ -235,7 +239,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should open with Enter key and remain open", async () => {
|
it("should open with Enter key and remain open", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
await enableMenuItems(page);
|
await enableMenuItems(page);
|
||||||
@ -267,7 +271,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should open with Space key and remain open", async () => {
|
it("should open with Space key and remain open", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
await enableMenuItems(page);
|
await enableMenuItems(page);
|
||||||
@ -323,18 +327,17 @@ describe("PDF Thumbnail View", () => {
|
|||||||
await closePages(pages);
|
await closePages(pages);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should have accessible label on checkbox", async () => {
|
it("should have a title on the checkbox", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
const ariaLabel = await page.$eval(
|
const title = await page.$eval(
|
||||||
`.thumbnail[page-number="1"] input[type="checkbox"]`,
|
`.thumbnail[page-number="1"] input[type="checkbox"]`,
|
||||||
el => el.getAttribute("aria-label")
|
el => el.title
|
||||||
);
|
);
|
||||||
expect(ariaLabel)
|
expect(title)
|
||||||
.withContext(`In ${browserName}`)
|
.withContext(`In ${browserName}`)
|
||||||
.toBe(`Select page ${FSI}1${PDI}`);
|
.toBe(`Select page ${FSI}1${PDI}`);
|
||||||
})
|
})
|
||||||
@ -362,7 +365,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("must navigate menus with ArrowDown and Tab keys", async () => {
|
it("must navigate menus with ArrowDown and Tab keys", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
// Focus the views manager selector button
|
// Focus the views manager selector button
|
||||||
@ -431,7 +434,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should show the manage button in thumbnail view and hide it in outline view", async () => {
|
it("should show the manage button in thumbnail view and hide it in outline view", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
// The status bar (Select pages + Manage button) must be visible in
|
// The status bar (Select pages + Manage button) must be visible in
|
||||||
@ -471,8 +474,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should focus checkboxes with Tab key", async () => {
|
it("should focus checkboxes with Tab key", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
|
|
||||||
// Focus the first thumbnail button
|
// Focus the first thumbnail button
|
||||||
@ -481,10 +483,9 @@ describe("PDF Thumbnail View", () => {
|
|||||||
await kbFocusNext(page);
|
await kbFocusNext(page);
|
||||||
|
|
||||||
// Verify we're on the first thumbnail
|
// Verify we're on the first thumbnail
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(`${getThumbnailSelector(1)}:focus`, {
|
||||||
`#thumbnailsView .thumbnailImageContainer[data-l10n-args='{"page":1}']:focus`,
|
visible: true,
|
||||||
{ visible: true }
|
});
|
||||||
);
|
|
||||||
|
|
||||||
// Tab to checkbox
|
// Tab to checkbox
|
||||||
await kbFocusNext(page);
|
await kbFocusNext(page);
|
||||||
@ -499,8 +500,7 @@ describe("PDF Thumbnail View", () => {
|
|||||||
it("should navigate checkboxes with arrow keys", async () => {
|
it("should navigate checkboxes with arrow keys", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewsManagerToggleButton");
|
await showViewsManager(page);
|
||||||
|
|
||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
await waitForThumbnailVisible(page, 2);
|
await waitForThumbnailVisible(page, 2);
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import {
|
|||||||
getSpanRectFromText,
|
getSpanRectFromText,
|
||||||
loadAndWait,
|
loadAndWait,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
showViewsManager,
|
||||||
waitForPageChanging,
|
waitForPageChanging,
|
||||||
waitForPageRendered,
|
waitForPageRendered,
|
||||||
} from "./test_utils.mjs";
|
} from "./test_utils.mjs";
|
||||||
@ -1451,6 +1452,82 @@ describe("PDF viewer", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Outline tree shift-click toggle (PR 20740)", () => {
|
||||||
|
let pages;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
pages = await loadAndWait(
|
||||||
|
"nested_outline.pdf",
|
||||||
|
"#viewsManagerToggleButton"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await closePages(pages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should only toggle the clicked item's subtree, not the whole outline", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([browserName, page]) => {
|
||||||
|
// Open the sidebar.
|
||||||
|
await showViewsManager(page);
|
||||||
|
|
||||||
|
// Switch to outline view.
|
||||||
|
await page.click("#viewsManagerSelectorButton");
|
||||||
|
await page.waitForSelector("#outlinesViewMenu", { visible: true });
|
||||||
|
await page.click("#outlinesViewMenu");
|
||||||
|
|
||||||
|
// Wait for the outline tree to render with nesting (toggle buttons).
|
||||||
|
await page.waitForSelector("#outlinesView.withNesting");
|
||||||
|
|
||||||
|
// Initially all three top-level togglers must be expanded.
|
||||||
|
const initialHiddenCount = await page.$$eval(
|
||||||
|
"#outlinesView > .treeItem > .treeItemToggler",
|
||||||
|
togglers =>
|
||||||
|
togglers.filter(t => t.classList.contains("treeItemsHidden"))
|
||||||
|
.length
|
||||||
|
);
|
||||||
|
expect(initialHiddenCount).withContext(`In ${browserName}`).toBe(0);
|
||||||
|
|
||||||
|
// Shift-click the first top-level toggler (section "1. Introduction")
|
||||||
|
// to collapse only its subtree.
|
||||||
|
// The toggler has width/height 0 (visual content via ::before), so
|
||||||
|
// we dispatch the MouseEvent directly rather than using page.click().
|
||||||
|
await page.evaluate(() => {
|
||||||
|
const toggler = document.querySelector(
|
||||||
|
"#outlinesView > .treeItem:nth-child(1) > .treeItemToggler"
|
||||||
|
);
|
||||||
|
toggler.dispatchEvent(
|
||||||
|
new MouseEvent("click", {
|
||||||
|
shiftKey: true,
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Section 1's toggler must now be collapsed.
|
||||||
|
const section1Collapsed = await page.$eval(
|
||||||
|
"#outlinesView > .treeItem:nth-child(1) > .treeItemToggler",
|
||||||
|
t => t.classList.contains("treeItemsHidden")
|
||||||
|
);
|
||||||
|
expect(section1Collapsed).withContext(`In ${browserName}`).toBeTrue();
|
||||||
|
|
||||||
|
// Sections 2 and 3 must remain expanded (the bug collapsed the whole
|
||||||
|
// outline by passing `this.container` instead of
|
||||||
|
// `target.parentNode`).
|
||||||
|
const otherHiddenCount = await page.$$eval(
|
||||||
|
"#outlinesView > .treeItem:nth-child(n+2) > .treeItemToggler",
|
||||||
|
togglers =>
|
||||||
|
togglers.filter(t => t.classList.contains("treeItemsHidden"))
|
||||||
|
.length
|
||||||
|
);
|
||||||
|
expect(otherHiddenCount).withContext(`In ${browserName}`).toBe(0);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("Scroll into view", () => {
|
describe("Scroll into view", () => {
|
||||||
let pages;
|
let pages;
|
||||||
|
|
||||||
|
|||||||
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -875,3 +875,4 @@
|
|||||||
!bug2014080.pdf
|
!bug2014080.pdf
|
||||||
!two_pages.pdf
|
!two_pages.pdf
|
||||||
!sci-notation.pdf
|
!sci-notation.pdf
|
||||||
|
!nested_outline.pdf
|
||||||
|
|||||||
BIN
test/pdfs/nested_outline.pdf
Normal file
BIN
test/pdfs/nested_outline.pdf
Normal file
Binary file not shown.
@ -604,6 +604,7 @@ const PDFViewerApplication = {
|
|||||||
enableHWA,
|
enableHWA,
|
||||||
enableSplitMerge: AppOptions.get("enableSplitMerge"),
|
enableSplitMerge: AppOptions.get("enableSplitMerge"),
|
||||||
manageMenu: appConfig.viewsManager.manageMenu,
|
manageMenu: appConfig.viewsManager.manageMenu,
|
||||||
|
addFileButton: appConfig.viewsManager.viewsManagerAddFileButton,
|
||||||
});
|
});
|
||||||
renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
|
renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,7 +131,7 @@ class BaseTreeViewer {
|
|||||||
target.classList.toggle("treeItemsHidden");
|
target.classList.toggle("treeItemsHidden");
|
||||||
if (e.shiftKey) {
|
if (e.shiftKey) {
|
||||||
const shouldShowAll = !target.classList.contains("treeItemsHidden");
|
const shouldShowAll = !target.classList.contains("treeItemsHidden");
|
||||||
this._toggleTreeItem(this.container, shouldShowAll);
|
this._toggleTreeItem(target.parentNode, shouldShowAll);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -243,6 +243,7 @@
|
|||||||
padding-bottom: 16px;
|
padding-bottom: 16px;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
overflow-y: visible;
|
||||||
|
|
||||||
#editorCommentsSidebarHeader {
|
#editorCommentsSidebarHeader {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -140,6 +140,9 @@ function getNormalizeWithNFKC() {
|
|||||||
const diacriticsRegex = /^\p{M}$/u;
|
const diacriticsRegex = /^\p{M}$/u;
|
||||||
// Some chars must be replaced by their NFKC counterpart during a search.
|
// Some chars must be replaced by their NFKC counterpart during a search.
|
||||||
for (let i = 0; i < 65536; i++) {
|
for (let i = 0; i < 65536; i++) {
|
||||||
|
if (i >= 0xd800 && i <= 0xdfff) {
|
||||||
|
continue; // Skip surrogates since they're not valid Unicode scalar values.
|
||||||
|
}
|
||||||
const c = String.fromCharCode(i);
|
const c = String.fromCharCode(i);
|
||||||
if (c.normalize("NFKC") !== c && !diacriticsRegex.test(c)) {
|
if (c.normalize("NFKC") !== c && !diacriticsRegex.test(c)) {
|
||||||
if (range.length !== 2) {
|
if (range.length !== 2) {
|
||||||
|
|||||||
@ -119,7 +119,6 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
const thumbnailContainer = (this.div = document.createElement("div"));
|
const thumbnailContainer = (this.div = document.createElement("div"));
|
||||||
thumbnailContainer.className = "thumbnail";
|
thumbnailContainer.className = "thumbnail";
|
||||||
thumbnailContainer.setAttribute("page-number", id);
|
thumbnailContainer.setAttribute("page-number", id);
|
||||||
thumbnailContainer.setAttribute("page-id", id);
|
|
||||||
|
|
||||||
const imageContainer = (this.imageContainer =
|
const imageContainer = (this.imageContainer =
|
||||||
document.createElement("div"));
|
document.createElement("div"));
|
||||||
@ -132,6 +131,8 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
imageContainer.tabIndex = -1;
|
imageContainer.tabIndex = -1;
|
||||||
imageContainer.draggable = false;
|
imageContainer.draggable = false;
|
||||||
imageContainer.setAttribute("page-number", id);
|
imageContainer.setAttribute("page-number", id);
|
||||||
|
imageContainer.setAttribute("data-l10n-id", "pdfjs-thumb-page-title1");
|
||||||
|
imageContainer.setAttribute("data-l10n-args", this.#getPageL10nArgs(true));
|
||||||
|
|
||||||
const image = (this.image = document.createElement("img"));
|
const image = (this.image = document.createElement("img"));
|
||||||
imageContainer.append(image);
|
imageContainer.append(image);
|
||||||
@ -140,8 +141,8 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
const checkbox = (this.checkbox = document.createElement("input"));
|
const checkbox = (this.checkbox = document.createElement("input"));
|
||||||
checkbox.type = "checkbox";
|
checkbox.type = "checkbox";
|
||||||
checkbox.tabIndex = -1;
|
checkbox.tabIndex = -1;
|
||||||
checkbox.setAttribute("data-l10n-id", "pdfjs-thumb-page-checkbox");
|
checkbox.setAttribute("data-l10n-id", "pdfjs-thumb-page-checkbox1");
|
||||||
checkbox.setAttribute("data-l10n-args", this.#pageL10nArgs);
|
checkbox.setAttribute("data-l10n-args", this.#getPageL10nArgs());
|
||||||
thumbnailContainer.append(checkbox);
|
thumbnailContainer.append(checkbox);
|
||||||
this.pasteButton = null;
|
this.pasteButton = null;
|
||||||
}
|
}
|
||||||
@ -332,8 +333,8 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
reducedCanvas.toBlob(resolve);
|
reducedCanvas.toBlob(resolve);
|
||||||
const blob = await promise;
|
const blob = await promise;
|
||||||
image.src = URL.createObjectURL(blob);
|
image.src = URL.createObjectURL(blob);
|
||||||
imageContainer.setAttribute("data-l10n-id", "pdfjs-thumb-page-canvas");
|
image.setAttribute("data-l10n-id", "pdfjs-thumb-page-canvas");
|
||||||
imageContainer.setAttribute("data-l10n-args", this.#pageL10nArgs);
|
image.setAttribute("data-l10n-args", this.#getPageL10nArgs());
|
||||||
imageContainer.classList.remove("missingThumbnailImage");
|
imageContainer.classList.remove("missingThumbnailImage");
|
||||||
if (!FeatureTest.isOffscreenCanvasSupported) {
|
if (!FeatureTest.isOffscreenCanvasSupported) {
|
||||||
// Clean up the canvas element since it is no longer needed.
|
// Clean up the canvas element since it is no longer needed.
|
||||||
@ -526,8 +527,11 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
return canvas;
|
return canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
get #pageL10nArgs() {
|
#getPageL10nArgs(hasTotal = false) {
|
||||||
return JSON.stringify({ page: this.pageLabel ?? this.id });
|
return JSON.stringify({
|
||||||
|
page: this.pageLabel ?? this.id,
|
||||||
|
total: hasTotal ? this.linkService.pagesCount : undefined,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -535,8 +539,12 @@ class PDFThumbnailView extends RenderableView {
|
|||||||
*/
|
*/
|
||||||
setPageLabel(label) {
|
setPageLabel(label) {
|
||||||
this.pageLabel = typeof label === "string" ? label : null;
|
this.pageLabel = typeof label === "string" ? label : null;
|
||||||
this.imageContainer.setAttribute("data-l10n-args", this.#pageL10nArgs);
|
this.imageContainer.setAttribute(
|
||||||
this.checkbox?.setAttribute("data-l10n-args", this.#pageL10nArgs);
|
"data-l10n-args",
|
||||||
|
this.#getPageL10nArgs(true)
|
||||||
|
);
|
||||||
|
this.image.setAttribute("data-l10n-args", this.#getPageL10nArgs());
|
||||||
|
this.checkbox?.setAttribute("data-l10n-args", this.#getPageL10nArgs());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,8 @@ const SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT = 15;
|
|||||||
* The default value is `false`.
|
* The default value is `false`.
|
||||||
* @property {Object} [manageMenu] - The menu elements to manage saving edited
|
* @property {Object} [manageMenu] - The menu elements to manage saving edited
|
||||||
* PDF.
|
* PDF.
|
||||||
*/
|
* @property {HTMLButtonElement} addFileButton - The button that opens a dialog
|
||||||
|
* to add a PDF file to merge with the current one.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Viewer control to display thumbnails for pages in a PDF document.
|
* Viewer control to display thumbnails for pages in a PDF document.
|
||||||
@ -141,6 +142,7 @@ class PDFThumbnailViewer {
|
|||||||
enableHWA,
|
enableHWA,
|
||||||
enableSplitMerge,
|
enableSplitMerge,
|
||||||
manageMenu,
|
manageMenu,
|
||||||
|
addFileButton,
|
||||||
}) {
|
}) {
|
||||||
this.scrollableContainer = container.parentElement;
|
this.scrollableContainer = container.parentElement;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
@ -152,6 +154,8 @@ class PDFThumbnailViewer {
|
|||||||
this.pageColors = pageColors || null;
|
this.pageColors = pageColors || null;
|
||||||
this.enableHWA = enableHWA || false;
|
this.enableHWA = enableHWA || false;
|
||||||
this.#enableSplitMerge = enableSplitMerge || false;
|
this.#enableSplitMerge = enableSplitMerge || false;
|
||||||
|
// TODO: uncomment when the "add file" feature is implemented.
|
||||||
|
// this.#addFileButton = addFileButton;
|
||||||
|
|
||||||
if (this.#enableSplitMerge && manageMenu) {
|
if (this.#enableSplitMerge && manageMenu) {
|
||||||
const { button, menu, copy, cut, delete: del, saveAs } = manageMenu;
|
const { button, menu, copy, cut, delete: del, saveAs } = manageMenu;
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
--sidebar-max-width: 632px;
|
--sidebar-max-width: 632px;
|
||||||
--sidebar-width: 239px;
|
--sidebar-width: 239px;
|
||||||
--resizer-width: 4px;
|
--resizer-width: 4px;
|
||||||
|
--resizer-shift: calc(0px - var(--resizer-width) - 2px);
|
||||||
--resizer-hover-bg-color: light-dark(#0062fa, #00cadb);
|
--resizer-hover-bg-color: light-dark(#0062fa, #00cadb);
|
||||||
|
|
||||||
@media screen and (forced-colors: active) {
|
@media screen and (forced-colors: active) {
|
||||||
@ -49,6 +50,7 @@
|
|||||||
max-width: var(--sidebar-max-width);
|
max-width: var(--sidebar-max-width);
|
||||||
backdrop-filter: var(--sidebar-backdrop-filter);
|
backdrop-filter: var(--sidebar-backdrop-filter);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.sidebarResizer {
|
.sidebarResizer {
|
||||||
width: var(--resizer-width);
|
width: var(--resizer-width);
|
||||||
@ -56,9 +58,11 @@
|
|||||||
forced-color-adjust: none;
|
forced-color-adjust: none;
|
||||||
cursor: ew-resize;
|
cursor: ew-resize;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset-block: calc(var(--sidebar-padding) + var(--sidebar-border-radius));
|
inset-block: 0;
|
||||||
inset-inline-start: calc(0px - var(--resizer-width) / 2);
|
inset-inline-start: var(--resizer-shift);
|
||||||
transition: background-color 0.5s ease-in-out;
|
transition:
|
||||||
|
background-color 0.5s ease-in-out,
|
||||||
|
border-color 0.5s ease-in-out;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-block-width: 0;
|
border-block-width: 0;
|
||||||
@ -66,6 +70,7 @@
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--resizer-hover-bg-color);
|
background-color: var(--resizer-hover-bg-color);
|
||||||
|
border-color: white;
|
||||||
}
|
}
|
||||||
&:focus-visible {
|
&:focus-visible {
|
||||||
background-color: var(--resizer-hover-bg-color);
|
background-color: var(--resizer-hover-bg-color);
|
||||||
|
|||||||
@ -1360,9 +1360,13 @@ dialog :link {
|
|||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#toolbarViewerLeft #numPages.toolbarLabel {
|
#toolbarViewerLeft {
|
||||||
padding-inline-start: 3px;
|
margin-inline-start: 8px;
|
||||||
flex: none;
|
|
||||||
|
#numPages.toolbarLabel {
|
||||||
|
padding-inline-start: 3px;
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -111,12 +111,12 @@ See https://github.com/adobe-type-tools/cmap-resources
|
|||||||
class="toolbarButton"
|
class="toolbarButton"
|
||||||
type="button"
|
type="button"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
data-l10n-id="pdfjs-toggle-views-manager-button"
|
data-l10n-id="pdfjs-toggle-views-manager-button1"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
aria-haspopup="true"
|
aria-haspopup="true"
|
||||||
aria-controls="viewsManager"
|
aria-controls="viewsManager"
|
||||||
>
|
>
|
||||||
<span data-l10n-id="pdfjs-toggle-views-manager-button-label"></span>
|
<span data-l10n-id="pdfjs-toggle-views-manager-button1-label"></span>
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div
|
||||||
id="viewsManager"
|
id="viewsManager"
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
&.viewsManagerOpen {
|
&.viewsManagerOpen {
|
||||||
#viewsManager {
|
#viewsManager {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
inset-inline-start: 1px;
|
inset-inline-start: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#viewerContainer:not(.pdfPresentationMode) {
|
#viewerContainer:not(.pdfPresentationMode) {
|
||||||
@ -53,7 +53,7 @@
|
|||||||
--pages-selected-icon: url(images/pages_selected.svg);
|
--pages-selected-icon: url(images/pages_selected.svg);
|
||||||
--spinner-icon: url(images/altText_spinner.svg);
|
--spinner-icon: url(images/altText_spinner.svg);
|
||||||
|
|
||||||
--sidebar-bg-color: light-dark(rgb(255 255 255 / 0.92), rgb(35 34 43 / 0.92));
|
--sidebar-bg-color: light-dark(rgb(255 255 255 / 0.92), rgb(66 65 77 / 0.92));
|
||||||
--sidebar-backdrop-filter: blur(7px);
|
--sidebar-backdrop-filter: blur(7px);
|
||||||
--sidebar-width: 230px;
|
--sidebar-width: 230px;
|
||||||
--sidebar-min-width: min-content;
|
--sidebar-min-width: min-content;
|
||||||
@ -86,13 +86,14 @@
|
|||||||
--header-shadow:
|
--header-shadow:
|
||||||
0 0.25px 0.75px -0.75px light-dark(rgb(0 0 0 / 0.05), rgb(0 0 0 / 0.2)),
|
0 0.25px 0.75px -0.75px light-dark(rgb(0 0 0 / 0.05), rgb(0 0 0 / 0.2)),
|
||||||
0 2px 6px -6px light-dark(rgb(0 0 0 / 0.1), rgb(0 0 0 / 0.4));
|
0 2px 6px -6px light-dark(rgb(0 0 0 / 0.1), rgb(0 0 0 / 0.4));
|
||||||
|
--header-bg: light-dark(rgb(255 255 255 / 0.92), #42414e);
|
||||||
--image-outline: none;
|
--image-outline: none;
|
||||||
--image-border-width: 6px;
|
--image-border-width: 6px;
|
||||||
--image-border-color: light-dark(#cfcfd8, #3a3944);
|
--image-border-color: light-dark(#cfcfd8, #3a3944);
|
||||||
--image-hover-border-color: #bfbfc9;
|
--image-hover-border-color: #bfbfc9;
|
||||||
--image-current-border-color: var(--button-focus-outline-color);
|
--image-current-border-color: var(--button-focus-outline-color);
|
||||||
--image-current-focused-outline-color: var(--image-hover-border-color);
|
--image-current-focused-outline-color: var(--image-hover-border-color);
|
||||||
--image-page-number-bg: light-dark(#f0f0f4, #23222b);
|
--image-page-number-bg: light-dark(#f0f0f4, #42414d);
|
||||||
--image-page-number-fg: var(--text-color);
|
--image-page-number-fg: var(--text-color);
|
||||||
--image-page-number-border-color: transparent;
|
--image-page-number-border-color: transparent;
|
||||||
--image-hover-page-number-bg: var(--image-page-number-bg);
|
--image-hover-page-number-bg: var(--image-page-number-bg);
|
||||||
@ -189,7 +190,7 @@
|
|||||||
transition-timing-function: var(--sidebar-transition-timing-function);
|
transition-timing-function: var(--sidebar-transition-timing-function);
|
||||||
|
|
||||||
.sidebarResizer {
|
.sidebarResizer {
|
||||||
inset-inline-start: 100%;
|
inset-inline-start: calc(100% + 4px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewsManagerButton {
|
.viewsManagerButton {
|
||||||
@ -243,12 +244,14 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
box-shadow: var(--header-shadow);
|
box-shadow: var(--header-shadow);
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
|
background-color: var(--header-bg);
|
||||||
|
|
||||||
.viewsManagerLabel {
|
.viewsManagerLabel {
|
||||||
flex: 1 0 0;
|
flex: 0;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
|
width: fit-content;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
|
||||||
font: menu;
|
font: menu;
|
||||||
@ -336,6 +339,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#viewsManagerAddFileButton {
|
#viewsManagerAddFileButton {
|
||||||
|
visibility: hidden;
|
||||||
|
|
||||||
background: var(--button-no-bg);
|
background: var(--button-no-bg);
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
|
|||||||
@ -69,6 +69,9 @@ const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
|
|||||||
class ViewsManager extends Sidebar {
|
class ViewsManager extends Sidebar {
|
||||||
static #l10nDescription = null;
|
static #l10nDescription = null;
|
||||||
|
|
||||||
|
#hasAnimations = !window.matchMedia("(prefers-reduced-motion: reduce)")
|
||||||
|
.matches;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {PDFSidebarOptions} options
|
* @param {PDFSidebarOptions} options
|
||||||
*/
|
*/
|
||||||
@ -86,6 +89,7 @@ class ViewsManager extends Sidebar {
|
|||||||
outlinesView,
|
outlinesView,
|
||||||
attachmentsView,
|
attachmentsView,
|
||||||
layersView,
|
layersView,
|
||||||
|
viewsManagerAddFileButton,
|
||||||
viewsManagerCurrentOutlineButton,
|
viewsManagerCurrentOutlineButton,
|
||||||
viewsManagerSelectorButton,
|
viewsManagerSelectorButton,
|
||||||
viewsManagerSelectorOptions,
|
viewsManagerSelectorOptions,
|
||||||
@ -131,6 +135,7 @@ class ViewsManager extends Sidebar {
|
|||||||
this.attachmentsView = attachmentsView;
|
this.attachmentsView = attachmentsView;
|
||||||
this.layersView = layersView;
|
this.layersView = layersView;
|
||||||
|
|
||||||
|
this.viewsManagerAddFileButton = viewsManagerAddFileButton;
|
||||||
this.viewsManagerCurrentOutlineButton = viewsManagerCurrentOutlineButton;
|
this.viewsManagerCurrentOutlineButton = viewsManagerCurrentOutlineButton;
|
||||||
this.viewsManagerHeaderLabel = viewsManagerHeaderLabel;
|
this.viewsManagerHeaderLabel = viewsManagerHeaderLabel;
|
||||||
this.viewsManagerStatus = viewsManagerStatus;
|
this.viewsManagerStatus = viewsManagerStatus;
|
||||||
@ -248,6 +253,7 @@ class ViewsManager extends Sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.viewsManagerStatus.hidden = view !== SidebarView.THUMBS;
|
this.viewsManagerStatus.hidden = view !== SidebarView.THUMBS;
|
||||||
|
this.viewsManagerAddFileButton.hidden = view !== SidebarView.THUMBS;
|
||||||
this.viewsManagerCurrentOutlineButton.hidden = view !== SidebarView.OUTLINE;
|
this.viewsManagerCurrentOutlineButton.hidden = view !== SidebarView.OUTLINE;
|
||||||
this.viewsManagerHeaderLabel.setAttribute(
|
this.viewsManagerHeaderLabel.setAttribute(
|
||||||
"data-l10n-id",
|
"data-l10n-id",
|
||||||
@ -303,15 +309,20 @@ class ViewsManager extends Sidebar {
|
|||||||
toggleExpandedBtn(this.toggleButton, true);
|
toggleExpandedBtn(this.toggleButton, true);
|
||||||
this.switchView(this.active);
|
this.switchView(this.active);
|
||||||
|
|
||||||
// Changing `hidden` above may cause a reflow which would prevent the
|
if (this.#hasAnimations) {
|
||||||
// CSS transition from being applied correctly, so we need to delay
|
// Changing `hidden` above may cause a reflow which would prevent the
|
||||||
// adding the relevant CSS classes.
|
// CSS transition from being applied correctly, so we need to delay
|
||||||
queueMicrotask(() => {
|
// adding the relevant CSS classes.
|
||||||
this.outerContainer.classList.add(
|
queueMicrotask(() => {
|
||||||
"viewsManagerMoving",
|
this.outerContainer.classList.add(
|
||||||
"viewsManagerOpen"
|
"viewsManagerMoving",
|
||||||
);
|
"viewsManagerOpen"
|
||||||
});
|
);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.outerContainer.classList.add("viewsManagerOpen");
|
||||||
|
this.eventBus.dispatch("resize", { source: this });
|
||||||
|
}
|
||||||
if (this.active === SidebarView.THUMBS) {
|
if (this.active === SidebarView.THUMBS) {
|
||||||
this.onUpdateThumbnails();
|
this.onUpdateThumbnails();
|
||||||
}
|
}
|
||||||
@ -392,13 +403,16 @@ class ViewsManager extends Sidebar {
|
|||||||
#addEventListeners() {
|
#addEventListeners() {
|
||||||
const { eventBus, outerContainer } = this;
|
const { eventBus, outerContainer } = this;
|
||||||
|
|
||||||
this.sidebarContainer.addEventListener("transitionend", evt => {
|
if (this.#hasAnimations) {
|
||||||
if (evt.target === this.sidebarContainer) {
|
this.sidebarContainer.addEventListener("transitionend", evt => {
|
||||||
outerContainer.classList.remove("viewsManagerMoving");
|
if (evt.target === this.sidebarContainer) {
|
||||||
// Ensure that rendering is triggered after opening/closing the sidebar.
|
outerContainer.classList.remove("viewsManagerMoving");
|
||||||
eventBus.dispatch("resize", { source: this });
|
// Ensure that rendering is triggered after opening/closing the
|
||||||
}
|
// sidebar.
|
||||||
});
|
eventBus.dispatch("resize", { source: this });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Buttons for switching views.
|
// Buttons for switching views.
|
||||||
this.thumbnailButton.addEventListener("click", () => {
|
this.thumbnailButton.addEventListener("click", () => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user