@embedpdf/viewer-chrome 3.0.0-next.15 → 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.
Files changed (200) hide show
  1. package/dist/{annotation-fonts-BqoLZ4Mp.js → annotation-fonts-DWjVOTP0.js} +2 -2
  2. package/dist/{annotation-fonts-BqoLZ4Mp.js.map → annotation-fonts-DWjVOTP0.js.map} +1 -1
  3. package/dist/{annotation-fonts-Dt0IQXhz.cjs → annotation-fonts-dpfVkhnq.cjs} +2 -2
  4. package/dist/{annotation-fonts-Dt0IQXhz.cjs.map → annotation-fonts-dpfVkhnq.cjs.map} +1 -1
  5. package/dist/{annotation-style-Bzvvp8-N.cjs → annotation-style-B3XKAyZ-.cjs} +3 -3
  6. package/dist/{annotation-style-Bzvvp8-N.cjs.map → annotation-style-B3XKAyZ-.cjs.map} +1 -1
  7. package/dist/{annotation-style--rPIZsuP.js → annotation-style-CXF3X47Z.js} +3 -3
  8. package/dist/{annotation-style--rPIZsuP.js.map → annotation-style-CXF3X47Z.js.map} +1 -1
  9. package/dist/{ar-DnEj5vbP.cjs → ar-B132r9bo.cjs} +93 -1
  10. package/dist/ar-B132r9bo.cjs.map +1 -0
  11. package/dist/{ar-D9XKAmDx.js → ar-BLWFJoA_.js} +93 -1
  12. package/dist/ar-BLWFJoA_.js.map +1 -0
  13. package/dist/attachments-panel-Cxln8xos.cjs +217 -0
  14. package/dist/attachments-panel-Cxln8xos.cjs.map +1 -0
  15. package/dist/attachments-panel-H1ucRbwo.js +217 -0
  16. package/dist/attachments-panel-H1ucRbwo.js.map +1 -0
  17. package/dist/chrome.cjs +21 -0
  18. package/dist/chrome.cjs.map +1 -1
  19. package/dist/chrome.js +21 -0
  20. package/dist/chrome.js.map +1 -1
  21. package/dist/{commands-BmgxhJ8B.js → commands-BkgLP3Om.js} +418 -23
  22. package/dist/commands-BkgLP3Om.js.map +1 -0
  23. package/dist/{commands-CYt4SFUX.cjs → commands-DL1gjZt7.cjs} +433 -20
  24. package/dist/commands-DL1gjZt7.cjs.map +1 -0
  25. package/dist/commands.cjs +2 -1
  26. package/dist/commands.d.cts +3 -1
  27. package/dist/commands.d.ts +3 -1
  28. package/dist/commands.js +2 -2
  29. package/dist/{comments-panel-pEcQg4Vs.cjs → comments-panel-BsnWedTh.cjs} +2 -2
  30. package/dist/{comments-panel-pEcQg4Vs.cjs.map → comments-panel-BsnWedTh.cjs.map} +1 -1
  31. package/dist/{comments-panel-MUVgLCBI.js → comments-panel-D7Eadws9.js} +2 -2
  32. package/dist/{comments-panel-MUVgLCBI.js.map → comments-panel-D7Eadws9.js.map} +1 -1
  33. package/dist/{de-Dv6zvbnd.cjs → de-7_MvFWzN.cjs} +93 -1
  34. package/dist/de-7_MvFWzN.cjs.map +1 -0
  35. package/dist/{de-Bdr4aWzm.js → de-BUhwc9-x.js} +93 -1
  36. package/dist/de-BUhwc9-x.js.map +1 -0
  37. package/dist/{dialog-B5GBisKv.js → dialog-BIb373cg.js} +3 -3
  38. package/dist/dialog-BIb373cg.js.map +1 -0
  39. package/dist/{dialog-t8F13BL_.cjs → dialog-CngKTnAM.cjs} +3 -3
  40. package/dist/dialog-CngKTnAM.cjs.map +1 -0
  41. package/dist/{es-BP09DR9w.cjs → es-DgYj-1L3.cjs} +93 -1
  42. package/dist/es-DgYj-1L3.cjs.map +1 -0
  43. package/dist/{es-BSXz5tBv.js → es-DoXTqFoO.js} +93 -1
  44. package/dist/es-DoXTqFoO.js.map +1 -0
  45. package/dist/{form-design-panel-vWWU9uB-.js → form-design-panel-CgV_5YWC.js} +3 -3
  46. package/dist/{form-design-panel-vWWU9uB-.js.map → form-design-panel-CgV_5YWC.js.map} +1 -1
  47. package/dist/{form-design-panel-B5MXTZ96.cjs → form-design-panel-D0FdmWXW.cjs} +3 -3
  48. package/dist/{form-design-panel-B5MXTZ96.cjs.map → form-design-panel-D0FdmWXW.cjs.map} +1 -1
  49. package/dist/{fr-Ckn3K9v1.js → fr-B-8NDhBA.js} +93 -1
  50. package/dist/fr-B-8NDhBA.js.map +1 -0
  51. package/dist/{fr-BBQQn7tJ.cjs → fr-C856dmQJ.cjs} +93 -1
  52. package/dist/fr-C856dmQJ.cjs.map +1 -0
  53. package/dist/{he-DRsG7bH7.cjs → he-BFTeNc4t.cjs} +93 -1
  54. package/dist/he-BFTeNc4t.cjs.map +1 -0
  55. package/dist/{he-wdGU5PkU.js → he-Dlh0fNXM.js} +93 -1
  56. package/dist/he-Dlh0fNXM.js.map +1 -0
  57. package/dist/{icons-x0Tc05bs.cjs → icons-1UfLUZ_y.cjs} +20 -1
  58. package/dist/icons-1UfLUZ_y.cjs.map +1 -0
  59. package/dist/{icons-BrK5iVL8.js → icons-7dB0Y1ct.js} +20 -1
  60. package/dist/icons-7dB0Y1ct.js.map +1 -0
  61. package/dist/index.cjs +740 -171
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +16 -2
  64. package/dist/index.d.ts +16 -2
  65. package/dist/index.js +727 -170
  66. package/dist/index.js.map +1 -1
  67. package/dist/{it-BuP4o0xQ.cjs → it-Bef-2Yxq.cjs} +93 -1
  68. package/dist/it-Bef-2Yxq.cjs.map +1 -0
  69. package/dist/{it-Us-VmvIu.js → it-BkirG7ol.js} +93 -1
  70. package/dist/it-BkirG7ol.js.map +1 -0
  71. package/dist/{ja-Cizj0-5O.js → ja-CGEjCE-s.js} +93 -1
  72. package/dist/ja-CGEjCE-s.js.map +1 -0
  73. package/dist/{ja-DovEd6ts.cjs → ja-DNw2zqSD.cjs} +93 -1
  74. package/dist/ja-DNw2zqSD.cjs.map +1 -0
  75. package/dist/{ko-DlrXliE1.js → ko-CTkl5vMh.js} +93 -1
  76. package/dist/ko-CTkl5vMh.js.map +1 -0
  77. package/dist/{ko-B-qJEol2.cjs → ko-YHzeBqP6.cjs} +93 -1
  78. package/dist/ko-YHzeBqP6.cjs.map +1 -0
  79. package/dist/{link-editor-CSjqPnj1.cjs → link-editor-CAS7MZM2.cjs} +2 -2
  80. package/dist/{link-editor-CSjqPnj1.cjs.map → link-editor-CAS7MZM2.cjs.map} +1 -1
  81. package/dist/{link-editor-SxM1nnJU.js → link-editor-CkwtqRvb.js} +2 -2
  82. package/dist/{link-editor-SxM1nnJU.js.map → link-editor-CkwtqRvb.js.map} +1 -1
  83. package/dist/{measurement-Bs61XWbJ.js → measurement-CQdbnIrn.js} +2 -2
  84. package/dist/{measurement-Bs61XWbJ.js.map → measurement-CQdbnIrn.js.map} +1 -1
  85. package/dist/{measurement-CcCsHPOX.cjs → measurement-Cxv1Ahxx.cjs} +2 -2
  86. package/dist/{measurement-CcCsHPOX.cjs.map → measurement-Cxv1Ahxx.cjs.map} +1 -1
  87. package/dist/{nl-D3KZDDiJ.cjs → nl-BjkbaLq3.cjs} +93 -1
  88. package/dist/nl-BjkbaLq3.cjs.map +1 -0
  89. package/dist/{nl-0aF7M_0h.js → nl-Dya4sR8_.js} +93 -1
  90. package/dist/nl-Dya4sR8_.js.map +1 -0
  91. package/dist/outline-panel-BpGtBdj0.cjs +707 -0
  92. package/dist/outline-panel-BpGtBdj0.cjs.map +1 -0
  93. package/dist/outline-panel-DO5_REYw.js +707 -0
  94. package/dist/outline-panel-DO5_REYw.js.map +1 -0
  95. package/dist/outline-properties-BCa2cc0t.js +330 -0
  96. package/dist/outline-properties-BCa2cc0t.js.map +1 -0
  97. package/dist/outline-properties-DT3FIxCw.cjs +330 -0
  98. package/dist/outline-properties-DT3FIxCw.cjs.map +1 -0
  99. package/dist/{pl-DSFhAUqx.cjs → pl-CKKdVnpZ.cjs} +93 -1
  100. package/dist/pl-CKKdVnpZ.cjs.map +1 -0
  101. package/dist/{pl-BW--AaCI.js → pl-DA9b5NVg.js} +93 -1
  102. package/dist/pl-DA9b5NVg.js.map +1 -0
  103. package/dist/print-dialog-BqIrHCBh.cjs +276 -0
  104. package/dist/print-dialog-BqIrHCBh.cjs.map +1 -0
  105. package/dist/print-dialog-DvcI2m2_.js +276 -0
  106. package/dist/print-dialog-DvcI2m2_.js.map +1 -0
  107. package/dist/{pt-C5S-8MC5.cjs → pt-DLcszlzi.cjs} +93 -1
  108. package/dist/pt-DLcszlzi.cjs.map +1 -0
  109. package/dist/{pt-DIhpU5pT.js → pt-Nm8yyjbX.js} +93 -1
  110. package/dist/pt-Nm8yyjbX.js.map +1 -0
  111. package/dist/{redact-confirm-CX_SY2ZN.cjs → redact-confirm-C6EiK8yN.cjs} +2 -2
  112. package/dist/{redact-confirm-CX_SY2ZN.cjs.map → redact-confirm-C6EiK8yN.cjs.map} +1 -1
  113. package/dist/{redact-confirm-B6j36TPw.js → redact-confirm-CKuv9iN_.js} +2 -2
  114. package/dist/{redact-confirm-B6j36TPw.js.map → redact-confirm-CKuv9iN_.js.map} +1 -1
  115. package/dist/{redaction-panel-IJDshSJI.js → redaction-panel-CgNZ-pQk.js} +2 -2
  116. package/dist/{redaction-panel-IJDshSJI.js.map → redaction-panel-CgNZ-pQk.js.map} +1 -1
  117. package/dist/{redaction-panel-BmoIl-Ll.cjs → redaction-panel-ZhX0dlMi.cjs} +2 -2
  118. package/dist/{redaction-panel-BmoIl-Ll.cjs.map → redaction-panel-ZhX0dlMi.cjs.map} +1 -1
  119. package/dist/{search-panel-HfIhJm1M.js → search-panel-BE4xzWlm.js} +4 -4
  120. package/dist/{search-panel-HfIhJm1M.js.map → search-panel-BE4xzWlm.js.map} +1 -1
  121. package/dist/{search-panel-s9IoiOtv.cjs → search-panel-wcbTNG1z.cjs} +4 -4
  122. package/dist/{search-panel-s9IoiOtv.cjs.map → search-panel-wcbTNG1z.cjs.map} +1 -1
  123. package/dist/{sheet-BDsa_Sup.cjs → sheet-DTBFiwde.cjs} +30 -11
  124. package/dist/sheet-DTBFiwde.cjs.map +1 -0
  125. package/dist/{sheet-R6XDgyEf.js → sheet-DyjKfAq0.js} +25 -12
  126. package/dist/sheet-DyjKfAq0.js.map +1 -0
  127. package/dist/{sign-dialog-CgnR7akj.cjs → sign-dialog-D5WGx-Yn.cjs} +2 -2
  128. package/dist/{sign-dialog-CgnR7akj.cjs.map → sign-dialog-D5WGx-Yn.cjs.map} +1 -1
  129. package/dist/{sign-dialog-GDqCoQhA.js → sign-dialog-DerNe8qT.js} +2 -2
  130. package/dist/{sign-dialog-GDqCoQhA.js.map → sign-dialog-DerNe8qT.js.map} +1 -1
  131. package/dist/{signature-inspector-DyO313Qf.cjs → signature-inspector-Bz6TAfZM.cjs} +4 -10
  132. package/dist/signature-inspector-Bz6TAfZM.cjs.map +1 -0
  133. package/dist/{signature-inspector-okFz8do6.js → signature-inspector-CsGr9EBk.js} +4 -10
  134. package/dist/signature-inspector-CsGr9EBk.js.map +1 -0
  135. package/dist/{signature-maker-BoYa8vgA.cjs → signature-maker-D_YfBXLn.cjs} +3 -3
  136. package/dist/{signature-maker-BoYa8vgA.cjs.map → signature-maker-D_YfBXLn.cjs.map} +1 -1
  137. package/dist/{signature-maker-BhCmYyHD.js → signature-maker-Dnth4rV4.js} +3 -3
  138. package/dist/{signature-maker-BhCmYyHD.js.map → signature-maker-Dnth4rV4.js.map} +1 -1
  139. package/dist/{signatures-panel-B56PC6d9.cjs → signatures-panel-Ci_LaI1C.cjs} +4 -10
  140. package/dist/signatures-panel-Ci_LaI1C.cjs.map +1 -0
  141. package/dist/{signatures-panel-CgnFfhFm.js → signatures-panel-DZ9ywrjz.js} +4 -10
  142. package/dist/signatures-panel-DZ9ywrjz.js.map +1 -0
  143. package/dist/{stamps-panel-CDO0FPyK.js → stamps-panel-BrczStaz.js} +4 -10
  144. package/dist/stamps-panel-BrczStaz.js.map +1 -0
  145. package/dist/{stamps-panel-B9NYGayn.cjs → stamps-panel-Cv9nJBwx.cjs} +4 -10
  146. package/dist/stamps-panel-Cv9nJBwx.cjs.map +1 -0
  147. package/dist/theme-Be0OZokZ.js +97 -0
  148. package/dist/theme-Be0OZokZ.js.map +1 -0
  149. package/dist/theme-FR26JI3r.cjs +126 -0
  150. package/dist/theme-FR26JI3r.cjs.map +1 -0
  151. package/dist/{toolbar-z9od3tKl.js → toolbar-DF361xWY.js} +7 -6
  152. package/dist/toolbar-DF361xWY.js.map +1 -0
  153. package/dist/{toolbar-CJu2wKTU.cjs → toolbar-ddvpsvTb.cjs} +7 -6
  154. package/dist/toolbar-ddvpsvTb.cjs.map +1 -0
  155. package/dist/{zh-cn-CxkUUBct.js → zh-cn-BMPPkLpL.js} +93 -1
  156. package/dist/zh-cn-BMPPkLpL.js.map +1 -0
  157. package/dist/{zh-cn-3tmMeHqv.cjs → zh-cn-CZOO3p4H.cjs} +93 -1
  158. package/dist/zh-cn-CZOO3p4H.cjs.map +1 -0
  159. package/package.json +4 -4
  160. package/src/styles.css +8 -0
  161. package/dist/ar-D9XKAmDx.js.map +0 -1
  162. package/dist/ar-DnEj5vbP.cjs.map +0 -1
  163. package/dist/commands-BmgxhJ8B.js.map +0 -1
  164. package/dist/commands-CYt4SFUX.cjs.map +0 -1
  165. package/dist/de-Bdr4aWzm.js.map +0 -1
  166. package/dist/de-Dv6zvbnd.cjs.map +0 -1
  167. package/dist/dialog-B5GBisKv.js.map +0 -1
  168. package/dist/dialog-t8F13BL_.cjs.map +0 -1
  169. package/dist/es-BP09DR9w.cjs.map +0 -1
  170. package/dist/es-BSXz5tBv.js.map +0 -1
  171. package/dist/fr-BBQQn7tJ.cjs.map +0 -1
  172. package/dist/fr-Ckn3K9v1.js.map +0 -1
  173. package/dist/he-DRsG7bH7.cjs.map +0 -1
  174. package/dist/he-wdGU5PkU.js.map +0 -1
  175. package/dist/icons-BrK5iVL8.js.map +0 -1
  176. package/dist/icons-x0Tc05bs.cjs.map +0 -1
  177. package/dist/it-BuP4o0xQ.cjs.map +0 -1
  178. package/dist/it-Us-VmvIu.js.map +0 -1
  179. package/dist/ja-Cizj0-5O.js.map +0 -1
  180. package/dist/ja-DovEd6ts.cjs.map +0 -1
  181. package/dist/ko-B-qJEol2.cjs.map +0 -1
  182. package/dist/ko-DlrXliE1.js.map +0 -1
  183. package/dist/nl-0aF7M_0h.js.map +0 -1
  184. package/dist/nl-D3KZDDiJ.cjs.map +0 -1
  185. package/dist/pl-BW--AaCI.js.map +0 -1
  186. package/dist/pl-DSFhAUqx.cjs.map +0 -1
  187. package/dist/pt-C5S-8MC5.cjs.map +0 -1
  188. package/dist/pt-DIhpU5pT.js.map +0 -1
  189. package/dist/sheet-BDsa_Sup.cjs.map +0 -1
  190. package/dist/sheet-R6XDgyEf.js.map +0 -1
  191. package/dist/signature-inspector-DyO313Qf.cjs.map +0 -1
  192. package/dist/signature-inspector-okFz8do6.js.map +0 -1
  193. package/dist/signatures-panel-B56PC6d9.cjs.map +0 -1
  194. package/dist/signatures-panel-CgnFfhFm.js.map +0 -1
  195. package/dist/stamps-panel-B9NYGayn.cjs.map +0 -1
  196. package/dist/stamps-panel-CDO0FPyK.js.map +0 -1
  197. package/dist/toolbar-CJu2wKTU.cjs.map +0 -1
  198. package/dist/toolbar-z9od3tKl.js.map +0 -1
  199. package/dist/zh-cn-3tmMeHqv.cjs.map +0 -1
  200. package/dist/zh-cn-CxkUUBct.js.map +0 -1
