persian-data-grid 0.5.0 → 0.7.0

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 (282) hide show
  1. package/OFL.txt +93 -0
  2. package/README.md +179 -22
  3. package/dist/ERPTableGroupRow-E5Q6FYDS.js +125 -0
  4. package/dist/ERPTableGroupRow-E5Q6FYDS.js.map +1 -0
  5. package/dist/ERPTableGroupRow-F2IPDYL5.cjs +131 -0
  6. package/dist/ERPTableGroupRow-F2IPDYL5.cjs.map +1 -0
  7. package/dist/GridPlugin-Bewn0X51.d.ts +57 -0
  8. package/dist/GridPlugin-DewWufGZ.d.cts +57 -0
  9. package/dist/GridPresenceService-GEH6535Q.js +3 -0
  10. package/dist/GridPresenceService-GEH6535Q.js.map +1 -0
  11. package/dist/GridPresenceService-RDN5FXHQ.cjs +12 -0
  12. package/dist/GridPresenceService-RDN5FXHQ.cjs.map +1 -0
  13. package/dist/GridSession-CeIfVFck.d.ts +2625 -0
  14. package/dist/GridSession-CmQn2RnL.d.cts +2625 -0
  15. package/dist/GridSyncService-3JQLEY65.cjs +12 -0
  16. package/dist/GridSyncService-3JQLEY65.cjs.map +1 -0
  17. package/dist/GridSyncService-GECXGEKL.js +3 -0
  18. package/dist/GridSyncService-GECXGEKL.js.map +1 -0
  19. package/dist/PdfRenderer-B9FJaCo_.d.cts +22 -0
  20. package/dist/PdfRenderer-bN7ca_Aj.d.ts +22 -0
  21. package/dist/RemoteApi-CCQxiSf1.d.cts +28 -0
  22. package/dist/RemoteApi-CCQxiSf1.d.ts +28 -0
  23. package/dist/SelectImpl-NM4O4IGW.js +447 -0
  24. package/dist/SelectImpl-NM4O4IGW.js.map +1 -0
  25. package/dist/SelectImpl-W2EI4T7O.cjs +453 -0
  26. package/dist/SelectImpl-W2EI4T7O.cjs.map +1 -0
  27. package/dist/UITableController-C71LXBiX.d.ts +678 -0
  28. package/dist/UITableController-CIwnHIw8.d.cts +678 -0
  29. package/dist/VazirmatnPdfRenderer-CpCqA-Wh.d.cts +96 -0
  30. package/dist/VazirmatnPdfRenderer-D46smncn.d.ts +96 -0
  31. package/dist/adapters/arian-erp.cjs +89 -0
  32. package/dist/adapters/arian-erp.cjs.map +1 -0
  33. package/dist/adapters/arian-erp.d.cts +62 -0
  34. package/dist/adapters/arian-erp.d.ts +62 -0
  35. package/dist/adapters/arian-erp.js +79 -0
  36. package/dist/adapters/arian-erp.js.map +1 -0
  37. package/dist/appendAtEnd-RHIQRG2W.cjs +35 -0
  38. package/dist/appendAtEnd-RHIQRG2W.cjs.map +1 -0
  39. package/dist/appendAtEnd-TJEABLGD.js +33 -0
  40. package/dist/appendAtEnd-TJEABLGD.js.map +1 -0
  41. package/dist/applyImportedRows-C2fWYoPy.d.cts +135 -0
  42. package/dist/applyImportedRows-Cqh_N_0k.d.ts +135 -0
  43. package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs +86 -0
  44. package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs.map +1 -0
  45. package/dist/applyRowVisibilityHandler-ZLZXQEGY.js +84 -0
  46. package/dist/applyRowVisibilityHandler-ZLZXQEGY.js.map +1 -0
  47. package/dist/broadcastChannelTransport-FHUMV76O.cjs +12 -0
  48. package/dist/broadcastChannelTransport-FHUMV76O.cjs.map +1 -0
  49. package/dist/broadcastChannelTransport-MIH53VNZ.js +3 -0
  50. package/dist/broadcastChannelTransport-MIH53VNZ.js.map +1 -0
  51. package/dist/callbackRemoteApi-BYLjmSI6.d.ts +51 -0
  52. package/dist/callbackRemoteApi-Cv26MmSD.d.cts +51 -0
  53. package/dist/cellRenderContext-BaNh4qn_.d.ts +42 -0
  54. package/dist/cellRenderContext-DvngkptV.d.cts +42 -0
  55. package/dist/chunk-27ALJSZP.js +12187 -0
  56. package/dist/chunk-27ALJSZP.js.map +1 -0
  57. package/dist/chunk-3HP3HQCW.cjs +688 -0
  58. package/dist/chunk-3HP3HQCW.cjs.map +1 -0
  59. package/dist/chunk-3Y3KKGEC.js +3 -0
  60. package/dist/chunk-3Y3KKGEC.js.map +1 -0
  61. package/dist/chunk-52LFOPXD.cjs +588 -0
  62. package/dist/chunk-52LFOPXD.cjs.map +1 -0
  63. package/dist/chunk-5ALMNLUR.cjs +1408 -0
  64. package/dist/chunk-5ALMNLUR.cjs.map +1 -0
  65. package/dist/chunk-5HKVMPBD.js +937 -0
  66. package/dist/chunk-5HKVMPBD.js.map +1 -0
  67. package/dist/chunk-72IVAOTK.cjs +38 -0
  68. package/dist/chunk-72IVAOTK.cjs.map +1 -0
  69. package/dist/chunk-77UXAJII.js +112 -0
  70. package/dist/chunk-77UXAJII.js.map +1 -0
  71. package/dist/chunk-7GWV5HGO.js +36 -0
  72. package/dist/chunk-7GWV5HGO.js.map +1 -0
  73. package/dist/chunk-7T6AWRPU.js +581 -0
  74. package/dist/chunk-7T6AWRPU.js.map +1 -0
  75. package/dist/chunk-AU3RDJYQ.js +243 -0
  76. package/dist/chunk-AU3RDJYQ.js.map +1 -0
  77. package/dist/chunk-CILNIWYW.cjs +100 -0
  78. package/dist/chunk-CILNIWYW.cjs.map +1 -0
  79. package/dist/chunk-CMQ4VLCW.cjs +840 -0
  80. package/dist/chunk-CMQ4VLCW.cjs.map +1 -0
  81. package/dist/chunk-DFFP7SJ6.cjs +257 -0
  82. package/dist/chunk-DFFP7SJ6.cjs.map +1 -0
  83. package/dist/chunk-E2J533UH.cjs +53 -0
  84. package/dist/chunk-E2J533UH.cjs.map +1 -0
  85. package/dist/chunk-EBV6HGZB.cjs +33 -0
  86. package/dist/chunk-EBV6HGZB.cjs.map +1 -0
  87. package/dist/chunk-F4PYOYHR.js +112 -0
  88. package/dist/chunk-F4PYOYHR.js.map +1 -0
  89. package/dist/chunk-F6EMC75A.cjs +34 -0
  90. package/dist/chunk-F6EMC75A.cjs.map +1 -0
  91. package/dist/chunk-GKE33FOJ.js +32 -0
  92. package/dist/chunk-GKE33FOJ.js.map +1 -0
  93. package/dist/chunk-GQEDLUMB.js +168 -0
  94. package/dist/chunk-GQEDLUMB.js.map +1 -0
  95. package/dist/chunk-HLOHWFOA.js +645 -0
  96. package/dist/chunk-HLOHWFOA.js.map +1 -0
  97. package/dist/chunk-IMPCRWYP.cjs +251 -0
  98. package/dist/chunk-IMPCRWYP.cjs.map +1 -0
  99. package/dist/chunk-IPPIXOVQ.js +317 -0
  100. package/dist/chunk-IPPIXOVQ.js.map +1 -0
  101. package/dist/chunk-J4XJ4UBC.js +1404 -0
  102. package/dist/chunk-J4XJ4UBC.js.map +1 -0
  103. package/dist/chunk-J7CPPFXT.cjs +89 -0
  104. package/dist/chunk-J7CPPFXT.cjs.map +1 -0
  105. package/dist/chunk-JOICD47Q.cjs +41 -0
  106. package/dist/chunk-JOICD47Q.cjs.map +1 -0
  107. package/dist/chunk-KCNTKYUY.js +206 -0
  108. package/dist/chunk-KCNTKYUY.js.map +1 -0
  109. package/dist/chunk-KHMG6EI2.js +13 -0
  110. package/dist/chunk-KHMG6EI2.js.map +1 -0
  111. package/dist/chunk-KMRURD5J.cjs +15 -0
  112. package/dist/chunk-KMRURD5J.cjs.map +1 -0
  113. package/dist/chunk-KRJG3KMP.cjs +174 -0
  114. package/dist/chunk-KRJG3KMP.cjs.map +1 -0
  115. package/dist/chunk-LY27YAXE.cjs +208 -0
  116. package/dist/chunk-LY27YAXE.cjs.map +1 -0
  117. package/dist/chunk-MT3KLB2Q.cjs +944 -0
  118. package/dist/chunk-MT3KLB2Q.cjs.map +1 -0
  119. package/dist/chunk-MUQQKPWR.js +84 -0
  120. package/dist/chunk-MUQQKPWR.js.map +1 -0
  121. package/dist/chunk-N7SJTINL.cjs +4 -0
  122. package/dist/chunk-N7SJTINL.cjs.map +1 -0
  123. package/dist/chunk-NB5GCGHL.js +833 -0
  124. package/dist/chunk-NB5GCGHL.js.map +1 -0
  125. package/dist/chunk-NQUVAJQA.js +298 -0
  126. package/dist/chunk-NQUVAJQA.js.map +1 -0
  127. package/dist/chunk-NTV2UUAJ.cjs +149 -0
  128. package/dist/chunk-NTV2UUAJ.cjs.map +1 -0
  129. package/dist/chunk-PJQWHF6T.js +31 -0
  130. package/dist/chunk-PJQWHF6T.js.map +1 -0
  131. package/dist/chunk-PQY54EL5.js +248 -0
  132. package/dist/chunk-PQY54EL5.js.map +1 -0
  133. package/dist/chunk-Q7TBBUTX.cjs +110 -0
  134. package/dist/chunk-Q7TBBUTX.cjs.map +1 -0
  135. package/dist/chunk-QZN7R2WP.cjs +114 -0
  136. package/dist/chunk-QZN7R2WP.cjs.map +1 -0
  137. package/dist/chunk-RKVSJU46.js +35 -0
  138. package/dist/chunk-RKVSJU46.js.map +1 -0
  139. package/dist/chunk-SVO62ZV2.js +50 -0
  140. package/dist/chunk-SVO62ZV2.js.map +1 -0
  141. package/dist/chunk-SX4VQXAA.cjs +114 -0
  142. package/dist/chunk-SX4VQXAA.cjs.map +1 -0
  143. package/dist/chunk-SZ7BLAY3.js +92 -0
  144. package/dist/chunk-SZ7BLAY3.js.map +1 -0
  145. package/dist/chunk-TN4MG6FY.js +112 -0
  146. package/dist/chunk-TN4MG6FY.js.map +1 -0
  147. package/dist/chunk-UC7PHDM6.cjs +331 -0
  148. package/dist/chunk-UC7PHDM6.cjs.map +1 -0
  149. package/dist/chunk-UXVLYUUW.js +108 -0
  150. package/dist/chunk-UXVLYUUW.js.map +1 -0
  151. package/dist/chunk-VBAZ77Q4.js +932 -0
  152. package/dist/chunk-VBAZ77Q4.js.map +1 -0
  153. package/dist/chunk-VSAFQTW5.cjs +319 -0
  154. package/dist/chunk-VSAFQTW5.cjs.map +1 -0
  155. package/dist/chunk-VYJQ2HTA.cjs +936 -0
  156. package/dist/chunk-VYJQ2HTA.cjs.map +1 -0
  157. package/dist/chunk-W5256BJ4.js +56 -0
  158. package/dist/chunk-W5256BJ4.js.map +1 -0
  159. package/dist/chunk-WTHTVKVI.cjs +12299 -0
  160. package/dist/chunk-WTHTVKVI.cjs.map +1 -0
  161. package/dist/chunk-WUMOSOEK.cjs +62 -0
  162. package/dist/chunk-WUMOSOEK.cjs.map +1 -0
  163. package/dist/chunk-XLRE2J25.js +140 -0
  164. package/dist/chunk-XLRE2J25.js.map +1 -0
  165. package/dist/chunk-Z4QPZ3Z3.cjs +114 -0
  166. package/dist/chunk-Z4QPZ3Z3.cjs.map +1 -0
  167. package/dist/createEngineGridQuery-BBkud5oE.d.ts +939 -0
  168. package/dist/createEngineGridQuery-D-fgO_jg.d.cts +939 -0
  169. package/dist/date-picker-jalali.cjs +263 -0
  170. package/dist/date-picker-jalali.cjs.map +1 -0
  171. package/dist/date-picker-jalali.d.cts +62 -0
  172. package/dist/date-picker-jalali.d.ts +62 -0
  173. package/dist/date-picker-jalali.js +256 -0
  174. package/dist/date-picker-jalali.js.map +1 -0
  175. package/dist/finance.cjs +205 -0
  176. package/dist/finance.cjs.map +1 -0
  177. package/dist/finance.d.cts +90 -0
  178. package/dist/finance.d.ts +90 -0
  179. package/dist/finance.js +157 -0
  180. package/dist/finance.js.map +1 -0
  181. package/dist/foldedColumn-IHDT4ARZ.cjs +66 -0
  182. package/dist/foldedColumn-IHDT4ARZ.cjs.map +1 -0
  183. package/dist/foldedColumn-TFURUKFG.js +64 -0
  184. package/dist/foldedColumn-TFURUKFG.js.map +1 -0
  185. package/dist/headless.cjs +729 -0
  186. package/dist/headless.cjs.map +1 -0
  187. package/dist/headless.d.cts +508 -0
  188. package/dist/headless.d.ts +508 -0
  189. package/dist/headless.js +226 -0
  190. package/dist/headless.js.map +1 -0
  191. package/dist/index-DN8M8Jkq.d.cts +14 -0
  192. package/dist/index-DmzL-F_o.d.ts +14 -0
  193. package/dist/index.cjs +8060 -11409
  194. package/dist/index.cjs.map +1 -1
  195. package/dist/index.d.cts +457 -2305
  196. package/dist/index.d.ts +457 -2305
  197. package/dist/index.js +7302 -11084
  198. package/dist/index.js.map +1 -1
  199. package/dist/locales/ar.cjs +12 -0
  200. package/dist/locales/ar.cjs.map +1 -0
  201. package/dist/locales/ar.d.cts +6 -0
  202. package/dist/locales/ar.d.ts +6 -0
  203. package/dist/locales/ar.js +3 -0
  204. package/dist/locales/ar.js.map +1 -0
  205. package/dist/locales/en.cjs +12 -0
  206. package/dist/locales/en.cjs.map +1 -0
  207. package/dist/locales/en.d.cts +6 -0
  208. package/dist/locales/en.d.ts +6 -0
  209. package/dist/locales/en.js +3 -0
  210. package/dist/locales/en.js.map +1 -0
  211. package/dist/locales/fa.cjs +12 -0
  212. package/dist/locales/fa.cjs.map +1 -0
  213. package/dist/locales/fa.d.cts +6 -0
  214. package/dist/locales/fa.d.ts +6 -0
  215. package/dist/locales/fa.js +3 -0
  216. package/dist/locales/fa.js.map +1 -0
  217. package/dist/locales/index.cjs +51 -0
  218. package/dist/locales/index.cjs.map +1 -0
  219. package/dist/locales/index.d.cts +5 -0
  220. package/dist/locales/index.d.ts +5 -0
  221. package/dist/locales/index.js +6 -0
  222. package/dist/locales/index.js.map +1 -0
  223. package/dist/memoryRecords-AWDKUJ2F.cjs +50 -0
  224. package/dist/memoryRecords-AWDKUJ2F.cjs.map +1 -0
  225. package/dist/memoryRecords-OJTGXLRH.js +47 -0
  226. package/dist/memoryRecords-OJTGXLRH.js.map +1 -0
  227. package/dist/pagedFooterTotals-DXCGDO6F.cjs +27 -0
  228. package/dist/pagedFooterTotals-DXCGDO6F.cjs.map +1 -0
  229. package/dist/pagedFooterTotals-ORWKUNE7.js +25 -0
  230. package/dist/pagedFooterTotals-ORWKUNE7.js.map +1 -0
  231. package/dist/pagedKit-MFGAJFSK.cjs +134 -0
  232. package/dist/pagedKit-MFGAJFSK.cjs.map +1 -0
  233. package/dist/pagedKit-WYWY4LRV.js +127 -0
  234. package/dist/pagedKit-WYWY4LRV.js.map +1 -0
  235. package/dist/pagedSearch-HCPJW7VM.js +38 -0
  236. package/dist/pagedSearch-HCPJW7VM.js.map +1 -0
  237. package/dist/pagedSearch-U3WCG4GN.cjs +42 -0
  238. package/dist/pagedSearch-U3WCG4GN.cjs.map +1 -0
  239. package/dist/plugins/csv.cjs +124 -0
  240. package/dist/plugins/csv.cjs.map +1 -0
  241. package/dist/plugins/csv.d.cts +44 -0
  242. package/dist/plugins/csv.d.ts +44 -0
  243. package/dist/plugins/csv.js +120 -0
  244. package/dist/plugins/csv.js.map +1 -0
  245. package/dist/plugins/excel.cjs +52 -0
  246. package/dist/plugins/excel.cjs.map +1 -0
  247. package/dist/plugins/excel.d.cts +14 -0
  248. package/dist/plugins/excel.d.ts +14 -0
  249. package/dist/plugins/excel.js +7 -0
  250. package/dist/plugins/excel.js.map +1 -0
  251. package/dist/plugins/pdf/fonts/vazirmatn.cjs +50 -0
  252. package/dist/plugins/pdf/fonts/vazirmatn.cjs.map +1 -0
  253. package/dist/plugins/pdf/fonts/vazirmatn.d.cts +24 -0
  254. package/dist/plugins/pdf/fonts/vazirmatn.d.ts +24 -0
  255. package/dist/plugins/pdf/fonts/vazirmatn.js +39 -0
  256. package/dist/plugins/pdf/fonts/vazirmatn.js.map +1 -0
  257. package/dist/plugins/pdf.cjs +24 -0
  258. package/dist/plugins/pdf.cjs.map +1 -0
  259. package/dist/plugins/pdf.d.cts +21 -0
  260. package/dist/plugins/pdf.d.ts +21 -0
  261. package/dist/plugins/pdf.js +7 -0
  262. package/dist/plugins/pdf.js.map +1 -0
  263. package/dist/presence.cjs +56 -0
  264. package/dist/presence.cjs.map +1 -0
  265. package/dist/presence.d.cts +17 -0
  266. package/dist/presence.d.ts +17 -0
  267. package/dist/presence.js +54 -0
  268. package/dist/presence.js.map +1 -0
  269. package/dist/rebuildRowVisibility-66EAZ356.cjs +21 -0
  270. package/dist/rebuildRowVisibility-66EAZ356.cjs.map +1 -0
  271. package/dist/rebuildRowVisibility-6TYM5BP2.js +19 -0
  272. package/dist/rebuildRowVisibility-6TYM5BP2.js.map +1 -0
  273. package/dist/styles.css +1440 -0
  274. package/dist/sync.cjs +148 -0
  275. package/dist/sync.cjs.map +1 -0
  276. package/dist/sync.d.cts +17 -0
  277. package/dist/sync.d.ts +17 -0
  278. package/dist/sync.js +146 -0
  279. package/dist/sync.js.map +1 -0
  280. package/dist/types-D__47BKv.d.cts +23 -0
  281. package/dist/types-D__47BKv.d.ts +23 -0
  282. package/package.json +185 -29
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ var chunkKRJG3KMP_cjs = require('./chunk-KRJG3KMP.cjs');
4
+
5
+ // infrastructure/finance/holidays.ts
6
+ var IRAN_FIXED_HOLIDAYS = [
7
+ { jm: 1, jd: 1, title: "\u0646\u0648\u0631\u0648\u0632" },
8
+ { jm: 1, jd: 2, title: "\u0639\u06CC\u062F \u0646\u0648\u0631\u0648\u0632" },
9
+ { jm: 1, jd: 3, title: "\u0639\u06CC\u062F \u0646\u0648\u0631\u0648\u0632" },
10
+ { jm: 1, jd: 4, title: "\u0639\u06CC\u062F \u0646\u0648\u0631\u0648\u0632" },
11
+ { jm: 1, jd: 12, title: "\u0631\u0648\u0632 \u062C\u0645\u0647\u0648\u0631\u06CC \u0627\u0633\u0644\u0627\u0645\u06CC" },
12
+ { jm: 1, jd: 13, title: "\u0633\u06CC\u0632\u062F\u0647\u200C\u0628\u0647\u200C\u062F\u0631" },
13
+ { jm: 3, jd: 14, title: "\u0631\u062D\u0644\u062A \u0627\u0645\u0627\u0645 \u062E\u0645\u06CC\u0646\u06CC" },
14
+ { jm: 3, jd: 15, title: "\u0642\u06CC\u0627\u0645 \u06F1\u06F5 \u062E\u0631\u062F\u0627\u062F" },
15
+ { jm: 11, jd: 22, title: "\u067E\u06CC\u0631\u0648\u0632\u06CC \u0627\u0646\u0642\u0644\u0627\u0628 \u0627\u0633\u0644\u0627\u0645\u06CC" },
16
+ { jm: 12, jd: 29, title: "\u0645\u0644\u06CC \u0634\u062F\u0646 \u0635\u0646\u0639\u062A \u0646\u0641\u062A" }
17
+ ];
18
+ function utcDay(date) {
19
+ return new Date(
20
+ Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 12)
21
+ );
22
+ }
23
+ function iranHolidaysForYear(jalaliYear, extra = []) {
24
+ const combined = [...IRAN_FIXED_HOLIDAYS, ...extra].filter(
25
+ (h) => h.jy == null || h.jy === jalaliYear
26
+ );
27
+ return combined.map((h) => ({
28
+ ...h,
29
+ jy: jalaliYear,
30
+ date: chunkKRJG3KMP_cjs.jalaliToGregorianDate(jalaliYear, h.jm, h.jd)
31
+ }));
32
+ }
33
+ function isIranHoliday(date, extra = []) {
34
+ const { jy, jm, jd } = chunkKRJG3KMP_cjs.gregorianDateToJalali(utcDay(date));
35
+ return iranHolidaysForYear(jy, extra).some(
36
+ (h) => h.jm === jm && h.jd === jd
37
+ );
38
+ }
39
+ function holidayTitle(date, extra = []) {
40
+ const { jy, jm, jd } = chunkKRJG3KMP_cjs.gregorianDateToJalali(utcDay(date));
41
+ const hit = iranHolidaysForYear(jy, extra).find(
42
+ (h) => h.jm === jm && h.jd === jd
43
+ );
44
+ return hit?.title ?? null;
45
+ }
46
+ function nextBusinessDay(date, extra = []) {
47
+ let cursor = chunkKRJG3KMP_cjs.jalaliAdapter.addDays(utcDay(date), 1);
48
+ for (let i = 0; i < 366; i += 1) {
49
+ const dow = cursor.getUTCDay();
50
+ if (dow !== 5 && !isIranHoliday(cursor, extra)) return cursor;
51
+ cursor = chunkKRJG3KMP_cjs.jalaliAdapter.addDays(cursor, 1);
52
+ }
53
+ return cursor;
54
+ }
55
+
56
+ exports.IRAN_FIXED_HOLIDAYS = IRAN_FIXED_HOLIDAYS;
57
+ exports.holidayTitle = holidayTitle;
58
+ exports.iranHolidaysForYear = iranHolidaysForYear;
59
+ exports.isIranHoliday = isIranHoliday;
60
+ exports.nextBusinessDay = nextBusinessDay;
61
+ //# sourceMappingURL=chunk-WUMOSOEK.cjs.map
62
+ //# sourceMappingURL=chunk-WUMOSOEK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../infrastructure/finance/holidays.ts"],"names":["jalaliToGregorianDate","gregorianDateToJalali","jalaliAdapter"],"mappings":"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","file":"chunk-WUMOSOEK.cjs","sourcesContent":["/**\r\n * Iranian official holidays (Jalali fixed dates) (PR-140).\r\n * Lunar/Islamic moveable holidays can be merged via `extra`.\r\n */\r\n\r\nimport {\r\n gregorianDateToJalali,\r\n jalaliToGregorianDate,\r\n} from '../date/jalaliMath';\r\nimport { jalaliAdapter } from '../date/jalaliAdapter';\r\n\r\nexport type IranHoliday = {\r\n /** Jalali month 1–12 */\r\n jm: number;\r\n /** Jalali day */\r\n jd: number;\r\n title: string;\r\n /** When set, holiday applies only to that Jalali year */\r\n jy?: number;\r\n};\r\n\r\n/** Civil / solar fixed holidays observed every Jalali year. */\r\nexport const IRAN_FIXED_HOLIDAYS: readonly IranHoliday[] = [\r\n { jm: 1, jd: 1, title: 'نوروز' },\r\n { jm: 1, jd: 2, title: 'عید نوروز' },\r\n { jm: 1, jd: 3, title: 'عید نوروز' },\r\n { jm: 1, jd: 4, title: 'عید نوروز' },\r\n { jm: 1, jd: 12, title: 'روز جمهوری اسلامی' },\r\n { jm: 1, jd: 13, title: 'سیزده‌به‌در' },\r\n { jm: 3, jd: 14, title: 'رحلت امام خمینی' },\r\n { jm: 3, jd: 15, title: 'قیام ۱۵ خرداد' },\r\n { jm: 11, jd: 22, title: 'پیروزی انقلاب اسلامی' },\r\n { jm: 12, jd: 29, title: 'ملی شدن صنعت نفت' },\r\n];\r\n\r\nfunction utcDay(date: Date): Date {\r\n return new Date(\r\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 12),\r\n );\r\n}\r\n\r\nexport function iranHolidaysForYear(\r\n jalaliYear: number,\r\n extra: readonly IranHoliday[] = [],\r\n): Array<IranHoliday & { date: Date }> {\r\n const combined = [...IRAN_FIXED_HOLIDAYS, ...extra].filter(\r\n (h) => h.jy == null || h.jy === jalaliYear,\r\n );\r\n return combined.map((h) => ({\r\n ...h,\r\n jy: jalaliYear,\r\n date: jalaliToGregorianDate(jalaliYear, h.jm, h.jd),\r\n }));\r\n}\r\n\r\nexport function isIranHoliday(\r\n date: Date,\r\n extra: readonly IranHoliday[] = [],\r\n): boolean {\r\n const { jy, jm, jd } = gregorianDateToJalali(utcDay(date));\r\n return iranHolidaysForYear(jy, extra).some(\r\n (h) => h.jm === jm && h.jd === jd,\r\n );\r\n}\r\n\r\nexport function holidayTitle(\r\n date: Date,\r\n extra: readonly IranHoliday[] = [],\r\n): string | null {\r\n const { jy, jm, jd } = gregorianDateToJalali(utcDay(date));\r\n const hit = iranHolidaysForYear(jy, extra).find(\r\n (h) => h.jm === jm && h.jd === jd,\r\n );\r\n return hit?.title ?? null;\r\n}\r\n\r\n/** Skip Fridays (Iran weekend) and holidays; returns next open day. */\r\nexport function nextBusinessDay(\r\n date: Date,\r\n extra: readonly IranHoliday[] = [],\r\n): Date {\r\n let cursor = jalaliAdapter.addDays(utcDay(date), 1);\r\n for (let i = 0; i < 366; i += 1) {\r\n const dow = cursor.getUTCDay(); // 5 = Friday\r\n if (dow !== 5 && !isIranHoliday(cursor, extra)) return cursor;\r\n cursor = jalaliAdapter.addDays(cursor, 1);\r\n }\r\n return cursor;\r\n}\r\n"]}
@@ -0,0 +1,140 @@
1
+ // domain/value-objects/Viewport.ts
2
+ var Viewport = class _Viewport {
3
+ constructor(scrollOffset, viewportSize, rowHeight, overscan = 2) {
4
+ this.scrollOffset = scrollOffset;
5
+ this.viewportSize = viewportSize;
6
+ this.rowHeight = rowHeight;
7
+ this.overscan = overscan;
8
+ if (viewportSize <= 0) throw new Error("Viewport.viewportSize must be > 0");
9
+ if (rowHeight <= 0) throw new Error("Viewport.rowHeight must be > 0");
10
+ if (overscan < 0) throw new Error("Viewport.overscan must be >= 0");
11
+ if (scrollOffset < 0) throw new Error("Viewport.scrollOffset must be >= 0");
12
+ }
13
+ equals(other) {
14
+ return this.scrollOffset === other.scrollOffset && this.viewportSize === other.viewportSize && this.rowHeight === other.rowHeight && this.overscan === other.overscan;
15
+ }
16
+ withScrollOffset(scrollOffset) {
17
+ return new _Viewport(
18
+ Math.max(0, scrollOffset),
19
+ this.viewportSize,
20
+ this.rowHeight,
21
+ this.overscan
22
+ );
23
+ }
24
+ withViewportSize(viewportSize) {
25
+ return new _Viewport(
26
+ this.scrollOffset,
27
+ viewportSize,
28
+ this.rowHeight,
29
+ this.overscan
30
+ );
31
+ }
32
+ toJSON() {
33
+ return {
34
+ scrollOffset: this.scrollOffset,
35
+ viewportSize: this.viewportSize,
36
+ rowHeight: this.rowHeight,
37
+ overscan: this.overscan
38
+ };
39
+ }
40
+ };
41
+
42
+ // domain/value-objects/index.ts
43
+ var CellValue = class {
44
+ constructor(value) {
45
+ this.value = value;
46
+ }
47
+ equals(other) {
48
+ return this.value === other.value;
49
+ }
50
+ };
51
+ var CellDisplay = class {
52
+ constructor(value) {
53
+ this.value = value;
54
+ }
55
+ equals(other) {
56
+ return this.value === other.value;
57
+ }
58
+ };
59
+ var _ColumnId = class _ColumnId {
60
+ constructor(value) {
61
+ this.value = value;
62
+ }
63
+ /** Shared instance per field name (PR-101) — avoids 100k×cols ColumnId objects. */
64
+ static for(value) {
65
+ let id = _ColumnId.interned.get(value);
66
+ if (!id) {
67
+ id = new _ColumnId(value);
68
+ _ColumnId.interned.set(value, id);
69
+ }
70
+ return id;
71
+ }
72
+ equals(other) {
73
+ return this.value === other.value;
74
+ }
75
+ };
76
+ _ColumnId.interned = /* @__PURE__ */ new Map();
77
+ var ColumnId = _ColumnId;
78
+ var RowId = class {
79
+ constructor(value) {
80
+ this.value = value;
81
+ }
82
+ equals(other) {
83
+ return this.value === other.value;
84
+ }
85
+ set(id) {
86
+ this.value = id.value;
87
+ }
88
+ };
89
+ var RowState = class {
90
+ constructor(value) {
91
+ this.value = value;
92
+ }
93
+ equals(other) {
94
+ return this.value === other;
95
+ }
96
+ set(rowState) {
97
+ this.value = rowState;
98
+ }
99
+ };
100
+ var RowStateEnum = /* @__PURE__ */ ((RowStateEnum2) => {
101
+ RowStateEnum2["Added"] = "Add";
102
+ RowStateEnum2["Modified"] = "Update";
103
+ RowStateEnum2["Deleted"] = "Delete";
104
+ RowStateEnum2["Unchanged"] = "None";
105
+ return RowStateEnum2;
106
+ })(RowStateEnum || {});
107
+ var Pagination = class _Pagination {
108
+ constructor(page, pageSize, totalRows) {
109
+ this.page = page;
110
+ this.pageSize = pageSize;
111
+ this.totalRows = totalRows;
112
+ this.totalPages = Math.max(1, Math.ceil(totalRows / pageSize));
113
+ this.canPrev = page > 1;
114
+ this.canNext = page < this.totalPages;
115
+ }
116
+ changePage(page) {
117
+ return new _Pagination(page, this.pageSize, this.totalRows);
118
+ }
119
+ changePageSize(size) {
120
+ return new _Pagination(
121
+ Math.min(this.page, Math.ceil(this.totalRows / size)),
122
+ size,
123
+ this.totalRows
124
+ );
125
+ }
126
+ toJSON() {
127
+ return {
128
+ page: this.page,
129
+ pageSize: this.pageSize,
130
+ totalRows: this.totalRows,
131
+ totalPages: this.totalPages,
132
+ canPrev: this.canPrev,
133
+ canNext: this.canNext
134
+ };
135
+ }
136
+ };
137
+
138
+ export { CellDisplay, CellValue, ColumnId, Pagination, RowId, RowState, RowStateEnum, Viewport };
139
+ //# sourceMappingURL=chunk-XLRE2J25.js.map
140
+ //# sourceMappingURL=chunk-XLRE2J25.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../domain/value-objects/Viewport.ts","../domain/value-objects/index.ts"],"names":["RowStateEnum"],"mappings":"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","file":"chunk-XLRE2J25.js","sourcesContent":["/**\r\n * View-state value object for virtual scrolling.\r\n * Lives in Domain types but is NOT an accounting invariant — Adapters drive it.\r\n */\r\nexport class Viewport {\r\n constructor(\r\n /** Vertical scroll offset in pixels. */\r\n public readonly scrollOffset: number,\r\n /** Visible viewport height in pixels. */\r\n public readonly viewportSize: number,\r\n /** Fixed row height in pixels (variable-height later). */\r\n public readonly rowHeight: number,\r\n /** Extra rows rendered above/below the window. */\r\n public readonly overscan: number = 2,\r\n ) {\r\n if (viewportSize <= 0) throw new Error('Viewport.viewportSize must be > 0');\r\n if (rowHeight <= 0) throw new Error('Viewport.rowHeight must be > 0');\r\n if (overscan < 0) throw new Error('Viewport.overscan must be >= 0');\r\n if (scrollOffset < 0) throw new Error('Viewport.scrollOffset must be >= 0');\r\n }\r\n\r\n equals(other: Viewport): boolean {\r\n return (\r\n this.scrollOffset === other.scrollOffset &&\r\n this.viewportSize === other.viewportSize &&\r\n this.rowHeight === other.rowHeight &&\r\n this.overscan === other.overscan\r\n );\r\n }\r\n\r\n withScrollOffset(scrollOffset: number): Viewport {\r\n return new Viewport(\r\n Math.max(0, scrollOffset),\r\n this.viewportSize,\r\n this.rowHeight,\r\n this.overscan,\r\n );\r\n }\r\n\r\n withViewportSize(viewportSize: number): Viewport {\r\n return new Viewport(\r\n this.scrollOffset,\r\n viewportSize,\r\n this.rowHeight,\r\n this.overscan,\r\n );\r\n }\r\n\r\n toJSON() {\r\n return {\r\n scrollOffset: this.scrollOffset,\r\n viewportSize: this.viewportSize,\r\n rowHeight: this.rowHeight,\r\n overscan: this.overscan,\r\n };\r\n }\r\n}\r\n\r\n/** Inclusive start, exclusive end — indices into the ordered row list. */\r\nexport type VisibleRange = {\r\n readonly startIndex: number;\r\n readonly endIndex: number;\r\n readonly startOffset: number;\r\n readonly endOffset: number;\r\n readonly totalHeight: number;\r\n readonly visibleCount: number;\r\n};\r\n","//domain/value-object\r\nexport class CellValue {\r\n constructor(public readonly value: unknown) {}\r\n\r\n equals(other: CellValue) {\r\n return this.value === other.value;\r\n }\r\n}\r\nexport class CellDisplay {\r\n constructor(public readonly value: unknown) {}\r\n\r\n equals(other: CellDisplay) {\r\n return this.value === other.value;\r\n }\r\n}\r\n\r\nexport class ColumnId {\r\n private static readonly interned = new Map<string, ColumnId>();\r\n\r\n constructor(public readonly value: string) { }\r\n\r\n /** Shared instance per field name (PR-101) — avoids 100k×cols ColumnId objects. */\r\n static for(value: string): ColumnId {\r\n let id = ColumnId.interned.get(value);\r\n if (!id) {\r\n id = new ColumnId(value);\r\n ColumnId.interned.set(value, id);\r\n }\r\n return id;\r\n }\r\n\r\n equals(other: ColumnId) {\r\n return this.value === other.value;\r\n }\r\n}\r\nexport type SelectOption = {\r\n label: string;\r\n value: string | number;\r\n};\r\nexport type KeyValue = {\r\n key: string;\r\n value: unknown;\r\n display: unknown;\r\n};\r\n\r\nexport type IRule = {\r\n type?:\r\n | string\r\n | \"array\"\r\n | \"object\"\r\n | \"enum\"\r\n | \"date\"\r\n | \"number\"\r\n | \"integer\"\r\n | \"float\"\r\n | \"boolean\"\r\n | \"email\"\r\n | \"url\"\r\n | \"hex\"\r\n | RegExp;\r\n required?: boolean;\r\n requiredIf?: () => boolean;\r\n whitespace?: boolean;\r\n message?: string;\r\n transform?: (value: unknown) => unknown;\r\n pattern?: string | RegExp;\r\n min?: number;\r\n max?: number;\r\n len?: number;\r\n enum?: unknown[];\r\n validator?: (rule: IRule, value: unknown, callback: (error?: string[]) => void) => void | Promise<void>;\r\n asyncValidator?: (rule: IRule, value: unknown) => Promise<void>;\r\n warningOnly?: boolean;\r\n validateTrigger?: string | string[];\r\n};\r\nexport class RowId {\r\n constructor(public value: number) {}\r\n equals(other: RowId) {\r\n return this.value === other.value;\r\n }\r\n set(id: RowId) {\r\n this.value = id.value;\r\n }\r\n}\r\nexport class TableId {\r\n constructor(public value: string) {}\r\n equals(other: TableId) {\r\n return this.value === other.value;\r\n }\r\n set(id: TableId) {\r\n this.value = id.value;\r\n }\r\n}\r\nexport class RowState {\r\n constructor(public value: RowStateEnum) {}\r\n equals(other: RowStateEnum) {\r\n return this.value === other;\r\n }\r\n set(rowState: RowStateEnum) {\r\n this.value = rowState;\r\n }\r\n}\r\n\r\nexport enum RowStateEnum {\r\n Added = \"Add\",\r\n Modified = \"Update\",\r\n Deleted = \"Delete\",\r\n Unchanged = \"None\",\r\n}\r\nexport enum RowOriginEnum {\r\n Persisted = \"Add\",\r\n New = \"Update\",\r\n}\r\nexport type TableActions = \"copy\" | \"cut\" | \"paste\" | \"pasteInsert\" | null\r\n\r\nexport { Viewport } from './Viewport';\r\nexport type { VisibleRange } from './Viewport';\r\n\r\nexport class Pagination {\r\n public readonly totalRows: number;\r\n public readonly totalPages: number;\r\n public readonly canPrev: boolean;\r\n public readonly canNext: boolean;\r\n\r\n constructor(\r\n public readonly page: number,\r\n public readonly pageSize: number,\r\n totalRows: number,\r\n ) {\r\n this.totalRows = totalRows;\r\n this.totalPages = Math.max(1, Math.ceil(totalRows / pageSize));\r\n this.canPrev = page > 1;\r\n this.canNext = page < this.totalPages;\r\n }\r\n\r\n changePage(page: number): Pagination {\r\n return new Pagination(page, this.pageSize, this.totalRows);\r\n }\r\n changePageSize(size: number): Pagination {\r\n return new Pagination(\r\n Math.min(this.page, Math.ceil(this.totalRows / size)),\r\n size,\r\n this.totalRows,\r\n );\r\n }\r\n\r\n toJSON() {\r\n return {\r\n page: this.page,\r\n pageSize: this.pageSize,\r\n totalRows: this.totalRows,\r\n totalPages: this.totalPages,\r\n canPrev: this.canPrev,\r\n canNext: this.canNext,\r\n };\r\n }\r\n}\r\n"]}
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ // ui/locales/ar.ts
4
+ var arMessages = {
5
+ "general.addNewRow": "\u0625\u0636\u0627\u0641\u0629 \u0635\u0641",
6
+ "general.copy": "\u0646\u0633\u062E",
7
+ "general.cut": "\u0642\u0635",
8
+ "general.paste": "\u0644\u0635\u0642",
9
+ "general.delete": "\u062D\u0630\u0641",
10
+ "general.chooseFromList": "\u0627\u062E\u062A\u0631 \u0645\u0646 \u0627\u0644\u0642\u0627\u0626\u0645\u0629",
11
+ "general.toggle": "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",
12
+ "general.exportToExcel": "\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 Excel",
13
+ "general.exportToExcelSuccess": "\u062A\u0645 \u062A\u0635\u062F\u064A\u0631 Excel \u0628\u0646\u062C\u0627\u062D",
14
+ "general.exportToExcelError": "\u0641\u0634\u0644 \u062A\u0635\u062F\u064A\u0631 Excel",
15
+ "general.exportToPdf": "\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 PDF",
16
+ "general.exportToPdfSuccess": "\u062A\u0645 \u062A\u0635\u062F\u064A\u0631 PDF \u0628\u0646\u062C\u0627\u062D",
17
+ "general.exportToPdfError": "\u0641\u0634\u0644 \u062A\u0635\u062F\u064A\u0631 PDF",
18
+ "general.importFromExcel": "\u0627\u0633\u062A\u064A\u0631\u0627\u062F \u0645\u0646 Excel",
19
+ "general.importFromExcelSuccess": "\u062A\u0645 \u0627\u0633\u062A\u064A\u0631\u0627\u062F Excel \u0628\u0646\u062C\u0627\u062D",
20
+ "general.importFromExcelError": "\u0641\u0634\u0644 \u0627\u0633\u062A\u064A\u0631\u0627\u062F Excel",
21
+ "general.selected": "\u0645\u062D\u062F\u062F",
22
+ "general.search": "\u0628\u062D\u062B",
23
+ "general.selectField": "\u0627\u062E\u062A\u0631",
24
+ "general.selectPlaceholder": "\u0627\u062E\u062A\u0631",
25
+ "general.choice": "\u0627\u062E\u062A\u0631 \u0627\u0644\u0639\u0645\u0648\u062F",
26
+ "general.prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
27
+ "general.next": "\u0627\u0644\u062A\u0627\u0644\u064A",
28
+ "general.noData": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A",
29
+ "general.loading": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
30
+ "general.footerTotal": "\u0627\u0644\u0645\u062C\u0645\u0648\u0639",
31
+ "general.footerAvg": "\u0627\u0644\u0645\u062A\u0648\u0633\u0637",
32
+ "general.replicateRow": "\u062A\u0643\u0631\u0627\u0631 \u0627\u0644\u0635\u0641",
33
+ "general.edit": "\u062A\u0639\u062F\u064A\u0644",
34
+ "general.rowEdit": "\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641",
35
+ "general.row": "\u0635\u0641",
36
+ "general.selectRow": "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0635\u0641",
37
+ "general.save": "\u062D\u0641\u0638",
38
+ "general.notActive": "\u063A\u064A\u0631 \u0646\u0634\u0637",
39
+ "general.add": "\u0625\u0636\u0627\u0641\u0629",
40
+ "general.themeDark": "\u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u062F\u0627\u0643\u0646",
41
+ "general.themeLight": "\u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0641\u0627\u062A\u062D",
42
+ "general.toolbar": "\u0634\u0631\u064A\u0637 \u0627\u0644\u0623\u062F\u0648\u0627\u062A",
43
+ "general.filter": "\u062A\u0635\u0641\u064A\u0629",
44
+ "general.filterApply": "\u062A\u0637\u0628\u064A\u0642",
45
+ "general.filterClear": "\u0645\u0633\u062D",
46
+ "general.filterActive": "\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0646\u0634\u0637\u0629",
47
+ "general.rowsIn": "\u0635\u0641\u0648\u0641 \u0641\u064A",
48
+ "general.page": "\u0635\u0641\u062D\u0627\u062A",
49
+ "general.validationInRow": "\u0641\u064A \u0627\u0644\u0635\u0641",
50
+ "general.validationInColumn": "\u0641\u064A \u0627\u0644\u0639\u0645\u0648\u062F",
51
+ "general.loadMore": "\u0639\u0631\u0636 \u0627\u0644\u0645\u0632\u064A\u062F ({visible} \u0645\u0646 {total})",
52
+ "general.searchFound": "\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 {count} \u0646\u062A\u064A\u062C\u0629",
53
+ "general.searchNotFound": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
54
+ "general.searchPosition": "{current} \u0645\u0646 {total}",
55
+ "columnMenu.open": "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0639\u0645\u0648\u062F",
56
+ "columnMenu.sortAsc": "\u0641\u0631\u0632 \u062A\u0635\u0627\u0639\u062F\u064A",
57
+ "columnMenu.sortDesc": "\u0641\u0631\u0632 \u062A\u0646\u0627\u0632\u0644\u064A",
58
+ "columnMenu.sortNone": "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0641\u0631\u0632",
59
+ "columnMenu.filter": "\u062A\u0635\u0641\u064A\u0629\u2026",
60
+ "columnMenu.hideColumn": "\u0625\u062E\u0641\u0627\u0621 \u0627\u0644\u0639\u0645\u0648\u062F",
61
+ "columnMenu.pinStart": "\u062A\u062B\u0628\u064A\u062A \u0644\u0644\u0628\u062F\u0627\u064A\u0629",
62
+ "columnMenu.pinEnd": "\u062A\u062B\u0628\u064A\u062A \u0644\u0644\u0646\u0647\u0627\u064A\u0629",
63
+ "columnMenu.pinNone": "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062B\u0628\u064A\u062A",
64
+ "columnMenu.autoSize": "\u062A\u062D\u062C\u064A\u0645 \u062A\u0644\u0642\u0627\u0626\u064A",
65
+ "columnMenu.columnsPanel": "\u0625\u0639\u062F\u0627\u062F \u0627\u0644\u0623\u0639\u0645\u062F\u0629",
66
+ "a11y.sortedAsc": "\u062A\u0645 \u0627\u0644\u0641\u0631\u0632 \u062D\u0633\u0628 {column} \u062A\u0635\u0627\u0639\u062F\u064A\u0627\u064B",
67
+ "a11y.sortedDesc": "\u062A\u0645 \u0627\u0644\u0641\u0631\u0632 \u062D\u0633\u0628 {column} \u062A\u0646\u0627\u0632\u0644\u064A\u0627\u064B",
68
+ "a11y.sortCleared": "\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0641\u0631\u0632",
69
+ "a11y.filterResult": "{visible} \u0645\u0646 {total} \u0635\u0641 \u0628\u0639\u062F \u0627\u0644\u062A\u0635\u0641\u064A\u0629",
70
+ "a11y.filterCleared": "\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",
71
+ "a11y.rowsSelected": "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F {count} \u0635\u0641",
72
+ "a11y.selectionCleared": "\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062D\u062F\u064A\u062F",
73
+ "a11y.validationError": "\u062E\u0637\u0623 \u0641\u064A \u0627\u0644\u062A\u062D\u0642\u0642: {message}",
74
+ "a11y.validationGeneric": "\u062E\u0637\u0623 \u0641\u064A \u0627\u0644\u062A\u062D\u0642\u0642",
75
+ "history.title": "\u0627\u0644\u0633\u062C\u0644",
76
+ "history.empty": "\u0644\u0627 \u064A\u0648\u062C\u062F \u0633\u062C\u0644 \u0628\u0639\u062F. \u0639\u062F\u0651\u0644 \u062E\u0644\u064A\u0629 \u0644\u0625\u0636\u0627\u0641\u0629 \u0623\u062D\u062F\u0627\u062B.",
77
+ "history.severity": "\u0627\u0644\u0634\u062F\u0629",
78
+ "history.category": "\u0627\u0644\u0641\u0626\u0629",
79
+ "history.filterAll": "\u0627\u0644\u0643\u0644",
80
+ "history.severity.info": "\u0645\u0639\u0644\u0648\u0645\u0629",
81
+ "history.severity.warning": "\u062A\u062D\u0630\u064A\u0631",
82
+ "history.severity.error": "\u062E\u0637\u0623",
83
+ "history.category.data": "\u0628\u064A\u0627\u0646\u0627\u062A",
84
+ "history.category.structure": "\u0628\u0646\u064A\u0629",
85
+ "history.category.view": "\u0639\u0631\u0636",
86
+ "history.category.system": "\u0646\u0638\u0627\u0645",
87
+ "history.restore": "\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0627\u0644\u0642\u064A\u0645\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",
88
+ "offline.online": "\u0645\u062A\u0635\u0644",
89
+ "offline.offline": "\u063A\u064A\u0631 \u0645\u062A\u0635\u0644",
90
+ "offline.pendingCount": "{count} \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u063A\u064A\u0631 \u0645\u062D\u0641\u0648\u0638\u0629",
91
+ "offline.pendingEmpty": "\u062A\u0645 \u062D\u0641\u0638 \u0643\u0644 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0645\u062D\u0644\u064A\u0627\u064B",
92
+ "sync.policy": "\u0633\u064A\u0627\u0633\u0629 \u0627\u0644\u062A\u0639\u0627\u0631\u0636",
93
+ "sync.policy.lastWriteWins": "\u0622\u062E\u0631 \u0643\u062A\u0627\u0628\u0629 \u062A\u0641\u0648\u0632",
94
+ "sync.policy.serverWins": "\u0627\u0644\u062E\u0627\u062F\u0645 \u064A\u0641\u0648\u0632",
95
+ "sync.policy.manual": "\u064A\u062F\u0648\u064A",
96
+ "sync.now": "\u0645\u0632\u0627\u0645\u0646\u0629 \u0627\u0644\u0622\u0646",
97
+ "sync.syncing": "\u062C\u0627\u0631\u064D \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629\u2026",
98
+ "sync.unavailable": "\u0646\u0642\u0644 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 \u063A\u064A\u0631 \u0645\u0647\u064A\u0623",
99
+ "sync.result": "\u0623\u064F\u0631\u0633\u0644 {pushed}\u060C \u0627\u0633\u062A\u064F\u0644\u0645 {pulled}\u060C \u062A\u0639\u0627\u0631\u0636\u0627\u062A {conflicts}",
100
+ "sync.local": "\u0645\u062D\u0644\u064A",
101
+ "sync.remote": "\u062E\u0627\u062F\u0645",
102
+ "sync.keepLocal": "\u0627\u0644\u0625\u0628\u0642\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u0645\u062D\u0644\u064A",
103
+ "sync.keepRemote": "\u0627\u0644\u0625\u0628\u0642\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u062E\u0627\u062F\u0645",
104
+ "date.pickDate": "\u0627\u062E\u062A\u0631 \u062A\u0627\u0631\u064A\u062E\u0627\u064B",
105
+ "date.pickRange": "\u0627\u062E\u062A\u0631 \u0646\u0637\u0627\u0642\u0627\u064B",
106
+ "date.clear": "\u0645\u0633\u062D",
107
+ "date.calendar": "\u062A\u0642\u0648\u064A\u0645 \u062C\u0644\u0627\u0644\u064A",
108
+ "date.prevMonth": "\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642",
109
+ "date.nextMonth": "\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u062A\u0627\u0644\u064A"
110
+ };
111
+
112
+ exports.arMessages = arMessages;
113
+ //# sourceMappingURL=chunk-Z4QPZ3Z3.cjs.map
114
+ //# sourceMappingURL=chunk-Z4QPZ3Z3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../ui/locales/ar.ts"],"names":[],"mappings":"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","file":"chunk-Z4QPZ3Z3.cjs","sourcesContent":["import type { ERPTableMessages } from './types';\r\n\r\n/** Arabic (ar) message pack (PR-127). */\r\nexport const arMessages: ERPTableMessages = {\r\n 'general.addNewRow': 'إضافة صف',\r\n 'general.copy': 'نسخ',\r\n 'general.cut': 'قص',\r\n 'general.paste': 'لصق',\r\n 'general.delete': 'حذف',\r\n 'general.chooseFromList': 'اختر من القائمة',\r\n 'general.toggle': 'تحديد الكل',\r\n 'general.exportToExcel': 'تصدير إلى Excel',\r\n 'general.exportToExcelSuccess': 'تم تصدير Excel بنجاح',\r\n 'general.exportToExcelError': 'فشل تصدير Excel',\r\n 'general.exportToPdf': 'تصدير إلى PDF',\r\n 'general.exportToPdfSuccess': 'تم تصدير PDF بنجاح',\r\n 'general.exportToPdfError': 'فشل تصدير PDF',\r\n 'general.importFromExcel': 'استيراد من Excel',\r\n 'general.importFromExcelSuccess': 'تم استيراد Excel بنجاح',\r\n 'general.importFromExcelError': 'فشل استيراد Excel',\r\n 'general.selected': 'محدد',\r\n 'general.search': 'بحث',\r\n 'general.selectField': 'اختر',\r\n 'general.selectPlaceholder': 'اختر',\r\n 'general.choice': 'اختر العمود',\r\n 'general.prev': 'السابق',\r\n 'general.next': 'التالي',\r\n 'general.noData': 'لا توجد بيانات',\r\n 'general.loading': 'جارٍ التحميل…',\r\n 'general.footerTotal': 'المجموع',\r\n 'general.footerAvg': 'المتوسط',\r\n 'general.replicateRow': 'تكرار الصف',\r\n 'general.edit': 'تعديل',\r\n 'general.rowEdit': 'تعديل الصف',\r\n 'general.row': 'صف',\r\n 'general.selectRow': 'تحديد الصف',\r\n 'general.save': 'حفظ',\r\n 'general.notActive': 'غير نشط',\r\n 'general.add': 'إضافة',\r\n 'general.themeDark': 'الوضع الداكن',\r\n 'general.themeLight': 'الوضع الفاتح',\r\n 'general.toolbar': 'شريط الأدوات',\r\n 'general.filter': 'تصفية',\r\n 'general.filterApply': 'تطبيق',\r\n 'general.filterClear': 'مسح',\r\n 'general.filterActive': 'التصفية نشطة',\r\n 'general.rowsIn': 'صفوف في',\r\n 'general.page': 'صفحات',\r\n 'general.validationInRow': 'في الصف',\r\n 'general.validationInColumn': 'في العمود',\r\n 'general.loadMore': 'عرض المزيد ({visible} من {total})',\r\n 'general.searchFound': 'تم العثور على {count} نتيجة',\r\n 'general.searchNotFound': 'لا توجد نتائج',\r\n 'general.searchPosition': '{current} من {total}',\r\n 'columnMenu.open': 'قائمة العمود',\r\n 'columnMenu.sortAsc': 'فرز تصاعدي',\r\n 'columnMenu.sortDesc': 'فرز تنازلي',\r\n 'columnMenu.sortNone': 'إلغاء الفرز',\r\n 'columnMenu.filter': 'تصفية…',\r\n 'columnMenu.hideColumn': 'إخفاء العمود',\r\n 'columnMenu.pinStart': 'تثبيت للبداية',\r\n 'columnMenu.pinEnd': 'تثبيت للنهاية',\r\n 'columnMenu.pinNone': 'إلغاء التثبيت',\r\n 'columnMenu.autoSize': 'تحجيم تلقائي',\r\n 'columnMenu.columnsPanel': 'إعداد الأعمدة',\r\n 'a11y.sortedAsc': 'تم الفرز حسب {column} تصاعدياً',\r\n 'a11y.sortedDesc': 'تم الفرز حسب {column} تنازلياً',\r\n 'a11y.sortCleared': 'تم إلغاء الفرز',\r\n 'a11y.filterResult': '{visible} من {total} صف بعد التصفية',\r\n 'a11y.filterCleared': 'تم إلغاء التصفية',\r\n 'a11y.rowsSelected': 'تم تحديد {count} صف',\r\n 'a11y.selectionCleared': 'تم إلغاء التحديد',\r\n 'a11y.validationError': 'خطأ في التحقق: {message}',\r\n 'a11y.validationGeneric': 'خطأ في التحقق',\r\n 'history.title': 'السجل',\r\n 'history.empty': 'لا يوجد سجل بعد. عدّل خلية لإضافة أحداث.',\r\n 'history.severity': 'الشدة',\r\n 'history.category': 'الفئة',\r\n 'history.filterAll': 'الكل',\r\n 'history.severity.info': 'معلومة',\r\n 'history.severity.warning': 'تحذير',\r\n 'history.severity.error': 'خطأ',\r\n 'history.category.data': 'بيانات',\r\n 'history.category.structure': 'بنية',\r\n 'history.category.view': 'عرض',\r\n 'history.category.system': 'نظام',\r\n 'history.restore': 'استعادة القيمة السابقة',\r\n 'offline.online': 'متصل',\r\n 'offline.offline': 'غير متصل',\r\n 'offline.pendingCount': '{count} تغييرات غير محفوظة',\r\n 'offline.pendingEmpty': 'تم حفظ كل التغييرات محلياً',\r\n 'sync.policy': 'سياسة التعارض',\r\n 'sync.policy.lastWriteWins': 'آخر كتابة تفوز',\r\n 'sync.policy.serverWins': 'الخادم يفوز',\r\n 'sync.policy.manual': 'يدوي',\r\n 'sync.now': 'مزامنة الآن',\r\n 'sync.syncing': 'جارٍ المزامنة…',\r\n 'sync.unavailable': 'نقل المزامنة غير مهيأ',\r\n 'sync.result': 'أُرسل {pushed}، استُلم {pulled}، تعارضات {conflicts}',\r\n 'sync.local': 'محلي',\r\n 'sync.remote': 'خادم',\r\n 'sync.keepLocal': 'الإبقاء على المحلي',\r\n 'sync.keepRemote': 'الإبقاء على الخادم',\r\n 'date.pickDate': 'اختر تاريخاً',\r\n 'date.pickRange': 'اختر نطاقاً',\r\n 'date.clear': 'مسح',\r\n 'date.calendar': 'تقويم جلالي',\r\n 'date.prevMonth': 'الشهر السابق',\r\n 'date.nextMonth': 'الشهر التالي',\r\n};\r\n\r\nexport default arMessages;\r\n"]}