@reportwright/viewer 0.13.1 → 0.13.2-rc.2
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/CHANGELOG.md +51 -0
- package/README.md +146 -5
- package/dist/{chunk-B5ZCT3UK.js → chunk-4XZRLUHN.js} +73 -46
- package/dist/{chunk-B5ZCT3UK.js.map → chunk-4XZRLUHN.js.map} +2 -2
- package/dist/{chunk-XXTAPZO4.js → chunk-D7S5DL46.js} +2 -2
- package/dist/{chunk-ES2LYZ6S.js → chunk-DVJYE7HZ.js} +3 -3
- package/dist/chunk-GOCWG6FG.js +12 -12
- package/dist/chunk-GRYITZPG.js +23 -23
- package/dist/chunk-H422SRD3.js +21 -21
- package/dist/{chunk-PF4RFKX2.js → chunk-NARXO3DB.js} +3 -3
- package/dist/{chunk-PKXTMC4J.js → chunk-OED3YZYP.js} +5 -5
- package/dist/{chunk-ZGRJJ6OW.js → chunk-OMCWZYRI.js} +32 -17
- package/dist/chunk-OMCWZYRI.js.map +6 -0
- package/dist/chunk-U2ZY2NPQ.js +2 -2
- package/dist/designer.js +331 -135
- package/dist/designer.js.map +3 -3
- package/dist/engine.worker.bwip.js +4780 -51421
- package/dist/engine.worker.bwip.js.map +3 -3
- package/dist/engine.worker.js +5675 -59626
- package/dist/engine.worker.js.map +3 -3
- package/dist/pdfstreamworker.js +4 -0
- package/dist/peer/{chunk-7IP67PA6.js → chunk-4AFSC6JI.js} +48 -21
- package/dist/peer/{chunk-7IP67PA6.js.map → chunk-4AFSC6JI.js.map} +1 -1
- package/dist/peer/chunk-A6UXBSTP.js +21 -21
- package/dist/peer/{chunk-3EYYRJR4.js → chunk-FN3FXACD.js} +3 -3
- package/dist/peer/{chunk-WVQQCD4M.js → chunk-ILBTPBOA.js} +32 -17
- package/dist/peer/chunk-ILBTPBOA.js.map +6 -0
- package/dist/peer/{chunk-3XZY54LM.js → chunk-JQDW5OR3.js} +5 -5
- package/dist/peer/chunk-MXR6JBMP.js +2 -2
- package/dist/peer/chunk-N42DCZZA.js +12 -12
- package/dist/peer/{chunk-RKFP7SDY.js → chunk-OUTKMWFM.js} +3 -3
- package/dist/peer/{chunk-5RUNOIS7.js → chunk-VJLMUGUI.js} +2 -2
- package/dist/peer/chunk-ZS3J4WBH.js +23 -23
- package/dist/peer/designer.js +317 -122
- package/dist/peer/designer.js.map +3 -3
- package/dist/peer/engine.worker.bwip.js +4780 -51421
- package/dist/peer/engine.worker.bwip.js.map +3 -3
- package/dist/peer/engine.worker.js +5675 -59626
- package/dist/peer/engine.worker.js.map +3 -3
- package/dist/peer/pdfstreamworker.js +4 -0
- package/dist/peer/viewer.js +41 -9
- package/dist/peer/viewer.js.map +1 -1
- package/dist/viewer.d.ts +2 -0
- package/dist/viewer.js +41 -9
- package/dist/viewer.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-ZGRJJ6OW.js.map +0 -6
- package/dist/peer/chunk-WVQQCD4M.js.map +0 -6
- /package/dist/{chunk-XXTAPZO4.js.map → chunk-D7S5DL46.js.map} +0 -0
- /package/dist/{chunk-ES2LYZ6S.js.map → chunk-DVJYE7HZ.js.map} +0 -0
- /package/dist/{chunk-PF4RFKX2.js.map → chunk-NARXO3DB.js.map} +0 -0
- /package/dist/{chunk-PKXTMC4J.js.map → chunk-OED3YZYP.js.map} +0 -0
- /package/dist/peer/{chunk-3EYYRJR4.js.map → chunk-FN3FXACD.js.map} +0 -0
- /package/dist/peer/{chunk-3XZY54LM.js.map → chunk-JQDW5OR3.js.map} +0 -0
- /package/dist/peer/{chunk-RKFP7SDY.js.map → chunk-OUTKMWFM.js.map} +0 -0
- /package/dist/peer/{chunk-5RUNOIS7.js.map → chunk-VJLMUGUI.js.map} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// The streaming PDF's parallel paint worker is @reportwright/engine's (dist/pdfstreamworker.js). This stand-in ships so
|
|
2
|
+
// bundlers resolve new URL('./pdfstreamworker.js', import.meta.url) in this package.
|
|
3
|
+
const { parentPort } = globalThis.process.getBuiltinModule('node:worker_threads');
|
|
4
|
+
parentPort.on('message', (job) => parentPort.postMessage({ id: job.id, error: { message: 'exportPdfStream with parallel needs @reportwright/engine' } }));
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
serverPdfUrl,
|
|
23
23
|
subsetter,
|
|
24
24
|
usingWorker
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-OUTKMWFM.js";
|
|
26
26
|
import {
|
|
27
27
|
NO_CJK_FONTS
|
|
28
28
|
} from "../chunk-BR5K6SBL.js";
|
|
@@ -4727,8 +4727,8 @@ var r4_default = {
|
|
|
4727
4727
|
// src/i18n/b2.js
|
|
4728
4728
|
var LANGS = ["en", "hi", "es", "fr", "de", "ja", "zh", "pt-BR", "ar"];
|
|
4729
4729
|
var ROWS = {
|
|
4730
|
-
b2_skipBlank: ["Skip when the parameter is blank", "पैरामीटर खाली हो तो छोड़ें", "Omitir si el parámetro está vacío", "Ignorer si le paramètre est vide", "Überspringen, wenn der Parameter leer ist", "パラメーターが空のときはスキップ", "参数为空时跳过", "Ignorar quando o parâmetro estiver vazio", "تخطَّ عندما تكون المعلمة
|
|
4731
|
-
رغة"],
|
|
4730
|
+
b2_skipBlank: ["Skip when the parameter is blank", "पैरामीटर खाली हो तो छोड़ें", "Omitir si el parámetro está vacío", "Ignorer si le paramètre est vide", "Überspringen, wenn der Parameter leer ist", "パラメーターが空のときはスキップ", "参数为空时跳过", "Ignorar quando o parâmetro estiver vazio", ("تخطَّ عندما تكون المعلمة فا"+
|
|
4731
|
+
"رغة")],
|
|
4732
4732
|
// viewer
|
|
4733
4733
|
b2_pageOf: ["Page {n} of {total}", "पृष्ठ {n} / {total}", "Página {n} de {total}", "Page {n} sur {total}", "Seite {n} von {total}", "{total} ページ中 {n} ページ", "第 {n} 页,共 {total} 页", "Página {n} de {total}", "الصفحة {n} من {total}"],
|
|
4734
4734
|
b2_pageN: ["Page {n}", "पृष्ठ {n}", "Página {n}", "Page {n}", "Seite {n}", "{n} ページ", "第 {n} 页", "Página {n}", "الصفحة {n}"],
|
|
@@ -4750,8 +4750,8 @@ var ROWS = {
|
|
|
4750
4750
|
b2_view: ["View", "दृश्य", "Vista", "Affichage", "Ansicht", "表示", "视图", "Exibir", "عرض"],
|
|
4751
4751
|
b2_previewGroup: ["Preview", "पूर्वावलोकन", "Vista previa", "Aperçu", "Vorschau", "プレビュー", "预览", "Visualização", "معاينة"],
|
|
4752
4752
|
b2_insertItem: ["Insert: {item}", "डालें: {item}", "Insertar: {item}", "Insérer : {item}", "Einfügen: {item}", "挿入: {item}", "插入:{item}", "Inserir: {item}", "إدراج: {item}"],
|
|
4753
|
-
b2_insertHint: ["Goes inside the selected list or container, else below the body", "चुनी गई सूची या कंटेनर के अंदर, वरना बॉडी के नीचे जाता है", "Va dentro de la lista o el contenedor seleccionado; si no, debajo del cuerpo", "Va dans la liste ou le conteneur sélectionné, sinon sous le corps", "Kommt in die a
|
|
4754
|
-
usgewählte Liste oder den Container, sonst unter den Hauptteil", "選択したリストやコンテナーの中に、なければ本文の下に入ります", "放入所选列表或容器中,否则放在正文下方", "Vai dentro da lista ou do contêiner selecionado; senão, abaixo do corpo", "يُدرج داخل القائمة أو الحاوية المحددة، وإلا أسفل المتن"],
|
|
4753
|
+
b2_insertHint: ["Goes inside the selected list or container, else below the body", "चुनी गई सूची या कंटेनर के अंदर, वरना बॉडी के नीचे जाता है", "Va dentro de la lista o el contenedor seleccionado; si no, debajo del cuerpo", "Va dans la liste ou le conteneur sélectionné, sinon sous le corps", ("Kommt in die a"+
|
|
4754
|
+
"usgewählte Liste oder den Container, sonst unter den Hauptteil"), "選択したリストやコンテナーの中に、なければ本文の下に入ります", "放入所选列表或容器中,否则放在正文下方", "Vai dentro da lista ou do contêiner selecionado; senão, abaixo do corpo", "يُدرج داخل القائمة أو الحاوية المحددة، وإلا أسفل المتن"],
|
|
4755
4755
|
b2_toolbox: ["Toolbox", "टूलबॉक्स", "Herramientas", "Boîte à outils", "Werkzeuge", "ツールボックス", "工具箱", "Ferramentas", "الأدوات"],
|
|
4756
4756
|
b2_data: ["Data", "डेटा", "Datos", "Données", "Daten", "データ", "数据", "Dados", "البيانات"],
|
|
4757
4757
|
b2_outline: ["Outline", "रूपरेखा", "Esquema", "Structure", "Gliederung", "アウトライン", "大纲", "Estrutura", "المخطط"],
|
|
@@ -4766,15 +4766,34 @@ usgewählte Liste oder den Container, sonst unter den Hauptteil", "選択した
|
|
|
4766
4766
|
b2_selCell: ["Cell in {name}", "{name} में सेल", "Celda de {name}", "Cellule de {name}", "Zelle in {name}", "{name} のセル", "{name} 中的单元格", "Célula em {name}", "خلية في {name}"],
|
|
4767
4767
|
b2_pageInfo: ["Page {size} · {w} × {h} {unit}", "पृष्ठ {size} · {w} × {h} {unit}", "Página {size} · {w} × {h} {unit}", "Page {size} · {w} × {h} {unit}", "Seite {size} · {w} × {h} {unit}", "ページ {size} · {w} × {h} {unit}", "页面 {size} · {w} × {h} {unit}", "Página {size} · {w} × {h} {unit}", "الصفحة {size} · {w} × {h} {unit}"],
|
|
4768
4768
|
// batch 9 (designer bugs)
|
|
4769
|
-
b9_nothingToPaste: ["Nothing to paste: copy items in a designer first (Ctrl+C)", "चिपकाने को कुछ नहीं: पहले डिज़ाइनर में आइटम कॉपी करें (Ctrl+C)", "Nada que pegar: copie primero elementos en un diseñador (Ctrl+C)", "Rien à coller : copiez d’abord des éléments dans un concepteur (Ctrl+C)", "Nichts zum Einf
|
|
4770
|
-
ügen: zuerst Elemente in einem Designer kopieren (Strg+C)", "貼り付けるものがありません。先にデザイナーで項目をコピーしてください (Ctrl+C)", "没有可粘贴的内容:请先在设计器中复制项目 (Ctrl+C)", "Nada para colar: copie primeiro itens em um designer (Ctrl+C)", "لا شيء للصق: انسخ عناصر في مصمم أولاً (Ctrl+C)"],
|
|
4769
|
+
b9_nothingToPaste: ["Nothing to paste: copy items in a designer first (Ctrl+C)", "चिपकाने को कुछ नहीं: पहले डिज़ाइनर में आइटम कॉपी करें (Ctrl+C)", "Nada que pegar: copie primero elementos en un diseñador (Ctrl+C)", "Rien à coller : copiez d’abord des éléments dans un concepteur (Ctrl+C)", ("Nichts zum Einf"+
|
|
4770
|
+
"ügen: zuerst Elemente in einem Designer kopieren (Strg+C)"), "貼り付けるものがありません。先にデザイナーで項目をコピーしてください (Ctrl+C)", "没有可粘贴的内容:请先在设计器中复制项目 (Ctrl+C)", "Nada para colar: copie primeiro itens em um designer (Ctrl+C)", "لا شيء للصق: انسخ عناصر في مصمم أولاً (Ctrl+C)"],
|
|
4771
4771
|
b9_itemLabel: ["{type} {name}, x {x}, y {y}", "{type} {name}, x {x}, y {y}", "{type} {name}, x {x}, y {y}", "{type} {name}, x {x}, y {y}", "{type} {name}, x {x}, y {y}", "{type} {name}、x {x}、y {y}", "{type} {name},x {x},y {y}", "{type} {name}, x {x}, y {y}", "{type} {name}، x {x}، y {y}"],
|
|
4772
4772
|
b9_outlineKeys: ["Up and Down move between rows; Enter or Space selects (Shift adds); then Delete removes and the arrows move the selection on the page", "ऊपर और नीचे पंक्तियों के बीच जाते हैं; Enter या Space चुनता है (Shift जोड़ता है); फिर Delete हटाता है और तीर पेज पर चयन को खिसकाते हैं",
|
|
4773
|
-
"Arriba y Abajo cambian de fila; Intro o Espacio selecciona (Mayús añade); luego Supr elimina y las flechas mueven la selección en la página", "Haut et Bas passent d’une ligne à l’autre ; Entrée ou Espace sélectionne (Maj ajoute) ; ensuite Suppr supprime et les flèches déplacent la sélection sur la page", "Auf und Ab wechseln die Zeile; Eingabe oder Leertaste wählt aus (Umschalt
|
|
4774
|
-
gt hinzu); dann löscht Entf und die Pfeile verschieben die Auswahl auf der Seite", "上下で行を移動、Enter または Space で選択 (Shift で追加)。その後 Delete で削除、矢印でページ上の選択を移動", "上下键在行间移动;Enter 或空格选择(Shift 添加);然后 Delete 删除,方向键在页面上移动所选项", "Cima e Baixo mudam de linha; Enter
|
|
4775
|
-
ou Espaço seleciona (Shift adiciona); depois Delete remove e as setas movem a seleção na página", "السهمان لأعلى ولأسفل للتنقل بين الصفوف؛ Enter أو المسافة للتحديد (Shift للإضافة)؛ ثم Delete للحذف والأسهم لتحريك التحديد في الصفحة"],
|
|
4773
|
+
"Arriba y Abajo cambian de fila; Intro o Espacio selecciona (Mayús añade); luego Supr elimina y las flechas mueven la selección en la página", "Haut et Bas passent d’une ligne à l’autre ; Entrée ou Espace sélectionne (Maj ajoute) ; ensuite Suppr supprime et les flèches déplacent la sélection sur la page", ("Auf und Ab wechseln die Zeile; Eingabe oder Leertaste wählt aus (Umschalt fü"+
|
|
4774
|
+
"gt hinzu); dann löscht Entf und die Pfeile verschieben die Auswahl auf der Seite"), "上下で行を移動、Enter または Space で選択 (Shift で追加)。その後 Delete で削除、矢印でページ上の選択を移動", "上下键在行间移动;Enter 或空格选择(Shift 添加);然后 Delete 删除,方向键在页面上移动所选项", ("Cima e Baixo mudam de linha; Enter "+
|
|
4775
|
+
"ou Espaço seleciona (Shift adiciona); depois Delete remove e as setas movem a seleção na página"), "السهمان لأعلى ولأسفل للتنقل بين الصفوف؛ Enter أو المسافة للتحديد (Shift للإضافة)؛ ثم Delete للحذف والأسهم لتحريك التحديد في الصفحة"],
|
|
4776
4776
|
p_field_label: ["Label (the name a screen reader says)", "लेबल (स्क्रीन रीडर जो नाम बोलता है)", "Etiqueta (el nombre que dice un lector de pantalla)", "Libellé (le nom que lit un lecteur d’écran)", "Beschriftung (der Name, den ein Screenreader vorliest)", "ラベル (スクリーンリーダーが読み上げる名前)", "标签(屏幕阅读器读出的名称)",
|
|
4777
|
-
"Rótulo (o nome que um leitor de tela diz)", "التسمية (الاسم الذي يقرؤه قارئ الشاشة)"]
|
|
4777
|
+
"Rótulo (o nome que um leitor de tela diz)", "التسمية (الاسم الذي يقرؤه قارئ الشاشة)"],
|
|
4778
|
+
// 0.13.2 (designer and viewer UI review)
|
|
4779
|
+
c132_nudge1: ["Nudge 1 pt (1 grid step with Snap to grid)", "1 pt खिसकाएँ (स्नैप टू ग्रिड के साथ 1 ग्रिड कदम)", "Desplazar 1 pt (1 paso de cuadrícula con Ajustar a la cuadrícula)", "Déplacer de 1 pt (1 pas de grille avec Aligner sur la grille)", "Um 1 pt verschieben (1 Rasterschritt mit „Am Raster ausrichten“)", ("1 pt 移動 (グリッ"+
|
|
4780
|
+
"ドにスナップ時は 1 目盛り)"), "微移 1 pt(启用对齐网格时为 1 个网格单位)", "Mover 1 pt (1 passo da grade com Ajustar à grade)", "تحريك 1 نقطة (خطوة شبكة واحدة مع المحاذاة إلى الشبكة)"],
|
|
4781
|
+
c132_nudge10: ["Nudge 10 pt (10 grid steps with Snap to grid)", "10 pt खिसकाएँ (स्नैप टू ग्रिड के साथ 10 ग्रिड कदम)", "Desplazar 10 pt (10 pasos de cuadrícula con Ajustar a la cuadrícula)", "Déplacer de 10 pt (10 pas de grille avec Aligner sur la grille)", "Um 10 pt verschieben (10 Rasterschritte mit „Am Raster ausrichten“)",
|
|
4782
|
+
"10 pt 移動 (グリッドにスナップ時は 10 目盛り)", "微移 10 pt(启用对齐网格时为 10 个网格单位)", "Mover 10 pt (10 passos da grade com Ajustar à grade)", "تحريك 10 نقاط (10 خطوات شبكة مع المحاذاة إلى الشبكة)"],
|
|
4783
|
+
c132_warnings: ["{n} warnings", "{n} चेतावनियाँ", "{n} advertencias", "{n} avertissements", "{n} Warnungen", "警告 {n} 件", "{n} 条警告", "{n} avisos", "{n} تحذيرات"],
|
|
4784
|
+
c132_warning1: ["1 warning", "1 चेतावनी", "1 advertencia", "1 avertissement", "1 Warnung", "警告 1 件", "1 条警告", "1 aviso", "تحذير واحد"],
|
|
4785
|
+
c132_detected: ["detected", "पहचाना गया", "detectado", "détecté", "erkannt", "検出", "已检测", "detectado", "مكتشف"],
|
|
4786
|
+
c132_detectedHint: ["Fields detected from the data, not declared in the data set (Edit declares them)", "डेटा से पहचाने गए फ़ील्ड, डेटा सेट में घोषित नहीं (संपादित करें उन्हें घोषित करता है)", ("Campos detectados en los datos, no declarados en el conjunto de datos "+
|
|
4787
|
+
"(Editar los declara)"), "Champs détectés dans les données, non déclarés dans le jeu de données (Modifier les déclare)", "Aus den Daten erkannte Felder, im Dataset nicht deklariert (Bearbeiten deklariert sie)", "データから検出したフィールド (データセットでは未宣言。編集で宣言できます)", "从数据中检测到的字段,未在数据集中声明(编辑可声明它们)",
|
|
4788
|
+
"Campos detectados nos dados, não declarados no conjunto de dados (Editar os declara)", "حقول مكتشفة من البيانات، غير معرّفة في مجموعة البيانات (التحرير يعرّفها)"],
|
|
4789
|
+
c132_moreInfo: ["More information", "अधिक जानकारी", "Más información", "Plus d’informations", "Weitere Informationen", "詳細情報", "更多信息", "Mais informações", "مزيد من المعلومات"],
|
|
4790
|
+
c132_liveParams: ["Apply parameters as the reader changes them (off: only when the reader clicks View report)", "पाठक के बदलते ही पैरामीटर लागू करें (बंद: केवल जब पाठक रिपोर्ट देखें पर क्लिक करे)", ("Aplicar los parámetros a medida que el lector los cambia (desactivado: "+
|
|
4791
|
+
"solo al hacer clic en Ver informe)"), "Appliquer les paramètres dès que le lecteur les change (désactivé : seulement quand il clique sur Afficher le rapport)", "Parameter anwenden, sobald der Leser sie ändert (aus: erst wenn er auf „Bericht anzeigen“ klickt)", "閲覧者が変更したらすぐにパラメーターを適用 (オフ: 「レポートを表示」をクリックしたときのみ)",
|
|
4792
|
+
"读者更改参数时立即应用(关闭:仅在读者点击“查看报表”时应用)", "Aplicar os parâmetros conforme o leitor os altera (desligado: só quando o leitor clica em Ver relatório)", "تطبيق المعلمات عند تغيير القارئ لها (عند الإيقاف: فقط عند النقر على عرض التقرير)"],
|
|
4793
|
+
c132_panelColumnsHint: ["For the whole report. On a wide screen, more than one column puts the panel above the pages, with the parameters in a grid; on a phone it stays one column.", "पूरी रिपोर्ट के लिए। चौड़ी स्क्रीन पर एक से अधिक कॉलम पैनल को पृष्ठों के ऊपर रखते हैं, पैरामीटर ग्रिड में; फ़ोन पर यह एक कॉलम रहता है।",
|
|
4794
|
+
"Para todo el informe. En una pantalla ancha, más de una columna pone el panel encima de las páginas, con los parámetros en cuadrícula; en un teléfono queda en una columna.", "Pour tout le rapport. Sur un écran large, plus d’une colonne place le panneau au-dessus des pages, avec les paramètres en grille ; sur un téléphone il reste sur une colonne.", ("Für den ganzen Bericht. Auf einem "+
|
|
4795
|
+
"breiten Bildschirm setzt mehr als eine Spalte das Feld über die Seiten, mit den Parametern im Raster; auf dem Telefon bleibt es einspaltig."), "レポート全体の設定です。広い画面では 2 列以上にするとパネルがページの上に表示され、パラメーターがグリッドに並びます。スマートフォンでは 1 列のままです。", ("适用于整个报表。在宽屏上,多于一列会把面板放在页面上方"+
|
|
4796
|
+
",参数排成网格;在手机上仍为一列。"), "Para todo o relatório. Em uma tela larga, mais de uma coluna coloca o painel acima das páginas, com os parâmetros em grade; no celular ele fica em uma coluna.", "للتقرير كله. على شاشة عريضة، أكثر من عمود يضع اللوحة فوق الصفحات والمعلمات في شبكة؛ على الهاتف تبقى عمودًا واحدًا."]
|
|
4778
4797
|
};
|
|
4779
4798
|
var b2_default = Object.fromEntries(LANGS.map((l, i) => [l, Object.fromEntries(Object.entries(ROWS).map(([k, v]) => [k, v[i]]))]));
|
|
4780
4799
|
|
|
@@ -4842,7 +4861,7 @@ async function exportBlob(fmt, model, def, opt = {}) {
|
|
|
4842
4861
|
if (fmt === "csv") return new Blob([(await import("./chunk-CFTFTV2O.js")).exportCsv(model, { locale: def.locale, currency: def.currency })], { type: "text/csv;charset=utf-8" });
|
|
4843
4862
|
if (fmt === "html" && opt.interactive !== false && o.html === "interactive") {
|
|
4844
4863
|
try {
|
|
4845
|
-
const { exportInteractiveHtml } = await import("./chunk-
|
|
4864
|
+
const { exportInteractiveHtml } = await import("./chunk-FN3FXACD.js");
|
|
4846
4865
|
const { html } = await exportInteractiveHtml(def, { params: opt.params, reportId: opt.reportId, lang: opt.lang, model });
|
|
4847
4866
|
return new Blob([html], { type: "text/html;charset=utf-8" });
|
|
4848
4867
|
} catch (e) {
|
|
@@ -5005,7 +5024,8 @@ var P = {
|
|
|
5005
5024
|
search: "M7 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10zM14 14l-3.5-3.5",
|
|
5006
5025
|
print: "M4.5 6V1.5h7V6M4.5 11.5h-2.5v-5.5h12v5.5h-2.5M4.5 9.5h7v5h-7z",
|
|
5007
5026
|
download: "M8 2v8.5M4.5 7L8 10.5 11.5 7M2.5 13.5h11",
|
|
5008
|
-
|
|
5027
|
+
sliders: "M2 4h6M11 4h3M9.5 2.5v3M2 8h1.5M6.5 8h7.5M5 6.5v3M2 12h7.5M12.5 12h1.5M11 10.5v3",
|
|
5028
|
+
// Export options (a sun-like gear read as brightness)
|
|
5009
5029
|
sidebar: "M2 2.5h12v11H2zM6 2.5v11",
|
|
5010
5030
|
pages: "M3 1.5h7l3 3v10H3zM10 1.5v3h3M5.5 8h5M5.5 10.5h5",
|
|
5011
5031
|
toc: "M2.5 4h1M6 4h7.5M2.5 8h1M6 8h7.5M2.5 12h1M6 12h7.5",
|
|
@@ -5148,7 +5168,7 @@ var urlWithDrill = (list) => {
|
|
|
5148
5168
|
else u.searchParams.delete(DRILL_KEY);
|
|
5149
5169
|
return u.toString();
|
|
5150
5170
|
};
|
|
5151
|
-
function ReportViewer({ definition: rootDef, reportId: rootReportId, params: rootParams, title, compact = false, autoRun = true, lang: langIn = "en", onDrill, exportHtmlOptions, toolbar, viewMode = "continuous", onExported, urlState = false, onReady, control, onEvent }) {
|
|
5171
|
+
function ReportViewer({ definition: rootDef, reportId: rootReportId, params: rootParams, title, compact = false, autoRun = true, lang: langIn = "en", onDrill, exportHtmlOptions, toolbar, viewMode = "continuous", onExported, urlState = false, onReady, control, onEvent, showWarnings = false }) {
|
|
5152
5172
|
const lang = pickLang(langIn);
|
|
5153
5173
|
const dir = dirOf(lang);
|
|
5154
5174
|
const T = (k, v) => t(lang, k, v);
|
|
@@ -5172,6 +5192,7 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
5172
5192
|
onReady?.(error);
|
|
5173
5193
|
}
|
|
5174
5194
|
};
|
|
5195
|
+
const announce = useRef(null);
|
|
5175
5196
|
const [note, setNote] = useState(null);
|
|
5176
5197
|
const [zoom, setZoom] = useState(() => rootDef?.page?.size === "Pageless" ? "fit" : "page");
|
|
5177
5198
|
const [current, setCurrent] = useState(1);
|
|
@@ -5243,8 +5264,7 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
5243
5264
|
setModel(m);
|
|
5244
5265
|
const fonts = failed.length ? T("fontsDidNotLoad", { fonts: [...new Set(failed.map((f) => f.key))].join(", ") }) : null;
|
|
5245
5266
|
setStatus({ state: "done", fonts });
|
|
5246
|
-
|
|
5247
|
-
onEvent?.("ready", { pages: m.pages.length });
|
|
5267
|
+
announce.current = { error: failed[0]?.error || null, pages: m.pages.length };
|
|
5248
5268
|
if (keepScroll) requestAnimationFrame(() => scroller.current?.scrollTo({ top }));
|
|
5249
5269
|
else {
|
|
5250
5270
|
setCurrent(1);
|
|
@@ -5635,6 +5655,13 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
5635
5655
|
useEffect(() => () => {
|
|
5636
5656
|
if (control) control.current = null;
|
|
5637
5657
|
}, [control]);
|
|
5658
|
+
useEffect(() => {
|
|
5659
|
+
const a = announce.current;
|
|
5660
|
+
if (!a) return;
|
|
5661
|
+
announce.current = null;
|
|
5662
|
+
ready(a.error);
|
|
5663
|
+
onEvent?.("ready", { pages: a.pages });
|
|
5664
|
+
});
|
|
5638
5665
|
const lastEvent = useRef({ page: current, params: JSON.stringify(params) });
|
|
5639
5666
|
useEffect(() => {
|
|
5640
5667
|
if (lastEvent.current.page !== current) {
|
|
@@ -5772,7 +5799,7 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
5772
5799
|
{
|
|
5773
5800
|
id: "exportOptions",
|
|
5774
5801
|
group: "export",
|
|
5775
|
-
node: /* @__PURE__ */ jsx3("span", { className: "vexp", children: /* @__PURE__ */ jsx3("button", { type: "button", className: "btn sm icon", "aria-label": T("exportOptions"), title: T("exportOptions"), "aria-expanded": xmenu, "aria-haspopup": "true", "data-testid": "export-options", onClick: () => setXmenu((v) => !v), children: /* @__PURE__ */ jsx3(Icon, { name: "
|
|
5802
|
+
node: /* @__PURE__ */ jsx3("span", { className: "vexp", children: /* @__PURE__ */ jsx3("button", { type: "button", className: "btn sm icon", "aria-label": T("exportOptions"), title: T("exportOptions"), "aria-expanded": xmenu, "aria-haspopup": "true", "data-testid": "export-options", onClick: () => setXmenu((v) => !v), children: /* @__PURE__ */ jsx3(Icon, { name: "sliders" }) }) })
|
|
5776
5803
|
}
|
|
5777
5804
|
].filter(Boolean);
|
|
5778
5805
|
const items = arrangeToolbar(builtIns, toolbar || {});
|
|
@@ -5999,7 +6026,7 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
5999
6026
|
h.text
|
|
6000
6027
|
] }, i))
|
|
6001
6028
|
] })),
|
|
6002
|
-
/* @__PURE__ */ jsxs2("div", { className: "vpages", ref: scroller, role: "
|
|
6029
|
+
/* @__PURE__ */ jsxs2("div", { className: "vpages", ref: scroller, tabIndex: 0, role: "region", "aria-label": definition.name || T("ux_a11yReport"), onScroll, onClick, onTouchStart, onTouchEnd, children: [
|
|
6003
6030
|
status.state === "error" && /* @__PURE__ */ jsxs2("div", { className: "vmsg error", role: "alert", children: [
|
|
6004
6031
|
/* @__PURE__ */ jsx3("b", { children: T("didNotRun") }),
|
|
6005
6032
|
/* @__PURE__ */ jsx3("br", {}),
|
|
@@ -6014,10 +6041,10 @@ function ReportViewer({ definition: rootDef, reportId: rootReportId, params: roo
|
|
|
6014
6041
|
] }),
|
|
6015
6042
|
status.state === "running" && status.retry && /* @__PURE__ */ jsx3("div", { className: "vmsg", role: "status", "data-testid": "viewer-busy", children: T("r4_busyRetry", { n: status.retry.attempt, max: status.retry.max }) }),
|
|
6016
6043
|
!model && status.state === "running" && !status.retry && /* @__PURE__ */ jsx3(Skeleton, { def: renderDef, scale: zoom === "fit" || narrow ? fitW / 600 : Math.min(fitW / 600, fitH / 850), T }),
|
|
6017
|
-
model?.warnings?.length > 0 && // content cut off (past the page edge or bottom): the warnings open by themselves and the summary says so
|
|
6044
|
+
showWarnings && model?.warnings?.length > 0 && // content cut off (past the page edge or bottom): the warnings open by themselves and the summary says so
|
|
6018
6045
|
/* @__PURE__ */ jsxs2("details", { className: "warnings", open: hasErrorCells || model.clipped?.length > 0 || void 0, "data-testid": "viewer-warnings", children: [
|
|
6019
6046
|
/* @__PURE__ */ jsxs2("summary", { children: [
|
|
6020
|
-
T("
|
|
6047
|
+
model.warnings.length === 1 ? T("c132_warning1") : T("c132_warnings", { n: model.warnings.length }),
|
|
6021
6048
|
model.clipped?.length > 0 && /* @__PURE__ */ jsxs2("b", { "data-testid": "viewer-clipped", children: [
|
|
6022
6049
|
" · ",
|
|
6023
6050
|
T("r4_clipped", { n: model.clipped.length })
|
|
@@ -6066,4 +6093,4 @@ export {
|
|
|
6066
6093
|
ReportViewer,
|
|
6067
6094
|
uiFontCss
|
|
6068
6095
|
};
|
|
6069
|
-
//# sourceMappingURL=chunk-
|
|
6096
|
+
//# sourceMappingURL=chunk-4AFSC6JI.js.map
|