@@ -100,6 +100,7 @@ const ar = {
100
100
  note: "تعليق",
101
101
  link: "ارتباط",
102
102
  gotoLink: "الانتقال إلى الارتباط",
103
+ saveFile: "حفظ الملف",
103
104
  removeLink: "إزالة الارتباط",
104
105
  delete: "حذف",
105
106
  group: "تجميع",
@@ -156,12 +157,44 @@ const ar = {
156
157
  "annotations-create": "لا يُسمح بإضافة تعليقات توضيحية",
157
158
  "doc-annotate-modify": "لا يُسمح بتغيير التعليقات التوضيحية",
158
159
  "doc-annotate-read": "لا يُسمح بعرض التعليقات التوضيحية",
160
+ "doc-attachments-modify": "لا يُسمح بإضافة ملفات",
159
161
  "doc-download": "لا يُسمح بالتنزيل",
160
162
  "doc-forms-modify": "لا يُسمح بتحرير حقول النماذج",
163
+ "doc-outline-modify": "لا يُسمح بتغيير المخطط",
164
+ "doc-pages-assemble": "لا يُسمح بتغيير الصفحات",
161
165
  "doc-print": "لا يُسمح بالطباعة",
162
166
  "doc-text-copy": "لا يُسمح بالنسخ",
163
167
  "doc-text-search": "لا يُسمح بالبحث"
164
168
  },
169
+ attachment: {
170
+ add: "إضافة ملف",
171
+ save: "حفظ",
172
+ goTo: "الانتقال إلى الصفحة",
173
+ delete: "حذف",
174
+ more: "خيارات إضافية"
175
+ },
176
+ outline: {
177
+ add: "إضافة عنصر",
178
+ addChild: "إضافة عنصر فرعي",
179
+ rename: "إعادة التسمية",
180
+ setDestination: "تعيين الوجهة إلى العرض الحالي",
181
+ properties: "الخصائص…",
182
+ delete: "حذف",
183
+ expandAll: "توسيع الكل",
184
+ collapseAll: "طي الكل",
185
+ more: "مزيد من الخيارات"
186
+ },
187
+ pages: {
188
+ rotateClockwise: "تدوير الصفحة باتجاه عقارب الساعة",
189
+ rotateCounterclockwise: "تدوير الصفحة عكس اتجاه عقارب الساعة",
190
+ delete: "حذف الصفحات",
191
+ duplicate: "تكرار الصفحات",
192
+ insertBlank: "إدراج صفحة فارغة",
193
+ insertFile: "إدراج من ملف…",
194
+ extract: "استخراج الصفحات",
195
+ selectAll: "تحديد كل الصفحات",
196
+ more: "خيارات الصفحة"
197
+ },
165
198
  turnedOff: "{label}: غير متاح"
166
199
  },
