Merge branch 'master' of https://github.com/mozilla/pdf.js
This commit is contained in:
commit
bd2ce9c248
@ -71,6 +71,10 @@
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"commentLearnMoreUrl": {
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"enableSignatureEditor": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
|
||||
@ -2340,7 +2340,7 @@ function packageJson() {
|
||||
bugs: DIST_BUGS_URL,
|
||||
license: DIST_LICENSE,
|
||||
optionalDependencies: {
|
||||
"@napi-rs/canvas": "^0.1.78",
|
||||
"@napi-rs/canvas": "^0.1.80",
|
||||
},
|
||||
browser: {
|
||||
canvas: false,
|
||||
|
||||
@ -264,3 +264,15 @@ pdfjs-editor-free-text-size-input = Mida
|
||||
pdfjs-editor-ink-color-input = Color
|
||||
pdfjs-editor-ink-thickness-input = Gruix
|
||||
pdfjs-editor-ink-opacity-input = Opacitat
|
||||
|
||||
## Alt-text dialog
|
||||
|
||||
pdfjs-editor-alt-text-cancel-button = Cancel·la
|
||||
|
||||
## Dialog buttons
|
||||
|
||||
pdfjs-editor-add-signature-cancel-button = Cancel·la
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Cancel·la
|
||||
|
||||
@ -414,7 +414,8 @@ pdfjs-editor-comments-sidebar-close-button =
|
||||
pdfjs-editor-comments-sidebar-close-button-label = Close the sidebar
|
||||
|
||||
# Instructional copy to add a comment by selecting text or an annotations.
|
||||
pdfjs-editor-comments-sidebar-no-comments = Add a comment by selecting text or an annotation.
|
||||
pdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.
|
||||
pdfjs-editor-comments-sidebar-no-comments-link = Learn more
|
||||
|
||||
## Alt-text dialog
|
||||
|
||||
@ -670,21 +671,28 @@ pdfjs-editor-edit-signature-dialog-title = Edit description
|
||||
|
||||
pdfjs-editor-edit-signature-update-button = Update
|
||||
|
||||
## Comment popup
|
||||
|
||||
pdfjs-editor-edit-comment-popup-button-label = Edit comment
|
||||
pdfjs-editor-edit-comment-popup-button =
|
||||
.title = Edit comment
|
||||
pdfjs-editor-delete-comment-popup-button-label = Remove comment
|
||||
pdfjs-editor-delete-comment-popup-button =
|
||||
.title = Remove comment
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = Actions
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = Actions
|
||||
pdfjs-editor-edit-comment-close-button-label = Close
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = Close
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = Edit
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = Delete
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = Enter your comment
|
||||
# An existing comment is edited
|
||||
pdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment
|
||||
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Cancel
|
||||
pdfjs-editor-edit-comment-manager-save-button = Save
|
||||
# No existing comment
|
||||
pdfjs-editor-edit-comment-dialog-title-when-adding = Add comment
|
||||
|
||||
pdfjs-editor-edit-comment-dialog-text-input =
|
||||
.placeholder = Start typing…
|
||||
|
||||
pdfjs-editor-edit-comment-dialog-cancel-button = Cancel
|
||||
pdfjs-editor-edit-comment-dialog-save-button = Save
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
|
||||
@ -568,6 +568,11 @@ pdfjs-editor-add-signature-cancel-button = Cancelar
|
||||
pdfjs-editor-add-signature-add-button = Añadir
|
||||
pdfjs-editor-edit-signature-update-button = Actualizar
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Cancelar
|
||||
pdfjs-editor-edit-comment-manager-save-button = Guardar
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -286,9 +286,13 @@ pdfjs-web-fonts-disabled = Webeko letra-tipoak desgaituta daude: ezin dira kapsu
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = Testua
|
||||
pdfjs-editor-color-picker-free-text-input =
|
||||
.title = Aldatu testuaren kolorea
|
||||
pdfjs-editor-free-text-button-label = Testua
|
||||
pdfjs-editor-ink-button =
|
||||
.title = Marrazkia
|
||||
pdfjs-editor-color-picker-ink-input =
|
||||
.title = Aldatu marrazteko kolorea
|
||||
pdfjs-editor-ink-button-label = Marrazkia
|
||||
pdfjs-editor-stamp-button =
|
||||
.title = Gehitu edo editatu irudiak
|
||||
@ -300,6 +304,10 @@ pdfjs-highlight-floating-button1 =
|
||||
.title = Nabarmendu
|
||||
.aria-label = Nabarmendu
|
||||
pdfjs-highlight-floating-button-label = Nabarmendu
|
||||
pdfjs-comment-floating-button =
|
||||
.title = Iruzkina
|
||||
.aria-label = Iruzkina
|
||||
pdfjs-comment-floating-button-label = Iruzkina
|
||||
pdfjs-editor-signature-button =
|
||||
.title = Gehitu sinadura
|
||||
pdfjs-editor-signature-button-label = Gehitu sinadura
|
||||
@ -492,6 +500,14 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alterna
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu.
|
||||
pdfjs-editor-alt-text-settings-close-button = Itxi
|
||||
|
||||
## Accessibility labels (announced by screen readers) for objects added to the editor.
|
||||
|
||||
pdfjs-editor-highlight-added-alert = Nabarmentzea gehituta
|
||||
pdfjs-editor-freetext-added-alert = Testua gehituta
|
||||
pdfjs-editor-ink-added-alert = Marrazkia gehituta
|
||||
pdfjs-editor-stamp-added-alert = Irudia gehituta
|
||||
pdfjs-editor-signature-added-alert = Sinadura gehituta
|
||||
|
||||
## "Annotations removed" bar
|
||||
|
||||
pdfjs-editor-undo-bar-message-highlight = Nabarmentzea kenduta
|
||||
@ -564,6 +580,8 @@ pdfjs-editor-add-signature-save-checkbox = Gorde sinadura
|
||||
pdfjs-editor-add-signature-save-warning-message = Gordetako sinadura kopuruaren mugara heldu zara (5). Gehiago gorde ahal izateko, ken ezazu bat.
|
||||
pdfjs-editor-add-signature-image-upload-error-title = Ezin da irudia igo
|
||||
pdfjs-editor-add-signature-image-upload-error-description = Egiaztatu zure sareko konexioa edo saiatu beste irudi batekin.
|
||||
pdfjs-editor-add-signature-image-no-data-error-title = Ezin da irudia sinaduran bihurtu
|
||||
pdfjs-editor-add-signature-image-no-data-error-description = Saiatu beste irudi bat igotzen.
|
||||
pdfjs-editor-add-signature-error-close-button = Itxi
|
||||
|
||||
## Dialog buttons
|
||||
@ -572,6 +590,26 @@ pdfjs-editor-add-signature-cancel-button = Utzi
|
||||
pdfjs-editor-add-signature-add-button = Gehitu
|
||||
pdfjs-editor-edit-signature-update-button = Eguneratu
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = Ekintzak
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = Ekintzak
|
||||
pdfjs-editor-edit-comment-close-button-label = Itxi
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = Itxi
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = Editatu
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = Ezabatu
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = Idatzi zure iruzkina
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Utzi
|
||||
pdfjs-editor-edit-comment-manager-save-button = Gorde
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
pdfjs-editor-edit-comment-button =
|
||||
.title = Editatu iruzkina
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -278,9 +278,13 @@ pdfjs-web-fonts-disabled = Font web dinonaktifkan: tidak dapat menggunakan font
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = Teks
|
||||
pdfjs-editor-color-picker-free-text-input =
|
||||
.title = Ubah warna teks
|
||||
pdfjs-editor-free-text-button-label = Teks
|
||||
pdfjs-editor-ink-button =
|
||||
.title = Gambar
|
||||
pdfjs-editor-color-picker-ink-input =
|
||||
.title = Ubah warna gambar
|
||||
pdfjs-editor-ink-button-label = Gambar
|
||||
pdfjs-editor-stamp-button =
|
||||
.title = Tambah atau edit gambar
|
||||
@ -292,6 +296,10 @@ pdfjs-highlight-floating-button1 =
|
||||
.title = Sorot
|
||||
.aria-label = Sorot
|
||||
pdfjs-highlight-floating-button-label = Sorot
|
||||
pdfjs-comment-floating-button =
|
||||
.title = Komentar
|
||||
.aria-label = Komentar
|
||||
pdfjs-comment-floating-button-label = Komentar
|
||||
pdfjs-editor-signature-button =
|
||||
.title = Tambahkan tanda tangan
|
||||
pdfjs-editor-signature-button-label = Tambahkan tanda tangan
|
||||
@ -484,6 +492,14 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = Tampilkan editor teks
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = Membantu Anda memastikan semua gambar Anda memiliki teks alternatif.
|
||||
pdfjs-editor-alt-text-settings-close-button = Tutup
|
||||
|
||||
## Accessibility labels (announced by screen readers) for objects added to the editor.
|
||||
|
||||
pdfjs-editor-highlight-added-alert = Sorotan ditambahkan
|
||||
pdfjs-editor-freetext-added-alert = Teks ditambahkan
|
||||
pdfjs-editor-ink-added-alert = Gambar ditambahkan
|
||||
pdfjs-editor-stamp-added-alert = Citra ditambahkan
|
||||
pdfjs-editor-signature-added-alert = Tanda tangan ditambahkan
|
||||
|
||||
## "Annotations removed" bar
|
||||
|
||||
pdfjs-editor-undo-bar-message-highlight = Sorotan dihapus
|
||||
@ -548,6 +564,8 @@ pdfjs-editor-add-signature-save-checkbox = Simpan tanda tangan
|
||||
pdfjs-editor-add-signature-save-warning-message = Anda telah mencapai batas 5 tanda tangan tersimpan. Hapus untuk menyimpan lebih banyak.
|
||||
pdfjs-editor-add-signature-image-upload-error-title = Tidak dapat mengunggah gambar
|
||||
pdfjs-editor-add-signature-image-upload-error-description = Periksa sambungan jaringan Anda atau coba gambar lain.
|
||||
pdfjs-editor-add-signature-image-no-data-error-title = Tak bisa mengonversi citra ini menjadi tanda tangan
|
||||
pdfjs-editor-add-signature-image-no-data-error-description = Coba unggah gambar lain.
|
||||
pdfjs-editor-add-signature-error-close-button = Tutup
|
||||
|
||||
## Dialog buttons
|
||||
@ -556,6 +574,26 @@ pdfjs-editor-add-signature-cancel-button = Batal
|
||||
pdfjs-editor-add-signature-add-button = Tambah
|
||||
pdfjs-editor-edit-signature-update-button = Perbarui
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = Aksi
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = Aksi
|
||||
pdfjs-editor-edit-comment-close-button-label = Tutup
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = Tutup
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = Sunting
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = Hapus
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = Masukkan komentar Anda
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Batal
|
||||
pdfjs-editor-edit-comment-manager-save-button = Simpan
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
pdfjs-editor-edit-comment-button =
|
||||
.title = Sunting komentar
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -474,6 +474,11 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = Sýna alt-myndatextari
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = Hjálpar þér að tryggja að allar myndirnar þínar séu með alt-myndatexta.
|
||||
pdfjs-editor-alt-text-settings-close-button = Loka
|
||||
|
||||
## Accessibility labels (announced by screen readers) for objects added to the editor.
|
||||
|
||||
pdfjs-editor-stamp-added-alert = Mynd bætt við
|
||||
pdfjs-editor-signature-added-alert = Undirritun bætt við
|
||||
|
||||
## "Annotations removed" bar
|
||||
|
||||
pdfjs-editor-undo-bar-message-highlight = Áherslulitun fjarlægð
|
||||
@ -542,6 +547,8 @@ pdfjs-editor-add-signature-save-checkbox = Vista undirskrift
|
||||
pdfjs-editor-add-signature-save-warning-message = Þú hefur náð hámarki 5 vistaðra undirskrifta. Fjarlægðu eina til að geta vistað fleiri.
|
||||
pdfjs-editor-add-signature-image-upload-error-title = Ekki tókst að senda inn mynd
|
||||
pdfjs-editor-add-signature-image-upload-error-description = Athugaðu nettenginguna þína eða prófaðu aðra mynd.
|
||||
pdfjs-editor-add-signature-image-no-data-error-title = Get ekki breytt þessari mynd í undirskrift
|
||||
pdfjs-editor-add-signature-image-no-data-error-description = Reyndu að senda inn aðra mynd.
|
||||
pdfjs-editor-add-signature-error-close-button = Loka
|
||||
|
||||
## Dialog buttons
|
||||
@ -550,6 +557,26 @@ pdfjs-editor-add-signature-cancel-button = Hætta við
|
||||
pdfjs-editor-add-signature-add-button = Bæta við
|
||||
pdfjs-editor-edit-signature-update-button = Uppfæra
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = Aðgerðir
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = Aðgerðir
|
||||
pdfjs-editor-edit-comment-close-button-label = Loka
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = Loka
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = Breyta
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = Eyða
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = Settu inn athugasemdina þína
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Hætta við
|
||||
pdfjs-editor-edit-comment-manager-save-button = Vista
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
pdfjs-editor-edit-comment-button =
|
||||
.title = Breyta athugasemd
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -286,6 +286,8 @@ pdfjs-web-fonts-disabled = Веб қаріптері сөндірілген: қ
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = Мәтін
|
||||
pdfjs-editor-color-picker-free-text-input =
|
||||
.title = Мәтін түсін өзгерту
|
||||
pdfjs-editor-free-text-button-label = Мәтін
|
||||
pdfjs-editor-ink-button =
|
||||
.title = Сурет салу
|
||||
@ -300,12 +302,21 @@ pdfjs-highlight-floating-button1 =
|
||||
.title = Ерекшелеу
|
||||
.aria-label = Ерекшелеу
|
||||
pdfjs-highlight-floating-button-label = Ерекшелеу
|
||||
pdfjs-comment-floating-button =
|
||||
.title = Түсіндірме
|
||||
.aria-label = Түсіндірме
|
||||
pdfjs-comment-floating-button-label = Түсіндірме
|
||||
pdfjs-editor-signature-button =
|
||||
.title = Қолтаңбаны қосу
|
||||
pdfjs-editor-signature-button-label = Қолтаңбаны қосу
|
||||
|
||||
## Default editor aria labels
|
||||
|
||||
# Used when a signature editor is selected/hovered.
|
||||
# Variables:
|
||||
# $description (String) - a string describing/labeling the signature.
|
||||
pdfjs-editor-signature-editor1 =
|
||||
.aria-description = Қолтаңба түзеткіші: { $description }
|
||||
pdfjs-editor-stamp-editor =
|
||||
.aria-label = Сурет редакторы
|
||||
|
||||
@ -564,6 +575,26 @@ pdfjs-editor-add-signature-cancel-button = Бас тарту
|
||||
pdfjs-editor-add-signature-add-button = Қосу
|
||||
pdfjs-editor-edit-signature-update-button = Жаңарту
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = Әрекеттер
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = Әрекеттер
|
||||
pdfjs-editor-edit-comment-close-button-label = Жабу
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = Жабу
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = Түзету
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = Өшіру
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = Пікіріңізді енгізіңіз
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = Бас тарту
|
||||
pdfjs-editor-edit-comment-manager-save-button = Сақтау
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
pdfjs-editor-edit-comment-button =
|
||||
.title = Пікірді түзету
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -278,9 +278,13 @@ pdfjs-web-fonts-disabled = แบบอักษรเว็บถูกปิ
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = ข้อความ
|
||||
pdfjs-editor-color-picker-free-text-input =
|
||||
.title = เปลี่ยนสีข้อความ
|
||||
pdfjs-editor-free-text-button-label = ข้อความ
|
||||
pdfjs-editor-ink-button =
|
||||
.title = รูปวาด
|
||||
pdfjs-editor-color-picker-ink-input =
|
||||
.title = เปลี่ยนสีรูปวาด
|
||||
pdfjs-editor-ink-button-label = รูปวาด
|
||||
pdfjs-editor-stamp-button =
|
||||
.title = เพิ่มหรือแก้ไขภาพ
|
||||
@ -292,6 +296,10 @@ pdfjs-highlight-floating-button1 =
|
||||
.title = เน้นสี
|
||||
.aria-label = เน้นสี
|
||||
pdfjs-highlight-floating-button-label = เน้นสี
|
||||
pdfjs-comment-floating-button =
|
||||
.title = แสดงความคิดเห็น
|
||||
.aria-label = แสดงความคิดเห็น
|
||||
pdfjs-comment-floating-button-label = แสดงความคิดเห็น
|
||||
pdfjs-editor-signature-button =
|
||||
.title = เพิ่มลายเซ็น
|
||||
pdfjs-editor-signature-button-label = เพิ่มลายเซ็น
|
||||
@ -484,6 +492,14 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = แสดงตัว
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = ช่วยให้คุณแน่ใจว่าภาพทั้งหมดของคุณมีข้อความทดแทน
|
||||
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
|
||||
|
||||
pdfjs-editor-undo-bar-message-highlight = เอาการเน้นสีออกแล้ว
|
||||
@ -548,6 +564,8 @@ pdfjs-editor-add-signature-save-checkbox = บันทึกลายเซ็
|
||||
pdfjs-editor-add-signature-save-warning-message = คุณมีลายเซ็นที่บันทึกถึงจำนวนสูงสุด 5 รายการแล้ว โปรดลบรายการหนึ่งออกเมื่อจะบันทึกเพิ่ม
|
||||
pdfjs-editor-add-signature-image-upload-error-title = ไม่สามารถอัปโหลดภาพได้
|
||||
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 = ปิด
|
||||
|
||||
## Dialog buttons
|
||||
@ -556,6 +574,26 @@ pdfjs-editor-add-signature-cancel-button = ยกเลิก
|
||||
pdfjs-editor-add-signature-add-button = เพิ่ม
|
||||
pdfjs-editor-edit-signature-update-button = อัปเดต
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-actions-button-label = การกระทำ
|
||||
pdfjs-editor-edit-comment-actions-button =
|
||||
.title = การกระทำ
|
||||
pdfjs-editor-edit-comment-close-button-label = ปิด
|
||||
pdfjs-editor-edit-comment-close-button =
|
||||
.title = ปิด
|
||||
pdfjs-editor-edit-comment-actions-edit-button-label = แก้ไข
|
||||
pdfjs-editor-edit-comment-actions-delete-button-label = ลบ
|
||||
pdfjs-editor-edit-comment-manager-text-input =
|
||||
.placeholder = ป้อนความคิดเห็นของคุณ
|
||||
pdfjs-editor-edit-comment-manager-cancel-button = ยกเลิก
|
||||
pdfjs-editor-edit-comment-manager-save-button = บันทึก
|
||||
|
||||
## Edit a comment button in the editor toolbar
|
||||
|
||||
pdfjs-editor-edit-comment-button =
|
||||
.title = แก้ไขความคิดเห็น
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
411
package-lock.json
generated
411
package-lock.json
generated
@ -7,30 +7,30 @@
|
||||
"name": "pdf.js",
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.28.3",
|
||||
"@babel/core": "^7.28.4",
|
||||
"@babel/preset-env": "^7.28.3",
|
||||
"@babel/runtime": "^7.28.3",
|
||||
"@babel/runtime": "^7.28.4",
|
||||
"@csstools/postcss-light-dark-function": "^2.0.10",
|
||||
"@fluent/bundle": "^0.19.1",
|
||||
"@fluent/dom": "^0.10.2",
|
||||
"@metalsmith/layouts": "^3.0.0",
|
||||
"@metalsmith/markdown": "^1.10.0",
|
||||
"@napi-rs/canvas": "^0.1.78",
|
||||
"@types/node": "^24.3.0",
|
||||
"@napi-rs/canvas": "^0.1.80",
|
||||
"@types/node": "^24.4.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"babel-loader": "^10.0.0",
|
||||
"caniuse-lite": "^1.0.30001737",
|
||||
"caniuse-lite": "^1.0.30001741",
|
||||
"core-js": "^3.45.1",
|
||||
"eslint": "^9.34.0",
|
||||
"eslint": "^9.35.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-jasmine": "^4.2.2",
|
||||
"eslint-plugin-json": "^4.0.1",
|
||||
"eslint-plugin-no-unsanitized": "^4.1.2",
|
||||
"eslint-plugin-no-unsanitized": "^4.1.4",
|
||||
"eslint-plugin-perfectionist": "^4.15.0",
|
||||
"eslint-plugin-prettier": "^5.5.4",
|
||||
"eslint-plugin-unicorn": "^60.0.0",
|
||||
"globals": "^16.3.0",
|
||||
"eslint-plugin-unicorn": "^61.0.2",
|
||||
"globals": "^16.4.0",
|
||||
"gulp": "^5.0.1",
|
||||
"gulp-cli": "^3.1.0",
|
||||
"gulp-postcss": "^10.0.0",
|
||||
@ -38,7 +38,7 @@
|
||||
"gulp-replace": "^1.1.4",
|
||||
"gulp-zip": "^6.1.0",
|
||||
"highlight.js": "^11.11.1",
|
||||
"jasmine": "^5.9.0",
|
||||
"jasmine": "^5.10.0",
|
||||
"jsdoc": "^4.0.4",
|
||||
"jstransformer-nunjucks": "^1.2.0",
|
||||
"metalsmith": "^2.6.3",
|
||||
@ -50,10 +50,10 @@
|
||||
"postcss-discard-comments": "^7.0.4",
|
||||
"postcss-nesting": "^13.0.2",
|
||||
"prettier": "^3.6.2",
|
||||
"puppeteer": "^24.17.1",
|
||||
"stylelint": "^16.23.1",
|
||||
"puppeteer": "^24.20.0",
|
||||
"stylelint": "^16.24.0",
|
||||
"stylelint-prettier": "^5.0.3",
|
||||
"svglint": "^4.1.0",
|
||||
"svglint": "^4.1.1",
|
||||
"terser-webpack-plugin": "^5.3.14",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"ttest": "^4.0.0",
|
||||
@ -76,32 +76,6 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
|
||||
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.1.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
|
||||
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.0",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
|
||||
@ -128,22 +102,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/core": {
|
||||
"version": "7.28.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz",
|
||||
"integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
|
||||
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.28.3",
|
||||
"@babel/helper-compilation-targets": "^7.27.2",
|
||||
"@babel/helper-module-transforms": "^7.28.3",
|
||||
"@babel/helpers": "^7.28.3",
|
||||
"@babel/parser": "^7.28.3",
|
||||
"@babel/helpers": "^7.28.4",
|
||||
"@babel/parser": "^7.28.4",
|
||||
"@babel/template": "^7.27.2",
|
||||
"@babel/traverse": "^7.28.3",
|
||||
"@babel/types": "^7.28.2",
|
||||
"@babel/traverse": "^7.28.4",
|
||||
"@babel/types": "^7.28.4",
|
||||
"@jridgewell/remapping": "^2.3.5",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
@ -483,27 +457,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.28.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz",
|
||||
"integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
|
||||
"integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.27.2",
|
||||
"@babel/types": "^7.28.2"
|
||||
"@babel/types": "^7.28.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.28.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
|
||||
"integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
|
||||
"integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.28.2"
|
||||
"@babel/types": "^7.28.4"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
@ -1621,9 +1595,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.28.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz",
|
||||
"integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
|
||||
"integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@ -1646,18 +1620,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.28.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz",
|
||||
"integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
|
||||
"integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.28.3",
|
||||
"@babel/helper-globals": "^7.28.0",
|
||||
"@babel/parser": "^7.28.3",
|
||||
"@babel/parser": "^7.28.4",
|
||||
"@babel/template": "^7.27.2",
|
||||
"@babel/types": "^7.28.2",
|
||||
"@babel/types": "^7.28.4",
|
||||
"debug": "^4.3.1"
|
||||
},
|
||||
"engines": {
|
||||
@ -1665,9 +1639,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.28.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
|
||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
|
||||
"integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@ -1858,9 +1832,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint-community/eslint-utils": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
|
||||
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
|
||||
"version": "4.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
|
||||
"integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@ -1982,9 +1956,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "9.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz",
|
||||
"integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==",
|
||||
"version": "9.35.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz",
|
||||
"integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@ -2238,6 +2212,17 @@
|
||||
"@jridgewell/trace-mapping": "^0.3.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/remapping": {
|
||||
"version": "2.3.5",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
|
||||
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/resolve-uri": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
|
||||
@ -2247,15 +2232,6 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/set-array": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
||||
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.6",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
|
||||
@ -2298,9 +2274,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@keyv/serialize": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz",
|
||||
"integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==",
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz",
|
||||
"integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -2340,9 +2316,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.78.tgz",
|
||||
"integrity": "sha512-YaBHJvT+T1DoP16puvWM6w46Lq3VhwKIJ8th5m1iEJyGh7mibk5dT7flBvMQ1EH1LYmMzXJ+OUhu+8wQ9I6u7g==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz",
|
||||
"integrity": "sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
@ -2352,22 +2328,22 @@
|
||||
"node": ">= 10"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@napi-rs/canvas-android-arm64": "0.1.78",
|
||||
"@napi-rs/canvas-darwin-arm64": "0.1.78",
|
||||
"@napi-rs/canvas-darwin-x64": "0.1.78",
|
||||
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.78",
|
||||
"@napi-rs/canvas-linux-arm64-gnu": "0.1.78",
|
||||
"@napi-rs/canvas-linux-arm64-musl": "0.1.78",
|
||||
"@napi-rs/canvas-linux-riscv64-gnu": "0.1.78",
|
||||
"@napi-rs/canvas-linux-x64-gnu": "0.1.78",
|
||||
"@napi-rs/canvas-linux-x64-musl": "0.1.78",
|
||||
"@napi-rs/canvas-win32-x64-msvc": "0.1.78"
|
||||
"@napi-rs/canvas-android-arm64": "0.1.80",
|
||||
"@napi-rs/canvas-darwin-arm64": "0.1.80",
|
||||
"@napi-rs/canvas-darwin-x64": "0.1.80",
|
||||
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.80",
|
||||
"@napi-rs/canvas-linux-arm64-gnu": "0.1.80",
|
||||
"@napi-rs/canvas-linux-arm64-musl": "0.1.80",
|
||||
"@napi-rs/canvas-linux-riscv64-gnu": "0.1.80",
|
||||
"@napi-rs/canvas-linux-x64-gnu": "0.1.80",
|
||||
"@napi-rs/canvas-linux-x64-musl": "0.1.80",
|
||||
"@napi-rs/canvas-win32-x64-msvc": "0.1.80"
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-android-arm64": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.78.tgz",
|
||||
"integrity": "sha512-N1ikxztjrRmh8xxlG5kYm1RuNr8ZW1EINEDQsLhhuy7t0pWI/e7SH91uFVLZKCMDyjel1tyWV93b5fdCAi7ggw==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.80.tgz",
|
||||
"integrity": "sha512-sk7xhN/MoXeuExlggf91pNziBxLPVUqF2CAVnB57KLG/pz7+U5TKG8eXdc3pm0d7Od0WreB6ZKLj37sX9muGOQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@ -2382,9 +2358,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-darwin-arm64": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.78.tgz",
|
||||
"integrity": "sha512-FA3aCU3G5yGc74BSmnLJTObnZRV+HW+JBTrsU+0WVVaNyVKlb5nMvYAQuieQlRVemsAA2ek2c6nYtHh6u6bwFw==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz",
|
||||
"integrity": "sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@ -2399,9 +2375,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-darwin-x64": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.78.tgz",
|
||||
"integrity": "sha512-xVij69o9t/frixCDEoyWoVDKgE3ksLGdmE2nvBWVGmoLu94MWUlv2y4Qzf5oozBmydG5Dcm4pRHFBM7YWa1i6g==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.80.tgz",
|
||||
"integrity": "sha512-FqqSU7qFce0Cp3pwnTjVkKjjOtxMqRe6lmINxpIZYaZNnVI0H5FtsaraZJ36SiTHNjZlUB69/HhxNDT1Aaa9vA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@ -2416,9 +2392,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.78.tgz",
|
||||
"integrity": "sha512-aSEXrLcIpBtXpOSnLhTg4jPsjJEnK7Je9KqUdAWjc7T8O4iYlxWxrXFIF8rV8J79h5jNdScgZpAUWYnEcutR3g==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.80.tgz",
|
||||
"integrity": "sha512-eyWz0ddBDQc7/JbAtY4OtZ5SpK8tR4JsCYEZjCE3dI8pqoWUC8oMwYSBGCYfsx2w47cQgQCgMVRVTFiiO38hHQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@ -2433,9 +2409,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-arm64-gnu": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.78.tgz",
|
||||
"integrity": "sha512-dlEPRX1hLGKaY3UtGa1dtkA1uGgFITn2mDnfI6YsLlYyLJQNqHx87D1YTACI4zFCUuLr/EzQDzuX+vnp9YveVg==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.80.tgz",
|
||||
"integrity": "sha512-qwA63t8A86bnxhuA/GwOkK3jvb+XTQaTiVML0vAWoHyoZYTjNs7BzoOONDgTnNtr8/yHrq64XXzUoLqDzU+Uuw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@ -2450,9 +2426,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-arm64-musl": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.78.tgz",
|
||||
"integrity": "sha512-TsCfjOPZtm5Q/NO1EZHR5pwDPSPjPEttvnv44GL32Zn1uvudssjTLbvaG1jHq81Qxm16GTXEiYLmx4jOLZQYlg==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.80.tgz",
|
||||
"integrity": "sha512-1XbCOz/ymhj24lFaIXtWnwv/6eFHXDrjP0jYkc6iHQ9q8oXKzUX1Lc6bu+wuGiLhGh2GS/2JlfORC5ZcXimRcg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@ -2467,9 +2443,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.78.tgz",
|
||||
"integrity": "sha512-+cpTTb0GDshEow/5Fy8TpNyzaPsYb3clQIjgWRmzRcuteLU+CHEU/vpYvAcSo7JxHYPJd8fjSr+qqh+nI5AtmA==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.80.tgz",
|
||||
"integrity": "sha512-XTzR125w5ZMs0lJcxRlS1K3P5RaZ9RmUsPtd1uGt+EfDyYMu4c6SEROYsxyatbbu/2+lPe7MPHOO/0a0x7L/gw==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@ -2484,9 +2460,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-x64-gnu": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.78.tgz",
|
||||
"integrity": "sha512-wxRcvKfvYBgtrO0Uy8OmwvjlnTcHpY45LLwkwVNIWHPqHAsyoTyG/JBSfJ0p5tWRzMOPDCDqdhpIO4LOgXjeyg==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.80.tgz",
|
||||
"integrity": "sha512-BeXAmhKg1kX3UCrJsYbdQd3hIMDH/K6HnP/pG2LuITaXhXBiNdh//TVVVVCBbJzVQaV5gK/4ZOCMrQW9mvuTqA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@ -2501,9 +2477,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-linux-x64-musl": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.78.tgz",
|
||||
"integrity": "sha512-vQFOGwC9QDP0kXlhb2LU1QRw/humXgcbVp8mXlyBqzc/a0eijlLF9wzyarHC1EywpymtS63TAj8PHZnhTYN6hg==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.80.tgz",
|
||||
"integrity": "sha512-x0XvZWdHbkgdgucJsRxprX/4o4sEed7qo9rCQA9ugiS9qE2QvP0RIiEugtZhfLH3cyI+jIRFJHV4Fuz+1BHHMg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@ -2518,9 +2494,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/canvas-win32-x64-msvc": {
|
||||
"version": "0.1.78",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.78.tgz",
|
||||
"integrity": "sha512-/eKlTZBtGUgpRKalzOzRr6h7KVSuziESWXgBcBnXggZmimwIJWPJlEcbrx5Tcwj8rPuZiANXQOG9pPgy9Q4LTQ==",
|
||||
"version": "0.1.80",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.80.tgz",
|
||||
"integrity": "sha512-Z8jPsM6df5V8B1HrCHB05+bDiCxjE9QA//3YrkKIdVDEwn5RKaqOxCJDRJkl48cJbylcrJbW4HxZbTte8juuPg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@ -2593,9 +2569,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@puppeteer/browsers": {
|
||||
"version": "2.10.8",
|
||||
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.8.tgz",
|
||||
"integrity": "sha512-f02QYEnBDE0p8cteNoPYHHjbDuwyfbe4cCIVlNi8/MRicIxFW4w4CfgU0LNgWEID6s06P+hRJ1qjpBLMhPRCiQ==",
|
||||
"version": "2.10.9",
|
||||
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.9.tgz",
|
||||
"integrity": "sha512-kUGHwABarVhvMP+zhW5zvDA7LmGcd4TwrTEBwcTQic5EebUqaK5NjC0UXLJepIFVGsr2N/Z8NJQz2JYGo1ZwxA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
@ -2739,13 +2715,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "24.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz",
|
||||
"integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==",
|
||||
"version": "24.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.4.0.tgz",
|
||||
"integrity": "sha512-gUuVEAK4/u6F9wRLznPUU4WGUacSEBDPoC2TrBkw3GAnOLHBL45QdfHOXp1kJ4ypBGLxTOB+t7NJLpKoC3gznQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~7.10.0"
|
||||
"undici-types": "~7.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/vinyl": {
|
||||
@ -3738,16 +3714,18 @@
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/bare-fs": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.2.1.tgz",
|
||||
"integrity": "sha512-mELROzV0IhqilFgsl1gyp48pnZsaV9xhQapHLDsvn4d4ZTfbFhcghQezl7FTEDNBcGqLUnNI3lUlm6ecrLWdFA==",
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.4.tgz",
|
||||
"integrity": "sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"bare-events": "^2.5.4",
|
||||
"bare-path": "^3.0.0",
|
||||
"bare-stream": "^2.6.4"
|
||||
"bare-stream": "^2.6.4",
|
||||
"bare-url": "^2.2.2",
|
||||
"fast-fifo": "^1.3.2"
|
||||
},
|
||||
"engines": {
|
||||
"bare": ">=1.16.0"
|
||||
@ -3806,6 +3784,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-url": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz",
|
||||
"integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"bare-path": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
@ -4001,24 +3990,24 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable": {
|
||||
"version": "1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz",
|
||||
"integrity": "sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==",
|
||||
"version": "1.10.4",
|
||||
"resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.4.tgz",
|
||||
"integrity": "sha512-Gd7ccIUkZ9TE2odLQVS+PDjIvQCdJKUlLdJRVvZu0aipj07Qfx+XIej7hhDrKGGoIxV5m5fT/kOJNJPQhQneRg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"hookified": "^1.10.0",
|
||||
"keyv": "^5.4.0"
|
||||
"hookified": "^1.11.0",
|
||||
"keyv": "^5.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable/node_modules/keyv": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.0.tgz",
|
||||
"integrity": "sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==",
|
||||
"version": "5.5.1",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.1.tgz",
|
||||
"integrity": "sha512-eF3cHZ40bVsjdlRi/RvKAuB0+B61Q1xWvohnrJrnaQslM3h1n79IV+mc9EGag4nrA9ZOlNyr3TUzW5c8uy8vNA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@keyv/serialize": "^1.1.0"
|
||||
"@keyv/serialize": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/cached-iterable": {
|
||||
@ -4090,9 +4079,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001737",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz",
|
||||
"integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==",
|
||||
"version": "1.0.30001741",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz",
|
||||
"integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@ -4754,9 +4743,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/devtools-protocol": {
|
||||
"version": "0.0.1475386",
|
||||
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1475386.tgz",
|
||||
"integrity": "sha512-RQ809ykTfJ+dgj9bftdeL2vRVxASAuGU+I9LEx9Ij5TXU5HrgAQVmzi72VA+mkzscE12uzlRv5/tWWv9R9J1SA==",
|
||||
"version": "0.0.1495869",
|
||||
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1495869.tgz",
|
||||
"integrity": "sha512-i+bkd9UYFis40RcnkW7XrOprCujXRAHg62IVh/Ah3G8MmNXpCGt1m0dTFhSdx/AVs8XEMbdOGRwdkR1Bcta8AA==",
|
||||
"dev": true,
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
@ -5237,19 +5226,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "9.34.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz",
|
||||
"integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==",
|
||||
"version": "9.35.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz",
|
||||
"integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/eslint-utils": "^4.8.0",
|
||||
"@eslint-community/regexpp": "^4.12.1",
|
||||
"@eslint/config-array": "^0.21.0",
|
||||
"@eslint/config-helpers": "^0.3.1",
|
||||
"@eslint/core": "^0.15.2",
|
||||
"@eslint/eslintrc": "^3.3.1",
|
||||
"@eslint/js": "9.34.0",
|
||||
"@eslint/js": "9.35.0",
|
||||
"@eslint/plugin-kit": "^0.3.5",
|
||||
"@humanfs/node": "^0.16.6",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
@ -5451,9 +5440,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-no-unsanitized": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.1.2.tgz",
|
||||
"integrity": "sha512-ydF3PMFKEIkP71ZbLHFvu6/FW8SvRv6VV/gECfrQkqyD5+5oCAtPz8ZHy0GRuMDtNe2jsNdPCQXX4LSbkapAVQ==",
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.1.4.tgz",
|
||||
"integrity": "sha512-cjAoZoq3J+5KJuycYYOWrc0/OpZ7pl2Z3ypfFq4GtaAgheg+L7YGxUo2YS3avIvo/dYU5/zR2hXu3v81M9NxhQ==",
|
||||
"dev": true,
|
||||
"license": "MPL-2.0",
|
||||
"peerDependencies": {
|
||||
@ -5510,9 +5499,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-unicorn": {
|
||||
"version": "60.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz",
|
||||
"integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==",
|
||||
"version": "61.0.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-61.0.2.tgz",
|
||||
"integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@ -6639,9 +6628,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "16.3.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz",
|
||||
"integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==",
|
||||
"version": "16.4.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz",
|
||||
"integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@ -7078,9 +7067,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/hookified": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/hookified/-/hookified-1.11.0.tgz",
|
||||
"integrity": "sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==",
|
||||
"version": "1.12.0",
|
||||
"resolved": "https://registry.npmjs.org/hookified/-/hookified-1.12.0.tgz",
|
||||
"integrity": "sha512-hMr1Y9TCLshScrBbV2QxJ9BROddxZ12MX9KsCtuGGy/3SmmN5H1PllKerrVlSotur9dlE8hmUKAOSa3WDzsZmQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -7881,23 +7870,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jasmine": {
|
||||
"version": "5.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.9.0.tgz",
|
||||
"integrity": "sha512-SspK51QMnuC92z5zpF4kOkWN+MyZZDOBv8zgzlMAYvMD0UoGwcq5yYaDe1mrpN7wXZ2CFXh5y8Ua2ugwE4OmXQ==",
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.10.0.tgz",
|
||||
"integrity": "sha512-v4FojO8cXQdx15mJXovGhjJOvyIcVf7AC+H0ZahnfLk52vUbwuLxjVgbikc95yLmgwKQsFT47/FGQ3dOrWVxtQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"glob": "^10.2.2",
|
||||
"jasmine-core": "~5.9.0"
|
||||
"jasmine-core": "~5.10.0"
|
||||
},
|
||||
"bin": {
|
||||
"jasmine": "bin/jasmine.js"
|
||||
}
|
||||
},
|
||||
"node_modules/jasmine-core": {
|
||||
"version": "5.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz",
|
||||
"integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==",
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.10.0.tgz",
|
||||
"integrity": "sha512-MrChbWV5LBo+EaeKwTM1eZ6oYSz1brvFExnRafraEkJkbJ9evbUxABhnIgGQimhpMxhg+BD6QmOvb/e3NXsNdg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -9970,18 +9959,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/puppeteer": {
|
||||
"version": "24.17.1",
|
||||
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.17.1.tgz",
|
||||
"integrity": "sha512-KIuX0w+0um4TUbm55yFl2WIsbgjya2BHIgW9ylTuhavtwjXCOM7lMo9oLR1jQnCxrFvm9h/Yeb+zfs4nlgntPg==",
|
||||
"version": "24.20.0",
|
||||
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.20.0.tgz",
|
||||
"integrity": "sha512-iLnLV9oHKKAujmxiSxRWKfcT1q2COu0g1N9iU2TCp1MlmsyjgNAkcBOR3cAOqKb5UTiVPIGG4z5PO5yfpYZ6jA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@puppeteer/browsers": "2.10.8",
|
||||
"@puppeteer/browsers": "2.10.9",
|
||||
"chromium-bidi": "8.0.0",
|
||||
"cosmiconfig": "^9.0.0",
|
||||
"devtools-protocol": "0.0.1475386",
|
||||
"puppeteer-core": "24.17.1",
|
||||
"devtools-protocol": "0.0.1495869",
|
||||
"puppeteer-core": "24.20.0",
|
||||
"typed-query-selector": "^2.12.0"
|
||||
},
|
||||
"bin": {
|
||||
@ -9992,17 +9981,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/puppeteer-core": {
|
||||
"version": "24.17.1",
|
||||
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.17.1.tgz",
|
||||
"integrity": "sha512-Msh/kf9k1XFN0wuKiT4/npMmMWOT7kPBEUw01gWvRoKOOoz3It9TEmWjnt4Gl4eO+p73VMrvR+wfa0dm9rfxjw==",
|
||||
"version": "24.20.0",
|
||||
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.20.0.tgz",
|
||||
"integrity": "sha512-n0y/f8EYyZt4yEJkjP3Vrqf9A4qa3uYpKYdsiedIY4bxIfTw1aAJSpSVPmWBPlr1LO4cNq2hGNIBWKPhvBF68w==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@puppeteer/browsers": "2.10.8",
|
||||
"@puppeteer/browsers": "2.10.9",
|
||||
"chromium-bidi": "8.0.0",
|
||||
"debug": "^4.4.1",
|
||||
"devtools-protocol": "0.0.1475386",
|
||||
"devtools-protocol": "0.0.1495869",
|
||||
"typed-query-selector": "^2.12.0",
|
||||
"webdriver-bidi-protocol": "0.2.8",
|
||||
"ws": "^8.18.3"
|
||||
},
|
||||
"engines": {
|
||||
@ -11050,9 +11040,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "16.23.1",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.23.1.tgz",
|
||||
"integrity": "sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==",
|
||||
"version": "16.24.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.24.0.tgz",
|
||||
"integrity": "sha512-7ksgz3zJaSbTUGr/ujMXvLVKdDhLbGl3R/3arNudH7z88+XZZGNLMTepsY28WlnvEFcuOmUe7fg40Q3lfhOfSQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@ -11079,7 +11069,7 @@
|
||||
"debug": "^4.4.1",
|
||||
"fast-glob": "^3.3.3",
|
||||
"fastest-levenshtein": "^1.0.16",
|
||||
"file-entry-cache": "^10.1.3",
|
||||
"file-entry-cache": "^10.1.4",
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.1.0",
|
||||
"globjoin": "^0.1.4",
|
||||
@ -11159,25 +11149,25 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stylelint/node_modules/file-entry-cache": {
|
||||
"version": "10.1.3",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.3.tgz",
|
||||
"integrity": "sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==",
|
||||
"version": "10.1.4",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz",
|
||||
"integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flat-cache": "^6.1.12"
|
||||
"flat-cache": "^6.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/flat-cache": {
|
||||
"version": "6.1.12",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.12.tgz",
|
||||
"integrity": "sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==",
|
||||
"version": "6.1.13",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.13.tgz",
|
||||
"integrity": "sha512-gmtS2PaUjSPa4zjObEIn4WWliKyZzYljgxODBfxugpK6q6HU9ClXzgCJ+nlcPKY9Bt090ypTOLIFWkV0jbKFjw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cacheable": "^1.10.3",
|
||||
"cacheable": "^1.10.4",
|
||||
"flatted": "^3.3.3",
|
||||
"hookified": "^1.10.0"
|
||||
"hookified": "^1.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/global-modules": {
|
||||
@ -11310,9 +11300,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/svglint": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/svglint/-/svglint-4.1.0.tgz",
|
||||
"integrity": "sha512-gGpw/a8EQgBEEmkBCMS38ykEVhQJBFObkyLF3BZVO9GzgCuTCTx2Dlms01y+N02IobN80k7Q+NxTvoMd16CP0g==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/svglint/-/svglint-4.1.1.tgz",
|
||||
"integrity": "sha512-//uSfcrDM6bWcgZdqQt2685F3Td58DX8JjEpu5SoBKVRZPLjGXaukVhegFN2HQ08WuChDV4DRqPk5zW1WaNLqA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@ -12038,9 +12028,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.10.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
|
||||
"integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==",
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.11.0.tgz",
|
||||
"integrity": "sha512-kt1ZriHTi7MU+Z/r9DOdAI3ONdaR3M3csEaRc6ewa4f4dTvX4cQCbJ4NkEn0ohE4hHtq85+PhPSTY+pO/1PwgA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -12309,6 +12299,13 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/webdriver-bidi-protocol": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.2.8.tgz",
|
||||
"integrity": "sha512-KPvtVAIX8VHjLZH1KHT5GXoOaPeb0Ju+JlAcdshw6Z/gsmRtLoxt0Hw99PgJwZta7zUQaAUIHHWDRkzrPHsQTQ==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.101.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz",
|
||||
|
||||
26
package.json
26
package.json
@ -2,30 +2,30 @@
|
||||
"name": "pdf.js",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.28.3",
|
||||
"@babel/core": "^7.28.4",
|
||||
"@babel/preset-env": "^7.28.3",
|
||||
"@babel/runtime": "^7.28.3",
|
||||
"@babel/runtime": "^7.28.4",
|
||||
"@csstools/postcss-light-dark-function": "^2.0.10",
|
||||
"@fluent/bundle": "^0.19.1",
|
||||
"@fluent/dom": "^0.10.2",
|
||||
"@metalsmith/layouts": "^3.0.0",
|
||||
"@metalsmith/markdown": "^1.10.0",
|
||||
"@napi-rs/canvas": "^0.1.78",
|
||||
"@types/node": "^24.3.0",
|
||||
"@napi-rs/canvas": "^0.1.80",
|
||||
"@types/node": "^24.4.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"babel-loader": "^10.0.0",
|
||||
"caniuse-lite": "^1.0.30001737",
|
||||
"caniuse-lite": "^1.0.30001741",
|
||||
"core-js": "^3.45.1",
|
||||
"eslint": "^9.34.0",
|
||||
"eslint": "^9.35.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-jasmine": "^4.2.2",
|
||||
"eslint-plugin-json": "^4.0.1",
|
||||
"eslint-plugin-no-unsanitized": "^4.1.2",
|
||||
"eslint-plugin-no-unsanitized": "^4.1.4",
|
||||
"eslint-plugin-perfectionist": "^4.15.0",
|
||||
"eslint-plugin-prettier": "^5.5.4",
|
||||
"eslint-plugin-unicorn": "^60.0.0",
|
||||
"globals": "^16.3.0",
|
||||
"eslint-plugin-unicorn": "^61.0.2",
|
||||
"globals": "^16.4.0",
|
||||
"gulp": "^5.0.1",
|
||||
"gulp-cli": "^3.1.0",
|
||||
"gulp-postcss": "^10.0.0",
|
||||
@ -33,7 +33,7 @@
|
||||
"gulp-replace": "^1.1.4",
|
||||
"gulp-zip": "^6.1.0",
|
||||
"highlight.js": "^11.11.1",
|
||||
"jasmine": "^5.9.0",
|
||||
"jasmine": "^5.10.0",
|
||||
"jsdoc": "^4.0.4",
|
||||
"jstransformer-nunjucks": "^1.2.0",
|
||||
"metalsmith": "^2.6.3",
|
||||
@ -45,10 +45,10 @@
|
||||
"postcss-discard-comments": "^7.0.4",
|
||||
"postcss-nesting": "^13.0.2",
|
||||
"prettier": "^3.6.2",
|
||||
"puppeteer": "^24.17.1",
|
||||
"stylelint": "^16.23.1",
|
||||
"puppeteer": "^24.20.0",
|
||||
"stylelint": "^16.24.0",
|
||||
"stylelint-prettier": "^5.0.3",
|
||||
"svglint": "^4.1.0",
|
||||
"svglint": "^4.1.1",
|
||||
"terser-webpack-plugin": "^5.3.14",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"ttest": "^4.0.0",
|
||||
|
||||
@ -3661,8 +3661,24 @@ class PartialEvaluator {
|
||||
if (baseEncodingName) {
|
||||
properties.defaultEncoding = getEncoding(baseEncodingName);
|
||||
} else {
|
||||
const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
|
||||
let isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
|
||||
const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);
|
||||
|
||||
// The PDF specs state that the flags Symbolic and Nonsymbolic must be
|
||||
// mutually exclusive. However, some fonts are marked as both.
|
||||
// In that case we ignore the Symbolic flag when there is a Differences
|
||||
// entry (which indicates that the font is used as a non-symbolic
|
||||
// font).
|
||||
if (
|
||||
properties.type === "TrueType" &&
|
||||
isSymbolicFont &&
|
||||
isNonsymbolicFont &&
|
||||
differences.length !== 0
|
||||
) {
|
||||
properties.flags &= ~FontFlags.Symbolic;
|
||||
isSymbolicFont = false;
|
||||
}
|
||||
|
||||
// According to "Table 114" in section "9.6.6.1 General" (under
|
||||
// "9.6.6 Character Encoding") of the PDF specification, a Nonsymbolic
|
||||
// font should use the `StandardEncoding` if no encoding is specified.
|
||||
|
||||
@ -334,7 +334,7 @@ class AnnotationEditorLayer {
|
||||
if (editor?.annotationElementId === null) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
editor.dblclick();
|
||||
editor.dblclick(e);
|
||||
}
|
||||
},
|
||||
{ signal, capture: true }
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { noContextMenu } from "../display_utils.js";
|
||||
import { noContextMenu, stopEvent } from "../display_utils.js";
|
||||
|
||||
class Comment {
|
||||
#commentStandaloneButton = null;
|
||||
@ -34,6 +34,8 @@ class Comment {
|
||||
|
||||
#deleted = false;
|
||||
|
||||
#popupPosition = null;
|
||||
|
||||
constructor(editor) {
|
||||
this.#editor = editor;
|
||||
}
|
||||
@ -42,7 +44,7 @@ class Comment {
|
||||
const button = (this.#commentToolbarButton =
|
||||
document.createElement("button"));
|
||||
button.className = "comment";
|
||||
return this.#render(button);
|
||||
return this.#render(button, false);
|
||||
}
|
||||
|
||||
renderForStandalone() {
|
||||
@ -66,16 +68,87 @@ class Comment {
|
||||
}
|
||||
}
|
||||
|
||||
return this.#render(button);
|
||||
return this.#render(button, true);
|
||||
}
|
||||
|
||||
#render(comment) {
|
||||
onUpdatedColor() {
|
||||
if (!this.#commentStandaloneButton) {
|
||||
return;
|
||||
}
|
||||
const color = this.#editor.commentButtonColor;
|
||||
if (color) {
|
||||
this.#commentStandaloneButton.style.backgroundColor = color;
|
||||
}
|
||||
this.#editor._uiManager.updatePopupColor(this.#editor);
|
||||
}
|
||||
|
||||
get commentButtonWidth() {
|
||||
return (
|
||||
(this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) /
|
||||
this.#editor.parent.boundingClientRect.width
|
||||
);
|
||||
}
|
||||
|
||||
get commentPopupPositionInLayer() {
|
||||
if (this.#popupPosition) {
|
||||
return this.#popupPosition;
|
||||
}
|
||||
if (!this.#commentStandaloneButton) {
|
||||
return null;
|
||||
}
|
||||
const { x, y, height } =
|
||||
this.#commentStandaloneButton.getBoundingClientRect();
|
||||
const {
|
||||
x: parentX,
|
||||
y: parentY,
|
||||
width: parentWidth,
|
||||
height: parentHeight,
|
||||
} = this.#editor.parent.boundingClientRect;
|
||||
const OFFSET_UNDER_BUTTON = 2;
|
||||
return [
|
||||
(x - parentX) / parentWidth,
|
||||
(y + height + OFFSET_UNDER_BUTTON - parentY) / parentHeight,
|
||||
];
|
||||
}
|
||||
|
||||
set commentPopupPositionInLayer(pos) {
|
||||
this.#popupPosition = pos;
|
||||
}
|
||||
|
||||
removeStandaloneCommentButton() {
|
||||
this.#commentStandaloneButton?.remove();
|
||||
this.#commentStandaloneButton = null;
|
||||
}
|
||||
|
||||
removeToolbarCommentButton() {
|
||||
this.#commentToolbarButton?.remove();
|
||||
this.#commentToolbarButton = null;
|
||||
}
|
||||
|
||||
setCommentButtonStates({ selected, hasPopup }) {
|
||||
if (!this.#commentStandaloneButton) {
|
||||
return;
|
||||
}
|
||||
this.#commentStandaloneButton.classList.toggle("selected", selected);
|
||||
this.#commentStandaloneButton.ariaExpanded = hasPopup;
|
||||
}
|
||||
|
||||
#render(comment, isStandalone) {
|
||||
if (!this.#editor._uiManager.hasCommentManager()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
comment.tabIndex = "0";
|
||||
comment.setAttribute("data-l10n-id", "pdfjs-editor-edit-comment-button");
|
||||
comment.ariaHasPopup = "dialog";
|
||||
|
||||
if (isStandalone) {
|
||||
comment.ariaControls = "commentPopup";
|
||||
} else {
|
||||
comment.ariaControlsElements = [
|
||||
this.#editor._uiManager.getCommentDialogElement(),
|
||||
];
|
||||
comment.setAttribute("data-l10n-id", "pdfjs-editor-edit-comment-button");
|
||||
}
|
||||
|
||||
const signal = this.#editor._uiManager._signal;
|
||||
if (!(signal instanceof AbortSignal) || signal.aborted) {
|
||||
@ -83,6 +156,30 @@ class Comment {
|
||||
}
|
||||
|
||||
comment.addEventListener("contextmenu", noContextMenu, { signal });
|
||||
if (isStandalone) {
|
||||
comment.addEventListener(
|
||||
"focusin",
|
||||
e => {
|
||||
this.#editor._focusEventsAllowed = false;
|
||||
stopEvent(e);
|
||||
},
|
||||
{
|
||||
capture: true,
|
||||
signal,
|
||||
}
|
||||
);
|
||||
comment.addEventListener(
|
||||
"focusout",
|
||||
e => {
|
||||
this.#editor._focusEventsAllowed = true;
|
||||
stopEvent(e);
|
||||
},
|
||||
{
|
||||
capture: true,
|
||||
signal,
|
||||
}
|
||||
);
|
||||
}
|
||||
comment.addEventListener("pointerdown", event => event.stopPropagation(), {
|
||||
signal,
|
||||
});
|
||||
@ -92,7 +189,7 @@ class Comment {
|
||||
if (comment === this.#commentToolbarButton) {
|
||||
this.edit();
|
||||
} else {
|
||||
this.#editor._uiManager.toggleComment(this.#editor);
|
||||
this.#editor.toggleComment(/* isSelected = */ true);
|
||||
}
|
||||
};
|
||||
comment.addEventListener("click", onClick, { capture: true, signal });
|
||||
@ -107,18 +204,55 @@ class Comment {
|
||||
{ signal }
|
||||
);
|
||||
|
||||
comment.addEventListener(
|
||||
"pointerenter",
|
||||
() => {
|
||||
this.#editor.toggleComment(
|
||||
/* isSelected = */ false,
|
||||
/* visibility = */ true
|
||||
);
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
comment.addEventListener(
|
||||
"pointerleave",
|
||||
() => {
|
||||
this.#editor.toggleComment(
|
||||
/* isSelected = */ false,
|
||||
/* visibility = */ false
|
||||
);
|
||||
},
|
||||
{ signal }
|
||||
);
|
||||
|
||||
return comment;
|
||||
}
|
||||
|
||||
edit() {
|
||||
const { bottom, left, right } = this.#editor.getClientDimensions();
|
||||
const position = { top: bottom };
|
||||
if (this.#editor._uiManager.direction === "ltr") {
|
||||
position.right = right;
|
||||
edit(options) {
|
||||
const position = this.commentPopupPositionInLayer;
|
||||
let posX, posY;
|
||||
if (position) {
|
||||
[posX, posY] = position;
|
||||
} else {
|
||||
position.left = left;
|
||||
// The position is in the editor coordinates.
|
||||
[posX, posY] = this.#editor.commentButtonPosition;
|
||||
const { width, height, x, y } = this.#editor;
|
||||
posX = x + posX * width;
|
||||
posY = y + posY * height;
|
||||
}
|
||||
this.#editor._uiManager.editComment(this.#editor, position);
|
||||
const parentDimensions = this.#editor.parent.boundingClientRect;
|
||||
const {
|
||||
x: parentX,
|
||||
y: parentY,
|
||||
width: parentWidth,
|
||||
height: parentHeight,
|
||||
} = parentDimensions;
|
||||
this.#editor._uiManager.editComment(
|
||||
this.#editor,
|
||||
parentX + posX * parentWidth,
|
||||
parentY + posY * parentHeight,
|
||||
{ ...options, parentDimensions }
|
||||
);
|
||||
}
|
||||
|
||||
finish() {
|
||||
|
||||
@ -98,6 +98,12 @@ class DrawingEditor extends AnnotationEditor {
|
||||
this._addOutlines(params);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
onUpdatedColor() {
|
||||
this._colorPicker?.update(this.color);
|
||||
super.onUpdatedColor();
|
||||
}
|
||||
|
||||
_addOutlines(params) {
|
||||
if (params.drawOutlines) {
|
||||
this.#createDrawOutlines(params);
|
||||
@ -243,7 +249,7 @@ class DrawingEditor extends AnnotationEditor {
|
||||
options.toSVGProperties()
|
||||
);
|
||||
if (type === this.colorType) {
|
||||
this._colorPicker?.update(val);
|
||||
this.onUpdatedColor();
|
||||
}
|
||||
};
|
||||
this.addCommands({
|
||||
|
||||
@ -22,19 +22,13 @@ import {
|
||||
ColorManager,
|
||||
KeyboardManager,
|
||||
} from "./tools.js";
|
||||
import {
|
||||
applyOpacity,
|
||||
CSSConstants,
|
||||
findContrastColor,
|
||||
noContextMenu,
|
||||
stopEvent,
|
||||
} from "../display_utils.js";
|
||||
import {
|
||||
FeatureTest,
|
||||
MathClamp,
|
||||
shadow,
|
||||
unreachable,
|
||||
} from "../../shared/util.js";
|
||||
import { noContextMenu, stopEvent } from "../display_utils.js";
|
||||
import { AltText } from "./alt_text.js";
|
||||
import { Comment } from "./comment.js";
|
||||
import { EditorToolbar } from "./toolbar.js";
|
||||
@ -1098,28 +1092,28 @@ class AnnotationEditor {
|
||||
await this._editToolbar.addButton(name, tool);
|
||||
}
|
||||
}
|
||||
this._editToolbar.addButton("comment", this.addCommentButton());
|
||||
if (!this.hasComment) {
|
||||
this._editToolbar.addButton("comment", this.addCommentButton());
|
||||
}
|
||||
this._editToolbar.addButton("delete");
|
||||
|
||||
return this._editToolbar;
|
||||
}
|
||||
|
||||
addCommentButtonInToolbar() {
|
||||
if (!this._editToolbar) {
|
||||
return;
|
||||
}
|
||||
this._editToolbar.addButtonBefore(
|
||||
this._editToolbar?.addButtonBefore(
|
||||
"comment",
|
||||
this.addCommentButton(),
|
||||
".deleteButton"
|
||||
);
|
||||
}
|
||||
|
||||
removeCommentButtonFromToolbar() {
|
||||
this._editToolbar?.removeButton("comment");
|
||||
}
|
||||
|
||||
removeEditToolbar() {
|
||||
if (!this._editToolbar) {
|
||||
return;
|
||||
}
|
||||
this._editToolbar.remove();
|
||||
this._editToolbar?.remove();
|
||||
this._editToolbar = null;
|
||||
|
||||
// We destroy the alt text but we don't null it because we want to be able
|
||||
@ -1195,8 +1189,11 @@ class AnnotationEditor {
|
||||
}
|
||||
|
||||
addStandaloneCommentButton() {
|
||||
this.#comment ||= new Comment(this);
|
||||
if (this.#commentStandaloneButton) {
|
||||
this.#commentStandaloneButton.classList.remove("hidden");
|
||||
return;
|
||||
}
|
||||
if (!this.hasComment) {
|
||||
return;
|
||||
}
|
||||
this.#commentStandaloneButton = this.#comment.renderForStandalone();
|
||||
@ -1204,12 +1201,12 @@ class AnnotationEditor {
|
||||
}
|
||||
|
||||
removeStandaloneCommentButton() {
|
||||
this.#commentStandaloneButton?.remove();
|
||||
this.#comment.removeStandaloneCommentButton();
|
||||
this.#commentStandaloneButton = null;
|
||||
}
|
||||
|
||||
get commentColor() {
|
||||
return null;
|
||||
hideStandaloneCommentButton() {
|
||||
this.#commentStandaloneButton?.classList.add("hidden");
|
||||
}
|
||||
|
||||
get comment() {
|
||||
@ -1221,7 +1218,8 @@ class AnnotationEditor {
|
||||
richText,
|
||||
date,
|
||||
deleted,
|
||||
color: this.commentColor,
|
||||
color: this.getNonHCMColor(),
|
||||
opacity: this.opacity ?? 1,
|
||||
};
|
||||
}
|
||||
|
||||
@ -1229,17 +1227,18 @@ class AnnotationEditor {
|
||||
this.#comment ||= new Comment(this);
|
||||
this.#comment.data = text;
|
||||
if (this.hasComment) {
|
||||
this.removeCommentButtonFromToolbar();
|
||||
this.addStandaloneCommentButton();
|
||||
this._uiManager.updateComment(this);
|
||||
} else {
|
||||
this.addCommentButtonInToolbar();
|
||||
this.removeStandaloneCommentButton();
|
||||
this._uiManager.removeComment(this);
|
||||
}
|
||||
}
|
||||
|
||||
setCommentData({ comment, richText }) {
|
||||
if (!this.#comment) {
|
||||
this.#comment = new Comment(this);
|
||||
}
|
||||
this.#comment ||= new Comment(this);
|
||||
this.#comment.setInitialText(comment, richText);
|
||||
}
|
||||
|
||||
@ -1253,14 +1252,20 @@ class AnnotationEditor {
|
||||
);
|
||||
}
|
||||
|
||||
async editComment() {
|
||||
if (!this.#comment) {
|
||||
this.#comment = new Comment(this);
|
||||
}
|
||||
this.#comment.edit();
|
||||
async editComment(options) {
|
||||
this.#comment ||= new Comment(this);
|
||||
this.#comment.edit(options);
|
||||
}
|
||||
|
||||
showComment() {}
|
||||
toggleComment(isSelected, visibility = undefined) {
|
||||
if (this.hasComment) {
|
||||
this._uiManager.toggleComment(this, isSelected, visibility);
|
||||
}
|
||||
}
|
||||
|
||||
setSelectedCommentButton(selected) {
|
||||
this.#comment.setSelectedButton(selected);
|
||||
}
|
||||
|
||||
addComment(serialized) {
|
||||
if (this.hasEditedComment) {
|
||||
@ -1280,6 +1285,10 @@ class AnnotationEditor {
|
||||
}
|
||||
}
|
||||
|
||||
get parentBoundingClientRect() {
|
||||
return this.parent.boundingClientRect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render this editor in a div.
|
||||
* @returns {HTMLDivElement | null}
|
||||
@ -1327,6 +1336,7 @@ class AnnotationEditor {
|
||||
});
|
||||
}
|
||||
|
||||
this.addStandaloneCommentButton();
|
||||
this._uiManager._editorUndoBar?.hide();
|
||||
|
||||
return div;
|
||||
@ -1467,6 +1477,11 @@ class AnnotationEditor {
|
||||
e => {
|
||||
if (!hasDraggingStarted) {
|
||||
hasDraggingStarted = true;
|
||||
this._uiManager.toggleComment(
|
||||
this,
|
||||
/* isSelected = */ true,
|
||||
/* visibility = */ false
|
||||
);
|
||||
this._onStartDragging();
|
||||
}
|
||||
const { clientX: x, clientY: y, pointerId } = e;
|
||||
@ -1632,9 +1647,25 @@ class AnnotationEditor {
|
||||
return this.getRect(0, 0);
|
||||
}
|
||||
|
||||
getNonHCMColor() {
|
||||
return (
|
||||
this.color &&
|
||||
AnnotationEditor._colorManager.convert(
|
||||
this._uiManager.getNonHCMColor(this.color)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* The color has been changed.
|
||||
*/
|
||||
onUpdatedColor() {
|
||||
this.#comment?.onUpdatedColor();
|
||||
}
|
||||
|
||||
getData() {
|
||||
const {
|
||||
comment: { text: str, date, deleted, richText },
|
||||
comment: { text: str, color, date, opacity, deleted, richText },
|
||||
uid: id,
|
||||
pageIndex,
|
||||
creationDate,
|
||||
@ -1649,6 +1680,8 @@ class AnnotationEditor {
|
||||
creationDate,
|
||||
modificationDate: date || modificationDate,
|
||||
popupRef: !deleted,
|
||||
color,
|
||||
opacity,
|
||||
};
|
||||
}
|
||||
|
||||
@ -1903,18 +1936,32 @@ class AnnotationEditor {
|
||||
}
|
||||
|
||||
get commentButtonColor() {
|
||||
if (!this.color) {
|
||||
return null;
|
||||
}
|
||||
const [r, g, b] = AnnotationEditor._colorManager.convert(
|
||||
this._uiManager.getNonHCMColor(this.color)
|
||||
);
|
||||
return findContrastColor(
|
||||
applyOpacity(r, g, b, this.opacity),
|
||||
CSSConstants.commentForegroundColor
|
||||
return this._uiManager.makeCommentColor(
|
||||
this.getNonHCMColor(),
|
||||
this.opacity
|
||||
);
|
||||
}
|
||||
|
||||
get commentPopupPosition() {
|
||||
return this.#comment.commentPopupPositionInLayer;
|
||||
}
|
||||
|
||||
set commentPopupPosition(pos) {
|
||||
this.#comment.commentPopupPositionInLayer = pos;
|
||||
}
|
||||
|
||||
get commentButtonWidth() {
|
||||
return this.#comment.commentButtonWidth;
|
||||
}
|
||||
|
||||
get elementBeforePopup() {
|
||||
return this.div;
|
||||
}
|
||||
|
||||
setCommentButtonStates(options) {
|
||||
this.#comment.setCommentButtonStates(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* onkeydown callback.
|
||||
* @param {KeyboardEvent} event
|
||||
@ -2047,6 +2094,7 @@ class AnnotationEditor {
|
||||
*/
|
||||
select() {
|
||||
if (this.isSelected && this._editToolbar) {
|
||||
this._editToolbar.show();
|
||||
return;
|
||||
}
|
||||
this.isSelected = true;
|
||||
@ -2086,6 +2134,13 @@ class AnnotationEditor {
|
||||
}
|
||||
this._editToolbar?.hide();
|
||||
this.#altText?.toggleAltTextBadge(true);
|
||||
if (this.hasComment) {
|
||||
this._uiManager.toggleComment(
|
||||
this,
|
||||
/* isSelected = */ false,
|
||||
/* visibility = */ false
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2133,6 +2188,10 @@ class AnnotationEditor {
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
dblclick(event) {
|
||||
if (event.target.nodeName === "BUTTON") {
|
||||
// Avoid entering in edit mode when clicking on the comment button.
|
||||
return;
|
||||
}
|
||||
this.enterInEditMode();
|
||||
this.parent.updateToolbar({
|
||||
mode: this.constructor._editorType,
|
||||
|
||||
@ -236,14 +236,21 @@ class FreeTextEditor extends AnnotationEditor {
|
||||
});
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
onUpdatedColor() {
|
||||
this.editorDiv.style.color = this.color;
|
||||
this._colorPicker?.update(this.color);
|
||||
super.onUpdatedColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the color and make this action undoable.
|
||||
* @param {string} color
|
||||
*/
|
||||
#updateColor(color) {
|
||||
const setColor = col => {
|
||||
this.color = this.editorDiv.style.color = col;
|
||||
this._colorPicker?.update(col);
|
||||
this.color = col;
|
||||
this.onUpdatedColor();
|
||||
};
|
||||
const savedColor = this.color;
|
||||
this.addCommands({
|
||||
|
||||
@ -348,6 +348,18 @@ class HighlightEditor extends AnnotationEditor {
|
||||
];
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
onUpdatedColor() {
|
||||
this.parent?.drawLayer.updateProperties(this.#id, {
|
||||
root: {
|
||||
fill: this.color,
|
||||
"fill-opacity": this.opacity,
|
||||
},
|
||||
});
|
||||
this.#colorPicker?.updateColor(this.color);
|
||||
super.onUpdatedColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the color and make this action undoable.
|
||||
* @param {string} color
|
||||
@ -356,13 +368,7 @@ class HighlightEditor extends AnnotationEditor {
|
||||
const setColorAndOpacity = (col, opa) => {
|
||||
this.color = col;
|
||||
this.opacity = opa;
|
||||
this.parent?.drawLayer.updateProperties(this.#id, {
|
||||
root: {
|
||||
fill: col,
|
||||
"fill-opacity": opa,
|
||||
},
|
||||
});
|
||||
this.#colorPicker?.updateColor(col);
|
||||
this.onUpdatedColor();
|
||||
};
|
||||
const savedColor = this.color;
|
||||
const savedOpacity = this.opacity;
|
||||
|
||||
@ -28,6 +28,8 @@ class EditorToolbar {
|
||||
|
||||
#comment = null;
|
||||
|
||||
#commentButtonDivider = null;
|
||||
|
||||
#signatureDescriptionButton = null;
|
||||
|
||||
static #l10nRemove = null;
|
||||
@ -167,11 +169,12 @@ class EditorToolbar {
|
||||
return;
|
||||
}
|
||||
this.#addListenersToElement(button);
|
||||
const divider = (this.#commentButtonDivider = this.#divider);
|
||||
if (!beforeElement) {
|
||||
this.#buttons.append(button, this.#divider);
|
||||
this.#buttons.append(button, divider);
|
||||
} else {
|
||||
this.#buttons.insertBefore(button, beforeElement);
|
||||
this.#buttons.insertBefore(this.#divider, beforeElement);
|
||||
this.#buttons.insertBefore(divider, beforeElement);
|
||||
}
|
||||
this.#comment = comment;
|
||||
comment.toolbar = this;
|
||||
@ -194,6 +197,17 @@ class EditorToolbar {
|
||||
this.#buttons.append(button, this.#divider);
|
||||
}
|
||||
|
||||
removeButton(name) {
|
||||
switch (name) {
|
||||
case "comment":
|
||||
this.#comment?.removeToolbarCommentButton();
|
||||
this.#comment = null;
|
||||
this.#commentButtonDivider?.remove();
|
||||
this.#commentButtonDivider = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async addButton(name, tool) {
|
||||
switch (name) {
|
||||
case "colorPicker":
|
||||
|
||||
@ -1068,14 +1068,40 @@ class AnnotationEditorUIManager {
|
||||
return !!this.#commentManager;
|
||||
}
|
||||
|
||||
editComment(editor, position) {
|
||||
this.#commentManager?.open(this, editor, position);
|
||||
editComment(editor, posX, posY, options) {
|
||||
this.#commentManager?.showDialog(this, editor, posX, posY, options);
|
||||
}
|
||||
|
||||
showComment(pageIndex, uid) {
|
||||
selectComment(pageIndex, uid) {
|
||||
const layer = this.#allLayers.get(pageIndex);
|
||||
const editor = layer?.getEditorByUID(uid);
|
||||
editor?.showComment();
|
||||
editor?.toggleComment(/* isSelected */ true, /* visibility */ true);
|
||||
}
|
||||
|
||||
updateComment(editor) {
|
||||
this.#commentManager?.updateComment(editor.getData());
|
||||
}
|
||||
|
||||
updatePopupColor(editor) {
|
||||
this.#commentManager?.updatePopupColor(editor);
|
||||
}
|
||||
|
||||
removeComment(editor) {
|
||||
this.#commentManager?.removeComments([editor.uid]);
|
||||
}
|
||||
|
||||
toggleComment(editor, isSelected, visibility = undefined) {
|
||||
this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);
|
||||
}
|
||||
|
||||
makeCommentColor(color, opacity) {
|
||||
return (
|
||||
(color && this.#commentManager?.makeCommentColor(color, opacity)) || null
|
||||
);
|
||||
}
|
||||
|
||||
getCommentDialogElement() {
|
||||
return this.#commentManager?.dialogElement || null;
|
||||
}
|
||||
|
||||
async waitForEditorsRendered(pageNumber) {
|
||||
@ -1821,22 +1847,28 @@ class AnnotationEditorUIManager {
|
||||
|
||||
if (this.#mode === AnnotationEditorType.POPUP) {
|
||||
this.#commentManager?.hideSidebar();
|
||||
for (const editor of this.#allEditors.values()) {
|
||||
editor.removeStandaloneCommentButton();
|
||||
}
|
||||
}
|
||||
this.#commentManager?.destroyPopup();
|
||||
|
||||
this.#mode = mode;
|
||||
if (mode === AnnotationEditorType.NONE) {
|
||||
this.setEditingState(false);
|
||||
this.#disableAll();
|
||||
for (const editor of this.#allEditors.values()) {
|
||||
editor.hideStandaloneCommentButton();
|
||||
}
|
||||
|
||||
this._editorUndoBar?.hide();
|
||||
this.toggleComment(/* editor = */ null);
|
||||
|
||||
this.#updateModeCapability.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
for (const editor of this.#allEditors.values()) {
|
||||
editor.addStandaloneCommentButton();
|
||||
}
|
||||
|
||||
if (mode === AnnotationEditorType.SIGNATURE) {
|
||||
await this.#signatureManager?.loadSignatures();
|
||||
}
|
||||
@ -1862,7 +1894,6 @@ class AnnotationEditorUIManager {
|
||||
}
|
||||
if (hasComment && !deleted) {
|
||||
allComments.push(editor.getData());
|
||||
editor.addStandaloneCommentButton();
|
||||
}
|
||||
}
|
||||
for (const annotation of this.#allEditableAnnotations) {
|
||||
@ -1891,7 +1922,7 @@ class AnnotationEditorUIManager {
|
||||
}
|
||||
|
||||
for (const editor of this.#allEditors.values()) {
|
||||
if (editor.annotationElementId === editId || editor.id === editId) {
|
||||
if (editor.uid === editId) {
|
||||
this.setSelected(editor);
|
||||
if (editComment) {
|
||||
editor.editComment();
|
||||
|
||||
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -743,3 +743,4 @@
|
||||
!tracemonkey_with_editable_annotations.pdf
|
||||
!bug1980958.pdf
|
||||
!tracemonkey_annotation_on_page_8.pdf
|
||||
!issue20232.pdf
|
||||
|
||||
BIN
test/pdfs/issue20232.pdf
Normal file
BIN
test/pdfs/issue20232.pdf
Normal file
Binary file not shown.
@ -13020,5 +13020,12 @@
|
||||
"md5": "ae4f643ee9bb0fd725277a9d1e0fb1df",
|
||||
"rounds": 1,
|
||||
"type": "load"
|
||||
},
|
||||
{
|
||||
"id": "issue20232",
|
||||
"file": "pdfs/issue20232.pdf",
|
||||
"md5": "cc53e96a8fd9eafbfbb74de564f37047",
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
}
|
||||
]
|
||||
|
||||
@ -142,7 +142,13 @@
|
||||
pointer-events: none;
|
||||
|
||||
&.highlightEditing
|
||||
:is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor) {
|
||||
:is(
|
||||
.freeTextEditor,
|
||||
.inkEditor,
|
||||
.stampEditor,
|
||||
.signatureEditor,
|
||||
.commentPopup
|
||||
) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@ -491,11 +491,16 @@ const PDFViewerApplication = {
|
||||
eventBus
|
||||
)
|
||||
: null;
|
||||
|
||||
const ltr = appConfig.viewerContainer
|
||||
? getComputedStyle(appConfig.viewerContainer).direction === "ltr"
|
||||
: true;
|
||||
const commentManager =
|
||||
AppOptions.get("enableComment") && appConfig.editCommentDialog
|
||||
? new CommentManager(
|
||||
appConfig.editCommentDialog,
|
||||
{
|
||||
learnMoreUrl: AppOptions.get("commentLearnMoreUrl"),
|
||||
sidebar:
|
||||
appConfig.annotationEditorParams?.editorCommentsSidebar || null,
|
||||
commentsList:
|
||||
@ -515,7 +520,8 @@ const PDFViewerApplication = {
|
||||
},
|
||||
eventBus,
|
||||
linkService,
|
||||
overlayManager
|
||||
overlayManager,
|
||||
ltr
|
||||
)
|
||||
: null;
|
||||
|
||||
|
||||
@ -173,6 +173,14 @@ const defaultOptions = {
|
||||
value: 200,
|
||||
kind: OptionKind.VIEWER + OptionKind.PREFERENCE,
|
||||
},
|
||||
commentLearnMoreUrl: {
|
||||
/** @type {string} */
|
||||
value:
|
||||
typeof PDFJSDev === "undefined" || PDFJSDev.test("MOZCENTRAL")
|
||||
? "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/pdf-comment"
|
||||
: "",
|
||||
kind: OptionKind.VIEWER + OptionKind.PREFERENCE,
|
||||
},
|
||||
cursorToolOnLoad: {
|
||||
/** @type {number} */
|
||||
value: 0,
|
||||
|
||||
@ -13,75 +13,23 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
.commentPopup,
|
||||
#commentManagerDialog {
|
||||
width: 360px;
|
||||
max-width: 100%;
|
||||
min-width: 200px;
|
||||
position: absolute;
|
||||
padding: 8px 16px 16px;
|
||||
margin: 0;
|
||||
box-sizing: border-box;
|
||||
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
#commentManagerDialog {
|
||||
--comment-actions-button-icon: url(images/comment-actionsButton.svg);
|
||||
--comment-close-button-icon: url(images/comment-closeButton.svg);
|
||||
|
||||
--default-dialog-bg-color: #ffff98;
|
||||
--dialog-base-color: var(--default-dialog-bg-color);
|
||||
--dialog-bg-color: color-mix(in srgb, var(--dialog-base-color), white 30%);
|
||||
--dialog-border-color: var(--dialog-base-color);
|
||||
|
||||
--menuitem-bg-color: transparent;
|
||||
--menuitem-fg-color: black;
|
||||
--menuitem-hover-bg-color: #3383e7;
|
||||
--menuitem-hover-fg-color: white;
|
||||
|
||||
--comment-text-input-bg: white;
|
||||
--comment-text-input-fg: black;
|
||||
--comment-text-input-border: #0060df;
|
||||
--comment-focus-outline-color: #0060df;
|
||||
|
||||
--hover-filter: brightness(0.9);
|
||||
--text-primary-color: #15141a;
|
||||
|
||||
--button-secondary-bg-color: #f0f0f4;
|
||||
--button-secondary-active-bg-color: color-mix(
|
||||
in srgb,
|
||||
var(--button-secondary-bg-color),
|
||||
black 14%
|
||||
);
|
||||
--button-secondary-hover-bg-color: color-mix(
|
||||
in srgb,
|
||||
var(--button-secondary-bg-color),
|
||||
black 7%
|
||||
);
|
||||
|
||||
--button-primary-bg-color: #0060df;
|
||||
--button-primary-fg-color: #fbfbfe;
|
||||
--button-primary-active-bg-color: #0050c0;
|
||||
--button-primary-hover-bg-color: #0250bb;
|
||||
|
||||
--menu-bg-color: rgb(253 250 244);
|
||||
--menu-button-border-color: transparent;
|
||||
--menu-button-focus-outline-color: var(--comment-text-input-border);
|
||||
|
||||
@media screen and (forced-colors: active) {
|
||||
--hover-filter: none;
|
||||
--text-primary-color: CanvasText;
|
||||
--button-secondary-bg-color: HighlightText;
|
||||
--button-secondary-active-bg-color: HighlightText;
|
||||
--button-secondary-hover-bg-color: HighlightText;
|
||||
--button-primary-bg-color: ButtonText;
|
||||
--button-primary-fg-color: HighlightText;
|
||||
--button-primary-active-bg-color: SelectedItem;
|
||||
--button-primary-hover-bg-color: SelectedItem;
|
||||
|
||||
--menu-button-border-color: Canvas;
|
||||
--menu-button-focus-outline-color: CanvasText;
|
||||
}
|
||||
|
||||
width: 308px;
|
||||
padding: 8px 16px 16px;
|
||||
overflow: visible;
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--dialog-border-color);
|
||||
background: var(--dialog-bg-color);
|
||||
box-shadow: 0 2px 14px 0 rgb(58 57 68 / 0.2);
|
||||
|
||||
.mainContainer {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
@ -97,156 +45,20 @@
|
||||
|
||||
#commentManagerToolbar {
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
align-self: stretch;
|
||||
|
||||
cursor: move;
|
||||
|
||||
> button {
|
||||
color-scheme: light;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
border: none;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
mask-repeat: no-repeat;
|
||||
mask-position: center;
|
||||
}
|
||||
|
||||
&#commentActionsButton::before {
|
||||
mask-image: var(--comment-actions-button-icon);
|
||||
}
|
||||
|
||||
&#commentCloseButton::before {
|
||||
mask-image: var(--comment-close-button-icon);
|
||||
}
|
||||
|
||||
> span {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
menu {
|
||||
width: max-content;
|
||||
min-width: 90px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 1px;
|
||||
padding: 5px 6px;
|
||||
cursor: auto;
|
||||
z-index: 1;
|
||||
margin: 0;
|
||||
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: -6.5px;
|
||||
|
||||
border-radius: 6px;
|
||||
border: 0.5px solid #b4b4b6;
|
||||
background-color: var(--menu-bg-color);
|
||||
box-shadow:
|
||||
1px -1px 0 0 #fff inset,
|
||||
-1px 1px 0 0 #fff inset,
|
||||
-1px -1px 0 0 #fff inset,
|
||||
1px 1px 0 0 #fff inset,
|
||||
0 0 15px 0 rgb(0 0 0 / 0.25);
|
||||
|
||||
button {
|
||||
background-color: var(--menuitem-bg-color);
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
border: 2px solid var(--menu-button-border-color);
|
||||
color: var(--menuitem-fg-color);
|
||||
|
||||
&:hover {
|
||||
background-color: var(--menuitem-hover-bg-color);
|
||||
color: var(--menuitem-hover-fg-color);
|
||||
}
|
||||
|
||||
&:is(:focus-visible, :focus) {
|
||||
outline: none;
|
||||
border: 2px solid var(--menu-button-focus-outline-color);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
span {
|
||||
align-content: center;
|
||||
width: 100%;
|
||||
max-width: min-content;
|
||||
padding-inline: 8px;
|
||||
color: inherit;
|
||||
text-align: start;
|
||||
font: menu;
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#commentManagerTextInput {
|
||||
width: 100%;
|
||||
min-height: 132px;
|
||||
resize: none;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 12px;
|
||||
|
||||
border-radius: 4px;
|
||||
border: 2px solid var(--comment-text-input-border);
|
||||
background-color: var(--comment-text-input-bg);
|
||||
color: var(--comment-text-input-fg);
|
||||
}
|
||||
|
||||
#commentManagerTextView {
|
||||
width: 100%;
|
||||
height: max-content;
|
||||
resize: none;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 12px;
|
||||
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
color: var(--comment-text-input-fg);
|
||||
}
|
||||
|
||||
.dialogButtonsGroup {
|
||||
gap: 8px;
|
||||
|
||||
#commentManagerSaveButton:disabled {
|
||||
background-color: color-mix(
|
||||
in srgb,
|
||||
var(--button-primary-disabled-bg-color),
|
||||
transparent 50%
|
||||
);
|
||||
border-color: color-mix(
|
||||
in srgb,
|
||||
var(--button-primary-disabled-border-color),
|
||||
transparent 50%
|
||||
);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -279,12 +91,14 @@
|
||||
|
||||
@media screen and (forced-colors: active) {
|
||||
--comment-button-bg: Canvas;
|
||||
--comment-button-fg: CanvasText;
|
||||
--comment-button-hover-bg: Highlight;
|
||||
--comment-button-hover-fg: ButtonFace;
|
||||
--comment-button-active-bg: Highlight;
|
||||
--comment-button-active-fg: ButtonFace;
|
||||
--comment-button-fg: ButtonText;
|
||||
--comment-button-hover-bg: Canvas;
|
||||
--comment-button-hover-fg: Highlight;
|
||||
--comment-button-active-bg: Canvas;
|
||||
--comment-button-active-fg: Highlight;
|
||||
--comment-button-border-color: ButtonBorder;
|
||||
--comment-button-active-border-color: ButtonBorder;
|
||||
--comment-button-hover-border-color: Highlight;
|
||||
--comment-button-box-shadow: none;
|
||||
--comment-button-focus-outline-color: CanvasText;
|
||||
--comment-button-selected-bg: ButtonBorder;
|
||||
@ -358,36 +172,54 @@
|
||||
}
|
||||
}
|
||||
|
||||
.comment.sidebar {
|
||||
#editorCommentsSidebar,
|
||||
.commentPopup {
|
||||
--comment-close-button-icon: url(images/comment-closeButton.svg);
|
||||
--comment-popup-edit-button-icon: url(images/comment-popup-editButton.svg);
|
||||
--comment-popup-delete-button-icon: url(images/editor-toolbar-delete.svg);
|
||||
|
||||
--comment-date-fg-color: light-dark(
|
||||
rgb(21 20 26 / 0.69),
|
||||
rgb(251 251 254 / 0.69)
|
||||
);
|
||||
--comment-bg-color: light-dark(#f9f9fb, #1c1b22);
|
||||
--comment-hover-bg-color: light-dark(
|
||||
rgb(21 20 26 / 0.14),
|
||||
rgb(251 251 254 / 0.14)
|
||||
);
|
||||
--comment-active-bg-color: light-dark(
|
||||
rgb(21 20 26 / 0.21),
|
||||
rgb(251 251 254 / 0.21)
|
||||
);
|
||||
--comment-hover-bg-color: light-dark(#e0e0e6, #2c2b33);
|
||||
--comment-active-bg-color: light-dark(#d1d1d9, #3a3944);
|
||||
--comment-hover-brightness: 0.89;
|
||||
--comment-hover-filter: brightness(var(--comment-hover-brightness));
|
||||
--comment-active-brightness: 0.825;
|
||||
--comment-active-filter: brightness(var(--comment-active-brightness));
|
||||
--comment-border-color: light-dark(#f0f0f4, #52525e);
|
||||
--comment-focus-outline-color: light-dark(#0062fa, #00cadb);
|
||||
--comment-fg-color: light-dark(#15141a, #fbfbfe);
|
||||
--comment-count-bg-color: light-dark(#e2f7ff, #00317e);
|
||||
--comment-indicator-active-fg-color: light-dark(#0041a4, #a6ecf4);
|
||||
--comment-indicator-active-filter: brightness(
|
||||
calc(1 / var(--comment-active-brightness))
|
||||
);
|
||||
--comment-indicator-focus-fg-color: light-dark(#5b5b66, #fbfbfe);
|
||||
--comment-indicator-hover-fg-color: light-dark(#0053cb, #61dce9);
|
||||
--comment-indicator-hover-filter: brightness(
|
||||
calc(1 / var(--comment-hover-brightness))
|
||||
);
|
||||
--comment-indicator-selected-fg-color: light-dark(#0062fa, #00cadb);
|
||||
|
||||
--button-comment-bg: transparent;
|
||||
--button-comment-color: var(--main-color);
|
||||
--button-comment-active-bg: light-dark(#cfcfd8, #5b5b66);
|
||||
--button-comment-active-border: none;
|
||||
--button-comment-active-color: var(--button-comment-color);
|
||||
--button-comment-border: none;
|
||||
--button-comment-hover-bg: light-dark(#e0e0e6, #52525e);
|
||||
--button-comment-hover-color: var(--button-comment-color);
|
||||
|
||||
@media screen and (forced-colors: active) {
|
||||
--comment-date-fg-color: CanvasText;
|
||||
--comment-bg-color: Canvas;
|
||||
--comment-hover-bg-color: SelectedItemText;
|
||||
--comment-hover-filter: none;
|
||||
--comment-active-bg-color: SelectedItemText;
|
||||
--comment-active-filter: none;
|
||||
--comment-border-color: CanvasText;
|
||||
--comment-fg-color: CanvasText;
|
||||
--comment-count-bg-color: Canvas;
|
||||
@ -395,8 +227,17 @@
|
||||
--comment-indicator-focus-fg-color: CanvasText;
|
||||
--comment-indicator-hover-fg-color: CanvasText;
|
||||
--comment-indicator-selected-fg-color: SelectedItem;
|
||||
--button-comment-bg: HighlightText;
|
||||
--button-comment-color: ButtonText;
|
||||
--button-comment-active-bg: ButtonText;
|
||||
--button-comment-active-color: HighlightText;
|
||||
--button-comment-border: 1px solid ButtonText;
|
||||
--button-comment-hover-bg: Highlight;
|
||||
--button-comment-hover-color: HighlightText;
|
||||
}
|
||||
}
|
||||
|
||||
#editorCommentsSidebar {
|
||||
display: flex;
|
||||
width: 239px;
|
||||
height: auto;
|
||||
@ -449,6 +290,7 @@
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
@ -472,6 +314,10 @@
|
||||
background-color: var(--comment-active-bg-color);
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: var(--focus-ring-outline);
|
||||
}
|
||||
|
||||
> span {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
@ -483,18 +329,18 @@
|
||||
|
||||
#editorCommentsSidebarListContainer {
|
||||
overflow: scroll;
|
||||
width: 100%;
|
||||
|
||||
#editorCommentsSidebarList {
|
||||
display: flex;
|
||||
width: auto;
|
||||
padding: 1px 16px 0;
|
||||
padding: 4px 16px;
|
||||
gap: 10px;
|
||||
flex: 1 0 0;
|
||||
align-self: stretch;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
list-style-type: none;
|
||||
overflow: scroll;
|
||||
|
||||
.sidebarComment {
|
||||
display: flex;
|
||||
@ -511,20 +357,28 @@
|
||||
|
||||
&:not(.noComments) {
|
||||
&:hover {
|
||||
background-color: var(--comment-hover-bg-color);
|
||||
@media screen and (forced-colors: active) {
|
||||
background-color: var(--comment-hover-bg-color);
|
||||
}
|
||||
filter: var(--comment-hover-filter);
|
||||
|
||||
time::after {
|
||||
display: inline-block;
|
||||
background-color: var(--comment-indicator-hover-fg-color);
|
||||
filter: var(--comment-indicator-hover-filter);
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--comment-active-bg-color);
|
||||
@media screen and (forced-colors: active) {
|
||||
background-color: var(--comment-active-bg-color);
|
||||
}
|
||||
filter: var(--comment-active-filter);
|
||||
|
||||
time::after {
|
||||
display: inline-block;
|
||||
background-color: var(--comment-indicator-active-fg-color);
|
||||
filter: var(--comment-indicator-active-filter);
|
||||
}
|
||||
}
|
||||
|
||||
@ -565,12 +419,34 @@
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
overflow-wrap: break-word;
|
||||
|
||||
.richText {
|
||||
--total-scale-factor: 1.5;
|
||||
}
|
||||
}
|
||||
|
||||
&.noComments .sidebarCommentText {
|
||||
max-height: fit-content;
|
||||
-webkit-line-clamp: unset;
|
||||
user-select: none;
|
||||
&.noComments {
|
||||
.sidebarCommentText {
|
||||
max-height: fit-content;
|
||||
-webkit-line-clamp: unset;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
a {
|
||||
font: menu;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: normal;
|
||||
font-size: 15px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
overflow-wrap: break-word;
|
||||
margin-block-start: 15px;
|
||||
|
||||
&:focus-visible {
|
||||
outline: var(--focus-ring-outline);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
time {
|
||||
@ -600,3 +476,163 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.commentPopup {
|
||||
color-scheme: light dark;
|
||||
|
||||
--divider-color: light-dark(#cfcfd8, #3a3944);
|
||||
--comment-shadow:
|
||||
0 0.5px 2px 0 light-dark(rgb(0 0 0 / 0.05), rgb(0 0 0 / 0.2)),
|
||||
0 4px 16px 0 light-dark(rgb(0 0 0 / 0.1), rgb(0 0 0 / 0.4));
|
||||
|
||||
@media screen and (forced-colors: active) {
|
||||
--divider-color: CanvasText;
|
||||
--comment-shadow: none;
|
||||
}
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 12px;
|
||||
z-index: 100001; /* above selected annotation editor */
|
||||
pointer-events: auto;
|
||||
|
||||
border: 0.5px solid var(--comment-border-color);
|
||||
background: var(--comment-bg-color);
|
||||
box-shadow: var(--comment-shadow);
|
||||
|
||||
&:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&.dragging {
|
||||
cursor: move !important;
|
||||
|
||||
* {
|
||||
cursor: move !important;
|
||||
}
|
||||
|
||||
button {
|
||||
pointer-events: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.selected) .commentPopupButtons {
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
border: none;
|
||||
border-top: 1px solid var(--divider-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.commentPopupTop {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
padding-bottom: 4px;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
align-self: stretch;
|
||||
cursor: move;
|
||||
user-select: none;
|
||||
|
||||
.commentPopupTime {
|
||||
font: menu;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: normal;
|
||||
font-size: 13px;
|
||||
color: var(--comment-date-fg-color);
|
||||
}
|
||||
|
||||
.commentPopupButtons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
cursor: default;
|
||||
|
||||
> button {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
padding: 8px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
background-color: var(--button-comment-bg);
|
||||
color: var(--button-comment-color);
|
||||
|
||||
&:hover {
|
||||
background-color: var(--button-comment-hover-bg);
|
||||
}
|
||||
|
||||
&:active {
|
||||
border: var(--button-comment-active-border);
|
||||
background-color: var(--button-comment-active-bg);
|
||||
color: var(--button-comment-active-color);
|
||||
|
||||
&::before {
|
||||
background-color: var(--button-comment-active-color);
|
||||
}
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
background-color: var(--button-comment-hover-bg);
|
||||
outline: 2px solid var(--comment-focus-outline-color);
|
||||
outline-offset: 0;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
mask-repeat: no-repeat;
|
||||
mask-position: center;
|
||||
}
|
||||
|
||||
&.commentPopupEdit::before {
|
||||
mask-image: var(--comment-popup-edit-button-icon);
|
||||
}
|
||||
|
||||
&.commentPopupDelete::before {
|
||||
mask-image: var(--comment-popup-delete-button-icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.commentPopupText {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
||||
font: menu;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: normal;
|
||||
font-size: 15px;
|
||||
color: var(--comment-fg-color);
|
||||
}
|
||||
}
|
||||
|
||||
.commentPopupText,
|
||||
.sidebarCommentText .richText {
|
||||
margin-block: 0;
|
||||
|
||||
p:first-of-type {
|
||||
margin-block: 0;
|
||||
}
|
||||
|
||||
> * {
|
||||
white-space: pre-wrap;
|
||||
font-size: max(15px, calc(10px * var(--total-scale-factor)));
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
span {
|
||||
color: var(--comment-fg-color) !important;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
5
web/images/comment-popup-editButton.svg
Normal file
5
web/images/comment-popup-editButton.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645ZM12.472 5.1965L13.632 4.0365L13.631 3.1885L11.811 1.3675L10.963 1.3685L9.80299 2.5285L12.472 5.1965ZM4.31099 13.1585C4.47099 13.1285 4.61799 13.0515 4.73399 12.9345L11.587 6.0815L8.91899 3.4135L2.06599 10.2655C1.94899 10.3835 1.87199 10.5305 1.84099 10.6915L1.36699 13.2485L1.75199 13.6335L4.31099 13.1585Z" fill="black"/>
|
||||
</svg>
|
||||
|
||||
<!--path d="M0.0189877 14.1645L0.612989 10.9635C0.687989 10.5545 0.884989 10.1805 1.18099 9.8825L9.98199 1.0805C10.756 0.3075 12.015 0.3055 12.792 1.0805L14.42 2.7085C15.194 3.4835 15.194 4.7435 14.42 5.5185L5.61599 14.3215C5.31999 14.6165 4.94599 14.8125 4.53799 14.8875L1.33599 15.4815C1.26599 15.4935 1.19799 15.5005 1.12999 15.5005C0.832989 15.5005 0.544988 15.3835 0.330988 15.1695C0.0679874 14.9055 -0.0490122 14.5305 0.0189877 14.1645ZM12.472 5.6965L13.632 4.5365L13.631 3.6885L11.811 1.8675L10.963 1.8685L9.80299 3.0285L12.472 5.6965ZM4.31099 13.6585C4.47099 13.6285 4.61799 13.5515 4.73399 13.4345L11.587 6.5815L8.91899 3.9135L2.06599 10.7655C1.94899 10.8835 1.87199 11.0305 1.84099 11.1915L1.36699 13.7485L1.75199 14.1335L4.31099 13.6585Z" fill="black"/-->
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@ -1057,6 +1057,7 @@ class PDFViewer {
|
||||
enableHWA: this.#enableHWA,
|
||||
enableAutoLinking: this.#enableAutoLinking,
|
||||
minDurationToUpdateCanvas: this.#minDurationToUpdateCanvas,
|
||||
commentManager: this.#commentManager,
|
||||
});
|
||||
this._pages.push(pageView);
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ See https://github.com/adobe-type-tools/cmap-resources
|
||||
<button id="editorCommentButton" class="toolbarButton" type="button" tabindex="0" disabled="disabled" role="radio" aria-expanded="false" aria-haspopup="true" aria-controls="editorCommentParamsToolbar" data-l10n-id="pdfjs-editor-comment-button">
|
||||
<span data-l10n-id="pdfjs-editor-comment-button-label"></span>
|
||||
</button>
|
||||
<div class="editorParamsToolbar sidebar hidden menu" id="editorCommentParamsToolbar">
|
||||
<div class="editorParamsToolbar hidden menu" id="editorCommentParamsToolbar">
|
||||
<div id="editorCommentsSidebar" class="menuContainer comment sidebar" role="landmark" aria-labelledby="editorCommentsSidebarHeader">
|
||||
<div id="editorCommentsSidebarHeader" role="heading" aria-level="2">
|
||||
<span class="commentCount">
|
||||
@ -260,7 +260,7 @@ See https://github.com/adobe-type-tools/cmap-resources
|
||||
<span data-l10n-id="pdfjs-editor-comments-sidebar-close-button-label"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="editorCommentsSidebarListContainer">
|
||||
<div id="editorCommentsSidebarListContainer" tabindex="-1">
|
||||
<ul id="editorCommentsSidebarList"></ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -794,30 +794,16 @@ See https://github.com/adobe-type-tools/cmap-resources
|
||||
|
||||
<dialog class="dialog commentManager" id="commentManagerDialog">
|
||||
<div class="mainContainer">
|
||||
<div id="commentManagerToolbar">
|
||||
<button id="commentActionsButton" class="toolbarButton" type="button" aria-expanded="false" aria-haspopup="true" aria-controls="commentActionsMenu" tabindex="0" data-l10n-id="pdfjs-editor-edit-comment-actions-button">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-actions-button-label"></span>
|
||||
</button>
|
||||
<menu class="hidden" role="menu" id="commentActionsMenu">
|
||||
<button id="commentActionsEditButton" role="menuitem" type="button" tabindex="0">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-actions-edit-button-label"></span>
|
||||
</button>
|
||||
<button id="commentActionsDeleteButton" role="menuitem" type="button" tabindex="0">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-actions-delete-button-label"></span>
|
||||
</button>
|
||||
</menu>
|
||||
<button id="commentCloseButton" class="toolbarButton" type="button" tabindex="0" data-l10n-id="pdfjs-editor-edit-comment-close-button">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-close-button-label"></span>
|
||||
</button>
|
||||
<div class="title" id="commentManagerToolbar">
|
||||
<span id="commentManagerTitle" role="sectionhead" data-l10n-id="pdfjs-editor-edit-comment-dialog-title-when-adding" tabindex="0"></span>
|
||||
</div>
|
||||
<textarea class="hidden" id="commentManagerTextInput" data-l10n-id="pdfjs-editor-edit-comment-manager-text-input"></textarea>
|
||||
<div class="hidden" id="commentManagerTextView"></div>
|
||||
<textarea id="commentManagerTextInput" data-l10n-id="pdfjs-editor-edit-comment-dialog-text-input"></textarea>
|
||||
<div class="dialogButtonsGroup">
|
||||
<button id="commentManagerCancelButton" type="button" class="secondaryButton" tabindex="0">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-manager-cancel-button"></span>
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-dialog-cancel-button"></span>
|
||||
</button>
|
||||
<button id="commentManagerSaveButton" type="button" class="primaryButton" disabled tabindex="0">
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-manager-save-button"></span>
|
||||
<span data-l10n-id="pdfjs-editor-edit-comment-dialog-save-button"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -282,13 +282,8 @@ function getViewerConfiguration() {
|
||||
editCommentDialog: {
|
||||
dialog: document.getElementById("commentManagerDialog"),
|
||||
toolbar: document.getElementById("commentManagerToolbar"),
|
||||
actions: document.getElementById("commentActionsButton"),
|
||||
menu: document.getElementById("commentActionsMenu"),
|
||||
editMenuItem: document.getElementById("commentActionsEditButton"),
|
||||
deleteMenuItem: document.getElementById("commentActionsDeleteButton"),
|
||||
closeButton: document.getElementById("commentCloseButton"),
|
||||
title: document.getElementById("commentManagerTitle"),
|
||||
textInput: document.getElementById("commentManagerTextInput"),
|
||||
textView: document.getElementById("commentManagerTextView"),
|
||||
cancelButton: document.getElementById("commentManagerCancelButton"),
|
||||
saveButton: document.getElementById("commentManagerSaveButton"),
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user