@embedpdf/viewer-chrome 3.0.0-next.14 → 3.0.0-next.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +175 -132
- package/dist/annotation-fonts-DWjVOTP0.js +80 -0
- package/dist/annotation-fonts-DWjVOTP0.js.map +1 -0
- package/dist/annotation-fonts-dpfVkhnq.cjs +91 -0
- package/dist/annotation-fonts-dpfVkhnq.cjs.map +1 -0
- package/dist/annotation-style-B3XKAyZ-.cjs +879 -0
- package/dist/annotation-style-B3XKAyZ-.cjs.map +1 -0
- package/dist/annotation-style-CXF3X47Z.js +879 -0
- package/dist/annotation-style-CXF3X47Z.js.map +1 -0
- package/dist/ar-B132r9bo.cjs +659 -0
- package/dist/ar-B132r9bo.cjs.map +1 -0
- package/dist/ar-BLWFJoA_.js +659 -0
- package/dist/ar-BLWFJoA_.js.map +1 -0
- package/dist/attachments-panel-Cxln8xos.cjs +217 -0
- package/dist/attachments-panel-Cxln8xos.cjs.map +1 -0
- package/dist/attachments-panel-H1ucRbwo.js +217 -0
- package/dist/attachments-panel-H1ucRbwo.js.map +1 -0
- package/dist/chrome.cjs +399 -242
- package/dist/chrome.cjs.map +1 -1
- package/dist/chrome.d.cts +5 -35
- package/dist/chrome.d.ts +5 -35
- package/dist/chrome.js +398 -239
- package/dist/chrome.js.map +1 -1
- package/dist/commands-BkgLP3Om.js +1348 -0
- package/dist/commands-BkgLP3Om.js.map +1 -0
- package/dist/commands-DL1gjZt7.cjs +1473 -0
- package/dist/commands-DL1gjZt7.cjs.map +1 -0
- package/dist/commands.cjs +13 -649
- package/dist/commands.d.cts +30 -3
- package/dist/commands.d.ts +30 -3
- package/dist/commands.js +2 -647
- package/dist/comments-panel-BsnWedTh.cjs +514 -0
- package/dist/comments-panel-BsnWedTh.cjs.map +1 -0
- package/dist/comments-panel-D7Eadws9.js +514 -0
- package/dist/comments-panel-D7Eadws9.js.map +1 -0
- package/dist/de-7_MvFWzN.cjs +658 -0
- package/dist/de-7_MvFWzN.cjs.map +1 -0
- package/dist/de-BUhwc9-x.js +658 -0
- package/dist/de-BUhwc9-x.js.map +1 -0
- package/dist/dialog-BIb373cg.js +55 -0
- package/dist/dialog-BIb373cg.js.map +1 -0
- package/dist/dialog-CngKTnAM.cjs +60 -0
- package/dist/dialog-CngKTnAM.cjs.map +1 -0
- package/dist/es-DgYj-1L3.cjs +658 -0
- package/dist/es-DgYj-1L3.cjs.map +1 -0
- package/dist/es-DoXTqFoO.js +658 -0
- package/dist/es-DoXTqFoO.js.map +1 -0
- package/dist/form-design-panel-CgV_5YWC.js +418 -0
- package/dist/form-design-panel-CgV_5YWC.js.map +1 -0
- package/dist/form-design-panel-D0FdmWXW.cjs +418 -0
- package/dist/form-design-panel-D0FdmWXW.cjs.map +1 -0
- package/dist/fr-B-8NDhBA.js +658 -0
- package/dist/fr-B-8NDhBA.js.map +1 -0
- package/dist/fr-C856dmQJ.cjs +658 -0
- package/dist/fr-C856dmQJ.cjs.map +1 -0
- package/dist/he-BFTeNc4t.cjs +659 -0
- package/dist/he-BFTeNc4t.cjs.map +1 -0
- package/dist/he-Dlh0fNXM.js +659 -0
- package/dist/he-Dlh0fNXM.js.map +1 -0
- package/dist/icons-1UfLUZ_y.cjs +1029 -0
- package/dist/icons-1UfLUZ_y.cjs.map +1 -0
- package/dist/icons-7dB0Y1ct.js +875 -0
- package/dist/icons-7dB0Y1ct.js.map +1 -0
- package/dist/index.cjs +3651 -5447
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +646 -144
- package/dist/index.d.ts +646 -144
- package/dist/index.js +3618 -5368
- package/dist/index.js.map +1 -1
- package/dist/it-Bef-2Yxq.cjs +658 -0
- package/dist/it-Bef-2Yxq.cjs.map +1 -0
- package/dist/it-BkirG7ol.js +658 -0
- package/dist/it-BkirG7ol.js.map +1 -0
- package/dist/ja-CGEjCE-s.js +658 -0
- package/dist/ja-CGEjCE-s.js.map +1 -0
- package/dist/ja-DNw2zqSD.cjs +658 -0
- package/dist/ja-DNw2zqSD.cjs.map +1 -0
- package/dist/ko-CTkl5vMh.js +658 -0
- package/dist/ko-CTkl5vMh.js.map +1 -0
- package/dist/ko-YHzeBqP6.cjs +658 -0
- package/dist/ko-YHzeBqP6.cjs.map +1 -0
- package/dist/labels-BiM9wp9K.cjs +21 -0
- package/dist/labels-BiM9wp9K.cjs.map +1 -0
- package/dist/labels-C6_i87Oj.js +16 -0
- package/dist/labels-C6_i87Oj.js.map +1 -0
- package/dist/link-editor-CAS7MZM2.cjs +125 -0
- package/dist/link-editor-CAS7MZM2.cjs.map +1 -0
- package/dist/link-editor-CkwtqRvb.js +125 -0
- package/dist/link-editor-CkwtqRvb.js.map +1 -0
- package/dist/measurement-CQdbnIrn.js +325 -0
- package/dist/measurement-CQdbnIrn.js.map +1 -0
- package/dist/measurement-Cxv1Ahxx.cjs +326 -0
- package/dist/measurement-Cxv1Ahxx.cjs.map +1 -0
- package/dist/nl-BjkbaLq3.cjs +658 -0
- package/dist/nl-BjkbaLq3.cjs.map +1 -0
- package/dist/nl-Dya4sR8_.js +658 -0
- package/dist/nl-Dya4sR8_.js.map +1 -0
- package/dist/outline-panel-BpGtBdj0.cjs +707 -0
- package/dist/outline-panel-BpGtBdj0.cjs.map +1 -0
- package/dist/outline-panel-DO5_REYw.js +707 -0
- package/dist/outline-panel-DO5_REYw.js.map +1 -0
- package/dist/outline-properties-BCa2cc0t.js +330 -0
- package/dist/outline-properties-BCa2cc0t.js.map +1 -0
- package/dist/outline-properties-DT3FIxCw.cjs +330 -0
- package/dist/outline-properties-DT3FIxCw.cjs.map +1 -0
- package/dist/pl-CKKdVnpZ.cjs +658 -0
- package/dist/pl-CKKdVnpZ.cjs.map +1 -0
- package/dist/pl-DA9b5NVg.js +658 -0
- package/dist/pl-DA9b5NVg.js.map +1 -0
- package/dist/print-dialog-BqIrHCBh.cjs +276 -0
- package/dist/print-dialog-BqIrHCBh.cjs.map +1 -0
- package/dist/print-dialog-DvcI2m2_.js +276 -0
- package/dist/print-dialog-DvcI2m2_.js.map +1 -0
- package/dist/pt-DLcszlzi.cjs +658 -0
- package/dist/pt-DLcszlzi.cjs.map +1 -0
- package/dist/pt-Nm8yyjbX.js +658 -0
- package/dist/pt-Nm8yyjbX.js.map +1 -0
- package/dist/redact-confirm-C6EiK8yN.cjs +83 -0
- package/dist/redact-confirm-C6EiK8yN.cjs.map +1 -0
- package/dist/redact-confirm-CKuv9iN_.js +83 -0
- package/dist/redact-confirm-CKuv9iN_.js.map +1 -0
- package/dist/redaction-panel-CgNZ-pQk.js +96 -0
- package/dist/redaction-panel-CgNZ-pQk.js.map +1 -0
- package/dist/redaction-panel-ZhX0dlMi.cjs +96 -0
- package/dist/redaction-panel-ZhX0dlMi.cjs.map +1 -0
- package/dist/search-panel-BE4xzWlm.js +249 -0
- package/dist/search-panel-BE4xzWlm.js.map +1 -0
- package/dist/search-panel-wcbTNG1z.cjs +249 -0
- package/dist/search-panel-wcbTNG1z.cjs.map +1 -0
- package/dist/sheet-DTBFiwde.cjs +461 -0
- package/dist/sheet-DTBFiwde.cjs.map +1 -0
- package/dist/sheet-DyjKfAq0.js +378 -0
- package/dist/sheet-DyjKfAq0.js.map +1 -0
- package/dist/sign-dialog-D5WGx-Yn.cjs +155 -0
- package/dist/sign-dialog-D5WGx-Yn.cjs.map +1 -0
- package/dist/sign-dialog-DerNe8qT.js +155 -0
- package/dist/sign-dialog-DerNe8qT.js.map +1 -0
- package/dist/signature-inspector-Bz6TAfZM.cjs +160 -0
- package/dist/signature-inspector-Bz6TAfZM.cjs.map +1 -0
- package/dist/signature-inspector-CsGr9EBk.js +160 -0
- package/dist/signature-inspector-CsGr9EBk.js.map +1 -0
- package/dist/signature-maker-D_YfBXLn.cjs +393 -0
- package/dist/signature-maker-D_YfBXLn.cjs.map +1 -0
- package/dist/signature-maker-Dnth4rV4.js +393 -0
- package/dist/signature-maker-Dnth4rV4.js.map +1 -0
- package/dist/signatures-panel-Ci_LaI1C.cjs +294 -0
- package/dist/signatures-panel-Ci_LaI1C.cjs.map +1 -0
- package/dist/signatures-panel-DZ9ywrjz.js +294 -0
- package/dist/signatures-panel-DZ9ywrjz.js.map +1 -0
- package/dist/stamp-store-BHvRs-Do.cjs +147 -0
- package/dist/stamp-store-BHvRs-Do.cjs.map +1 -0
- package/dist/stamp-store-WuF-L3Jj.js +112 -0
- package/dist/stamp-store-WuF-L3Jj.js.map +1 -0
- package/dist/stamps-panel-BrczStaz.js +225 -0
- package/dist/stamps-panel-BrczStaz.js.map +1 -0
- package/dist/stamps-panel-Cv9nJBwx.cjs +225 -0
- package/dist/stamps-panel-Cv9nJBwx.cjs.map +1 -0
- package/dist/theme-Be0OZokZ.js +97 -0
- package/dist/theme-Be0OZokZ.js.map +1 -0
- package/dist/theme-FR26JI3r.cjs +126 -0
- package/dist/theme-FR26JI3r.cjs.map +1 -0
- package/dist/toolbar-DF361xWY.js +1565 -0
- package/dist/toolbar-DF361xWY.js.map +1 -0
- package/dist/toolbar-ddvpsvTb.cjs +1660 -0
- package/dist/toolbar-ddvpsvTb.cjs.map +1 -0
- package/dist/zh-cn-BMPPkLpL.js +658 -0
- package/dist/zh-cn-BMPPkLpL.js.map +1 -0
- package/dist/zh-cn-CZOO3p4H.cjs +658 -0
- package/dist/zh-cn-CZOO3p4H.cjs.map +1 -0
- package/package.json +6 -4
- package/src/styles.css +161 -89
- package/dist/commands.cjs.map +0 -1
- package/dist/commands.js.map +0 -1
- package/dist/es-BXLlBo2b.cjs +0 -321
- package/dist/es-BXLlBo2b.cjs.map +0 -1
- package/dist/es-CLgTsFDS.js +0 -321
- package/dist/es-CLgTsFDS.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pl-DA9b5NVg.js","names":[],"sources":["../src/locales/pl.ts"],"sourcesContent":["import type { Locale } from '@embedpdf/react/i18n';\n\n/**\n * Polish pack, in the words Adobe Acrobat's Polish edition uses. Machine-translated from the\n * English pack (`./en.ts`) and not yet reviewed by a native speaker.\n */\nexport const pl: Locale = {\n code: 'pl',\n name: 'Polski',\n translations: {\n measurement: {\n title: 'Pomiary',\n distance: 'Odległość',\n perimeter: 'Obwód',\n area: 'Powierzchnia',\n areaUnit: 'Jednostka powierzchni',\n resetLabel: 'Przywróć położenie etykiety',\n calibrate: 'Kalibruj skalę',\n scale: 'Skala',\n custom: 'Niestandardowa',\n unavailable: 'Niedostępne',\n instructions:\n 'Przeciągnij, aby zmierzyć odległość, a następnie kliknij, aby umieścić linię wymiarową. Klikaj wierzchołki, aby zmierzyć obwód lub powierzchnię, i kliknij dwukrotnie, aby zakończyć. Granice powierzchni nie mogą się przecinać; niedostępnego podglądu nie można zakończyć. Naciśnij Escape, aby anulować. Przeciągnij samą etykietę, aby ją przesunąć.',\n sessionOnly: 'Ten silnik przechowuje kalibrację strony tylko w bieżącej sesji.',\n allPages: 'Zastosuj do wszystkich stron',\n recalculate: 'Przelicz istniejące pomiary',\n preset: 'Predefiniowana skala',\n choosePreset: 'Wybierz skalę',\n unit: 'Jednostka',\n precision: 'Precyzja',\n selection: 'Zaznaczone pomiary',\n report: 'Zaktualizowano: {updated} · Pominięto: {skipped} · Błędy: {failed}',\n knownLength: 'Wprowadź rzeczywistą długość odpowiadającą właśnie narysowanej linii.',\n length: 'Znana długość',\n apply: 'Zastosuj skalę',\n applying: 'Stosowanie…',\n },\n commands: {\n zoom: {\n in: 'Powiększ',\n out: 'Pomniejsz',\n fitPage: 'Dopasuj do strony',\n fitWidth: 'Dopasuj do szerokości',\n automatic: 'Automatycznie',\n menu: 'Powiększenie',\n level: 'Poziom powiększenia',\n p50: '50%',\n p100: '100%',\n p150: '150%',\n p200: '200%',\n p400: '400%',\n },\n pan: 'Przesuń',\n pointer: 'Zaznacz',\n comment: 'Komentarz',\n style: 'Styl',\n menu: 'Menu',\n viewControls: 'Opcje widoku',\n open: 'Otwórz',\n download: 'Pobierz',\n print: 'Drukuj',\n fullscreen: 'Pełny ekran',\n spread: {\n group: 'Układ strony',\n none: 'Jedna strona',\n odd: 'Dwie strony',\n even: 'Strona tytułowa',\n },\n scroll: {\n group: 'Przewijanie',\n vertical: 'Pionowe',\n horizontal: 'Poziome',\n },\n rotate: {\n group: 'Obróć',\n clockwise: 'Obróć w prawo',\n counterclockwise: 'Obróć w lewo',\n },\n mode: {\n measure: 'Pomiar',\n group: 'Tryb',\n view: 'Widok',\n annotate: 'Adnotacje',\n shapes: 'Kształty',\n insert: 'Wstawianie',\n form: 'Formularz',\n redact: 'Zaczernianie',\n },\n annotate: {\n cancelCreation: 'Anuluj rysowanie',\n highlight: 'Wyróżnij',\n strikeout: 'Przekreśl',\n underline: 'Podkreśl',\n squiggly: 'Podkreśl falą',\n ink: 'Rysuj',\n inkHighlight: 'Zakreślacz',\n text: 'Tekst',\n insertText: 'Wstaw tekst',\n replaceText: 'Zastąp tekst',\n callout: 'Objaśnienie',\n note: 'Komentarz',\n link: 'Łącze',\n gotoLink: 'Przejdź do łącza',\n saveFile: 'Zapisz plik',\n removeLink: 'Usuń łącze',\n delete: 'Usuń',\n group: 'Grupuj',\n ungroup: 'Rozgrupuj',\n stampFromSelection: 'Utwórz stempel',\n strip: 'Akcje adnotacji',\n },\n selection: {\n copy: 'Kopiuj',\n strip: 'Akcje zaznaczonego tekstu',\n },\n shapes: {\n rectangle: 'Prostokąt',\n circle: 'Okrąg',\n line: 'Linia',\n arrow: 'Strzałka',\n polygon: 'Wielokąt',\n polyline: 'Linia łamana',\n },\n insert: {\n stamp: 'Stempel',\n attachment: 'Załącz plik',\n signature: 'Podpis',\n image: 'Obraz',\n },\n form: {\n textfield: 'Pole tekstowe',\n checkbox: 'Pole wyboru',\n radio: 'Przycisk opcji',\n select: 'Lista rozwijana',\n listbox: 'Pole listy',\n button: 'Przycisk',\n signature: 'Pole podpisu',\n // The Form mode's design switch, which opens the form designer's sidebar.\n design: 'Projektowanie formularza',\n },\n redact: {\n mark: 'Oznacz do zaczernienia',\n applyAll: 'Zastosuj zaczernienia',\n clearAll: 'Wyczyść oznaczenia',\n },\n undo: 'Cofnij',\n redo: 'Ponów',\n page: {\n next: 'Następna strona',\n previous: 'Poprzednia strona',\n first: 'Pierwsza strona',\n last: 'Ostatnia strona',\n goTo: 'Przejdź do strony',\n },\n find: 'Znajdź',\n shortcuts: 'Skróty klawiaturowe',\n notAllowed: {\n default: 'Działanie niedozwolone: {label}',\n 'annotations-create': 'Dodawanie adnotacji jest niedozwolone',\n 'doc-annotate-modify': 'Zmienianie adnotacji jest niedozwolone',\n 'doc-annotate-read': 'Wyświetlanie adnotacji jest niedozwolone',\n 'doc-attachments-modify': 'Dodawanie plików jest niedozwolone',\n 'doc-download': 'Pobieranie jest niedozwolone',\n 'doc-forms-modify': 'Edytowanie pól formularza jest niedozwolone',\n 'doc-outline-modify': 'Zmienianie zakładek jest niedozwolone',\n 'doc-pages-assemble': 'Zmienianie stron jest niedozwolone',\n 'doc-print': 'Drukowanie jest niedozwolone',\n 'doc-text-copy': 'Kopiowanie jest niedozwolone',\n 'doc-text-search': 'Wyszukiwanie jest niedozwolone',\n },\n attachment: {\n add: 'Dodaj plik',\n save: 'Zapisz',\n goTo: 'Przejdź do strony',\n delete: 'Usuń',\n more: 'Więcej opcji',\n },\n outline: {\n add: 'Dodaj zakładkę',\n addChild: 'Dodaj zakładkę podrzędną',\n rename: 'Zmień nazwę',\n setDestination: 'Ustaw cel na bieżący widok',\n properties: 'Właściwości…',\n delete: 'Usuń',\n expandAll: 'Rozwiń wszystko',\n collapseAll: 'Zwiń wszystko',\n more: 'Więcej opcji',\n },\n // The page commands, in the Pages mode and a page's menu.\n pages: {\n rotateClockwise: 'Obróć stronę w prawo',\n rotateCounterclockwise: 'Obróć stronę w lewo',\n delete: 'Usuń strony',\n duplicate: 'Duplikuj strony',\n insertBlank: 'Wstaw pustą stronę',\n insertFile: 'Wstaw z pliku…',\n extract: 'Wyodrębnij strony',\n selectAll: 'Zaznacz wszystkie strony',\n more: 'Opcje strony',\n },\n turnedOff: 'Niedostępne: {label}',\n },\n passwordPrompt: {\n title: 'Wymagane hasło',\n required: 'Ten dokument jest chroniony hasłem. Wprowadź hasło, aby go otworzyć.',\n incorrect: 'Hasło jest nieprawidłowe. Spróbuj ponownie.',\n incorrectWarning: 'Nieprawidłowe hasło',\n label: 'Hasło',\n placeholder: 'Wprowadź hasło',\n cancel: 'Anuluj',\n open: 'Otwórz',\n opening: 'Otwieranie…',\n },\n dropToOpen: {\n label: 'Upuść plik PDF, aby go otworzyć',\n },\n documentError: {\n title: 'Nie można otworzyć dokumentu',\n unknown: 'Nie udało się otworzyć dokumentu.',\n notFound: 'Nie znaleziono pliku.',\n notAllowed: 'Nie masz dostępu do tego dokumentu.',\n damaged: 'Ten plik nie jest plikiem PDF lub jest uszkodzony.',\n unsupported: 'Ta przeglądarka nie może otworzyć tego rodzaju dokumentu.',\n retry: 'Spróbuj ponownie',\n close: 'Zamknij dokument',\n },\n tabs: {\n close: 'Zamknij {name}',\n loading: 'Wczytywanie',\n untitled: 'Dokument {id}',\n },\n closeUnsaved: {\n title: 'Zamknąć bez zapisywania?',\n body: '„{name}” zawiera zmiany, które nie zostały pobrane. Zostaną utracone.',\n cancel: 'Anuluj',\n close: 'Zamknij bez zapisywania',\n },\n viewOnly: {\n label: 'Tylko do odczytu',\n turnedOff: 'Narzędzia zmieniające ten dokument są wyłączone',\n notAllowed: 'Możesz czytać ten dokument, ale nie możesz go zmieniać',\n },\n panel: {\n close: 'Zamknij',\n resize: 'Zmień rozmiar panelu {title}',\n },\n menu: {\n back: 'Wstecz',\n },\n shortcuts: {\n document: 'Dokument',\n viewing: 'Wyświetlanie',\n editing: 'Edycja',\n other: 'Inne',\n },\n goToPage: {\n go: 'Przejdź',\n },\n print: {\n title: 'Drukuj',\n pages: 'Strony',\n allPages: 'Wszystkie strony',\n currentPage: 'Bieżąca strona',\n range: 'Niestandardowe',\n rangeLabel: 'Strony do wydrukowania',\n rangePlaceholder: 'np. 1-3, 5',\n rangeInvalid: 'Numery stron od 1 do {total}, np. 1-3, 5',\n annotations: 'Drukuj adnotacje',\n preparing: 'Przygotowywanie…',\n preparingPage: 'Przygotowywanie strony {page} z {total}…',\n ready: 'Gotowe do druku.',\n images: 'Strony są drukowane jako obrazy w rozdzielczości {dpi} DPI.',\n lowResolution: 'Ten dokument pozwala drukować tylko w niskiej rozdzielczości ({dpi} DPI).',\n failed: 'Nie udało się przygotować wydruku.',\n cancel: 'Anuluj',\n print: 'Drukuj',\n },\n panels: {\n thumbnails: 'Miniatury',\n outline: 'Zakładki',\n attachments: 'Załączniki',\n search: 'Wyszukaj',\n comments: 'Komentarze',\n style: 'Styl',\n stamps: 'Stemple',\n signatures: 'Podpisy',\n redaction: 'Zaczernienia',\n measurement: 'Pomiary',\n formDesign: 'Projektowanie formularza',\n switch: 'Przełącz panel',\n },\n annotation: {\n comment: 'Komentarz',\n highlight: 'Wyróżnienie',\n underline: 'Podkreślenie',\n squiggly: 'Podkreślenie faliste',\n strikeout: 'Przekreślenie',\n square: 'Kwadrat',\n circle: 'Okrąg',\n line: 'Linia',\n polygon: 'Wielokąt',\n polyline: 'Linia łamana',\n ink: 'Rysunek',\n freeText: 'Tekst',\n stamp: 'Stempel',\n caret: 'Znak wstawiania',\n redact: 'Zaczernienie',\n fileAttachment: 'Załącznik',\n // The style panel's labels, as the annotation kinds name them (`labelKey`), by wording:\n // one field is called different things by different kinds.\n style: {\n opacity: 'Krycie',\n stroke: 'Obrys',\n fill: 'Wypełnienie',\n color: 'Kolor',\n strokeWidth: 'Grubość obrysu',\n border: 'Obramowanie',\n borderStyle: 'Styl obramowania',\n borderColor: 'Kolor obramowania',\n borderWidth: 'Grubość obramowania',\n background: 'Tło',\n outline: 'Kontur',\n lineEndings: 'Zakończenia linii',\n blendMode: 'Tryb mieszania',\n font: 'Czcionka',\n fontSize: 'Rozmiar czcionki',\n textColor: 'Kolor tekstu',\n bold: 'Pogrubienie',\n italic: 'Kursywa',\n underline: 'Podkreślenie',\n align: 'Wyrównaj',\n alignment: 'Wyrównanie',\n label: 'Etykieta',\n labelFont: 'Czcionka etykiety',\n labelSize: 'Rozmiar etykiety',\n labelColor: 'Kolor etykiety',\n icon: 'Ikona',\n link: 'Łącze',\n },\n // The annotation flags (`/F`).\n flags: {\n print: 'Drukuj',\n hidden: 'Ukryta',\n noView: 'Bez wyświetlania',\n toggleNoView: 'Przełączaj brak wyświetlania',\n readOnly: 'Tylko do odczytu',\n locked: 'Zablokowana',\n lockedContents: 'Zablokowana zawartość',\n noZoom: 'Bez powiększania',\n noRotate: 'Bez obracania',\n invisible: 'Niewidoczna',\n },\n borderStyles: { solid: 'Ciągły', dashed: 'Przerywany', cloudy: 'Chmurka' },\n lineEndings: {\n none: 'Brak',\n square: 'Kwadrat',\n circle: 'Okrąg',\n diamond: 'Romb',\n openArrow: 'Otwarta strzałka',\n closedArrow: 'Zamknięta strzałka',\n butt: 'Kreska poprzeczna',\n reverseOpenArrow: 'Odwrócona otwarta strzałka',\n reverseClosedArrow: 'Odwrócona zamknięta strzałka',\n slash: 'Ukośnik',\n },\n blendModes: {\n normal: 'Zwykły',\n multiply: 'Pomnóż',\n screen: 'Mnożenie odwrotne',\n overlay: 'Nakładka',\n darken: 'Ciemniej',\n lighten: 'Rozjaśnij',\n colorDodge: 'Rozjaśnianie',\n colorBurn: 'Ściemnianie',\n hardLight: 'Ostre światło',\n softLight: 'Łagodne światło',\n difference: 'Różnica',\n exclusion: 'Wykluczenie',\n hue: 'Barwa',\n saturation: 'Nasycenie',\n color: 'Kolor',\n luminosity: 'Jasność',\n },\n // The standard PDF fonts, by their names: a language may keep them as they are.\n fonts: {\n courier: 'Courier',\n courierBold: 'Courier Bold',\n courierBoldOblique: 'Courier Bold Oblique',\n courierOblique: 'Courier Oblique',\n helvetica: 'Helvetica',\n helveticaBold: 'Helvetica Bold',\n helveticaBoldOblique: 'Helvetica Bold Oblique',\n helveticaOblique: 'Helvetica Oblique',\n timesRoman: 'Times Roman',\n timesBold: 'Times Bold',\n timesBoldItalic: 'Times Bold Italic',\n timesItalic: 'Times Italic',\n symbol: 'Symbol',\n zapfDingbats: 'Zapf Dingbats',\n },\n alignments: { left: 'Do lewej', center: 'Do środka', right: 'Do prawej' },\n noteIcons: {\n comment: 'Komentarz',\n key: 'Klucz',\n note: 'Notatka',\n help: 'Pomoc',\n newParagraph: 'Nowy akapit',\n paragraph: 'Akapit',\n insert: 'Wstaw',\n },\n attachmentIcons: {\n pushPin: 'Pinezka',\n paperclip: 'Spinacz',\n graph: 'Wykres',\n tag: 'Znacznik',\n },\n },\n // A form field's settings, as the form plugin names them (`labelKey`).\n form: {\n settings: {\n name: 'Nazwa',\n tooltip: 'Etykietka narzędzia',\n required: 'Wymagane',\n readOnly: 'Tylko do odczytu',\n noExport: 'Nie eksportuj',\n defaultValue: 'Wartość domyślna',\n maxLength: 'Maksymalna długość',\n multiline: 'Wiele wierszy',\n password: 'Hasło',\n comb: 'Jeden znak na pole',\n radiosInUnison: 'Przyciski o tej samej wartości włączają się razem',\n keepOneOn: 'Jeden zawsze włączony',\n options: 'Opcje',\n allowTyping: 'Zezwalaj na wpisywanie',\n multiSelect: 'Wielokrotny wybór',\n },\n },\n // A thumbnail's tooltip.\n thumbnails: { page: 'Strona {page}' },\n // The form designer's sidebar: the fields by page, and the selected one's buttons.\n formDesign: {\n empty: 'Brak pól. Wybierz narzędzie pola, aby dodać pole.',\n page: 'Strona {page}',\n allFields: 'Wszystkie pola',\n buttons: 'Przyciski',\n boxes: 'Pola wyboru',\n box: 'Pole wyboru {number}',\n addButton: 'Dodaj przycisk',\n addBox: 'Dodaj pole wyboru',\n },\n // The style panel's own words around the properties.\n stylePanel: {\n mixed: '(różne)',\n // A color swatch that takes the color away.\n transparent: 'Przezroczysty',\n lineStart: 'Początek',\n lineEnd: 'Koniec',\n empty: 'Wybierz narzędzie rysowania lub zaznacz adnotację, aby edytować jej styl.',\n selected: 'Zaznaczone: {count}',\n toolDefaults: 'Ustawienia domyślne: {tool}',\n defaults: 'Ustawienia domyślne',\n },\n // The flags section of the style panel: its title, and what each flag does.\n annotationFlags: {\n title: 'Flagi (/F)',\n print: 'Uwzględniaj podczas drukowania strony',\n hidden: 'Niewidoczna nigdzie: ekran, kliknięcia, wydruk',\n noView: 'Ukryta na ekranie, ale może zostać wydrukowana',\n toggleNoView: 'Pokazuj niewyświetlaną adnotację, gdy jest zaznaczona',\n readOnly: 'Widoczna, ale nie reaguje na kliknięcia',\n locked: 'Bez przenoszenia / zmiany rozmiaru / usuwania / zmiany stylu',\n lockedContents: 'Tekst nie może się zmienić; geometria tak',\n noZoom: 'Stały rozmiar na ekranie (zakotwiczona w lewym górnym rogu)',\n noRotate: 'Pozostaje pionowo, gdy strona się obraca',\n invisible: 'Przestarzała: ukrywa nieznane podtypy',\n },\n // The link editor over a selected annotation.\n attachments: {\n loading: 'Wczytywanie załączników…',\n failed: 'Nie udało się odczytać załączników.',\n empty: 'Ten dokument nie ma załączonych plików',\n drop: 'Upuść pliki, aby je załączyć',\n dropHint: 'Lub upuść pliki tutaj',\n adding: 'Dodawanie…',\n onPage: 'Strona {page}',\n count: '{count} plik',\n countPlural: 'Pliki: {count}',\n },\n outline: {\n filter: 'Filtruj zakładki',\n loading: 'Wczytywanie zakładek…',\n failed: 'Nie udało się odczytać zakładek.',\n empty: 'Ten dokument nie ma zakładek',\n noMatches: 'Brak pasujących zakładek',\n incomplete: 'Nie udało się odczytać części zakładek.',\n untitled: 'Bez tytułu',\n properties: {\n title: 'Właściwości zakładki',\n name: 'Tytuł',\n color: 'Kolor',\n noColor: 'Brak',\n customColor: 'Własny kolor',\n bold: 'Pogrubienie',\n italic: 'Kursywa',\n open: 'Rozwinięta po otwarciu dokumentu',\n target: 'Cel',\n targetNone: 'Brak',\n targetView: 'Bieżący widok',\n targetNamed: 'Akcja strony',\n targetKept: 'Bez zmian',\n keptNote:\n 'Ta zakładka uruchamia skrypt lub otwiera inny plik. Nie można jej tutaj zmienić.',\n fit: 'Dopasowanie',\n fitKept: 'Bez zmian',\n save: 'Zapisz',\n cancel: 'Anuluj',\n },\n },\n linkEditor: {\n toUrl: 'Łącze do adresu URL',\n url: 'URL',\n toPage: 'Łącze do strony',\n page: 'Strona',\n urlPlaceholder: 'https://…',\n pagePlaceholder: 'Numer strony',\n add: 'Dodaj łącze',\n update: 'Aktualizuj łącze',\n },\n demo: {\n starting: 'Uruchamianie przeglądarki…',\n opening: 'Otwieranie dokumentu…',\n more: 'Więcej',\n searchPlaceholder: 'Szukaj w dokumencie…',\n searchCaseSensitive: 'Uwzględniaj wielkość liter',\n searchWholeWord: 'Całe wyrazy',\n searchRegex: 'Wyrażenie regularne',\n searchSearching: 'Wyszukiwanie…',\n searchResults: 'Znalezione wyniki: {count}',\n searchNoResults: 'Brak wyników',\n searchPrevious: 'Poprzedni wynik',\n searchNext: 'Następny wynik',\n searchPage: 'Strona {page}',\n commentsForbidden: 'Nie masz dostępu do komentarzy w tym dokumencie.',\n commentsLoading: 'Wczytywanie komentarzy…',\n commentsError: 'Nie udało się wczytać komentarzy.',\n commentsRetry: 'Ponów próbę',\n commentsEmpty: 'Brak komentarzy. Użyj narzędzia notatki, aby rozpocząć wątek.',\n commentsEmptyReadOnly: 'Ten dokument nie ma komentarzy.',\n commentsAnonymous: 'Nieznany',\n commentsPage: 'Strona {page}',\n commentCount: 'Komentarze: {count}',\n commentCountPlural: 'Komentarze: {count}',\n commentsReply: 'Odpowiedz',\n commentsReplyPlaceholder: 'Odpowiedz…',\n commentsAddPlaceholder: 'Dodaj komentarz…',\n commentsDelete: 'Usuń komentarz',\n commentsDeleteThread: 'Usuń wątek',\n commentsEdit: 'Edytuj komentarz',\n commentsStatus: 'Stan',\n commentsStatusNone: 'Brak stanu',\n commentsStatusAccepted: 'Zaakceptowany',\n commentsStatusRejected: 'Odrzucony',\n commentsStatusCancelled: 'Anulowany',\n commentsStatusCompleted: 'Ukończony',\n empty: 'W tym panelu demonstracyjnym nic jeszcze nie ma.',\n page: 'Strona {current} z {total}',\n goToPage: 'Przejdź do strony',\n cancel: 'Anuluj',\n pageBadge: 'str. {page}',\n redactionEmpty:\n 'Brak oczekujących zaczernień. Użyj narzędzia Zaczernianie, aby oznaczyć tekst lub obszary.',\n redactionArea: 'Oznaczenie obszaru',\n redactionText: 'Oznaczenie tekstu',\n redactionRemove: 'Usuń oznaczenie',\n redactConfirmTitle: 'Zastosować zaczernienia?',\n redactConfirmBody:\n 'Zawartość pod oznaczeniami do zaczernienia (liczba: {count}) zostanie trwale usunięta. Tej operacji nie można cofnąć.',\n redactConfirmCollateral: 'Zostaną również usunięte inne adnotacje (liczba: {count}).',\n redactApply: 'Zastosuj',\n redactApplying: 'Stosowanie…',\n formatLabel: 'Format',\n fieldSettingsTitle: 'Pole',\n fieldOptionLabel: 'Etykieta',\n fieldOptionValue: 'Wartość',\n fieldOptionAdd: 'Dodaj opcję',\n fieldOptionRemove: 'Usuń opcję',\n fieldNone: 'Brak',\n redactLabelTitle: 'Etykieta zaczernienia',\n redactLabelPlaceholder: 'np. UTAJNIONO',\n redactLabelRepeat: 'Powtarzaj etykietę w całym obszarze',\n stampsAll: 'Wszystkie stemple',\n stampsLoading: 'Wczytywanie stempli…',\n stampsEmpty: 'Brak stempli. Zaimportuj plik PDF, aby każdą jego stronę zamienić w stempel.',\n stampsRemoveStamp: 'Usuń stempel',\n stampsArmedHint: 'Kliknij stronę, aby umieścić stempel.',\n stampsImport: 'Importuj PDF…',\n stampsImporting: 'Importowanie…',\n stampsImportHint:\n 'Zaimportuj plik PDF jako bibliotekę stempli — każda strona stanie się jednym stemplem.',\n stampsRemoveLibrary: 'Usuń bibliotekę',\n stampsExportLibrary: 'Eksportuj bibliotekę jako PDF',\n stampsCustomLibrary: 'Moje stemple',\n stampsCustomLabel: 'Stempel niestandardowy',\n stampsError: 'Nie udało się wczytać wbudowanych stempli.',\n stampsArmError: 'Nie udało się aktywować tego stempla.',\n stampsImportError: 'Nie udało się zaimportować tego pliku PDF jako biblioteki stempli.',\n quickStampsLabel: 'Szybkie stemple',\n signaturesEmpty: 'Brak podpisów. Utwórz podpis, aby móc podpisywać.',\n signaturesNew: 'Nowy podpis…',\n signaturesArmedHint:\n 'Kliknij pole podpisu, aby je podpisać, lub dowolne miejsce na stronie, aby umieścić znak.',\n signaturesTargetHint: 'Wybierz znak dla zaznaczonego pola.',\n signaturesInDocument: 'W tym dokumencie',\n signaturesNone: 'Ten dokument nie ma pól podpisu.',\n signaturesValidate: 'Zweryfikuj',\n signaturesValidating: 'Weryfikowanie…',\n signaturesSigned: 'Podpisano',\n signaturesUnsigned: 'Nie podpisano',\n signaturesRename: 'Zmień nazwę',\n signaturesRemove: 'Usuń',\n signaturesExport: 'Eksportuj jako PDF',\n signaturesAddInitials: 'Dodaj inicjały',\n signatureLabel: 'Podpis',\n initialsLabel: 'Inicjały',\n makerTitle: 'Nowy podpis',\n makerName: 'Imię i nazwisko',\n makerNamePlaceholder: 'Twoje imię i nazwisko',\n makerDraw: 'Rysuj',\n makerType: 'Wpisz',\n makerUpload: 'Prześlij',\n makerTypePlaceholder: 'Wpisz swoje imię i nazwisko',\n makerFont: 'Czcionka',\n makerUploadHint: 'Wybierz plik PNG, JPEG lub jednostronicowy PDF',\n makerClear: 'Wyczyść',\n makerOptional: '(opcjonalnie)',\n makerSave: 'Zapisz',\n makerSaving: 'Zapisywanie…',\n makerError: 'Nie udało się zapisać podpisu.',\n signTitle: 'Podpisz to pole',\n signReason: 'Powód',\n signLocation: 'Miejsce',\n signKind: 'Co może się później zmienić',\n signKindApproval:\n 'Podpis zatwierdzający — wypełnianie formularzy i kolejne podpisy pozostają ważne',\n signKindCertifyAnnotate:\n 'Certyfikuj — zezwalaj na komentarze, wypełnianie formularzy i podpisy',\n signKindCertifyFill: 'Certyfikuj — zezwalaj tylko na wypełnianie formularzy i podpisy',\n signKindCertifyLocked: 'Certyfikuj — nie zezwalaj na zmiany',\n signButton: 'Podpisz',\n signSigning: 'Podpisywanie…',\n signFill: 'Umieść bez podpisywania',\n signError: 'Nie udało się podpisać pola.',\n inspectTitle: 'Podpis',\n inspectSigner: 'Podpisany przez',\n inspectReason: 'Powód',\n inspectLocation: 'Miejsce',\n inspectTime: 'Data i godzina',\n inspectIntegrity: 'Dokument',\n inspectCryptography: 'Podpis',\n inspectTrust: 'Podpisujący',\n inspectChanges: 'Późniejsze zmiany',\n inspectDownload: 'Pobierz podpisaną wersję',\n verdictValid: 'Ważny',\n verdictValidUntrusted: 'Ważny, podpisujący niezaufany',\n verdictInvalid: 'Nieważny — dokument zmieniono po podpisaniu',\n verdictWillInvalidate: 'Ważny, nieważny po zapisaniu',\n signaturesInvalidating:\n 'Ta zmiana unieważni podpis w polu {field} po zapisaniu dokumentu. Cofnij ją, aby zachować podpis.',\n verdictIndeterminate: 'Nie można zweryfikować',\n verdictUnchanged: 'Brak',\n verdictRestored: 'Zmienione, a następnie przywrócone',\n inspectLaterRevisions: 'Wersje po podpisaniu',\n verdictPermitted: 'Dozwolone',\n verdictForbidden: 'Niedozwolone',\n },\n },\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
const require_commands = require("./commands-DL1gjZt7.cjs");
|
|
2
|
+
const require_dialog = require("./dialog-CngKTnAM.cjs");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let _embedpdf_react_runtime = require("@embedpdf/react/runtime");
|
|
5
|
+
let _embedpdf_react_stage = require("@embedpdf/react/stage");
|
|
6
|
+
let _embedpdf_react_i18n = require("@embedpdf/react/i18n");
|
|
7
|
+
let _embedpdf_react_shell = require("@embedpdf/react/shell");
|
|
8
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
//#region src/ui/print-pages.ts
|
|
10
|
+
/**
|
|
11
|
+
* The pages a Print dialog's range names, as people type them: page numbers counted from 1, and
|
|
12
|
+
* ranges of them, separated by commas ("1-3, 5"). They come out in the document's order, each
|
|
13
|
+
* once, as the browser's own print dialog prints them. `null` when the text names no page, or a
|
|
14
|
+
* page the document doesn't have.
|
|
15
|
+
*/
|
|
16
|
+
function pagesInRange(text, pageCount) {
|
|
17
|
+
const parts = text.split(/[,,、،]/).map((part) => part.trim()).filter((part) => part !== "");
|
|
18
|
+
if (parts.length === 0) return null;
|
|
19
|
+
const pages = /* @__PURE__ */ new Set();
|
|
20
|
+
for (const part of parts) {
|
|
21
|
+
const match = /^(\d+)(?:\s*[-–]\s*(\d+))?$/.exec(part);
|
|
22
|
+
if (!match) return null;
|
|
23
|
+
const first = Number(match[1]);
|
|
24
|
+
const last = match[2] === void 0 ? first : Number(match[2]);
|
|
25
|
+
if (first < 1 || first > last || last > pageCount) return null;
|
|
26
|
+
for (let page = first; page <= last; page += 1) pages.add(page);
|
|
27
|
+
}
|
|
28
|
+
return [...pages].sort((a, b) => a - b);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/ui/print-dialog.tsx
|
|
32
|
+
/**
|
|
33
|
+
* The Print dialog, which `document:print` opens: every page, the current page or a range of
|
|
34
|
+
* them, and whether annotations print. Nothing is made while the user chooses: Print prepares
|
|
35
|
+
* the printout the choices describe, shows how far that is, and opens the browser's print dialog
|
|
36
|
+
* as soon as it is ready. Safari prints only from a tap, and the one on Print was spent preparing,
|
|
37
|
+
* so there the printout waits for another (`PreparedPrint.needsTap`). Cancel stops it at any
|
|
38
|
+
* point. Form fields always print, each as its own print setting says; annotations follow
|
|
39
|
+
* theirs.
|
|
40
|
+
*/
|
|
41
|
+
/** The pages a choice names: `undefined` for every page, `null` when it names none. */
|
|
42
|
+
function chosenPages(choice, pages, currentIndex, range) {
|
|
43
|
+
if (choice === "all") return void 0;
|
|
44
|
+
if (choice === "current") {
|
|
45
|
+
const page = pages[currentIndex];
|
|
46
|
+
return page ? [page.ref] : null;
|
|
47
|
+
}
|
|
48
|
+
return pagesInRange(range, pages.length)?.map((page) => pages[page - 1].ref) ?? null;
|
|
49
|
+
}
|
|
50
|
+
/** Cancel the printout on its way, or free the one made. */
|
|
51
|
+
function drop(held) {
|
|
52
|
+
held.current?.cancel.abort();
|
|
53
|
+
held.current?.prepared?.dispose();
|
|
54
|
+
held.current = null;
|
|
55
|
+
}
|
|
56
|
+
function PrintDialog() {
|
|
57
|
+
const surface = (0, _embedpdf_react_shell.useSurface)(require_commands.PRINT_DIALOG);
|
|
58
|
+
return surface.isOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PrintForm, { onClose: surface.close }) : null;
|
|
59
|
+
}
|
|
60
|
+
function PrintForm({ onClose }) {
|
|
61
|
+
const t = (0, _embedpdf_react_i18n.useT)();
|
|
62
|
+
const titleId = (0, react.useId)();
|
|
63
|
+
const rangeId = (0, react.useId)();
|
|
64
|
+
const choiceName = (0, react.useId)();
|
|
65
|
+
const documents = (0, _embedpdf_react_runtime.useDocuments)();
|
|
66
|
+
const documentId = (0, _embedpdf_react_runtime.useDocumentId)();
|
|
67
|
+
const pages = (0, _embedpdf_react_runtime.usePageList)();
|
|
68
|
+
const currentIndex = (0, _embedpdf_react_stage.useStageState)((state) => state.currentPageIndex);
|
|
69
|
+
const [choice, setChoice] = (0, react.useState)("all");
|
|
70
|
+
const [range, setRange] = (0, react.useState)("");
|
|
71
|
+
const [includeAnnotations, setIncludeAnnotations] = (0, react.useState)(true);
|
|
72
|
+
const [job, setJob] = (0, react.useState)({ kind: "choosing" });
|
|
73
|
+
const held = (0, react.useRef)(null);
|
|
74
|
+
const cancelButton = (0, react.useRef)(null);
|
|
75
|
+
const printButton = (0, react.useRef)(null);
|
|
76
|
+
const quality = documents.getPrintQuality(documentId ?? void 0);
|
|
77
|
+
const chosen = chosenPages(choice, pages, currentIndex, range);
|
|
78
|
+
(0, react.useEffect)(() => () => drop(held), []);
|
|
79
|
+
const print = (prepared) => {
|
|
80
|
+
setJob({ kind: "printing" });
|
|
81
|
+
prepared.print().then(onClose, (error) => {
|
|
82
|
+
console.warn("[embedpdf] print failed", error);
|
|
83
|
+
setJob({ kind: "failed" });
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const prepare = (pagesToPrint) => {
|
|
87
|
+
drop(held);
|
|
88
|
+
const job = {
|
|
89
|
+
cancel: new AbortController(),
|
|
90
|
+
prepared: null
|
|
91
|
+
};
|
|
92
|
+
const { signal } = job.cancel;
|
|
93
|
+
held.current = job;
|
|
94
|
+
setJob({
|
|
95
|
+
kind: "preparing",
|
|
96
|
+
progress: null
|
|
97
|
+
});
|
|
98
|
+
documents.preparePrint(documentId ?? void 0, {
|
|
99
|
+
...pagesToPrint ? { pages: pagesToPrint } : {},
|
|
100
|
+
includeAnnotations,
|
|
101
|
+
signal,
|
|
102
|
+
onProgress: (progress) => {
|
|
103
|
+
if (!signal.aborted) setJob({
|
|
104
|
+
kind: "preparing",
|
|
105
|
+
progress
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}).then((prepared) => {
|
|
109
|
+
if (signal.aborted) return prepared.dispose();
|
|
110
|
+
job.prepared = prepared;
|
|
111
|
+
if (prepared.needsTap) setJob({
|
|
112
|
+
kind: "ready",
|
|
113
|
+
prepared
|
|
114
|
+
});
|
|
115
|
+
else print(prepared);
|
|
116
|
+
}, (error) => {
|
|
117
|
+
if (signal.aborted) return;
|
|
118
|
+
console.warn("[embedpdf] preparing the printout failed", error);
|
|
119
|
+
setJob({ kind: "failed" });
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
(0, react.useEffect)(() => {
|
|
123
|
+
if (job.kind === "preparing" && job.progress === null) cancelButton.current?.focus();
|
|
124
|
+
if (job.kind === "ready") printButton.current?.focus();
|
|
125
|
+
}, [job]);
|
|
126
|
+
const choosing = job.kind === "choosing" || job.kind === "failed";
|
|
127
|
+
const status = job.kind === "preparing" ? job.progress && job.progress.pagesRendered > 0 ? t("print.preparingPage", { params: {
|
|
128
|
+
page: Math.min(job.progress.pagesRendered + 1, job.progress.pageCount),
|
|
129
|
+
total: job.progress.pageCount
|
|
130
|
+
} }) : t("print.preparing") : job.kind === "ready" ? t("print.ready") : job.kind === "failed" ? t("print.failed") : null;
|
|
131
|
+
const note = quality?.kind !== "images" ? null : quality.dpi < 300 ? t("print.lowResolution", { params: { dpi: quality.dpi } }) : t("print.images", { params: { dpi: quality.dpi } });
|
|
132
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_dialog.Dialog, {
|
|
133
|
+
labelledBy: titleId,
|
|
134
|
+
onClose: () => {
|
|
135
|
+
if (job.kind !== "printing") onClose();
|
|
136
|
+
},
|
|
137
|
+
className: "border-border bg-surface w-96 rounded-lg border p-4 shadow-xl",
|
|
138
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
139
|
+
onSubmit: (event) => {
|
|
140
|
+
event.preventDefault();
|
|
141
|
+
if (job.kind === "ready") print(job.prepared);
|
|
142
|
+
else if (choosing && chosen !== null) prepare(chosen);
|
|
143
|
+
},
|
|
144
|
+
children: [
|
|
145
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
146
|
+
id: titleId,
|
|
147
|
+
className: "text-fg text-base font-semibold",
|
|
148
|
+
children: t("print.title")
|
|
149
|
+
}),
|
|
150
|
+
choosing ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
151
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
152
|
+
className: "mt-3",
|
|
153
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", {
|
|
154
|
+
className: "text-fg-secondary text-sm font-medium",
|
|
155
|
+
children: t("print.pages")
|
|
156
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
157
|
+
className: "mt-1 flex flex-col gap-1",
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Choice, {
|
|
160
|
+
name: choiceName,
|
|
161
|
+
checked: choice === "all",
|
|
162
|
+
onChoose: () => setChoice("all"),
|
|
163
|
+
label: t("print.allPages")
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Choice, {
|
|
166
|
+
name: choiceName,
|
|
167
|
+
checked: choice === "current",
|
|
168
|
+
onChoose: () => setChoice("current"),
|
|
169
|
+
label: t("print.currentPage")
|
|
170
|
+
}),
|
|
171
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
172
|
+
className: "flex items-center gap-2",
|
|
173
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Choice, {
|
|
174
|
+
name: choiceName,
|
|
175
|
+
checked: choice === "range",
|
|
176
|
+
onChoose: () => setChoice("range"),
|
|
177
|
+
label: t("print.range"),
|
|
178
|
+
controls: rangeId
|
|
179
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
180
|
+
id: rangeId,
|
|
181
|
+
type: "text",
|
|
182
|
+
inputMode: "numeric",
|
|
183
|
+
"aria-label": t("print.rangeLabel"),
|
|
184
|
+
"aria-invalid": choice === "range" && chosen === null,
|
|
185
|
+
placeholder: t("print.rangePlaceholder"),
|
|
186
|
+
value: range,
|
|
187
|
+
onFocus: () => setChoice("range"),
|
|
188
|
+
onChange: (event) => setRange(event.target.value),
|
|
189
|
+
className: "border-border bg-surface text-fg focus:border-accent focus:ring-accent min-w-0 flex-1 rounded-md border px-1.5 py-1 text-sm tabular-nums outline-none focus:ring-1 aria-[invalid=true]:border-red-600"
|
|
190
|
+
})]
|
|
191
|
+
}),
|
|
192
|
+
choice === "range" && chosen === null && range.trim() !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
193
|
+
className: "text-xs text-red-600",
|
|
194
|
+
children: t("print.rangeInvalid", { params: { total: pages.length } })
|
|
195
|
+
}) : null
|
|
196
|
+
]
|
|
197
|
+
})]
|
|
198
|
+
}),
|
|
199
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
200
|
+
className: "mt-3 flex cursor-pointer items-center gap-2 text-sm",
|
|
201
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
202
|
+
type: "checkbox",
|
|
203
|
+
className: "accent-accent",
|
|
204
|
+
checked: includeAnnotations,
|
|
205
|
+
onChange: (event) => setIncludeAnnotations(event.target.checked)
|
|
206
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
207
|
+
className: "text-fg",
|
|
208
|
+
children: t("print.annotations")
|
|
209
|
+
})]
|
|
210
|
+
}),
|
|
211
|
+
note ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
212
|
+
className: "text-fg-muted mt-3 text-xs",
|
|
213
|
+
children: note
|
|
214
|
+
}) : null
|
|
215
|
+
] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProgressBar, {
|
|
216
|
+
progress: job.kind === "preparing" ? job.progress : null,
|
|
217
|
+
done: job.kind !== "preparing"
|
|
218
|
+
}),
|
|
219
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
220
|
+
role: "status",
|
|
221
|
+
className: "text-fg-muted mt-2 min-h-5 text-sm",
|
|
222
|
+
children: status
|
|
223
|
+
}),
|
|
224
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
225
|
+
className: "mt-3 flex justify-end gap-2",
|
|
226
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
227
|
+
ref: cancelButton,
|
|
228
|
+
type: "button",
|
|
229
|
+
disabled: job.kind === "printing",
|
|
230
|
+
onClick: onClose,
|
|
231
|
+
className: "border-border text-fg hover:bg-hover rounded-md border px-3 py-1.5 text-sm",
|
|
232
|
+
children: t("print.cancel")
|
|
233
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
234
|
+
ref: printButton,
|
|
235
|
+
type: "submit",
|
|
236
|
+
disabled: choosing ? chosen === null : job.kind !== "ready",
|
|
237
|
+
className: "bg-accent text-on-accent hover:bg-accent-hover rounded-md px-3 py-1.5 text-sm disabled:opacity-60",
|
|
238
|
+
children: t("print.print")
|
|
239
|
+
})]
|
|
240
|
+
})
|
|
241
|
+
]
|
|
242
|
+
})
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* How far preparing got: the bar moves until the first page is ready (a PDF copy arrives all at
|
|
247
|
+
* once), then fills page by page. Full once the printout is made.
|
|
248
|
+
*/
|
|
249
|
+
function ProgressBar({ progress, done }) {
|
|
250
|
+
const fraction = done ? 1 : progress && progress.pagesRendered > 0 ? progress.pagesRendered / progress.pageCount : null;
|
|
251
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
252
|
+
"aria-hidden": "true",
|
|
253
|
+
className: "bg-hover mt-4 h-1.5 overflow-hidden rounded-full",
|
|
254
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
255
|
+
className: `bg-accent h-full rounded-full transition-[width] ${fraction === null ? "w-full animate-pulse" : ""}`,
|
|
256
|
+
style: fraction === null ? void 0 : { width: `${fraction * 100}%` }
|
|
257
|
+
})
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
function Choice({ name, checked, onChoose, label, controls }) {
|
|
261
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
262
|
+
className: "text-fg flex cursor-pointer items-center gap-2 text-sm",
|
|
263
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
264
|
+
type: "radio",
|
|
265
|
+
name,
|
|
266
|
+
className: "accent-accent",
|
|
267
|
+
checked,
|
|
268
|
+
onChange: onChoose,
|
|
269
|
+
"aria-controls": controls
|
|
270
|
+
}), label]
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
//#endregion
|
|
274
|
+
exports.PrintDialog = PrintDialog;
|
|
275
|
+
|
|
276
|
+
//# sourceMappingURL=print-dialog-BqIrHCBh.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-dialog-BqIrHCBh.cjs","names":["PRINT_DIALOG","Dialog"],"sources":["../src/ui/print-pages.ts","../src/ui/print-dialog.tsx"],"sourcesContent":["/**\n * The pages a Print dialog's range names, as people type them: page numbers counted from 1, and\n * ranges of them, separated by commas (\"1-3, 5\"). They come out in the document's order, each\n * once, as the browser's own print dialog prints them. `null` when the text names no page, or a\n * page the document doesn't have.\n */\nexport function pagesInRange(text: string, pageCount: number): number[] | null {\n const parts = text\n // The comma, and the commas Chinese, Japanese and Arabic keyboards type.\n .split(/[,,、،]/)\n .map((part) => part.trim())\n .filter((part) => part !== '');\n if (parts.length === 0) return null;\n const pages = new Set<number>();\n for (const part of parts) {\n // A hyphen or an en dash, which some keyboards type for \"to\".\n const match = /^(\\d+)(?:\\s*[-–]\\s*(\\d+))?$/.exec(part);\n if (!match) return null;\n const first = Number(match[1]);\n const last = match[2] === undefined ? first : Number(match[2]);\n if (first < 1 || first > last || last > pageCount) return null;\n for (let page = first; page <= last; page += 1) pages.add(page);\n }\n return [...pages].sort((a, b) => a - b);\n}\n","/**\n * The Print dialog, which `document:print` opens: every page, the current page or a range of\n * them, and whether annotations print. Nothing is made while the user chooses: Print prepares\n * the printout the choices describe, shows how far that is, and opens the browser's print dialog\n * as soon as it is ready. Safari prints only from a tap, and the one on Print was spent preparing,\n * so there the printout waits for another (`PreparedPrint.needsTap`). Cancel stops it at any\n * point. Form fields always print, each as its own print setting says; annotations follow\n * theirs.\n */\nimport { useT } from '@embedpdf/react/i18n';\nimport {\n useDocumentId,\n useDocuments,\n usePageList,\n type PageInfo,\n type PageRef,\n type PreparedPrint,\n type PrintProgress,\n} from '@embedpdf/react/runtime';\nimport { useSurface } from '@embedpdf/react/shell';\nimport { useStageState } from '@embedpdf/react/stage';\nimport { useEffect, useId, useRef, useState } from 'react';\n\nimport { PRINT_DIALOG } from '../config/commands';\nimport { Dialog } from './dialog';\nimport { pagesInRange } from './print-pages';\n\ntype PageChoice = 'all' | 'current' | 'range';\n\n/** The pages a choice names: `undefined` for every page, `null` when it names none. */\nfunction chosenPages(\n choice: PageChoice,\n pages: readonly PageInfo[],\n currentIndex: number,\n range: string,\n): PageRef[] | undefined | null {\n if (choice === 'all') return undefined;\n if (choice === 'current') {\n const page = pages[currentIndex];\n return page ? [page.ref] : null;\n }\n return pagesInRange(range, pages.length)?.map((page) => pages[page - 1]!.ref) ?? null;\n}\n\n/**\n * The printout: not asked for yet, on its way (with how far), ready and waiting for the tap\n * Safari needs, being printed, or failed (the choices show again, to try once more).\n */\ntype Job =\n | { readonly kind: 'choosing' }\n | { readonly kind: 'preparing'; readonly progress: PrintProgress | null }\n | { readonly kind: 'ready'; readonly prepared: PreparedPrint }\n | { readonly kind: 'printing' }\n | { readonly kind: 'failed' };\n\n/** The printout the dialog holds: cancelled while on its way, freed once made. */\ninterface HeldPrint {\n readonly cancel: AbortController;\n prepared: PreparedPrint | null;\n}\n\n/** Cancel the printout on its way, or free the one made. */\nfunction drop(held: { current: HeldPrint | null }) {\n held.current?.cancel.abort();\n held.current?.prepared?.dispose();\n held.current = null;\n}\n\nexport function PrintDialog() {\n const surface = useSurface(PRINT_DIALOG);\n return surface.isOpen ? <PrintForm onClose={surface.close} /> : null;\n}\n\nfunction PrintForm({ onClose }: { onClose: () => void }) {\n const t = useT();\n const titleId = useId();\n const rangeId = useId();\n const choiceName = useId();\n const documents = useDocuments();\n const documentId = useDocumentId();\n const pages = usePageList();\n const currentIndex = useStageState((state) => state.currentPageIndex);\n const [choice, setChoice] = useState<PageChoice>('all');\n const [range, setRange] = useState('');\n const [includeAnnotations, setIncludeAnnotations] = useState(true);\n const [job, setJob] = useState<Job>({ kind: 'choosing' });\n const held = useRef<HeldPrint | null>(null);\n const cancelButton = useRef<HTMLButtonElement>(null);\n const printButton = useRef<HTMLButtonElement>(null);\n const quality = documents.getPrintQuality(documentId ?? undefined);\n const chosen = chosenPages(choice, pages, currentIndex, range);\n\n // Closing the dialog, by Cancel, Escape or a finished print, drops the printout.\n useEffect(() => () => drop(held), []);\n\n const print = (prepared: PreparedPrint) => {\n setJob({ kind: 'printing' });\n prepared.print().then(onClose, (error: unknown) => {\n console.warn('[embedpdf] print failed', error);\n setJob({ kind: 'failed' });\n });\n };\n\n const prepare = (pagesToPrint: readonly PageRef[] | undefined) => {\n drop(held);\n const job: HeldPrint = { cancel: new AbortController(), prepared: null };\n const { signal } = job.cancel;\n held.current = job;\n setJob({ kind: 'preparing', progress: null });\n documents\n .preparePrint(documentId ?? undefined, {\n ...(pagesToPrint ? { pages: pagesToPrint } : {}),\n includeAnnotations,\n signal,\n onProgress: (progress) => {\n if (!signal.aborted) setJob({ kind: 'preparing', progress });\n },\n })\n .then(\n (prepared) => {\n if (signal.aborted) return prepared.dispose();\n job.prepared = prepared;\n if (prepared.needsTap) setJob({ kind: 'ready', prepared });\n else print(prepared);\n },\n (error: unknown) => {\n if (signal.aborted) return;\n console.warn('[embedpdf] preparing the printout failed', error);\n setJob({ kind: 'failed' });\n },\n );\n };\n\n // While the printout is made, the choices give way to its progress: focus goes to Cancel, and\n // to Print once a printout waits for its tap.\n useEffect(() => {\n if (job.kind === 'preparing' && job.progress === null) cancelButton.current?.focus();\n if (job.kind === 'ready') printButton.current?.focus();\n }, [job]);\n\n const choosing = job.kind === 'choosing' || job.kind === 'failed';\n const status =\n job.kind === 'preparing'\n ? job.progress && job.progress.pagesRendered > 0\n ? t('print.preparingPage', {\n params: {\n page: Math.min(job.progress.pagesRendered + 1, job.progress.pageCount),\n total: job.progress.pageCount,\n },\n })\n : t('print.preparing')\n : job.kind === 'ready'\n ? t('print.ready')\n : job.kind === 'failed'\n ? t('print.failed')\n : null;\n // Pictures of the pages; a document that allows only low-resolution printing says so.\n const note =\n quality?.kind !== 'images'\n ? null\n : quality.dpi < 300\n ? t('print.lowResolution', { params: { dpi: quality.dpi } })\n : t('print.images', { params: { dpi: quality.dpi } });\n\n return (\n <Dialog\n labelledBy={titleId}\n onClose={() => {\n if (job.kind !== 'printing') onClose();\n }}\n className=\"border-border bg-surface w-96 rounded-lg border p-4 shadow-xl\"\n >\n <form\n onSubmit={(event) => {\n event.preventDefault();\n if (job.kind === 'ready') print(job.prepared);\n else if (choosing && chosen !== null) prepare(chosen);\n }}\n >\n <h2 id={titleId} className=\"text-fg text-base font-semibold\">\n {t('print.title')}\n </h2>\n {choosing ? (\n <>\n <fieldset className=\"mt-3\">\n <legend className=\"text-fg-secondary text-sm font-medium\">{t('print.pages')}</legend>\n <div className=\"mt-1 flex flex-col gap-1\">\n <Choice\n name={choiceName}\n checked={choice === 'all'}\n onChoose={() => setChoice('all')}\n label={t('print.allPages')}\n />\n <Choice\n name={choiceName}\n checked={choice === 'current'}\n onChoose={() => setChoice('current')}\n label={t('print.currentPage')}\n />\n <div className=\"flex items-center gap-2\">\n <Choice\n name={choiceName}\n checked={choice === 'range'}\n onChoose={() => setChoice('range')}\n label={t('print.range')}\n controls={rangeId}\n />\n <input\n id={rangeId}\n type=\"text\"\n inputMode=\"numeric\"\n aria-label={t('print.rangeLabel')}\n aria-invalid={choice === 'range' && chosen === null}\n placeholder={t('print.rangePlaceholder')}\n value={range}\n onFocus={() => setChoice('range')}\n onChange={(event) => setRange(event.target.value)}\n className=\"border-border bg-surface text-fg focus:border-accent focus:ring-accent min-w-0 flex-1 rounded-md border px-1.5 py-1 text-sm tabular-nums outline-none focus:ring-1 aria-[invalid=true]:border-red-600\"\n />\n </div>\n {choice === 'range' && chosen === null && range.trim() !== '' ? (\n <p className=\"text-xs text-red-600\">\n {t('print.rangeInvalid', { params: { total: pages.length } })}\n </p>\n ) : null}\n </div>\n </fieldset>\n <label className=\"mt-3 flex cursor-pointer items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n className=\"accent-accent\"\n checked={includeAnnotations}\n onChange={(event) => setIncludeAnnotations(event.target.checked)}\n />\n <span className=\"text-fg\">{t('print.annotations')}</span>\n </label>\n {note ? <p className=\"text-fg-muted mt-3 text-xs\">{note}</p> : null}\n </>\n ) : (\n <ProgressBar\n progress={job.kind === 'preparing' ? job.progress : null}\n done={job.kind !== 'preparing'}\n />\n )}\n <p role=\"status\" className=\"text-fg-muted mt-2 min-h-5 text-sm\">\n {status}\n </p>\n <div className=\"mt-3 flex justify-end gap-2\">\n <button\n ref={cancelButton}\n type=\"button\"\n disabled={job.kind === 'printing'}\n onClick={onClose}\n className=\"border-border text-fg hover:bg-hover rounded-md border px-3 py-1.5 text-sm\"\n >\n {t('print.cancel')}\n </button>\n <button\n ref={printButton}\n type=\"submit\"\n disabled={choosing ? chosen === null : job.kind !== 'ready'}\n className=\"bg-accent text-on-accent hover:bg-accent-hover rounded-md px-3 py-1.5 text-sm disabled:opacity-60\"\n >\n {t('print.print')}\n </button>\n </div>\n </form>\n </Dialog>\n );\n}\n\n/**\n * How far preparing got: the bar moves until the first page is ready (a PDF copy arrives all at\n * once), then fills page by page. Full once the printout is made.\n */\nfunction ProgressBar({ progress, done }: { progress: PrintProgress | null; done: boolean }) {\n const fraction = done\n ? 1\n : progress && progress.pagesRendered > 0\n ? progress.pagesRendered / progress.pageCount\n : null;\n return (\n <div aria-hidden=\"true\" className=\"bg-hover mt-4 h-1.5 overflow-hidden rounded-full\">\n <div\n className={`bg-accent h-full rounded-full transition-[width] ${fraction === null ? 'w-full animate-pulse' : ''}`}\n style={fraction === null ? undefined : { width: `${fraction * 100}%` }}\n />\n </div>\n );\n}\n\nfunction Choice({\n name,\n checked,\n onChoose,\n label,\n controls,\n}: {\n /** The group's name, so the arrow keys move between its choices. */\n name: string;\n checked: boolean;\n onChoose: () => void;\n label: string;\n /** The field this choice turns on, for assistive technology. */\n controls?: string;\n}) {\n return (\n <label className=\"text-fg flex cursor-pointer items-center gap-2 text-sm\">\n <input\n type=\"radio\"\n name={name}\n className=\"accent-accent\"\n checked={checked}\n onChange={onChoose}\n aria-controls={controls}\n />\n {label}\n </label>\n );\n}\n"],"mappings":"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"}
|