167
200
  passwordPrompt: {
@@ -214,6 +247,25 @@ const ar = {
214
247
  other: "أخرى"
215
248
  },
216
249
  goToPage: { go: "انتقال" },
250
+ print: {
251
+ title: "طباعة",
252
+ pages: "الصفحات",
253
+ allPages: "كل الصفحات",
254
+ currentPage: "الصفحة الحالية",
255
+ range: "مخصص",
256
+ rangeLabel: "الصفحات المراد طباعتها",
257
+ rangePlaceholder: "مثال: 1-3, 5",
258
+ rangeInvalid: "أرقام الصفحات من 1 إلى {total}، مثل 1-3, 5",
259
+ annotations: "طباعة التعليقات التوضيحية",
260
+ preparing: "جارٍ التحضير…",
261
+ preparingPage: "جارٍ تحضير الصفحة {page} من {total}…",
262
+ ready: "جاهز للطباعة.",
263
+ images: "تُطبع الصفحات كصور بدقة {dpi} DPI.",
264
+ lowResolution: "يسمح هذا المستند بالطباعة بدقة منخفضة فقط ({dpi} DPI).",
265
+ failed: "تعذّر تحضير الطباعة.",
266
+ cancel: "إلغاء",
267
+ print: "طباعة"
268
+ },
217
269
  panels: {
218
270
  thumbnails: "الصور المصغرة",
219
271
  outline: "المخطط",
@@ -409,6 +461,46 @@ const ar = {
409
461
  noRotate: "يبقى قائمًا عند تدوير الصفحة",
410
462
  invisible: "قديم: إخفاء الأنواع الفرعية غير المعروفة"
411
463
  },
464
+ attachments: {
465
+ loading: "جارٍ تحميل المرفقات…",
466
+ failed: "تعذّرت قراءة المرفقات.",
467
+ empty: "لا يحتوي هذا المستند على ملفات مرفقة",
468
+ drop: "أفلت الملفات لإرفاقها",
469
+ dropHint: "أو أفلت الملفات هنا",
470
+ adding: "جارٍ الإضافة…",
471
+ onPage: "الصفحة {page}",
472
+ count: "{count} ملف",
473
+ countPlural: "{count} ملفات"
474
+ },
475
+ outline: {
476
+ filter: "تصفية المخطط",
477
+ loading: "جارٍ تحميل المخطط…",
478
+ failed: "تعذّرت قراءة المخطط.",
479
+ empty: "لا يحتوي هذا المستند على مخطط",
480
+ noMatches: "لا توجد عناصر مطابقة",
481
+ incomplete: "تعذّرت قراءة جزء من المخطط.",
482
+ untitled: "بلا عنوان",
483
+ properties: {
484
+ title: "خصائص العنصر",
485
+ name: "العنوان",
486
+ color: "اللون",
487
+ noColor: "بلا",
488
+ customColor: "لون مخصص",
489
+ bold: "غامق",
490
+ italic: "مائل",
491
+ open: "موسّع عند فتح المستند",
492
+ target: "الوجهة",
493
+ targetNone: "بلا",
494
+ targetView: "العرض الحالي",
495
+ targetNamed: "إجراء الصفحة",
496
+ targetKept: "يبقى كما هو",
497
+ keptNote: "يشغّل هذا العنصر برنامجًا نصيًا أو يفتح ملفًا آخر، ولا يمكن تغييره هنا.",
498
+ fit: "الملاءمة",
499
+ fitKept: "كما هو",
500
+ save: "حفظ",
501
+ cancel: "إلغاء"
502
+ }
503
+ },
412
504
  linkEditor: {
413
505
  toUrl: "ارتباط بعنوان URL",
414
506
  url: "عنوان URL",
@@ -564,4 +656,4 @@ const ar = {
564
656
  //#endregion
565
657
  export { ar };
566
658
 
567
- //# sourceMappingURL=ar-D9XKAmDx.js.map
659
+ //# sourceMappingURL=ar-BLWFJoA_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-BLWFJoA_.js","names":[],"sources":["../src/locales/ar.ts"],"sourcesContent":["import type { Locale } from '@embedpdf/react/i18n';\n\n/**\n * Arabic pack, in the words Adobe Acrobat's Arabic edition uses. Machine-translated from the\n * English pack (`./en.ts`) and not yet reviewed by a native speaker.\n */\nexport const ar: Locale = {\n code: 'ar',\n name: 'العربية',\n direction: 'rtl',\n translations: {\n measurement: {\n title: 'القياسات',\n distance: 'المسافة',\n perimeter: 'المحيط',\n area: 'المساحة',\n areaUnit: 'وحدة المساحة',\n resetLabel: 'إعادة تعيين موضع التسمية',\n calibrate: 'معايرة المقياس',\n scale: 'المقياس',\n custom: 'مخصص',\n unavailable: 'غير متاح',\n instructions:\n 'اسحب لقياس مسافة، ثم انقر لوضع خط البُعد. انقر على الرؤوس لقياس محيط أو مساحة، ثم انقر نقرًا مزدوجًا للإنهاء. يجب ألا تتقاطع حدود المساحة؛ ولا يمكن إنهاء معاينة غير متاحة. اضغط Escape للإلغاء. اسحب التسمية نفسها لنقلها.',\n sessionOnly: 'يحتفظ هذا المحرك بمعايرة الصفحة لهذه الجلسة فقط.',\n allPages: 'تطبيق على كل الصفحات',\n recalculate: 'إعادة حساب القياسات الحالية',\n preset: 'مقياس مُعد مسبقًا',\n choosePreset: 'اختر إعدادًا مسبقًا',\n unit: 'الوحدة',\n precision: 'الدقة',\n selection: 'القياسات المحددة',\n report: 'تم التحديث: {updated} · تم التخطي: {skipped} · فشل: {failed}',\n knownLength: 'أدخل الطول الحقيقي الذي يمثله الخط الذي رسمته للتو.',\n length: 'الطول المعروف',\n apply: 'تطبيق المقياس',\n applying: 'جارٍ التطبيق…',\n },\n commands: {\n zoom: {\n in: 'تكبير',\n out: 'تصغير',\n fitPage: 'ملاءمة الصفحة',\n fitWidth: 'ملاءمة العرض',\n automatic: 'تلقائي',\n menu: 'تكبير/تصغير',\n level: 'مستوى التكبير',\n p50: '50%',\n p100: '100%',\n p150: '150%',\n p200: '200%',\n p400: '400%',\n },\n pan: 'تحريك',\n pointer: 'المؤشر',\n comment: 'تعليق',\n style: 'النمط',\n menu: 'القائمة',\n viewControls: 'أدوات العرض',\n open: 'فتح',\n download: 'تنزيل',\n print: 'طباعة',\n fullscreen: 'ملء الشاشة',\n spread: {\n group: 'تخطيط الصفحة',\n none: 'صفحة واحدة',\n odd: 'صفحتان',\n even: 'صفحة الغلاف',\n },\n scroll: {\n group: 'التمرير',\n vertical: 'عمودي',\n horizontal: 'أفقي',\n },\n rotate: {\n group: 'تدوير',\n clockwise: 'تدوير باتجاه عقارب الساعة',\n counterclockwise: 'تدوير عكس عقارب الساعة',\n },\n mode: {\n measure: 'قياس',\n group: 'الوضع',\n view: 'عرض',\n annotate: 'تعليق توضيحي',\n shapes: 'أشكال',\n insert: 'إدراج',\n form: 'نموذج',\n redact: 'تنقيح',\n },\n annotate: {\n cancelCreation: 'إلغاء الرسم',\n highlight: 'تمييز',\n strikeout: 'شطب',\n underline: 'تسطير',\n squiggly: 'خط متموج',\n ink: 'رسم',\n inkHighlight: 'قلم تمييز',\n text: 'نص',\n insertText: 'إدراج نص',\n replaceText: 'استبدال النص',\n callout: 'وسيلة شرح',\n note: 'تعليق',\n link: 'ارتباط',\n gotoLink: 'الانتقال إلى الارتباط',\n saveFile: 'حفظ الملف',\n removeLink: 'إزالة الارتباط',\n delete: 'حذف',\n group: 'تجميع',\n ungroup: 'فك التجميع',\n stampFromSelection: 'إنشاء ختم',\n strip: 'إجراءات التعليق التوضيحي',\n },\n selection: {\n copy: 'نسخ',\n strip: 'إجراءات تحديد النص',\n },\n shapes: {\n rectangle: 'مستطيل',\n circle: 'دائرة',\n line: 'خط',\n arrow: 'سهم',\n polygon: 'مضلع',\n polyline: 'خط متعدد',\n },\n insert: {\n stamp: 'ختم',\n attachment: 'إرفاق ملف',\n signature: 'توقيع',\n image: 'صورة',\n },\n form: {\n textfield: 'حقل نص',\n checkbox: 'خانة اختيار',\n radio: 'زر اختيار',\n select: 'قائمة منسدلة',\n listbox: 'مربع قائمة',\n button: 'زر',\n signature: 'حقل توقيع',\n // The Form mode's design switch, which opens the form designer's sidebar.\n design: 'تصميم النموذج',\n },\n redact: {\n mark: 'تحديد للتنقيح',\n applyAll: 'تطبيق التنقيحات',\n clearAll: 'مسح العلامات',\n },\n undo: 'تراجع',\n redo: 'إعادة',\n page: {\n next: 'الصفحة التالية',\n previous: 'الصفحة السابقة',\n first: 'الصفحة الأولى',\n last: 'الصفحة الأخيرة',\n goTo: 'الانتقال إلى الصفحة',\n },\n find: 'بحث',\n shortcuts: 'اختصارات لوحة المفاتيح',\n notAllowed: {\n default: '{label}: غير مسموح',\n 'annotations-create': 'لا يُسمح بإضافة تعليقات توضيحية',\n 'doc-annotate-modify': 'لا يُسمح بتغيير التعليقات التوضيحية',\n 'doc-annotate-read': 'لا يُسمح بعرض التعليقات التوضيحية',\n 'doc-attachments-modify': 'لا يُسمح بإضافة ملفات',\n 'doc-download': 'لا يُسمح بالتنزيل',\n 'doc-forms-modify': 'لا يُسمح بتحرير حقول النماذج',\n 'doc-outline-modify': 'لا يُسمح بتغيير المخطط',\n 'doc-pages-assemble': 'لا يُسمح بتغيير الصفحات',\n 'doc-print': 'لا يُسمح بالطباعة',\n 'doc-text-copy': 'لا يُسمح بالنسخ',\n 'doc-text-search': 'لا يُسمح بالبحث',\n },\n attachment: {\n add: 'إضافة ملف',\n save: 'حفظ',\n goTo: 'الانتقال إلى الصفحة',\n delete: 'حذف',\n more: 'خيارات إضافية',\n },\n outline: {\n add: 'إضافة عنصر',\n addChild: 'إضافة عنصر فرعي',\n rename: 'إعادة التسمية',\n setDestination: 'تعيين الوجهة إلى العرض الحالي',\n properties: 'الخصائص…',\n delete: 'حذف',\n expandAll: 'توسيع الكل',\n collapseAll: 'طي الكل',\n more: 'مزيد من الخيارات',\n },\n // The page commands, in the Pages mode and a page's menu.\n pages: {\n rotateClockwise: 'تدوير الصفحة باتجاه عقارب الساعة',\n rotateCounterclockwise: 'تدوير الصفحة عكس اتجاه عقارب الساعة',\n delete: 'حذف الصفحات',\n duplicate: 'تكرار الصفحات',\n insertBlank: 'إدراج صفحة فارغة',\n insertFile: 'إدراج من ملف…',\n extract: 'استخراج الصفحات',\n selectAll: 'تحديد كل الصفحات',\n more: 'خيارات الصفحة',\n },\n turnedOff: '{label}: غير متاح',\n },\n passwordPrompt: {\n title: 'كلمة المرور مطلوبة',\n required: 'هذا المستند محمي بكلمة مرور. أدخل كلمة المرور لفتحه.',\n incorrect: 'كلمة المرور غير صحيحة. يرجى المحاولة مرة أخرى.',\n incorrectWarning: 'كلمة مرور غير صحيحة',\n label: 'كلمة المرور',\n placeholder: 'أدخل كلمة المرور',\n cancel: 'إلغاء',\n open: 'فتح',\n opening: 'جارٍ الفتح…',\n },\n dropToOpen: {\n label: 'أفلت ملف PDF لفتحه',\n },\n documentError: {\n title: 'تعذر فتح المستند',\n unknown: 'تعذر فتح المستند.',\n notFound: 'تعذر العثور على الملف.',\n notAllowed: 'ليس لديك حق الوصول إلى هذا المستند.',\n damaged: 'هذا الملف ليس PDF أو أنه تالف.',\n unsupported: 'لا يمكن لهذا العارض فتح هذا النوع من المستندات.',\n retry: 'إعادة المحاولة',\n close: 'إغلاق المستند',\n },\n tabs: {\n close: 'إغلاق {name}',\n loading: 'جارٍ التحميل',\n untitled: 'المستند {id}',\n },\n closeUnsaved: {\n title: 'الإغلاق دون حفظ؟',\n body: 'يحتوي «{name}» على تغييرات لم يتم تنزيلها. ستُفقد هذه التغييرات.',\n cancel: 'إلغاء',\n close: 'إغلاق دون حفظ',\n },\n viewOnly: {\n label: 'للعرض فقط',\n turnedOff: 'تم إيقاف تشغيل الأدوات التي تغيّر هذا المستند',\n notAllowed: 'يمكنك قراءة هذا المستند، لكن لا يمكنك تغييره',\n },\n panel: {\n close: 'إغلاق',\n resize: 'تغيير حجم {title}',\n },\n menu: {\n back: 'رجوع',\n },\n shortcuts: {\n document: 'المستند',\n viewing: 'العرض',\n editing: 'التحرير',\n other: 'أخرى',\n },\n goToPage: {\n go: 'انتقال',\n },\n print: {\n title: 'طباعة',\n pages: 'الصفحات',\n allPages: 'كل الصفحات',\n currentPage: 'الصفحة الحالية',\n range: 'مخصص',\n rangeLabel: 'الصفحات المراد طباعتها',\n rangePlaceholder: 'مثال: 1-3, 5',\n rangeInvalid: 'أرقام الصفحات من 1 إلى {total}، مثل 1-3, 5',\n annotations: 'طباعة التعليقات التوضيحية',\n preparing: 'جارٍ التحضير…',\n preparingPage: 'جارٍ تحضير الصفحة {page} من {total}…',\n ready: 'جاهز للطباعة.',\n images: 'تُطبع الصفحات كصور بدقة {dpi} DPI.',\n lowResolution: 'يسمح هذا المستند بالطباعة بدقة منخفضة فقط ({dpi} DPI).',\n failed: 'تعذّر تحضير الطباعة.',\n cancel: 'إلغاء',\n print: 'طباعة',\n },\n panels: {\n thumbnails: 'الصور المصغرة',\n outline: 'المخطط',\n attachments: 'المرفقات',\n search: 'بحث',\n comments: 'التعليقات',\n style: 'النمط',\n stamps: 'الأختام',\n signatures: 'التوقيعات',\n redaction: 'التنقيحات',\n measurement: 'القياسات',\n formDesign: 'تصميم النموذج',\n switch: 'تبديل اللوحة',\n },\n annotation: {\n comment: 'تعليق',\n highlight: 'تمييز',\n underline: 'تسطير',\n squiggly: 'خط متموج',\n strikeout: 'شطب',\n square: 'مربع',\n circle: 'دائرة',\n line: 'خط',\n polygon: 'مضلع',\n polyline: 'خط متعدد',\n ink: 'حبر',\n freeText: 'نص',\n stamp: 'ختم',\n caret: 'علامة إقحام',\n redact: 'تنقيح',\n fileAttachment: 'مرفق',\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: 'العتامة',\n stroke: 'الحد',\n fill: 'التعبئة',\n color: 'اللون',\n strokeWidth: 'عرض الحد',\n border: 'الإطار',\n borderStyle: 'نمط الإطار',\n borderColor: 'لون الإطار',\n borderWidth: 'عرض الإطار',\n background: 'الخلفية',\n outline: 'الحد الخارجي',\n lineEndings: 'نهايات الخط',\n blendMode: 'وضع المزج',\n font: 'الخط',\n fontSize: 'حجم الخط',\n textColor: 'لون النص',\n bold: 'غامق',\n italic: 'مائل',\n underline: 'تسطير',\n align: 'محاذاة',\n alignment: 'المحاذاة',\n label: 'التسمية',\n labelFont: 'خط التسمية',\n labelSize: 'حجم التسمية',\n labelColor: 'لون التسمية',\n icon: 'الأيقونة',\n link: 'الارتباط',\n },\n // The annotation flags (`/F`).\n flags: {\n print: 'طباعة',\n hidden: 'مخفي',\n noView: 'عدم العرض',\n toggleNoView: 'تبديل عدم العرض',\n readOnly: 'للقراءة فقط',\n locked: 'مقفل',\n lockedContents: 'محتويات مقفلة',\n noZoom: 'عدم التكبير/التصغير',\n noRotate: 'عدم التدوير',\n invisible: 'غير مرئي',\n },\n borderStyles: { solid: 'متصل', dashed: 'متقطع', cloudy: 'سحابي' },\n lineEndings: {\n none: 'بلا',\n square: 'مربع',\n circle: 'دائرة',\n diamond: 'معيّن',\n openArrow: 'سهم مفتوح',\n closedArrow: 'سهم مغلق',\n butt: 'طرف مسطح',\n reverseOpenArrow: 'سهم مفتوح معكوس',\n reverseClosedArrow: 'سهم مغلق معكوس',\n slash: 'شرطة مائلة',\n },\n blendModes: {\n normal: 'عادي',\n multiply: 'ضرب',\n screen: 'شاشة',\n overlay: 'تراكب',\n darken: 'تغميق',\n lighten: 'تفتيح',\n colorDodge: 'مراوغة اللون',\n colorBurn: 'حرق اللون',\n hardLight: 'ضوء ساطع',\n softLight: 'ضوء خافت',\n difference: 'اختلاف',\n exclusion: 'استبعاد',\n hue: 'تدرج اللون',\n saturation: 'تشبع',\n color: 'لون',\n luminosity: 'إضاءة',\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: 'يسار', center: 'توسيط', right: 'يمين' },\n noteIcons: {\n comment: 'تعليق',\n key: 'مفتاح',\n note: 'ملاحظة',\n help: 'تعليمات',\n newParagraph: 'فقرة جديدة',\n paragraph: 'فقرة',\n insert: 'إدراج',\n },\n attachmentIcons: {\n pushPin: 'دبوس',\n paperclip: 'مشبك ورق',\n graph: 'رسم بياني',\n tag: 'علامة',\n },\n },\n // A form field's settings, as the form plugin names them (`labelKey`).\n form: {\n settings: {\n name: 'الاسم',\n tooltip: 'تلميح الأداة',\n required: 'مطلوب',\n readOnly: 'للقراءة فقط',\n noExport: 'عدم التصدير',\n defaultValue: 'القيمة الافتراضية',\n maxLength: 'الحد الأقصى للطول',\n multiline: 'أسطر متعددة',\n password: 'كلمة المرور',\n comb: 'حرف واحد في كل خانة',\n radiosInUnison: 'تُحدَّد الأزرار ذات القيمة نفسها معًا',\n keepOneOn: 'إبقاء زر واحد محددًا',\n options: 'الخيارات',\n allowTyping: 'السماح بالكتابة',\n multiSelect: 'اختيارات متعددة',\n },\n },\n // A thumbnail's tooltip.\n thumbnails: { page: 'الصفحة {page}' },\n // The form designer's sidebar: the fields by page, and the selected one's buttons.\n formDesign: {\n empty: 'لا توجد حقول بعد. اختر أداة حقل لإضافة حقل.',\n page: 'الصفحة {page}',\n allFields: 'كل الحقول',\n buttons: 'الأزرار',\n boxes: 'الخانات',\n box: 'الخانة {number}',\n addButton: 'إضافة زر',\n addBox: 'إضافة خانة',\n },\n // The style panel's own words around the properties.\n stylePanel: {\n mixed: '(مختلط)',\n // A color swatch that takes the color away.\n transparent: 'شفاف',\n lineStart: 'البداية',\n lineEnd: 'النهاية',\n empty: 'اختر أداة رسم أو حدد تعليقًا توضيحيًا لتحرير نمطه.',\n selected: 'المحدد: {count}',\n toolDefaults: 'إعدادات {tool} الافتراضية',\n defaults: 'الإعدادات الافتراضية',\n },\n // The flags section of the style panel: its title, and what each flag does.\n annotationFlags: {\n title: 'العلامات (/F)',\n print: 'تضمينه عند طباعة الصفحة',\n hidden: 'مخفي في كل مكان: الشاشة والنقر والطباعة',\n noView: 'مخفي على الشاشة، وقد يُطبع',\n toggleNoView: 'إظهار التعليق التوضيحي غير المعروض أثناء تحديده',\n readOnly: 'مرئي لكن لا يمكن النقر عليه',\n locked: 'لا يمكن نقله أو تغيير حجمه أو حذفه أو تغيير نمطه',\n lockedContents: 'لا يمكن تغيير النص؛ يمكن تغيير الشكل',\n noZoom: 'حجم ثابت على الشاشة (مثبت من أعلى اليسار)',\n noRotate: 'يبقى قائمًا عند تدوير الصفحة',\n invisible: 'قديم: إخفاء الأنواع الفرعية غير المعروفة',\n },\n // The link editor over a selected annotation.\n attachments: {\n loading: 'جارٍ تحميل المرفقات…',\n failed: 'تعذّرت قراءة المرفقات.',\n empty: 'لا يحتوي هذا المستند على ملفات مرفقة',\n drop: 'أفلت الملفات لإرفاقها',\n dropHint: 'أو أفلت الملفات هنا',\n adding: 'جارٍ الإضافة…',\n onPage: 'الصفحة {page}',\n count: '{count} ملف',\n countPlural: '{count} ملفات',\n },\n outline: {\n filter: 'تصفية المخطط',\n loading: 'جارٍ تحميل المخطط…',\n failed: 'تعذّرت قراءة المخطط.',\n empty: 'لا يحتوي هذا المستند على مخطط',\n noMatches: 'لا توجد عناصر مطابقة',\n incomplete: 'تعذّرت قراءة جزء من المخطط.',\n untitled: 'بلا عنوان',\n properties: {\n title: 'خصائص العنصر',\n name: 'العنوان',\n color: 'اللون',\n noColor: 'بلا',\n customColor: 'لون مخصص',\n bold: 'غامق',\n italic: 'مائل',\n open: 'موسّع عند فتح المستند',\n target: 'الوجهة',\n targetNone: 'بلا',\n targetView: 'العرض الحالي',\n targetNamed: 'إجراء الصفحة',\n targetKept: 'يبقى كما هو',\n keptNote: 'يشغّل هذا العنصر برنامجًا نصيًا أو يفتح ملفًا آخر، ولا يمكن تغييره هنا.',\n fit: 'الملاءمة',\n fitKept: 'كما هو',\n save: 'حفظ',\n cancel: 'إلغاء',\n },\n },\n linkEditor: {\n toUrl: 'ارتباط بعنوان URL',\n url: 'عنوان URL',\n toPage: 'ارتباط بصفحة',\n page: 'الصفحة',\n urlPlaceholder: 'https://…',\n pagePlaceholder: 'رقم الصفحة',\n add: 'إضافة ارتباط',\n update: 'تحديث الارتباط',\n },\n demo: {\n starting: 'جارٍ بدء العارض…',\n opening: 'جارٍ فتح المستند…',\n more: 'المزيد',\n searchPlaceholder: 'البحث في المستند…',\n searchCaseSensitive: 'مطابقة حالة الأحرف',\n searchWholeWord: 'الكلمة كاملة',\n searchRegex: 'تعبير عادي',\n searchSearching: 'جارٍ البحث…',\n searchResults: 'عدد النتائج: {count}',\n searchNoResults: 'لا توجد نتائج',\n searchPrevious: 'النتيجة السابقة',\n searchNext: 'النتيجة التالية',\n searchPage: 'الصفحة {page}',\n commentsForbidden: 'ليس لديك حق الوصول إلى التعليقات في هذا المستند.',\n commentsLoading: 'جارٍ تحميل التعليقات…',\n commentsError: 'فشل تحميل التعليقات.',\n commentsRetry: 'إعادة المحاولة',\n commentsEmpty: 'لا توجد تعليقات بعد. استخدم أداة الملاحظة لبدء سلسلة تعليقات.',\n commentsEmptyReadOnly: 'لا توجد تعليقات على هذا المستند.',\n commentsAnonymous: 'غير معروف',\n commentsPage: 'الصفحة {page}',\n commentCount: 'التعليقات: {count}',\n commentCountPlural: 'التعليقات: {count}',\n commentsReply: 'رد',\n commentsReplyPlaceholder: 'رد…',\n commentsAddPlaceholder: 'إضافة تعليق…',\n commentsDelete: 'حذف التعليق',\n commentsDeleteThread: 'حذف سلسلة التعليقات',\n commentsEdit: 'تحرير التعليق',\n commentsStatus: 'الحالة',\n commentsStatusNone: 'بلا حالة',\n commentsStatusAccepted: 'مقبول',\n commentsStatusRejected: 'مرفوض',\n commentsStatusCancelled: 'ملغى',\n commentsStatusCompleted: 'مكتمل',\n empty: 'لا يوجد شيء هنا بعد في لوحة العرض التوضيحي هذه.',\n page: 'الصفحة {current} من {total}',\n goToPage: 'الانتقال إلى الصفحة',\n cancel: 'إلغاء',\n pageBadge: 'ص. {page}',\n redactionEmpty: 'لا توجد تنقيحات معلقة. استخدم أداة التنقيح لتحديد نص أو مناطق.',\n redactionArea: 'علامة منطقة',\n redactionText: 'علامة نص',\n redactionRemove: 'إزالة العلامة',\n redactConfirmTitle: 'تطبيق التنقيحات؟',\n redactConfirmBody:\n 'ستتم إزالة المحتوى الموجود أسفل علامات التنقيح ({count}) نهائيًا. لا يمكن التراجع عن هذا الإجراء.',\n redactConfirmCollateral: 'ستتم أيضًا إزالة تعليقات توضيحية أخرى ({count}).',\n redactApply: 'تطبيق',\n redactApplying: 'جارٍ التطبيق…',\n formatLabel: 'التنسيق',\n fieldSettingsTitle: 'الحقل',\n fieldOptionLabel: 'التسمية',\n fieldOptionValue: 'القيمة',\n fieldOptionAdd: 'إضافة خيار',\n fieldOptionRemove: 'إزالة الخيار',\n fieldNone: 'بلا',\n redactLabelTitle: 'تسمية التنقيح',\n redactLabelPlaceholder: 'مثال: منقّح',\n redactLabelRepeat: 'تكرار التسمية عبر المنطقة',\n stampsAll: 'كل الأختام',\n stampsLoading: 'جارٍ تحميل الأختام…',\n stampsEmpty: 'لا توجد أختام بعد. استورد ملف PDF لتحويل كل صفحة من صفحاته إلى ختم.',\n stampsRemoveStamp: 'إزالة الختم',\n stampsArmedHint: 'انقر على صفحة لوضع الختم.',\n stampsImport: 'استيراد PDF…',\n stampsImporting: 'جارٍ الاستيراد…',\n stampsImportHint: 'استورد ملف PDF كمكتبة أختام — تصبح كل صفحة ختمًا واحدًا.',\n stampsRemoveLibrary: 'إزالة المكتبة',\n stampsExportLibrary: 'تصدير المكتبة كملف PDF',\n stampsCustomLibrary: 'أختامي',\n stampsCustomLabel: 'ختم مخصص',\n stampsError: 'تعذر تحميل الأختام المضمنة.',\n stampsArmError: 'تعذر تجهيز هذا الختم.',\n stampsImportError: 'تعذر استيراد ملف PDF هذا كمكتبة أختام.',\n quickStampsLabel: 'أختام سريعة',\n signaturesEmpty: 'لا توجد توقيعات بعد. أنشئ توقيعًا للتوقيع به.',\n signaturesNew: 'توقيع جديد…',\n signaturesArmedHint: 'انقر على حقل توقيع لتوقيعه، أو في أي مكان على الصفحة لوضع العلامة.',\n signaturesTargetHint: 'اختر علامة للحقل المحدد.',\n signaturesInDocument: 'في هذا المستند',\n signaturesNone: 'لا يحتوي هذا المستند على حقول توقيع.',\n signaturesValidate: 'التحقق',\n signaturesValidating: 'جارٍ التحقق…',\n signaturesSigned: 'موقّع',\n signaturesUnsigned: 'غير موقّع',\n signaturesRename: 'إعادة تسمية',\n signaturesRemove: 'إزالة',\n signaturesExport: 'تصدير كملف PDF',\n signaturesAddInitials: 'إضافة الأحرف الأولى',\n signatureLabel: 'التوقيع',\n initialsLabel: 'الأحرف الأولى',\n makerTitle: 'توقيع جديد',\n makerName: 'الاسم',\n makerNamePlaceholder: 'اسمك',\n makerDraw: 'رسم',\n makerType: 'كتابة',\n makerUpload: 'تحميل',\n makerTypePlaceholder: 'اكتب اسمك',\n makerFont: 'الخط',\n makerUploadHint: 'اختر ملف PNG أو JPEG أو PDF من صفحة واحدة',\n makerClear: 'مسح',\n makerOptional: '(اختياري)',\n makerSave: 'حفظ',\n makerSaving: 'جارٍ الحفظ…',\n makerError: 'تعذر حفظ التوقيع.',\n signTitle: 'توقيع هذا الحقل',\n signReason: 'السبب',\n signLocation: 'الموقع',\n signKind: 'ما يمكن تغييره بعد ذلك',\n signKindApproval: 'توقيع موافقة — يظل ملء النماذج والتوقيعات الإضافية صالحًا',\n signKindCertifyAnnotate: 'تصديق — السماح بالتعليقات وملء النماذج والتوقيعات',\n signKindCertifyFill: 'تصديق — السماح بملء النماذج والتوقيعات فقط',\n signKindCertifyLocked: 'تصديق — عدم السماح بأي تغييرات',\n signButton: 'توقيع',\n signSigning: 'جارٍ التوقيع…',\n signFill: 'وضع دون توقيع',\n signError: 'تعذر توقيع الحقل.',\n inspectTitle: 'التوقيع',\n inspectSigner: 'موقّع بواسطة',\n inspectReason: 'السبب',\n inspectLocation: 'الموقع',\n inspectTime: 'الوقت',\n inspectIntegrity: 'المستند',\n inspectCryptography: 'التوقيع',\n inspectTrust: 'الموقِّع',\n inspectChanges: 'التغييرات اللاحقة',\n inspectDownload: 'تنزيل النسخة الموقّعة',\n verdictValid: 'صالح',\n verdictValidUntrusted: 'صالح، الموقِّع غير موثوق به',\n verdictInvalid: 'غير صالح — تم تعديله بعد التوقيع',\n verdictWillInvalidate: 'صالح، ويصبح غير صالح عند الحفظ',\n signaturesInvalidating:\n 'سيؤدي هذا التغيير إلى إبطال {field} عند حفظ المستند. تراجع عنه للاحتفاظ بالتوقيع.',\n verdictIndeterminate: 'تعذر التحقق',\n verdictUnchanged: 'لا شيء',\n verdictRestored: 'تم تغييره ثم استعادته',\n inspectLaterRevisions: 'المراجعات بعد التوقيع',\n verdictPermitted: 'مسموح',\n verdictForbidden: 'غير مسموح',\n },\n },\n};\n"],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ const require_icons = require("./icons-1UfLUZ_y.cjs");
2
+ const require_toolbar = require("./toolbar-ddvpsvTb.cjs");
3
+ const require_sheet = require("./sheet-DTBFiwde.cjs");
4
+ let react = require("react");
5
+ let _embedpdf_react_runtime = require("@embedpdf/react/runtime");
6
+ let _embedpdf_react_attachment = require("@embedpdf/react/attachment");
7
+ let _embedpdf_react_i18n = require("@embedpdf/react/i18n");
8
+ let _embedpdf_react_commands = require("@embedpdf/react/commands");
9
+ let react_jsx_runtime = require("react/jsx-runtime");
10
+ //#region src/ui/attachments-panel.tsx
11
+ /**
12
+ * The attachments panel: the files the document carries, its attachments first, then the files
13
+ * pinned to its pages. A row shows the file's kind, its name (without the characters that can
14
+ * disguise one), its size and description, and a page's file says its page. Clicking an
15
+ * attachment saves it; clicking a page's file goes to it. A row's menu saves, goes to the page
16
+ * and deletes. A session that may add files adds one with the header's button, or drops files
17
+ * on the panel; a drop there never opens them as documents.
18
+ */
19
+ /** A file's size in the viewer's language: bytes, then kB and MB with one decimal. */
20
+ function sizeText(bytes, locale) {
21
+ const [value, unit] = bytes < 1e3 ? [bytes, "byte"] : bytes < 1e6 ? [bytes / 1e3, "kilobyte"] : [bytes / 1e6, "megabyte"];
22
+ return new Intl.NumberFormat(locale, {
23
+ style: "unit",
24
+ unit,
25
+ unitDisplay: "short",
26
+ maximumFractionDigits: unit === "byte" ? 0 : 1
27
+ }).format(value);
28
+ }
29
+ /** The icon for a file's kind, by its type. */
30
+ function iconOf(file) {
31
+ const type = file.mimeType ?? "";
32
+ if (type === "application/pdf") return "file";
33
+ if (type.startsWith("image/")) return "photo";
34
+ return "paperclip";
35
+ }
36
+ /** Whether a drag carries files: what the panel takes. */
37
+ const carriesFiles = (event) => event.dataTransfer.types.includes("Files");
38
+ function AttachmentsPanel() {
39
+ const t = (0, _embedpdf_react_i18n.useT)();
40
+ const locale = (0, _embedpdf_react_i18n.useI18nSettings)((settings) => settings.locale) ?? void 0;
41
+ const attachment = (0, _embedpdf_react_attachment.useAttachment)();
42
+ const { files, selected, status } = (0, _embedpdf_react_attachment.useAttachmentState)();
43
+ const commands = (0, _embedpdf_react_commands.useCommands)();
44
+ const add = (0, _embedpdf_react_commands.useCommand)("attachment:add");
45
+ const closeOnPick = require_sheet.useCloseOnPick();
46
+ const pages = (0, _embedpdf_react_runtime.usePageList)();
47
+ const canAdd = add.visible && add.enabled;
48
+ const entered = (0, react.useRef)(0);
49
+ const [dropping, setDropping] = (0, react.useState)(false);
50
+ const pageLabelOf = (0, react.useMemo)(() => {
51
+ const byKey = new Map(pages.map((page) => [page.ref.objectNumber, page]));
52
+ return (file) => {
53
+ if (file.home.kind !== "page") return null;
54
+ const page = byKey.get(file.home.ref.page.objectNumber);
55
+ return page ? page.label ?? String(page.index + 1) : null;
56
+ };
57
+ }, [pages]);
58
+ const selectedIds = new Set(selected.map((file) => file.id));
59
+ /** A click on a row: an attachment saves, a page's file goes to its page. */
60
+ const pick = (file) => {
61
+ attachment.select([file]);
62
+ if (file.home.kind === "page") {
63
+ attachment.reveal(file);
64
+ closeOnPick();
65
+ return;
66
+ }
67
+ commands.execute("attachment:save").catch(() => {});
68
+ };
69
+ const dropProps = canAdd ? {
70
+ onDragEnter: (event) => {
71
+ if (!carriesFiles(event)) return;
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ entered.current += 1;
75
+ setDropping(true);
76
+ },
77
+ onDragOver: (event) => {
78
+ if (!carriesFiles(event)) return;
79
+ event.preventDefault();
80
+ event.stopPropagation();
81
+ event.dataTransfer.dropEffect = "copy";
82
+ },
83
+ onDragLeave: () => {
84
+ if (entered.current === 0) return;
85
+ entered.current -= 1;
86
+ if (entered.current === 0) setDropping(false);
87
+ },
88
+ onDrop: (event) => {
89
+ entered.current = 0;
90
+ setDropping(false);
91
+ if (!carriesFiles(event)) return;
92
+ event.preventDefault();
93
+ event.stopPropagation();
94
+ const dropped = Array.from(event.dataTransfer.files);
95
+ if (dropped.length === 0) return;
96
+ const args = { files: dropped };
97
+ commands.execute("attachment:add", { args }).catch(() => {});
98
+ }
99
+ } : {};
100
+ const message = (text, withAdd = false) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
101
+ className: "text-fg-muted flex flex-col items-center gap-3 p-6 text-center text-sm",
102
+ children: [
103
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: text }),
104
+ withAdd && canAdd && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
105
+ type: "button",
106
+ onClick: () => void add.run(),
107
+ className: "border-border text-fg hover:bg-hover rounded-md border px-3 py-1.5 text-sm",
108
+ children: add.label
109
+ }),
110
+ withAdd && canAdd && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
111
+ className: "text-xs",
112
+ children: t("attachments.dropHint")
113
+ })
114
+ ]
115
+ });
116
+ const body = (() => {
117
+ if (files.length === 0) {
118
+ if (status === "idle" || status === "loading") return message(t("attachments.loading"));
119
+ if (status === "forbidden" || status === "error") return message(t("attachments.failed"));
120
+ return message(t("attachments.empty"), true);
121
+ }
122
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
123
+ "aria-label": t("panels.attachments"),
124
+ className: "min-h-0 flex-1 overflow-y-auto p-1",
125
+ children: files.map((file) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileRow, {
126
+ file,
127
+ page: pageLabelOf(file),
128
+ selected: selectedIds.has(file.id),
129
+ pending: attachment.isPending(file),
130
+ locale,
131
+ onPick: () => pick(file),
132
+ onMenu: () => attachment.select([file])
133
+ }, file.id))
134
+ });
135
+ })();
136
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
137
+ className: "relative flex min-h-0 flex-1 flex-col",
138
+ ...dropProps,
139
+ children: [
140
+ add.visible && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
141
+ className: "border-border-subtle flex items-center gap-1 border-b p-2",
142
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
143
+ className: "text-fg-muted min-w-0 flex-1 truncate text-xs",
144
+ children: t(files.length === 1 ? "attachments.count" : "attachments.countPlural", { params: { count: String(files.length) } })
145
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_toolbar.CommandButton, {
146
+ cmd: add,
147
+ variant: "icon",
148
+ run: () => void add.run()
149
+ })]
150
+ }),
151
+ body,
152
+ dropping && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
153
+ className: "border-accent bg-accent/10 text-fg pointer-events-none absolute inset-1 flex items-center justify-center rounded-md border-2 border-dashed text-sm",
154
+ children: t("attachments.drop")
155
+ })
156
+ ]
157
+ });
158
+ }
159
+ function FileRow({ file, page, selected, pending, locale, onPick, onMenu }) {
160
+ const t = (0, _embedpdf_react_i18n.useT)();
161
+ const { touch } = require_icons.useLayoutEnv();
162
+ const menuButton = (0, react.useRef)(null);
163
+ const name = (0, _embedpdf_react_attachment.displayNameOf)(file);
164
+ const details = [
165
+ pending ? t("attachments.adding") : file.size === null ? null : sizeText(file.size, locale),
166
+ page === null ? null : t("attachments.onPage", { params: { page } }),
167
+ file.description
168
+ ].filter((part) => !!part);
169
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
170
+ onContextMenu: (event) => {
171
+ event.preventDefault();
172
+ onMenu();
173
+ menuButton.current?.querySelector("button")?.click();
174
+ },
175
+ className: `group flex items-center gap-1 rounded pe-1 ${selected ? "bg-accent/10" : "hover:bg-hover"} ${pending ? "opacity-60" : ""}`,
176
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
177
+ type: "button",
178
+ onClick: onPick,
179
+ title: name,
180
+ className: "flex min-w-0 flex-1 items-center gap-2 rounded px-2 py-1.5 text-start",
181
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons.Icon, {
182
+ name: iconOf(file),
183
+ size: 16,
184
+ className: "text-fg-muted shrink-0"
185
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
186
+ className: "min-w-0 flex-1",
187
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
188
+ className: "text-fg block truncate text-sm",
189
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("bdi", { children: name })
190
+ }), details.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
191
+ className: "text-fg-muted block truncate text-xs",
192
+ children: details.join(" · ")
193
+ })]
194
+ })]
195
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
196
+ ref: menuButton,
197
+ onClick: (event) => event.stopPropagation(),
198
+ onPointerDownCapture: onMenu,
199
+ className: `shrink-0 ${selected || touch ? "" : "opacity-0 focus-within:opacity-100 group-hover:opacity-100"}`,
200
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RowMenuButton, {})
201
+ })]
202
+ });
203
+ }
204
+ /** A row's menu button: the attachment commands for the selected file. */
205
+ function RowMenuButton() {
206
+ const more = (0, _embedpdf_react_commands.useCommand)("menu:attachment-item");
207
+ if (!more.visible) return null;
208
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_toolbar.CommandButton, {
209
+ cmd: more,
210
+ variant: "icon",
211
+ run: () => void more.run()
212
+ });
213
+ }
214
+ //#endregion
215
+ exports.AttachmentsPanel = AttachmentsPanel;
216
+
217
+ //# sourceMappingURL=attachments-panel-Cxln8xos.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-panel-Cxln8xos.cjs","names":["useCloseOnPick","CommandButton","useLayoutEnv","Icon"],"sources":["../src/ui/attachments-panel.tsx"],"sourcesContent":["/**\n * The attachments panel: the files the document carries, its attachments first, then the files\n * pinned to its pages. A row shows the file's kind, its name (without the characters that can\n * disguise one), its size and description, and a page's file says its page. Clicking an\n * attachment saves it; clicking a page's file goes to it. A row's menu saves, goes to the page\n * and deletes. A session that may add files adds one with the header's button, or drops files\n * on the panel; a drop there never opens them as documents.\n */\nimport {\n displayNameOf,\n useAttachment,\n useAttachmentState,\n type AttachedFile,\n} from '@embedpdf/react/attachment';\nimport { useCommand, useCommands } from '@embedpdf/react/commands';\nimport { useI18nSettings, useT } from '@embedpdf/react/i18n';\nimport { usePageList } from '@embedpdf/react/runtime';\nimport { useMemo, useRef, useState, type DragEvent } from 'react';\n\nimport { useLayoutEnv } from '../config-context';\nimport { Icon, type IconName } from './icons';\nimport { useCloseOnPick } from './panel-frame';\nimport { CommandButton } from './toolbar';\nimport type { AttachmentAddArgs } from '../config/attachments';\n\n/** A file's size in the viewer's language: bytes, then kB and MB with one decimal. */\nfunction sizeText(bytes: number, locale: string | undefined): string {\n const [value, unit] =\n bytes < 1000\n ? [bytes, 'byte']\n : bytes < 1_000_000\n ? [bytes / 1000, 'kilobyte']\n : [bytes / 1_000_000, 'megabyte'];\n return new Intl.NumberFormat(locale, {\n style: 'unit',\n unit,\n unitDisplay: 'short',\n maximumFractionDigits: unit === 'byte' ? 0 : 1,\n }).format(value);\n}\n\n/** The icon for a file's kind, by its type. */\nfunction iconOf(file: AttachedFile): IconName {\n const type = file.mimeType ?? '';\n if (type === 'application/pdf') return 'file';\n if (type.startsWith('image/')) return 'photo';\n return 'paperclip';\n}\n\n/** Whether a drag carries files: what the panel takes. */\nconst carriesFiles = (event: DragEvent) => event.dataTransfer.types.includes('Files');\n\nexport function AttachmentsPanel() {\n const t = useT();\n const locale = useI18nSettings((settings) => settings.locale) ?? undefined;\n const attachment = useAttachment();\n const { files, selected, status } = useAttachmentState();\n const commands = useCommands();\n const add = useCommand('attachment:add');\n const closeOnPick = useCloseOnPick();\n const pages = usePageList();\n const canAdd = add.visible && add.enabled;\n // A drag enters and leaves every element it crosses: count them, so the target stays until\n // the drag leaves the panel.\n const entered = useRef(0);\n const [dropping, setDropping] = useState(false);\n\n const pageLabelOf = useMemo(() => {\n const byKey = new Map(pages.map((page) => [page.ref.objectNumber, page]));\n return (file: AttachedFile): string | null => {\n if (file.home.kind !== 'page') return null;\n const page = byKey.get(file.home.ref.page.objectNumber);\n return page ? (page.label ?? String(page.index + 1)) : null;\n };\n }, [pages]);\n const selectedIds = new Set(selected.map((file) => file.id));\n\n /** A click on a row: an attachment saves, a page's file goes to its page. */\n const pick = (file: AttachedFile) => {\n attachment.select([file]);\n if (file.home.kind === 'page') {\n attachment.reveal(file);\n closeOnPick();\n return;\n }\n // A failing command reports itself through the commands' onExecutionFailed.\n void commands.execute('attachment:save').catch(() => {});\n };\n\n const dropProps = canAdd\n ? {\n onDragEnter: (event: DragEvent) => {\n if (!carriesFiles(event)) return;\n event.preventDefault();\n event.stopPropagation();\n entered.current += 1;\n setDropping(true);\n },\n onDragOver: (event: DragEvent) => {\n if (!carriesFiles(event)) return;\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = 'copy';\n },\n onDragLeave: () => {\n if (entered.current === 0) return;\n entered.current -= 1;\n if (entered.current === 0) setDropping(false);\n },\n onDrop: (event: DragEvent) => {\n entered.current = 0;\n setDropping(false);\n if (!carriesFiles(event)) return;\n // The panel's drop: the files are attached, never opened as documents.\n event.preventDefault();\n event.stopPropagation();\n const dropped = Array.from(event.dataTransfer.files);\n if (dropped.length === 0) return;\n const args: AttachmentAddArgs = { files: dropped };\n void commands.execute('attachment:add', { args }).catch(() => {});\n },\n }\n : {};\n\n const message = (text: string, withAdd = false) => (\n <div className=\"text-fg-muted flex flex-col items-center gap-3 p-6 text-center text-sm\">\n <p>{text}</p>\n {withAdd && canAdd && (\n <button\n type=\"button\"\n onClick={() => void add.run()}\n className=\"border-border text-fg hover:bg-hover rounded-md border px-3 py-1.5 text-sm\"\n >\n {add.label}\n </button>\n )}\n {withAdd && canAdd && <p className=\"text-xs\">{t('attachments.dropHint')}</p>}\n </div>\n );\n\n const body = (() => {\n if (files.length === 0) {\n if (status === 'idle' || status === 'loading') return message(t('attachments.loading'));\n if (status === 'forbidden' || status === 'error') return message(t('attachments.failed'));\n return message(t('attachments.empty'), true);\n }\n return (\n <ul aria-label={t('panels.attachments')} className=\"min-h-0 flex-1 overflow-y-auto p-1\">\n {files.map((file) => (\n <FileRow\n key={file.id}\n file={file}\n page={pageLabelOf(file)}\n selected={selectedIds.has(file.id)}\n pending={attachment.isPending(file)}\n locale={locale}\n onPick={() => pick(file)}\n onMenu={() => attachment.select([file])}\n />\n ))}\n </ul>\n );\n })();\n\n return (\n <div className=\"relative flex min-h-0 flex-1 flex-col\" {...dropProps}>\n {add.visible && (\n <div className=\"border-border-subtle flex items-center gap-1 border-b p-2\">\n <span className=\"text-fg-muted min-w-0 flex-1 truncate text-xs\">\n {t(files.length === 1 ? 'attachments.count' : 'attachments.countPlural', {\n params: { count: String(files.length) },\n })}\n </span>\n <CommandButton cmd={add} variant=\"icon\" run={() => void add.run()} />\n </div>\n )}\n {body}\n {dropping && (\n <div className=\"border-accent bg-accent/10 text-fg pointer-events-none absolute inset-1 flex items-center justify-center rounded-md border-2 border-dashed text-sm\">\n {t('attachments.drop')}\n </div>\n )}\n </div>\n );\n}\n\ninterface FileRowProps {\n readonly file: AttachedFile;\n /** The page a page's file is on, as the document labels it; null for an attachment. */\n readonly page: string | null;\n readonly selected: boolean;\n /** Its add waits for the engine. */\n readonly pending: boolean;\n /** The viewer's language, for sizes; the browser's when it has none. */\n readonly locale: string | undefined;\n readonly onPick: () => void;\n /** Its menu is about to open: the row's file becomes the selection the menu acts on. */\n readonly onMenu: () => void;\n}\n\nfunction FileRow({ file, page, selected, pending, locale, onPick, onMenu }: FileRowProps) {\n const t = useT();\n // A finger has no hover: the menu button shows on every row.\n const { touch } = useLayoutEnv();\n const menuButton = useRef<HTMLSpanElement>(null);\n const name = displayNameOf(file);\n const details = [\n pending ? t('attachments.adding') : file.size === null ? null : sizeText(file.size, locale),\n page === null ? null : t('attachments.onPage', { params: { page } }),\n file.description,\n ].filter((part): part is string => !!part);\n\n return (\n <li\n onContextMenu={(event) => {\n event.preventDefault();\n onMenu();\n menuButton.current?.querySelector('button')?.click();\n }}\n className={`group flex items-center gap-1 rounded pe-1 ${\n selected ? 'bg-accent/10' : 'hover:bg-hover'\n } ${pending ? 'opacity-60' : ''}`}\n >\n <button\n type=\"button\"\n onClick={onPick}\n title={name}\n className=\"flex min-w-0 flex-1 items-center gap-2 rounded px-2 py-1.5 text-start\"\n >\n <Icon name={iconOf(file)} size={16} className=\"text-fg-muted shrink-0\" />\n <span className=\"min-w-0 flex-1\">\n <span className=\"text-fg block truncate text-sm\">\n <bdi>{name}</bdi>\n </span>\n {details.length > 0 && (\n <span className=\"text-fg-muted block truncate text-xs\">{details.join(' · ')}</span>\n )}\n </span>\n </button>\n <span\n ref={menuButton}\n onClick={(event) => event.stopPropagation()}\n onPointerDownCapture={onMenu}\n className={`shrink-0 ${\n selected || touch ? '' : 'opacity-0 focus-within:opacity-100 group-hover:opacity-100'\n }`}\n >\n <RowMenuButton />\n </span>\n </li>\n );\n}\n\n/** A row's menu button: the attachment commands for the selected file. */\nfunction RowMenuButton() {\n const more = useCommand('menu:attachment-item');\n if (!more.visible) return null;\n return <CommandButton cmd={more} variant=\"icon\" run={() => void more.run()} />;\n}\n"],"mappings":"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"}