diff --git a/eslint.config.mjs b/eslint.config.mjs index a165d200e8839..3d4b1229f3fde 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -116,9 +116,13 @@ export default [ "pdfjs-lib", "pdfjs-web", "web", + "@csstools/postcss-light-dark-function", "fluent-bundle", "fluent-dom", + "postcss-dir-pseudo-class", + "postcss-nesting", "postcss-values-parser", + "stylelint", // See https://github.com/firebase/firebase-admin-node/discussions/1359. "eslint-plugin-perfectionist", ], diff --git a/gulpfile.mjs b/gulpfile.mjs index 87d9757385b01..f7d38b6762c9e 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2345,7 +2345,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - "@napi-rs/canvas": "^0.1.90", + "@napi-rs/canvas": "^0.1.92", "node-readable-to-web-readable-stream": "^0.4.2", }, browser: { diff --git a/l10n/be/viewer.ftl b/l10n/be/viewer.ftl index 3422f53f78dd9..ed5a8bf1daab2 100644 --- a/l10n/be/viewer.ftl +++ b/l10n/be/viewer.ftl @@ -644,8 +644,15 @@ pdfjs-editor-add-comment-button = ## - layers. ## The thumbnails view is used to edit the pdf: remove/insert pages, ... +pdfjs-views-manager-view-selector-button = + .title = Выгляд +pdfjs-views-manager-view-selector-button-label = Выгляд pdfjs-views-manager-pages-title = Старонкі +pdfjs-views-manager-attachments-title = Далучэнні +pdfjs-views-manager-layers-title = Пласты pdfjs-views-manager-pages-option-label = Старонкі +pdfjs-views-manager-attachments-option-label = Далучэнні +pdfjs-views-manager-layers-option-label = Пласты pdfjs-views-manager-add-file-button = .title = Дадаць файл pdfjs-views-manager-add-file-button-label = Дадаць файл diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index 60807545177d7..6868596deff96 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -540,6 +540,7 @@ pdfjs-editor-undo-bar-message-freetext = Text odstraněn pdfjs-editor-undo-bar-message-ink = Kresba odstraněna pdfjs-editor-undo-bar-message-stamp = Obrázek odebrán pdfjs-editor-undo-bar-message-signature = Podpis odebrán +pdfjs-editor-undo-bar-message-comment = Komentář odebrán # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -650,6 +651,8 @@ pdfjs-editor-add-comment-button = pdfjs-toggle-views-manager-button = .title = Přepnout postranní lištu +pdfjs-toggle-views-manager-notification-button = + .title = Přepnout postranní lištu (dokument obsahuje náhledy/osnovu/přílohy/vrstvy) pdfjs-toggle-views-manager-button-label = Přepnout postranní lištu pdfjs-views-manager-sidebar = .aria-label = Postranní lišta diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index 1d42e81fe4efb..dc4e293f39928 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -540,6 +540,7 @@ pdfjs-editor-undo-bar-message-freetext = Tekst jo se wótwónoźeł pdfjs-editor-undo-bar-message-ink = Kreslanka jo se wótwónoźeła pdfjs-editor-undo-bar-message-stamp = Wobraz jo se wótwónoźeł pdfjs-editor-undo-bar-message-signature = Signatura jo se wótwónoźeła +pdfjs-editor-undo-bar-message-comment = Komentar jo se wótwónoźeł # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/eo/viewer.ftl b/l10n/eo/viewer.ftl index 9ca69b3efacc3..2990897f01fd6 100644 --- a/l10n/eo/viewer.ftl +++ b/l10n/eo/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Teksto forigita pdfjs-editor-undo-bar-message-ink = Desegno forigita pdfjs-editor-undo-bar-message-stamp = Bildo forigita pdfjs-editor-undo-bar-message-signature = Subskribo forigita +pdfjs-editor-undo-bar-message-comment = Komento forigita # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -647,6 +648,64 @@ pdfjs-toggle-views-manager-notification-button = pdfjs-toggle-views-manager-button-label = Montri/kaŝi flankan strion pdfjs-views-manager-sidebar = .aria-label = Flanka strio +pdfjs-views-manager-view-selector-button = + .title = Vidoj +pdfjs-views-manager-view-selector-button-label = Vidoj +pdfjs-views-manager-pages-title = Paĝoj +pdfjs-views-manager-outlines-title = Konturo de dokumento +pdfjs-views-manager-attachments-title = Kunsendaĵoj +pdfjs-views-manager-layers-title = Tavoloj +pdfjs-views-manager-pages-option-label = Paĝoj +pdfjs-views-manager-outlines-option-label = Konturo de dokumento +pdfjs-views-manager-attachments-option-label = Kunsendaĵoj +pdfjs-views-manager-layers-option-label = Tavoloj +pdfjs-views-manager-add-file-button = + .title = Aldoni dosieron +pdfjs-views-manager-add-file-button-label = Aldoni dosieron +# Variables: +# $count (Number) - the number of selected pages. +pdfjs-views-manager-pages-status-action-label = + { $count -> + [one] { $count } elektita + *[other] { $count } elektitaj + } +pdfjs-views-manager-pages-status-none-action-label = Elekti paĝojn +pdfjs-views-manager-pages-status-action-button-label = Administri +pdfjs-views-manager-pages-status-copy-button-label = Kopii +pdfjs-views-manager-pages-status-cut-button-label = Eltondi +pdfjs-views-manager-pages-status-delete-button-label = Forigi +pdfjs-views-manager-pages-status-save-as-button-label = Konservi kiel… +# Variables: +# $count (Number) - the number of selected pages to be cut. +pdfjs-views-manager-status-undo-cut-label = + { $count -> + [one] 1 paĝo eltondita + *[other] { $count } paĝoj eltonditaj + } +# Variables: +# $count (Number) - the number of selected pages to be copied. +pdfjs-views-manager-pages-status-undo-copy-label = + { $count -> + [one] 1 paĝo kopiita + *[other] { $count } paĝoj kopiitaj + } +# Variables: +# $count (Number) - the number of selected pages to be deleted. +pdfjs-views-manager-pages-status-undo-delete-label = + { $count -> + [one] 1 paĝo forigita + *[other] { $count } paĝoj forigitaj + } +pdfjs-views-manager-pages-status-waiting-ready-label = Pretigo de via dosiero… +pdfjs-views-manager-pages-status-waiting-uploading-label = Dosiero alŝutata… +pdfjs-views-manager-status-warning-cut-label = Ne eblis eltondi. Refreŝigu la paĝon kaj provu denove. +pdfjs-views-manager-status-warning-copy-label = Ne eblis kopii. Refreŝigu la paĝon kaj provu denove. +pdfjs-views-manager-status-warning-delete-label = Ne eblis forigi. Refreŝigu la paĝon kaj provu denove. +pdfjs-views-manager-status-warning-save-label = Ne eblis konservi. Refreŝigu la paĝon kaj provu denove. +pdfjs-views-manager-status-undo-button-label = Malfari +pdfjs-views-manager-status-close-button = + .title = Fermi +pdfjs-views-manager-status-close-button-label = Fermi ## Main menu for adding/removing signatures diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index 75e75a81c882b..e2afedfd5c351 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Texto eliminado pdfjs-editor-undo-bar-message-ink = Dibujo eliminado pdfjs-editor-undo-bar-message-stamp = Imagen eliminado pdfjs-editor-undo-bar-message-signature = Firma eliminada +pdfjs-editor-undo-bar-message-comment = Comentario eliminado # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index 84239c51981ac..1740dfb803c53 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Texto eliminado pdfjs-editor-undo-bar-message-ink = Dibujo eliminado pdfjs-editor-undo-bar-message-stamp = Imagen eliminada pdfjs-editor-undo-bar-message-signature = Firma eliminada +pdfjs-editor-undo-bar-message-comment = Comentario eliminado # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/es-MX/viewer.ftl b/l10n/es-MX/viewer.ftl index 265fce850e964..2d3d6c749964b 100644 --- a/l10n/es-MX/viewer.ftl +++ b/l10n/es-MX/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Texto eliminado pdfjs-editor-undo-bar-message-ink = Dibujo eliminado pdfjs-editor-undo-bar-message-stamp = Imagen eliminada pdfjs-editor-undo-bar-message-signature = Firma eliminada +pdfjs-editor-undo-bar-message-comment = Comentario eliminado # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -642,6 +643,8 @@ pdfjs-editor-add-comment-button = pdfjs-toggle-views-manager-button = .title = Alternar barra lateral +pdfjs-toggle-views-manager-notification-button = + .title = Cambiar barra lateral (índice de contenidos del documento/miniaturas/adjuntos/capas) pdfjs-toggle-views-manager-button-label = Alternar barra lateral pdfjs-views-manager-sidebar = .aria-label = Barra lateral diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 99bf363784753..2cd070ff1d0f9 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -643,13 +643,20 @@ pdfjs-editor-add-comment-button = pdfjs-toggle-views-manager-button = .title = Näytä/piilota sivupaneeli +pdfjs-toggle-views-manager-notification-button = + .title = Näytä/piilota sivupaneeli (dokumentissa on pienoiskuvat/sisällys/liitteitä/tasoja) pdfjs-toggle-views-manager-button-label = Näytä/piilota sivupaneeli pdfjs-views-manager-sidebar = .aria-label = Sivupaneeli +pdfjs-views-manager-view-selector-button = + .title = Näkymät +pdfjs-views-manager-view-selector-button-label = Näkymät pdfjs-views-manager-pages-title = Sivut +pdfjs-views-manager-outlines-title = Dokumentin sisällys pdfjs-views-manager-attachments-title = Liitteet pdfjs-views-manager-layers-title = Tasot pdfjs-views-manager-pages-option-label = Sivut +pdfjs-views-manager-outlines-option-label = Dokumentin sisällys pdfjs-views-manager-attachments-option-label = Liitteet pdfjs-views-manager-layers-option-label = Tasot pdfjs-views-manager-add-file-button = diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index c5832cfa03992..09c2aecc153df 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -643,10 +643,10 @@ pdfjs-toggle-views-manager-notification-button = .title = Afficher/Masquer le panneau latéral (le document contient des vignettes/plan/pièces jointes/calques) pdfjs-toggle-views-manager-button-label = Afficher/Masquer le panneau latéral pdfjs-views-manager-sidebar = - .aria-label = Barre latérale + .aria-label = Panneau latéral pdfjs-views-manager-view-selector-button = .title = Vues -pdfjs-views-manager-view-selector-button-label = Affichage +pdfjs-views-manager-view-selector-button-label = Vues pdfjs-views-manager-pages-title = Pages pdfjs-views-manager-outlines-title = Signets du document pdfjs-views-manager-attachments-title = Pièces jointes @@ -662,8 +662,8 @@ pdfjs-views-manager-add-file-button-label = Ajouter un fichier # $count (Number) - the number of selected pages. pdfjs-views-manager-pages-status-action-label = { $count -> - [one] { $count } éléments sélectionnés - *[other] { $count } éléments sélectionnés + [one] { $count } page sélectionnée + *[other] { $count } pages sélectionnées } pdfjs-views-manager-pages-status-none-action-label = Sélectionner des pages pdfjs-views-manager-pages-status-action-button-label = Gérer diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index 0043f8aca8186..e1536f92a4cb3 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Szöveg eltávolítva pdfjs-editor-undo-bar-message-ink = Rajz eltávolítva pdfjs-editor-undo-bar-message-stamp = Kép eltávolítva pdfjs-editor-undo-bar-message-signature = Aláírás eltávolítva +pdfjs-editor-undo-bar-message-comment = Megjegyzés eltávolítva # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -640,6 +641,61 @@ pdfjs-editor-add-comment-button = ## - layers. ## The thumbnails view is used to edit the pdf: remove/insert pages, ... +pdfjs-toggle-views-manager-button = + .title = Oldalsáv be/ki +pdfjs-toggle-views-manager-notification-button = + .title = Oldalsáv be/ki (a dokumentum bélyegképeket/vázlatot/mellékleteket/rétegeket tartalmaz) +pdfjs-toggle-views-manager-button-label = Oldalsáv be/ki +pdfjs-views-manager-sidebar = + .aria-label = Oldalsáv +pdfjs-views-manager-view-selector-button = + .title = Nézetek +pdfjs-views-manager-view-selector-button-label = Nézetek +pdfjs-views-manager-pages-title = Oldalak +pdfjs-views-manager-outlines-title = Dokumentumvázlat +pdfjs-views-manager-attachments-title = Mellékletek +pdfjs-views-manager-layers-title = Rétegek +pdfjs-views-manager-pages-option-label = Oldalak +pdfjs-views-manager-outlines-option-label = Dokumentumvázlat +pdfjs-views-manager-attachments-option-label = Mellékletek +pdfjs-views-manager-layers-option-label = Rétegek +pdfjs-views-manager-add-file-button = + .title = Fájl hozzáadása +pdfjs-views-manager-add-file-button-label = Fájl hozzáadása +# Variables: +# $count (Number) - the number of selected pages. +pdfjs-views-manager-pages-status-action-label = + { $count -> + [one] { $count } kiválasztva + *[other] { $count } kiválasztva + } +pdfjs-views-manager-pages-status-none-action-label = Oldalak kiválasztása +pdfjs-views-manager-pages-status-action-button-label = Kezelés +pdfjs-views-manager-pages-status-copy-button-label = Másolás +pdfjs-views-manager-pages-status-cut-button-label = Kivágás +pdfjs-views-manager-pages-status-delete-button-label = Törlés +pdfjs-views-manager-pages-status-save-as-button-label = Mentés másként… +# Variables: +# $count (Number) - the number of selected pages to be cut. +pdfjs-views-manager-status-undo-cut-label = + { $count -> + [one] 1 oldal kivágva + *[other] { $count } oldal kivágva + } +# Variables: +# $count (Number) - the number of selected pages to be copied. +pdfjs-views-manager-pages-status-undo-copy-label = + { $count -> + [one] 1 oldal másolva + *[other] { $count } oldal másolva + } +# Variables: +# $count (Number) - the number of selected pages to be deleted. +pdfjs-views-manager-pages-status-undo-delete-label = + { $count -> + [one] 1 oldal törölve + *[other] { $count } oldal törölve + } pdfjs-views-manager-pages-status-waiting-ready-label = A fájl előkészítése… pdfjs-views-manager-pages-status-waiting-uploading-label = Fájl feltöltése… pdfjs-views-manager-status-warning-cut-label = Nem sikerült kivágni. Frissítse az oldalt, és próbálja újra. diff --git a/l10n/hy-AM/viewer.ftl b/l10n/hy-AM/viewer.ftl index 62b15a0471e4b..91bee636331d3 100644 --- a/l10n/hy-AM/viewer.ftl +++ b/l10n/hy-AM/viewer.ftl @@ -40,8 +40,8 @@ pdfjs-print-button = .title = Տպել pdfjs-print-button-label = Տպել pdfjs-save-button = - .title = Պահպանել -pdfjs-save-button-label = Պահպանել + .title = Պահել +pdfjs-save-button-label = Պահել # Used in Firefox for Android as a tooltip for the download button (“download” is a verb). pdfjs-download-button = .title = Ներբեռնել @@ -357,7 +357,7 @@ pdfjs-editor-free-highlight-thickness-input = Հաստություն pdfjs-editor-free-highlight-thickness-title = .title = Փոխել հաստությունը տեքստից բացի այլ տարրեր նշելիս pdfjs-editor-add-signature-container = - .aria-label = Ստորագրության կառավարման տարրեր և պահպանված ստորագրություններ + .aria-label = Ստորագրության կառավարման տարրեր և պահված ստորագրություններ pdfjs-editor-signature-add-signature-button = .title = Ավելացնել նոր ստորագրություն pdfjs-editor-signature-add-signature-button-label = Ավելացնել նոր ստորագրություն @@ -365,7 +365,7 @@ pdfjs-editor-signature-add-signature-button-label = Ավելացնել նոր ս # Variables: # $description (String) - a string describing/labeling the signature. pdfjs-editor-add-saved-signature-button = - .title = Պահպանված ստորագրություն՝ { $description } + .title = Պահված ստորագրություն՝ { $description } # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Գրվածքի խմբագիր @@ -383,7 +383,7 @@ pdfjs-editor-alt-text-add-description-description = Ձգտեք գրել 1-2 նա pdfjs-editor-alt-text-mark-decorative-label = Նշել որպես դեկորատիվ pdfjs-editor-alt-text-mark-decorative-description = Սա օգտագործվում է դեկորատիվ պատկերների համար, ինչպիսիք են եզրագծերը կամ ջրանիշերը։ pdfjs-editor-alt-text-cancel-button = Չեղարկել -pdfjs-editor-alt-text-save-button = Պահպանել +pdfjs-editor-alt-text-save-button = Պահել pdfjs-editor-alt-text-decorative-tooltip = Նշել որպես դեկորատիվ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = @@ -531,7 +531,7 @@ pdfjs-editor-undo-bar-close-button-label = Փակել ## Add a signature dialog -pdfjs-editor-add-signature-dialog-label = Այս յուրահատկությունը հնարավորություն է տալիս օգտվողին ստեղծել ստորագրություն՝ PDF փաստաթղթում ավելացնելու համար: Օգտվողը կարող է խմբագրել անունը (որը նաև ծառայում է որպես alt տեքստ) և լրացուցիչ պահպանել այն՝ հետագա օգտագործման համար: +pdfjs-editor-add-signature-dialog-label = Այս յուրահատկությունը հնարավորություն է տալիս օգտվողին ստեղծել ստորագրություն՝ PDF փաստաթղթում ավելացնելու համար: Օգտվողը կարող է խմբագրել անունը (որը նաև ծառայում է որպես alt տեքստ) և լրացուցիչ պահել այն՝ հետագա օգտագործման համար: pdfjs-editor-add-signature-dialog-title = Ավելացնել ստորագրություն ## Tab names @@ -572,8 +572,8 @@ pdfjs-editor-add-signature-description-default-when-drawing = Ստորագրու pdfjs-editor-add-signature-clear-button-label = Մաքրել ստորագրությունը pdfjs-editor-add-signature-clear-button = .title = Մաքրել ստորագրությունը -pdfjs-editor-add-signature-save-checkbox = Պահպանել ստորագրությունը -pdfjs-editor-add-signature-save-warning-message = Դուք հասել եք պահպանված ստորագրությունների 5 սահմանաչափին։ Հեռացրեք մեկը՝ ավելին պահպանելու համար։ +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 = Այս պատկերը հնարավոր չէ վերածել ստորագրության @@ -589,8 +589,8 @@ pdfjs-editor-edit-signature-update-button = Թարմացնել ## Main menu for adding/removing signatures pdfjs-editor-delete-signature-button1 = - .title = Հեռացնել պահպանված ստորագրությունը -pdfjs-editor-delete-signature-button-label1 = Հեռացնել պահպանված ստորագրությունը + .title = Հեռացնել պահված ստորագրությունը +pdfjs-editor-delete-signature-button-label1 = Հեռացնել պահված ստորագրությունը ## Editor toolbar diff --git a/l10n/ja/viewer.ftl b/l10n/ja/viewer.ftl index 75d51ae5c2617..23abbd5cc2140 100644 --- a/l10n/ja/viewer.ftl +++ b/l10n/ja/viewer.ftl @@ -522,6 +522,7 @@ pdfjs-editor-undo-bar-message-freetext = フリーテキスト注釈が削除さ pdfjs-editor-undo-bar-message-ink = インク注釈が削除されました pdfjs-editor-undo-bar-message-stamp = 画像が削除されました pdfjs-editor-undo-bar-message-signature = 署名が削除されました +pdfjs-editor-undo-bar-message-comment = コメントが削除されました # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = { $count } 個の注釈が削除されました diff --git a/l10n/ka/viewer.ftl b/l10n/ka/viewer.ftl index 171d289a5e253..66bdeae5a9486 100644 --- a/l10n/ka/viewer.ftl +++ b/l10n/ka/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = წარწერა მოცილ pdfjs-editor-undo-bar-message-ink = მოხაზულის მოცილებულია pdfjs-editor-undo-bar-message-stamp = სურათი მოცილებულია pdfjs-editor-undo-bar-message-signature = ხელმოწერა მოცილებულია +pdfjs-editor-undo-bar-message-comment = შენიშვნა მოცილებულია # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -633,6 +634,79 @@ pdfjs-editor-edit-comment-dialog-cancel-button = გაუქმება pdfjs-editor-add-comment-button = .title = შენიშვნის დამატება +## The view manager is a sidebar displaying different views: +## - thumbnails; +## - outline; +## - attachments; +## - layers. +## The thumbnails view is used to edit the pdf: remove/insert pages, ... + +pdfjs-toggle-views-manager-button = + .title = გვერდითა ზოლის გამოჩენა/დამალვა +pdfjs-toggle-views-manager-notification-button = + .title = გვერდითი ზოლის გამოჩენა (შეიცავს შესათვალიერებელს/სარჩევს/დანართს) +pdfjs-toggle-views-manager-button-label = გვერდითა ზოლის გამოჩენა/დამალვა +pdfjs-views-manager-sidebar = + .aria-label = გვერდითი ზოლი +pdfjs-views-manager-view-selector-button = + .title = ხედები +pdfjs-views-manager-view-selector-button-label = ხედები +pdfjs-views-manager-pages-title = გვერდები +pdfjs-views-manager-outlines-title = დოკუმენტის სარჩევი +pdfjs-views-manager-attachments-title = დანართები +pdfjs-views-manager-layers-title = შრეები +pdfjs-views-manager-pages-option-label = გვერდები +pdfjs-views-manager-outlines-option-label = დოკუმენტის სარჩევი +pdfjs-views-manager-attachments-option-label = დანართები +pdfjs-views-manager-layers-option-label = შრეები +pdfjs-views-manager-add-file-button = + .title = ფაილის დამატება +pdfjs-views-manager-add-file-button-label = ფაილის დამატება +# Variables: +# $count (Number) - the number of selected pages. +pdfjs-views-manager-pages-status-action-label = + { $count -> + [one] { $count } შერჩეული + *[other] { $count } შერჩეული + } +pdfjs-views-manager-pages-status-none-action-label = გვერდების შერჩევა +pdfjs-views-manager-pages-status-action-button-label = მართვა +pdfjs-views-manager-pages-status-copy-button-label = ასლი +pdfjs-views-manager-pages-status-cut-button-label = ამოჭრა +pdfjs-views-manager-pages-status-delete-button-label = წაშლა +pdfjs-views-manager-pages-status-save-as-button-label = შენახვა როგორც… +# Variables: +# $count (Number) - the number of selected pages to be cut. +pdfjs-views-manager-status-undo-cut-label = + { $count -> + [one] 1 გვერდი ამოიჭრა + *[other] { $count } გვერდი ამოიჭრა + } +# Variables: +# $count (Number) - the number of selected pages to be copied. +pdfjs-views-manager-pages-status-undo-copy-label = + { $count -> + [one] 1 გვერდის ასლი აღებულია + *[other] { $count } გვერდის ასლი აღებულია + } +# Variables: +# $count (Number) - the number of selected pages to be deleted. +pdfjs-views-manager-pages-status-undo-delete-label = + { $count -> + [one] 1 გვერდი წაიშალა + *[other] { $count } გვერდი წაიშალა + } +pdfjs-views-manager-pages-status-waiting-ready-label = მზადდება თქვენი ფაილი… +pdfjs-views-manager-pages-status-waiting-uploading-label = ფაილი აიტვირთება… +pdfjs-views-manager-status-warning-cut-label = ვერ ამოიჭრა. განაახლეთ გვერდი და კვლავ სცადეთ. +pdfjs-views-manager-status-warning-copy-label = ასლი ვერ აიღო. განაახლეთ გვერდი და კვლავ სცადეთ. +pdfjs-views-manager-status-warning-delete-label = ვერ წაიშალა. განაახლეთ გვერდი და კვლავ სცადეთ. +pdfjs-views-manager-status-warning-save-label = ვერ შეინახა. განაახლეთ გვერდი და კვლავ სცადეთ. +pdfjs-views-manager-status-undo-button-label = დაბრუნება +pdfjs-views-manager-status-close-button = + .title = დახურვა +pdfjs-views-manager-status-close-button-label = დახურვა + ## Main menu for adding/removing signatures pdfjs-editor-delete-signature-button1 = diff --git a/l10n/km/viewer.ftl b/l10n/km/viewer.ftl index 2cbb97d7a2506..cf899f4725c3c 100644 --- a/l10n/km/viewer.ftl +++ b/l10n/km/viewer.ftl @@ -215,6 +215,15 @@ pdfjs-editor-highlight-show-all-button-label = បង្ហាញ​ទាំង pdfjs-editor-highlight-show-all-button = .title = បង្ហាញ​ទាំងអស់ +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + +pdfjs-editor-new-alt-text-not-now-button = មិន​មែន​ឥឡូវ + +## Image alt-text settings + +pdfjs-editor-alt-text-settings-delete-model-button = លុប + ## Dialog buttons pdfjs-editor-add-signature-cancel-button = បោះបង់ @@ -222,3 +231,12 @@ pdfjs-editor-add-signature-cancel-button = បោះបង់ ## Edit a comment dialog pdfjs-editor-edit-comment-dialog-cancel-button = បោះបង់ + +## The view manager is a sidebar displaying different views: +## - thumbnails; +## - outline; +## - attachments; +## - layers. +## The thumbnails view is used to edit the pdf: remove/insert pages, ... + +pdfjs-views-manager-pages-status-delete-button-label = លុប diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index 5e5569b6d1b77..b2c3b1a9c5b97 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = ਲਿਖਤ ਨੂੰ ਹਟਾਇਆ pdfjs-editor-undo-bar-message-ink = ਡਰਾਇੰਗ ਨੂੰ ਹਟਾਇਆ ਗਿਆ pdfjs-editor-undo-bar-message-stamp = ਚਿੱਤਰ ਨੂੰ ਹਟਾਇਆ ਗਿਆ pdfjs-editor-undo-bar-message-signature = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਇਆ +pdfjs-editor-undo-bar-message-comment = ਟਿੱਪਣੀ ਨੂੰ ਹਟਾਇਆ ਗਿਆ # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 97371775910f5..53114581546f8 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -534,6 +534,7 @@ pdfjs-editor-undo-bar-message-freetext = Texto removido pdfjs-editor-undo-bar-message-ink = Desenho removido pdfjs-editor-undo-bar-message-stamp = Imagem removida pdfjs-editor-undo-bar-message-signature = Assinatura removida +pdfjs-editor-undo-bar-message-comment = Comentário removido # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/ro/viewer.ftl b/l10n/ro/viewer.ftl index 94f2a5d59fa64..43a969d7ef18e 100644 --- a/l10n/ro/viewer.ftl +++ b/l10n/ro/viewer.ftl @@ -536,6 +536,7 @@ pdfjs-editor-undo-bar-message-freetext = Text eliminat pdfjs-editor-undo-bar-message-ink = Desen eliminat pdfjs-editor-undo-bar-message-stamp = Imagine eliminată pdfjs-editor-undo-bar-message-signature = Semnătură eliminată +pdfjs-editor-undo-bar-message-comment = Comentariu eliminat # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index 90269270d25a2..7a6df46300955 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -515,7 +515,7 @@ pdfjs-editor-alt-text-settings-create-model-button-label = Automaticky vytvoriť pdfjs-editor-alt-text-settings-create-model-description = Navrhuje popisy, ktoré pomôžu ľuďom, ktorým sa obrázok nezobrazuje alebo ak sa obrázok nenačíta. # Variables: # $totalSize (Number) - the total size (in MB) of the AI model. -pdfjs-editor-alt-text-settings-download-model-label = Model AI pre alternatívne texty ({ $totalSize } MB) +pdfjs-editor-alt-text-settings-download-model-label = Model AI pre alternatívne texty ({ $totalSize } MB) pdfjs-editor-alt-text-settings-ai-model-description = Beží lokálne na vašom zariadení, takže vaše dáta zostanú súkromné. Vyžaduje sa pre automatický alternatívny text. pdfjs-editor-alt-text-settings-delete-model-button = Odstrániť pdfjs-editor-alt-text-settings-download-model-button = Stiahnuť diff --git a/package-lock.json b/package-lock.json index 4f44e354f008f..a02493081907d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,13 @@ "@babel/core": "^7.29.0", "@babel/preset-env": "^7.29.0", "@babel/runtime": "^7.28.6", - "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-light-dark-function": "^3.0.0", "@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.90", - "@types/node": "^25.2.2", + "@napi-rs/canvas": "^0.1.92", + "@types/node": "^25.2.3", "autoprefixer": "^10.4.24", "babel-loader": "^10.0.0", "babel-plugin-add-header-comment": "^1.0.3", @@ -32,7 +32,7 @@ "eslint-plugin-no-unsanitized": "^4.1.4", "eslint-plugin-perfectionist": "^5.5.0", "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-unicorn": "^62.0.0", + "eslint-plugin-unicorn": "^63.0.0", "globals": "^17.3.0", "gulp": "^5.0.1", "gulp-cli": "^3.1.0", @@ -45,19 +45,19 @@ "jasmine": "^5.13.0", "jsdoc": "^4.0.5", "jstransformer-nunjucks": "^1.2.0", - "metalsmith": "^2.6.3", + "metalsmith": "^2.7.0", "metalsmith-html-relative": "^2.0.9", "node-readable-to-web-readable-stream": "^0.4.2", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", "postcss": "^8.5.6", - "postcss-dir-pseudo-class": "^9.0.1", + "postcss-dir-pseudo-class": "^10.0.0", "postcss-discard-comments": "^7.0.5", - "postcss-nesting": "^13.0.2", + "postcss-nesting": "^14.0.0", "postcss-values-parser": "^7.0.0", "prettier": "^3.8.1", - "puppeteer": "^24.37.2", - "stylelint": "^16.26.1", + "puppeteer": "^24.37.3", + "stylelint": "^17.3.0", "stylelint-prettier": "^5.0.3", "svglint": "^4.2.0", "terser-webpack-plugin": "^5.3.16", @@ -65,7 +65,7 @@ "ttest": "^4.0.0", "typescript": "^5.9.3", "vinyl": "^3.0.1", - "webpack": "^5.105.0", + "webpack": "^5.105.2", "webpack-stream": "^7.0.0", "yargs": "^18.0.0" }, @@ -104,7 +104,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1609,61 +1608,60 @@ } }, "node_modules/@cacheable/memory": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.6.tgz", - "integrity": "sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.7.tgz", + "integrity": "sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==", "dev": true, "license": "MIT", "dependencies": { - "@cacheable/utils": "^2.3.2", + "@cacheable/utils": "^2.3.3", "@keyv/bigmap": "^1.3.0", - "hookified": "^1.13.0", - "keyv": "^5.5.4" + "hookified": "^1.14.0", + "keyv": "^5.5.5" } }, "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.0.tgz", - "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", "dev": true, "license": "MIT", "dependencies": { - "hashery": "^1.2.0", - "hookified": "^1.13.0" + "hashery": "^1.4.0", + "hookified": "^1.15.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "keyv": "^5.5.4" + "keyv": "^5.6.0" } }, "node_modules/@cacheable/memory/node_modules/keyv": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", - "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } }, "node_modules/@cacheable/utils": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.2.tgz", - "integrity": "sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.4.tgz", + "integrity": "sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==", "dev": true, "license": "MIT", "dependencies": { - "hashery": "^1.2.0", - "keyv": "^5.5.4" + "hashery": "^1.3.0", + "keyv": "^5.6.0" } }, "node_modules/@cacheable/utils/node_modules/keyv": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", - "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", "dependencies": { @@ -1671,9 +1669,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", "dev": true, "funding": [ { @@ -1686,18 +1684,17 @@ } ], "license": "MIT", - "peer": true, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" + "@csstools/css-tokenizer": "^4.0.0" } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.20.tgz", - "integrity": "sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==", + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.27.tgz", + "integrity": "sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==", "dev": true, "funding": [ { @@ -1709,36 +1706,12 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } + "license": "MIT-0" }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", - "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", "dev": true, "funding": [ { @@ -1752,17 +1725,13 @@ ], "license": "MIT", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "node": ">=20.19.0" } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", - "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-3.0.0.tgz", + "integrity": "sha512-s++V5/hYazeRUCYIn2lsBVzUsxdeC46gtwpgW6lu5U/GlPOS5UTDT14kkEyPgXmFbCvaWLREqV7YTMJq1K3G6w==", "dev": true, "funding": [ { @@ -1776,22 +1745,22 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "@csstools/postcss-progressive-custom-properties": "^5.0.0", + "@csstools/utilities": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", - "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-5.0.0.tgz", + "integrity": "sha512-NsJoZ89rxmDrUsITf8QIk5w+lQZQ8Xw5K6cLFG+cfiffsLYHb3zcbOOrHLetGl1WIhjWWQ4Cr8MMrg46Q+oACg==", "dev": true, "funding": [ { @@ -1808,16 +1777,16 @@ "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/@csstools/selector-resolve-nested": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", - "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz", + "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==", "dev": true, "funding": [ { @@ -1831,16 +1800,16 @@ ], "license": "MIT-0", "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "postcss-selector-parser": "^7.0.0" + "postcss-selector-parser": "^7.1.1" } }, "node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz", + "integrity": "sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==", "dev": true, "funding": [ { @@ -1854,16 +1823,16 @@ ], "license": "MIT-0", "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "postcss-selector-parser": "^7.0.0" + "postcss-selector-parser": "^7.1.1" } }, "node_modules/@csstools/utilities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", - "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-3.0.0.tgz", + "integrity": "sha512-etDqA/4jYvOGBM6yfKCOsEXfH96BKztZdgGmGqKi2xHnDe0ILIBraRspwgYatJH9JsCZ5HCGoCst8w18EKOAdg==", "dev": true, "funding": [ { @@ -1877,7 +1846,7 @@ ], "license": "MIT-0", "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { "postcss": "^8.4" @@ -1944,17 +1913,6 @@ "node": ">=12" } }, - "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", - "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/JounQin" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -2509,9 +2467,9 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.90.tgz", - "integrity": "sha512-vO9j7TfwF9qYCoTOPO39yPLreTRslBVOaeIwhDZkizDvBb0MounnTl0yeWUMBxP4Pnkg9Sv+3eQwpxNUmTwt0w==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.92.tgz", + "integrity": "sha512-q7ZaUCJkEU5BeOdE7fBx1XWRd2T5Ady65nxq4brMf5L4cE1VV/ACq5w9Z5b/IVJs8CwSSIwc30nlthH0gFo4Ig==", "dev": true, "license": "MIT", "workspaces": [ @@ -2525,23 +2483,23 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.90", - "@napi-rs/canvas-darwin-arm64": "0.1.90", - "@napi-rs/canvas-darwin-x64": "0.1.90", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.90", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.90", - "@napi-rs/canvas-linux-arm64-musl": "0.1.90", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.90", - "@napi-rs/canvas-linux-x64-gnu": "0.1.90", - "@napi-rs/canvas-linux-x64-musl": "0.1.90", - "@napi-rs/canvas-win32-arm64-msvc": "0.1.90", - "@napi-rs/canvas-win32-x64-msvc": "0.1.90" + "@napi-rs/canvas-android-arm64": "0.1.92", + "@napi-rs/canvas-darwin-arm64": "0.1.92", + "@napi-rs/canvas-darwin-x64": "0.1.92", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.92", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.92", + "@napi-rs/canvas-linux-arm64-musl": "0.1.92", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.92", + "@napi-rs/canvas-linux-x64-gnu": "0.1.92", + "@napi-rs/canvas-linux-x64-musl": "0.1.92", + "@napi-rs/canvas-win32-arm64-msvc": "0.1.92", + "@napi-rs/canvas-win32-x64-msvc": "0.1.92" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.90.tgz", - "integrity": "sha512-3JBULVF+BIgr7yy7Rf8UjfbkfFx4CtXrkJFD1MDgKJ83b56o0U9ciT8ZGTCNmwWkzu8RbNKlyqPP3KYRG88y7Q==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.92.tgz", + "integrity": "sha512-rDOtq53ujfOuevD5taxAuIFALuf1QsQWZe1yS/N4MtT+tNiDBEdjufvQRPWZ11FubL2uwgP8ApYU3YOaNu1ZsQ==", "cpu": [ "arm64" ], @@ -2560,9 +2518,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.90.tgz", - "integrity": "sha512-L8XVTXl+8vd8u7nPqcX77NyG5RuFdVsJapQrKV9WE3jBayq1aSMht/IH7Dwiz/RNJ86E5ZSg9pyUPFIlx52PZA==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.92.tgz", + "integrity": "sha512-4PT6GRGCr7yMRehp42x0LJb1V0IEy1cDZDDayv7eKbFUIGbPFkV7CRC9Bee5MPkjg1EB4ZPXXUyy3gjQm7mR8Q==", "cpu": [ "arm64" ], @@ -2581,9 +2539,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.90.tgz", - "integrity": "sha512-h0ukhlnGhacbn798VWYTQZpf6JPDzQYaow+vtQ2Fat7j7ImDdpg6tfeqvOTO1r8wS+s+VhBIFITC7aA1Aik0ZQ==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.92.tgz", + "integrity": "sha512-5e/3ZapP7CqPtDcZPtmowCsjoyQwuNMMD7c0GKPtZQ8pgQhLkeq/3fmk0HqNSD1i227FyJN/9pDrhw/UMTkaWA==", "cpu": [ "x64" ], @@ -2602,9 +2560,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.90.tgz", - "integrity": "sha512-JCvTl99b/RfdBtgftqrf+5UNF7GIbp7c5YBFZ+Bd6++4Y3phaXG/4vD9ZcF1bw1P4VpALagHmxvodHuQ9/TfTg==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.92.tgz", + "integrity": "sha512-j6KaLL9iir68lwpzzY+aBGag1PZp3+gJE2mQ3ar4VJVmyLRVOh+1qsdNK1gfWoAVy5w6U7OEYFrLzN2vOFUSng==", "cpu": [ "arm" ], @@ -2623,9 +2581,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.90.tgz", - "integrity": "sha512-vbWFp8lrP8NIM5L4zNOwnsqKIkJo0+GIRUDcLFV9XEJCptCc1FY6/tM02PT7GN4PBgochUPB1nBHdji6q3ieyQ==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.92.tgz", + "integrity": "sha512-s3NlnJMHOSotUYVoTCoC1OcomaChFdKmZg0VsHFeIkeHbwX0uPHP4eCX1irjSfMykyvsGHTQDfBAtGYuqxCxhQ==", "cpu": [ "arm64" ], @@ -2644,9 +2602,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.90.tgz", - "integrity": "sha512-8Bc0BgGEeOaux4EfIfNzcRRw0JE+lO9v6RWQFCJNM9dJFE4QJffTf88hnmbOaI6TEMpgWOKipbha3dpIdUqb/g==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.92.tgz", + "integrity": "sha512-xV0GQnukYq5qY+ebkAwHjnP2OrSGBxS3vSi1zQNQj0bkXU6Ou+Tw7JjCM7pZcQ28MUyEBS1yKfo7rc7ip2IPFQ==", "cpu": [ "arm64" ], @@ -2665,9 +2623,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.90.tgz", - "integrity": "sha512-0iiVDG5IH+gJb/YUrY/pRdbsjcgvwUmeckL/0gShWAA7004ygX2ST69M1wcfyxXrzFYjdF8S/Sn6aCAeBi89XQ==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.92.tgz", + "integrity": "sha512-+GKvIFbQ74eB/TopEdH6XIXcvOGcuKvCITLGXy7WLJAyNp3Kdn1ncjxg91ihatBaPR+t63QOE99yHuIWn3UQ9w==", "cpu": [ "riscv64" ], @@ -2686,9 +2644,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.90.tgz", - "integrity": "sha512-SkKmlHMvA5spXuKfh7p6TsScDf7lp5XlMbiUhjdCtWdOS6Qke/A4qGVOciy6piIUCJibL+YX+IgdGqzm2Mpx/w==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.92.tgz", + "integrity": "sha512-tFd6MwbEhZ1g64iVY2asV+dOJC+GT3Yd6UH4G3Hp0/VHQ6qikB+nvXEULskFYZ0+wFqlGPtXjG1Jmv7sJy+3Ww==", "cpu": [ "x64" ], @@ -2707,9 +2665,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.90.tgz", - "integrity": "sha512-o6QgS10gAS4vvELGDOOWYfmERXtkVRYFWBCjomILWfMgCvBVutn8M97fsMW5CrEuJI8YuxuJ7U+/DQ9oG93vDA==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.92.tgz", + "integrity": "sha512-uSuqeSveB/ZGd72VfNbHCSXO9sArpZTvznMVsb42nqPP7gBGEH6NJQ0+hmF+w24unEmxBhPYakP/Wiosm16KkA==", "cpu": [ "x64" ], @@ -2728,9 +2686,9 @@ } }, "node_modules/@napi-rs/canvas-win32-arm64-msvc": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.90.tgz", - "integrity": "sha512-2UHO/DC1oyuSjeCAhHA0bTD9qsg58kknRqjJqRfvIEFtdqdtNTcWXMCT9rQCuJ8Yx5ldhyh2SSp7+UDqD2tXZQ==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.92.tgz", + "integrity": "sha512-20SK5AU/OUNz9ZuoAPj5ekWai45EIBDh/XsdrVZ8le/pJVlhjFU3olbumSQUXRFn7lBRS+qwM8kA//uLaDx6iQ==", "cpu": [ "arm64" ], @@ -2749,9 +2707,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.90", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.90.tgz", - "integrity": "sha512-48CxEbzua5BP4+OumSZdi3+9fNiRO8cGNBlO2bKwx1PoyD1R2AXzPtqd/no1f1uSl0W2+ihOO1v3pqT3USbmgQ==", + "version": "0.1.92", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.92.tgz", + "integrity": "sha512-KEhyZLzq1MXCNlXybz4k25MJmHFp+uK1SIb8yJB0xfrQjz5aogAMhyseSzewo+XxAq3OAOdyKvfHGNzT3w1RPg==", "cpu": [ "x64" ], @@ -2832,9 +2790,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.0.tgz", - "integrity": "sha512-Xuq42yxcQJ54ti8ZHNzF5snFvtpgXzNToJ1bXUGQRaiO8t+B6UM8sTUJfvV+AJnqtkJU/7hdy6nbKyA12aHtRw==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.1.tgz", + "integrity": "sha512-fXa6uXLxfslBlus3MEpW8S6S9fe5RwmAE5Gd8u3krqOwnkZJV3/lQJiY3LaFdTctLLqJtyMgEUGkbDnRNf6vbQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2842,7 +2800,7 @@ "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.3", + "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, @@ -2965,6 +2923,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -2978,7 +2949,6 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -3043,7 +3013,6 @@ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -3064,9 +3033,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", - "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3470,7 +3439,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4106,13 +4074,12 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz", "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/bare-fs": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.3.tgz", - "integrity": "sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.4.tgz", + "integrity": "sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -4343,7 +4310,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -4574,23 +4540,23 @@ } }, "node_modules/cacheable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.0.tgz", - "integrity": "sha512-HHiAvOBmlcR2f3SQ7kdlYD8+AUJG+wlFZ/Ze8tl1Vzvz0MdOh8IYA/EFU4ve8t1/sZ0j4MGi7ST5MoTwHessQA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.2.tgz", + "integrity": "sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==", "dev": true, "license": "MIT", "dependencies": { - "@cacheable/memory": "^2.0.6", - "@cacheable/utils": "^2.3.2", - "hookified": "^1.13.0", - "keyv": "^5.5.4", - "qified": "^0.5.2" + "@cacheable/memory": "^2.0.7", + "@cacheable/utils": "^2.3.3", + "hookified": "^1.15.0", + "keyv": "^5.5.5", + "qified": "^0.6.0" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", - "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", "dependencies": { @@ -4852,9 +4818,9 @@ } }, "node_modules/chromium-bidi": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.1.tgz", - "integrity": "sha512-zB9MpoPd7VJwjowQqiW3FKOvQwffFMjQ8Iejp5ZW+sJaKLRhZX1sTxzl3Zt22TDB4zP0OOqs8lRoY7eAW5geyQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5075,13 +5041,13 @@ "license": "MIT" }, "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/concat-map": { @@ -5604,8 +5570,7 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz", "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -6142,7 +6107,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6203,7 +6167,6 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -6392,20 +6355,18 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "62.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-62.0.0.tgz", - "integrity": "sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==", + "version": "63.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-63.0.0.tgz", + "integrity": "sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "@eslint-community/eslint-utils": "^4.9.0", - "@eslint/plugin-kit": "^0.4.0", "change-case": "^5.4.4", "ci-info": "^4.3.1", "clean-regexp": "^1.0.0", "core-js-compat": "^3.46.0", - "esquery": "^1.6.0", "find-up-simple": "^1.0.1", "globals": "^16.4.0", "indent-string": "^5.0.0", @@ -7583,7 +7544,6 @@ "integrity": "sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "glob-watcher": "^6.0.0", "gulp-cli": "^3.1.0", @@ -7969,13 +7929,13 @@ } }, "node_modules/hashery": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.3.0.tgz", - "integrity": "sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.4.0.tgz", + "integrity": "sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.13.0" + "hookified": "^1.14.0" }, "engines": { "node": ">=20" @@ -8018,9 +7978,9 @@ } }, "node_modules/hookified": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.13.0.tgz", - "integrity": "sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", "dev": true, "license": "MIT" }, @@ -8065,13 +8025,13 @@ "license": "MIT" }, "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz", + "integrity": "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=20.10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8225,6 +8185,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -8623,6 +8594,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -9600,12 +9584,11 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -9653,9 +9636,9 @@ } }, "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz", + "integrity": "sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==", "dev": true, "license": "MIT", "funding": { @@ -9742,17 +9725,15 @@ } }, "node_modules/metalsmith": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/metalsmith/-/metalsmith-2.6.3.tgz", - "integrity": "sha512-nql0eDbeDdYY3cz0uDVmwQ/E9XDBAHBf5p3lz+IwZAlUvz72DAd5+F+vl7Fot7I+yQDVK59uB0CL9S+Ts7ELsw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/metalsmith/-/metalsmith-2.7.0.tgz", + "integrity": "sha512-DkoXO1jz0UY+k1tj1LpxYLrN+jeGKBicbtsQYeYF8nX9QK4AGyGh4g421qsmEOGfZ02GjW1qxr1XP+8afwcTGQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { - "chokidar": "^3.6.0", - "commander": "^10.0.1", - "debug": "^4.3.4", + "chokidar": "^4.0.3", + "commander": "^11.1.0", + "debug": "^4.4.3", "gray-matter": "^4.0.3", "is-utf8": "~0.2.0", "lodash.clonedeepwith": "^4.5.0", @@ -9764,7 +9745,7 @@ "metalsmith": "bin/metalsmith" }, "engines": { - "node": ">=14.18.0" + "node": ">=16.0.0" } }, "node_modules/metalsmith-html-relative": { @@ -9801,6 +9782,36 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/metalsmith/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/metalsmith/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -10779,7 +10790,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -10790,9 +10800,9 @@ } }, "node_modules/postcss-dir-pseudo-class": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", - "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-10.0.0.tgz", + "integrity": "sha512-DmtIzULpyC8XaH4b5AaUgt4Jic4QmrECqidNCdR7u7naQFdnxX80YI06u238a+ZVRXwURDxVzy0s/UQnWmpVeg==", "dev": true, "funding": [ { @@ -10806,10 +10816,10 @@ ], "license": "MIT-0", "dependencies": { - "postcss-selector-parser": "^7.0.0" + "postcss-selector-parser": "^7.1.1" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { "postcss": "^8.4" @@ -10872,9 +10882,9 @@ } }, "node_modules/postcss-nesting": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", - "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-14.0.0.tgz", + "integrity": "sha512-YGFOfVrjxYfeGTS5XctP1WCI5hu8Lr9SmntjfRC+iX5hCihEO+QZl9Ra+pkjqkgoVdDKvb2JccpElcowhZtzpw==", "dev": true, "funding": [ { @@ -10888,24 +10898,17 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/selector-resolve-nested": "^3.1.0", - "@csstools/selector-specificity": "^5.0.0", - "postcss-selector-parser": "^7.0.0" + "@csstools/selector-resolve-nested": "^4.0.0", + "@csstools/selector-specificity": "^6.0.0", + "postcss-selector-parser": "^7.1.1" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true, - "license": "MIT" - }, "node_modules/postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -10934,12 +10937,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10992,7 +10994,6 @@ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -11119,18 +11120,18 @@ } }, "node_modules/puppeteer": { - "version": "24.37.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.2.tgz", - "integrity": "sha512-FV1W/919ve0y0oiS/3Rp5XY4MUNUokpZOH/5M4MMDfrrvh6T9VbdKvAHrAFHBuCxvluDxhjra20W7Iz6HJUcIQ==", + "version": "24.37.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.3.tgz", + "integrity": "sha512-AUGGWq0BhPM+IOS2U9A+ZREH3HDFkV1Y5HERYGDg5cbGXjoGsTCT7/A6VZRfNU0UJJdCclyEimZICkZW6pqJyw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.1", + "@puppeteer/browsers": "2.12.1", + "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.2", + "puppeteer-core": "24.37.3", "typed-query-selector": "^2.12.0" }, "bin": { @@ -11141,18 +11142,18 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.2.tgz", - "integrity": "sha512-nN8qwE3TGF2vA/+xemPxbesntTuqD9vCGOiZL2uh8HES3pPzLX20MyQjB42dH2rhQ3W3TljZ4ZaKZ0yX/abQuw==", + "version": "24.37.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.3.tgz", + "integrity": "sha512-fokQ8gv+hNgsRWqVuP5rUjGp+wzV5aMTP3fcm8ekNabmLGlJdFHas1OdMscAH9Gzq4Qcf7cfI/Pe6wEcAqQhqg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.1", + "@puppeteer/browsers": "2.12.1", + "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1566079", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.4.0", + "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" }, "engines": { @@ -11160,13 +11161,13 @@ } }, "node_modules/qified": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.2.tgz", - "integrity": "sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz", + "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.13.0" + "hookified": "^1.14.0" }, "engines": { "node": ">=20" @@ -11869,7 +11870,6 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -12649,9 +12649,9 @@ "license": "MIT" }, "node_modules/stylelint": { - "version": "16.26.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", - "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.3.0.tgz", + "integrity": "sha512-1POV91lcEMhj6SLVaOeA0KlS9yattS+qq+cyWqP/nYzWco7K5jznpGH1ExngvPlTM9QF1Kjd2bmuzJu9TH2OcA==", "dev": true, "funding": [ { @@ -12665,13 +12665,14 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-syntax-patches-for-csstree": "^1.0.19", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/media-query-list-parser": "^4.0.3", - "@csstools/selector-specificity": "^5.0.0", - "@dual-bundle/import-meta-resolve": "^4.2.1", - "balanced-match": "^2.0.0", + "@csstools/css-calc": "^3.1.1", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-syntax-patches-for-csstree": "^1.0.26", + "@csstools/css-tokenizer": "^4.0.0", + "@csstools/media-query-list-parser": "^5.0.0", + "@csstools/selector-resolve-nested": "^4.0.0", + "@csstools/selector-specificity": "^6.0.0", + "balanced-match": "^3.0.1", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", @@ -12679,37 +12680,36 @@ "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^11.1.1", + "file-entry-cache": "^11.1.2", "global-modules": "^2.0.0", - "globby": "^11.1.0", + "globby": "^16.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.3.1", + "html-tags": "^5.1.0", "ignore": "^7.0.5", + "import-meta-resolve": "^4.2.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", - "mathml-tag-names": "^2.1.3", - "meow": "^13.2.0", + "mathml-tag-names": "^4.0.0", + "meow": "^14.0.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", - "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.1.0", + "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "supports-hyperlinks": "^3.2.0", + "string-width": "^8.1.1", + "supports-hyperlinks": "^4.4.0", "svg-tags": "^1.0.0", "table": "^6.9.0", - "write-file-atomic": "^5.0.1" + "write-file-atomic": "^7.0.0" }, "bin": { "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": ">=18.12.0" + "node": ">=20.19.0" } }, "node_modules/stylelint-prettier": { @@ -12729,33 +12729,84 @@ "stylelint": ">=16.0.0" } }, + "node_modules/stylelint/node_modules/@csstools/css-calc": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz", + "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz", + "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-3.0.1.tgz", + "integrity": "sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 16" + } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.1.tgz", - "integrity": "sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.19" + "flat-cache": "^6.1.20" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.19", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.19.tgz", - "integrity": "sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==", + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz", + "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^2.2.0", + "cacheable": "^2.3.2", "flatted": "^3.3.3", - "hookified": "^1.13.0" + "hookified": "^1.15.0" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -12786,6 +12837,27 @@ "node": ">=6" } }, + "node_modules/stylelint/node_modules/globby": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.0.tgz", + "integrity": "sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/stylelint/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -12796,14 +12868,47 @@ "node": ">= 4" } }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/stylelint/node_modules/meow": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-14.0.0.tgz", + "integrity": "sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.1.tgz", + "integrity": "sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/stylelint/node_modules/which": { @@ -12840,22 +12945,48 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz", + "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" }, "engines": { - "node": ">=14.18" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -13444,7 +13575,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -13698,7 +13828,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13847,6 +13976,19 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -14102,19 +14244,18 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.0.tgz", - "integrity": "sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", "dev": true, "license": "Apache-2.0" }, "node_modules/webpack": { - "version": "5.105.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", - "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -14592,9 +14733,9 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", "dev": true, "license": "ISC", "dependencies": { @@ -14602,7 +14743,7 @@ "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/write-json-file": { diff --git a/package.json b/package.json index 03ca97ee2ac41..0d5a3c267a879 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,13 @@ "@babel/core": "^7.29.0", "@babel/preset-env": "^7.29.0", "@babel/runtime": "^7.28.6", - "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-light-dark-function": "^3.0.0", "@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.90", - "@types/node": "^25.2.2", + "@napi-rs/canvas": "^0.1.92", + "@types/node": "^25.2.3", "autoprefixer": "^10.4.24", "babel-loader": "^10.0.0", "babel-plugin-add-header-comment": "^1.0.3", @@ -27,7 +27,7 @@ "eslint-plugin-no-unsanitized": "^4.1.4", "eslint-plugin-perfectionist": "^5.5.0", "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-unicorn": "^62.0.0", + "eslint-plugin-unicorn": "^63.0.0", "globals": "^17.3.0", "gulp": "^5.0.1", "gulp-cli": "^3.1.0", @@ -40,19 +40,19 @@ "jasmine": "^5.13.0", "jsdoc": "^4.0.5", "jstransformer-nunjucks": "^1.2.0", - "metalsmith": "^2.6.3", + "metalsmith": "^2.7.0", "metalsmith-html-relative": "^2.0.9", "node-readable-to-web-readable-stream": "^0.4.2", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", "postcss": "^8.5.6", - "postcss-dir-pseudo-class": "^9.0.1", + "postcss-dir-pseudo-class": "^10.0.0", "postcss-discard-comments": "^7.0.5", - "postcss-nesting": "^13.0.2", + "postcss-nesting": "^14.0.0", "postcss-values-parser": "^7.0.0", "prettier": "^3.8.1", - "puppeteer": "^24.37.2", - "stylelint": "^16.26.1", + "puppeteer": "^24.37.3", + "stylelint": "^17.3.0", "stylelint-prettier": "^5.0.3", "svglint": "^4.2.0", "terser-webpack-plugin": "^5.3.16", @@ -60,7 +60,7 @@ "ttest": "^4.0.0", "typescript": "^5.9.3", "vinyl": "^3.0.1", - "webpack": "^5.105.0", + "webpack": "^5.105.2", "webpack-stream": "^7.0.0", "yargs": "^18.0.0" }, diff --git a/src/core/cff_parser.js b/src/core/cff_parser.js index 3b40d1c4fc59e..1a0bd463435d2 100644 --- a/src/core/cff_parser.js +++ b/src/core/cff_parser.js @@ -1051,9 +1051,7 @@ class CFFHeader { } class CFFStrings { - constructor() { - this.strings = []; - } + strings = []; get(index) { if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { @@ -1087,10 +1085,9 @@ class CFFStrings { } class CFFIndex { - constructor() { - this.objects = []; - this.length = 0; - } + objects = []; + + length = 0; add(data) { this.length += data.length; @@ -1323,9 +1320,7 @@ class CFFFDSelect { // Helper class to keep track of where an offset is within the data and helps // filling in that offset once it's known. class CFFOffsetTracker { - constructor() { - this.offsets = Object.create(null); - } + offsets = Object.create(null); isTracking(key) { return key in this.offsets; diff --git a/src/core/dataset_reader.js b/src/core/dataset_reader.js index 221bcacf58895..54aa49dc17c4b 100644 --- a/src/core/dataset_reader.js +++ b/src/core/dataset_reader.js @@ -27,10 +27,7 @@ function decodeString(str) { } class DatasetXMLParser extends SimpleXMLParser { - constructor(options) { - super(options); - this.node = null; - } + node = null; onEndElement(name) { const node = super.onEndElement(name); diff --git a/src/core/default_appearance.js b/src/core/default_appearance.js index ad49f187e85a3..57f7feba54b69 100644 --- a/src/core/default_appearance.js +++ b/src/core/default_appearance.js @@ -294,7 +294,7 @@ class FakeUnicodeFont { descendantFont.set("DW", 1000); const widths = []; - const chars = [...this.widths.entries()].sort(); + const chars = [...this.widths].sort(); let currentChar = null; let currentWidths = null; for (const [char, width] of chars) { diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 833cf63d7fff0..767d8477c15cb 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -5042,21 +5042,31 @@ class StateManager { } class TextState { - constructor() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.fontName = null; - this.fontSize = 0; - this.loadedName = null; - this.font = null; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.textMatrix = IDENTITY_MATRIX.slice(); - this.textLineMatrix = IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } + ctm = new Float32Array(IDENTITY_MATRIX); + + fontName = null; + + fontSize = 0; + + loadedName = null; + + font = null; + + fontMatrix = FONT_IDENTITY_MATRIX; + + textMatrix = IDENTITY_MATRIX.slice(); + + textLineMatrix = IDENTITY_MATRIX.slice(); + + charSpacing = 0; + + wordSpacing = 0; + + leading = 0; + + textHScale = 1; + + textRise = 0; setTextMatrix(a, b, c, d, e, f) { const m = this.textMatrix; @@ -5105,24 +5115,28 @@ class TextState { } class EvalState { - constructor() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = TextRenderingMode.FILL; - this._fillColorSpace = this._strokeColorSpace = ColorSpaceUtils.gray; - this.patternFillColorSpace = null; - this.patternStrokeColorSpace = null; - - // Path stuff. - this.currentPointX = this.currentPointY = 0; - this.pathMinMax = new Float32Array([ - Infinity, - Infinity, - -Infinity, - -Infinity, - ]); - this.pathBuffer = []; - } + ctm = new Float32Array(IDENTITY_MATRIX); + + font = null; + + textRenderingMode = TextRenderingMode.FILL; + + _fillColorSpace = ColorSpaceUtils.gray; + + _strokeColorSpace = ColorSpaceUtils.gray; + + patternFillColorSpace = null; + + patternStrokeColorSpace = null; + + // Path stuff. + currentPointX = 0; + + currentPointY = 0; + + pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]); + + pathBuffer = []; get fillColorSpace() { return this._fillColorSpace; diff --git a/src/core/function.js b/src/core/function.js index f426f15bf858b..87106201c22c5 100644 --- a/src/core/function.js +++ b/src/core/function.js @@ -836,9 +836,7 @@ class AstVariableDefinition extends AstNode { } class ExpressionBuilderVisitor { - constructor() { - this.parts = []; - } + parts = []; visitArgument(arg) { this.parts.push( diff --git a/src/core/primitives.js b/src/core/primitives.js index 854341dbdb099..5afc807ec681e 100644 --- a/src/core/primitives.js +++ b/src/core/primitives.js @@ -398,9 +398,7 @@ class RefSet { } class RefSetCache { - constructor() { - this._map = new Map(); - } + _map = new Map(); get size() { return this._map.size; diff --git a/src/core/xfa/fonts.js b/src/core/xfa/fonts.js index 844e2362c1f6b..9a20c81be63aa 100644 --- a/src/core/xfa/fonts.js +++ b/src/core/xfa/fonts.js @@ -105,14 +105,14 @@ class FontFinder { name = name.toLowerCase(); const maybe = []; - for (const [family, pdfFont] of this.fonts.entries()) { + for (const [family, pdfFont] of this.fonts) { if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { maybe.push(pdfFont); } } if (maybe.length === 0) { - for (const [, pdfFont] of this.fonts.entries()) { + for (const pdfFont of this.fonts.values()) { if ( pdfFont.regular.name ?.replaceAll(pattern, "") @@ -126,7 +126,7 @@ class FontFinder { if (maybe.length === 0) { name = name.replaceAll(/psmt|mt/gi, ""); - for (const [family, pdfFont] of this.fonts.entries()) { + for (const [family, pdfFont] of this.fonts) { if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { maybe.push(pdfFont); } diff --git a/src/core/xfa/xfa_object.js b/src/core/xfa/xfa_object.js index 8de0c17f03ff5..dc272a9ada400 100644 --- a/src/core/xfa/xfa_object.js +++ b/src/core/xfa/xfa_object.js @@ -841,7 +841,7 @@ class XmlObject extends XFAObject { const utf8TagName = utf8StringToString(tagName); const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : ""; buf.push(`<${prefix}${utf8TagName}`); - for (const [name, value] of this[_attributes].entries()) { + for (const [name, value] of this[_attributes]) { const utf8Name = utf8StringToString(name); buf.push(` ${utf8Name}="${encodeToXmlString(value[$content])}"`); } diff --git a/src/scripting_api/color.js b/src/scripting_api/color.js index 39813d5bd546b..dee798d5e9e6e 100644 --- a/src/scripting_api/color.js +++ b/src/scripting_api/color.js @@ -17,21 +17,32 @@ import { ColorConverters } from "../shared/scripting_utils.js"; import { PDFObject } from "./pdf_object.js"; class Color extends PDFObject { + transparent = ["T"]; + + black = ["G", 0]; + + white = ["G", 1]; + + red = ["RGB", 1, 0, 0]; + + green = ["RGB", 0, 1, 0]; + + blue = ["RGB", 0, 0, 1]; + + cyan = ["CMYK", 1, 0, 0, 0]; + + magenta = ["CMYK", 0, 1, 0, 0]; + + yellow = ["CMYK", 0, 0, 1, 0]; + + dkGray = ["G", 0.25]; + + gray = ["G", 0.5]; + + ltGray = ["G", 0.75]; + constructor() { super({}); - - this.transparent = ["T"]; - this.black = ["G", 0]; - this.white = ["G", 1]; - this.red = ["RGB", 1, 0, 0]; - this.green = ["RGB", 0, 1, 0]; - this.blue = ["RGB", 0, 0, 1]; - this.cyan = ["CMYK", 1, 0, 0, 0]; - this.magenta = ["CMYK", 0, 1, 0, 0]; - this.yellow = ["CMYK", 0, 0, 1, 0]; - this.dkGray = ["G", 0.25]; - this.gray = ["G", 0.5]; - this.ltGray = ["G", 0.75]; } static _isValidSpace(cColorSpace) { diff --git a/src/scripting_api/doc.js b/src/scripting_api/doc.js index c76ccc047483f..9e20f6a9e7c39 100644 --- a/src/scripting_api/doc.js +++ b/src/scripting_api/doc.js @@ -951,7 +951,7 @@ class Doc extends PDFObject { cName = parts[0]; } - for (const [name, field] of this._fields.entries()) { + for (const [name, field] of this._fields) { if (name.endsWith(cName)) { if (!isNaN(childIndex)) { const children = this._getChildren(name); @@ -985,7 +985,7 @@ class Doc extends PDFObject { const len = fieldName.length; const children = []; const pattern = /^\.[^.]+$/; - for (const [name, field] of this._fields.entries()) { + for (const [name, field] of this._fields) { if (name.startsWith(fieldName)) { const finalPart = name.slice(len); if (pattern.test(finalPart)) { @@ -1000,7 +1000,7 @@ class Doc extends PDFObject { // Get all the descendants which have a value. const children = []; const len = fieldName.length; - for (const [name, field] of this._fields.entries()) { + for (const [name, field] of this._fields) { if (name.startsWith(fieldName)) { const finalPart = name.slice(len); if ( diff --git a/src/scripting_api/fullscreen.js b/src/scripting_api/fullscreen.js index 87b7d7f9d3d52..cd6901a196bcc 100644 --- a/src/scripting_api/fullscreen.js +++ b/src/scripting_api/fullscreen.js @@ -17,20 +17,25 @@ import { Cursor } from "./constants.js"; import { PDFObject } from "./pdf_object.js"; class FullScreen extends PDFObject { - constructor(data) { - super(data); - - this._backgroundColor = []; - this._clickAdvances = true; - this._cursor = Cursor.hidden; - this._defaultTransition = ""; - this._escapeExits = true; - this._isFullScreen = true; - this._loop = false; - this._timeDelay = 3600; - this._usePageTiming = false; - this._useTimer = false; - } + _backgroundColor = []; + + _clickAdvances = true; + + _cursor = Cursor.hidden; + + _defaultTransition = ""; + + _escapeExits = true; + + _isFullScreen = true; + + _loop = false; + + _timeDelay = 3600; + + _usePageTiming = false; + + _useTimer = false; get backgroundColor() { return this._backgroundColor; diff --git a/src/scripting_api/proxy.js b/src/scripting_api/proxy.js index c1f6e78092540..d8bb6f0cbdcf1 100644 --- a/src/scripting_api/proxy.js +++ b/src/scripting_api/proxy.js @@ -14,12 +14,10 @@ */ class ProxyHandler { - constructor() { - // Don't dispatch an event for those properties. - // - delay: allow to delay field redraw until delay is set to false. - // Likely it's useless to implement that stuff. - this.nosend = new Set(["delay"]); - } + // Don't dispatch an event for those properties. + // - delay: allow to delay field redraw until delay is set to false. + // Likely it's useless to implement that stuff. + nosend = new Set(["delay"]); get(obj, prop) { // script may add some properties to the object diff --git a/src/scripting_api/thermometer.js b/src/scripting_api/thermometer.js index 5e164779439c5..ef5cd2205ebec 100644 --- a/src/scripting_api/thermometer.js +++ b/src/scripting_api/thermometer.js @@ -16,14 +16,13 @@ import { PDFObject } from "./pdf_object.js"; class Thermometer extends PDFObject { - constructor(data) { - super(data); + _cancelled = false; - this._cancelled = false; - this._duration = 100; - this._text = ""; - this._value = 0; - } + _duration = 100; + + _text = ""; + + _value = 0; get cancelled() { return this._cancelled; diff --git a/web/debugger.mjs b/web/debugger.mjs index bf32aa3665fb1..e6482a351af9e 100644 --- a/web/debugger.mjs +++ b/web/debugger.mjs @@ -677,14 +677,6 @@ const Stats = (function Stats() { function clear(node) { node.textContent = ""; // Remove any `node` contents from the DOM. } - function getStatIndex(pageNumber) { - for (const [i, stat] of stats.entries()) { - if (stat.pageNumber === pageNumber) { - return i; - } - } - return false; - } return { // Properties/functions needed by PDFBug. id: "Stats", @@ -699,8 +691,8 @@ const Stats = (function Stats() { if (!stat) { return; } - const statsIndex = getStatIndex(pageNumber); - if (statsIndex !== false) { + const statsIndex = stats.findIndex(s => s.pageNumber === pageNumber); + if (statsIndex !== -1) { stats[statsIndex].div.remove(); stats.splice(statsIndex, 1); } diff --git a/web/views_manager.css b/web/views_manager.css index 60b320df396b9..f3d08d75ff5cb 100644 --- a/web/views_manager.css +++ b/web/views_manager.css @@ -94,8 +94,13 @@ --image-current-focused-outline-color: var(--image-hover-border-color); --image-page-number-bg: light-dark(#f0f0f4, #23222b); --image-page-number-fg: var(--text-color); + --image-page-number-border-color: transparent; + --image-hover-page-number-bg: var(--image-page-number-bg); + --image-hover-page-number-fg: var(--image-page-number-fg); --image-current-page-number-bg: var(--image-current-border-color); --image-current-page-number-fg: light-dark(#fff, #15141a); + --image-current-hover-page-number-bg: var(--image-current-page-number-bg); + --image-current-hover-page-number-fg: var(--image-current-page-number-fg); --image-shadow: 0 0.375px 1.5px 0 light-dark(rgb(0 0 0 / 0.05), rgb(0 0 0 / 0.2)), 0 0 0 1px var(--image-border-color), @@ -122,6 +127,7 @@ calc(3 * var(--image-border-width) / 2) var(--image-current-border-color); --image-dragging-shadow: 0 0 0 var(--image-border-width) var(--image-current-border-color); + --multiple-dragging-indicator-bg: var(--indicator-color); --multiple-dragging-text-color: light-dark(#fbfbfe, #15141a); @media screen and (forced-colors: active) { @@ -145,15 +151,24 @@ --status-warning-bg: none; --indicator-warning-color: CanvasText; --header-shadow: none; - --image-shadow: 0 0 0 1px CanvasText; - --image-outline: 1px solid CanvasText; - --image-border-color: CanvasText; + --image-shadow: none; + --image-outline: 1px solid ButtonText; + --image-focus-outline-color: CanvasText; --image-hover-border-color: SelectedItem; - --image-current-border-color: ButtonBorder; + --image-hover-page-number-bg: SelectedItemText; + --image-hover-page-number-fg: SelectedItem; + --image-current-page-number-bg: ButtonText; + --image-current-page-number-fg: ButtonFace; + --image-current-border-color: ButtonText; --image-current-focused-outline-color: var(--image-hover-border-color); + --image-current-hover-page-number-bg: SelectedItem; + --image-current-hover-page-number-fg: SelectedItemText; --image-page-number-bg: ButtonFace; - --image-page-number-fg: CanvasText; + --image-page-number-fg: ButtonText; + --image-page-number-border-color: var(--image-page-number-fg); --multiple-dragging-bg: Canvas; + --multiple-dragging-indicator-bg: ButtonBorder; + --multiple-dragging-text-color: Canvas; } display: flex; @@ -270,13 +285,6 @@ mask-repeat: no-repeat; mask-image: var(--views-manager-button-icon); background-color: var(--button-fg); - - &:hover { - background-color: var(--button-hover-fg) !important; - } - &:active { - background-color: var(--button-active-fg) !important; - } } &::after { @@ -289,11 +297,18 @@ mask-position: center; mask-image: var(--views-manager-button-arrow-icon); background-color: var(--button-fg); + } - &:hover { + &:hover { + &::before, + &::after { background-color: var(--button-hover-fg) !important; } - &:active { + } + + &:active { + &::before, + &::after { background-color: var(--button-active-fg) !important; } } @@ -416,18 +431,20 @@ mask-position: center; mask-image: var(--manage-button-icon); background-color: var(--button-fg); + } - &:hover { - background-color: var(--button-hover-fg) !important; - } - &:active { - background-color: var(--button-active-fg) !important; - } + &:hover::after { + background-color: var(--button-hover-fg) !important; + } + + &:active::after { + background-color: var(--button-active-fg) !important; } } > .popupMenu { - width: auto; + width: 100%; + min-width: fit-content; z-index: 1; } } @@ -605,6 +622,7 @@ &:not(.isDragging) > .thumbnailImageContainer::after { content: attr(page-number); border-radius: 8px; + border: 1px solid var(--image-page-number-border-color); background-color: var(--image-page-number-bg); color: var(--image-page-number-fg); position: absolute; @@ -613,10 +631,11 @@ min-width: 32px; height: 16px; text-align: center; + box-sizing: content-box; translate: calc(var(--dir-factor) * 50%); font: menu; - font-size: 13px; + font-size: 12px; font-style: normal; font-weight: 400; line-height: normal; @@ -629,6 +648,7 @@ > .thumbnailImageContainer::after { background-color: var(--image-current-page-number-bg); color: var(--image-current-page-number-fg); + outline: 1px solid var(--image-current-border-color); } &.isDragging > input { @@ -654,8 +674,8 @@ img { width: 100%; height: 100%; - border: inherit; - border-radius: inherit; + border: none; + border-radius: 8px; outline: none; user-select: none; pointer-events: none; @@ -668,23 +688,87 @@ &:hover { cursor: pointer; box-shadow: var(--image-hover-shadow); + + &::after { + background-color: var(--image-hover-page-number-bg); + color: var(--image-hover-page-number-fg); + } + + @media screen and (forced-colors: active) { + /* box-shadow isn't rendered in HCM */ + box-shadow: none; + outline: var(--image-border-width) var(--image-hover-border-color) + solid; + } } &:focus-visible { &:not([aria-current="page"]) { box-shadow: var(--image-hover-shadow); outline: none; + + @media screen and (forced-colors: active) { + /* box-shadow isn't rendered in HCM */ + box-shadow: none; + outline: var(--image-border-width) + var(--image-focus-outline-color) solid; + } } &[aria-current="page"] { outline: var(--image-border-width) solid var(--image-current-focused-outline-color); outline-offset: var(--image-border-width); + + @media screen and (forced-colors: active) { + /* box-shadow isn't rendered in HCM */ + box-shadow: none; + outline: var(--image-border-width) + var(--image-current-border-color) solid; + outline-offset: 0; + + > img { + outline: var(--image-border-width) + var(--image-focus-outline-color) solid; + outline-offset: var(--image-border-width); + } + } + } + + @media screen and (forced-colors: active) { + /* box-shadow isn't rendered in HCM */ + box-shadow: none; + outline: var(--image-border-width) + var(--image-current-border-color) solid; + + &:hover > img { + outline: var(--image-border-width) + var(--image-hover-border-color) solid; + outline-offset: var(--image-border-width); + } } } &[aria-current="page"] { box-shadow: var(--image-current-shadow); + + &:hover::after { + background-color: var(--image-current-hover-page-number-bg); + color: var(--image-current-hover-page-number-fg); + } + + @media screen and (forced-colors: active) { + /* box-shadow isn't rendered in HCM */ + box-shadow: none; + outline: var(--image-border-width) + var(--image-current-border-color) solid; + + &:hover > img { + outline: var(--image-border-width) + var(--image-hover-border-color) solid; + outline-offset: var(--image-border-width); + } + } } &.placeholder { @@ -705,6 +789,11 @@ &.multiple { box-shadow: var(--image-multiple-dragging-shadow); + @media screen and (forced-colors: active) { + forced-color-adjust: none; + box-shadow: var(--image-multiple-dragging-shadow); + } + > .thumbnailImageContainer { position: absolute; top: 0; @@ -721,7 +810,7 @@ &::after { content: attr(data-multiple-count); border-radius: calc(8px * var(--thumbnail-dragging-scale)); - background-color: var(--indicator-color); + background-color: var(--multiple-dragging-indicator-bg); color: var(--multiple-dragging-text-color); position: absolute; inset-block-end: calc(4px * var(--thumbnail-dragging-scale));