persian-data-grid 0.5.0 → 0.6.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-J5Z2LRC5.cjs +131 -0
  4. package/dist/ERPTableGroupRow-J5Z2LRC5.cjs.map +1 -0
  5. package/dist/ERPTableGroupRow-PSAPAHGL.js +125 -0
  6. package/dist/ERPTableGroupRow-PSAPAHGL.js.map +1 -0
  7. package/dist/GridPlugin-CJCaYnlw.d.ts +57 -0
  8. package/dist/GridPlugin-oxhq8AsM.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-B-9lLcoB.d.cts +2492 -0
  14. package/dist/GridSession-Bc7UIawO.d.ts +2492 -0
  15. package/dist/GridSyncService-KTLB4KP3.js +3 -0
  16. package/dist/GridSyncService-KTLB4KP3.js.map +1 -0
  17. package/dist/GridSyncService-TAPAHABV.cjs +12 -0
  18. package/dist/GridSyncService-TAPAHABV.cjs.map +1 -0
  19. package/dist/PdfRenderer-1HFh6UeR.d.ts +22 -0
  20. package/dist/PdfRenderer-CBg7hWNS.d.cts +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-Cuwq481K.d.cts +632 -0
  28. package/dist/UITableController-DU8RopUM.d.ts +632 -0
  29. package/dist/VazirmatnPdfRenderer-BCMpC1zy.d.cts +96 -0
  30. package/dist/VazirmatnPdfRenderer-Dz_G-m3c.d.ts +96 -0
  31. package/dist/adapters/arian-erp.cjs +77 -0
  32. package/dist/adapters/arian-erp.cjs.map +1 -0
  33. package/dist/adapters/arian-erp.d.cts +60 -0
  34. package/dist/adapters/arian-erp.d.ts +60 -0
  35. package/dist/adapters/arian-erp.js +71 -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-BO6yxoAN.d.cts +135 -0
  42. package/dist/applyImportedRows-D4zVY8uD.d.ts +135 -0
  43. package/dist/applyRowVisibilityHandler-KS6TMCBN.js +83 -0
  44. package/dist/applyRowVisibilityHandler-KS6TMCBN.js.map +1 -0
  45. package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs +85 -0
  46. package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs.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-BlXO5NJz.d.ts +30 -0
  52. package/dist/callbackRemoteApi-DgnXH-i0.d.cts +30 -0
  53. package/dist/cellRenderContext-DB7V_mlu.d.ts +42 -0
  54. package/dist/cellRenderContext-DG5BOlxK.d.cts +42 -0
  55. package/dist/chunk-2BJCRYOS.cjs +936 -0
  56. package/dist/chunk-2BJCRYOS.cjs.map +1 -0
  57. package/dist/chunk-3Y3KKGEC.js +3 -0
  58. package/dist/chunk-3Y3KKGEC.js.map +1 -0
  59. package/dist/chunk-5ALMNLUR.cjs +1408 -0
  60. package/dist/chunk-5ALMNLUR.cjs.map +1 -0
  61. package/dist/chunk-5HKVMPBD.js +937 -0
  62. package/dist/chunk-5HKVMPBD.js.map +1 -0
  63. package/dist/chunk-633KP74Z.js +189 -0
  64. package/dist/chunk-633KP74Z.js.map +1 -0
  65. package/dist/chunk-6XBXZPBW.js +298 -0
  66. package/dist/chunk-6XBXZPBW.js.map +1 -0
  67. package/dist/chunk-77UXAJII.js +112 -0
  68. package/dist/chunk-77UXAJII.js.map +1 -0
  69. package/dist/chunk-ASPTRYRD.cjs +21 -0
  70. package/dist/chunk-ASPTRYRD.cjs.map +1 -0
  71. package/dist/chunk-AU3RDJYQ.js +243 -0
  72. package/dist/chunk-AU3RDJYQ.js.map +1 -0
  73. package/dist/chunk-BHDRUZH5.cjs +33 -0
  74. package/dist/chunk-BHDRUZH5.cjs.map +1 -0
  75. package/dist/chunk-BLYVOV3G.cjs +191 -0
  76. package/dist/chunk-BLYVOV3G.cjs.map +1 -0
  77. package/dist/chunk-CILNIWYW.cjs +100 -0
  78. package/dist/chunk-CILNIWYW.cjs.map +1 -0
  79. package/dist/chunk-DFFP7SJ6.cjs +257 -0
  80. package/dist/chunk-DFFP7SJ6.cjs.map +1 -0
  81. package/dist/chunk-DXRCYW42.cjs +568 -0
  82. package/dist/chunk-DXRCYW42.cjs.map +1 -0
  83. package/dist/chunk-EBV6HGZB.cjs +33 -0
  84. package/dist/chunk-EBV6HGZB.cjs.map +1 -0
  85. package/dist/chunk-EHHHC5JV.js +832 -0
  86. package/dist/chunk-EHHHC5JV.js.map +1 -0
  87. package/dist/chunk-F4PYOYHR.js +112 -0
  88. package/dist/chunk-F4PYOYHR.js.map +1 -0
  89. package/dist/chunk-GQEDLUMB.js +168 -0
  90. package/dist/chunk-GQEDLUMB.js.map +1 -0
  91. package/dist/chunk-H2LESGMX.cjs +319 -0
  92. package/dist/chunk-H2LESGMX.cjs.map +1 -0
  93. package/dist/chunk-HTNJT2QU.js +11674 -0
  94. package/dist/chunk-HTNJT2QU.js.map +1 -0
  95. package/dist/chunk-IIISFUW4.cjs +11786 -0
  96. package/dist/chunk-IIISFUW4.cjs.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-KHMG6EI2.js +13 -0
  108. package/dist/chunk-KHMG6EI2.js.map +1 -0
  109. package/dist/chunk-KMRURD5J.cjs +15 -0
  110. package/dist/chunk-KMRURD5J.cjs.map +1 -0
  111. package/dist/chunk-KRJG3KMP.cjs +174 -0
  112. package/dist/chunk-KRJG3KMP.cjs.map +1 -0
  113. package/dist/chunk-KUBVDIF7.cjs +653 -0
  114. package/dist/chunk-KUBVDIF7.cjs.map +1 -0
  115. package/dist/chunk-KYAOSBQN.js +31 -0
  116. package/dist/chunk-KYAOSBQN.js.map +1 -0
  117. package/dist/chunk-LJ7LMEXO.js +36 -0
  118. package/dist/chunk-LJ7LMEXO.js.map +1 -0
  119. package/dist/chunk-MT3KLB2Q.cjs +944 -0
  120. package/dist/chunk-MT3KLB2Q.cjs.map +1 -0
  121. package/dist/chunk-MU3RY46O.js +932 -0
  122. package/dist/chunk-MU3RY46O.js.map +1 -0
  123. package/dist/chunk-MUQQKPWR.js +84 -0
  124. package/dist/chunk-MUQQKPWR.js.map +1 -0
  125. package/dist/chunk-N7SJTINL.cjs +4 -0
  126. package/dist/chunk-N7SJTINL.cjs.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-PXCHPZTP.cjs +839 -0
  134. package/dist/chunk-PXCHPZTP.cjs.map +1 -0
  135. package/dist/chunk-Q7TBBUTX.cjs +110 -0
  136. package/dist/chunk-Q7TBBUTX.cjs.map +1 -0
  137. package/dist/chunk-QQMU44KJ.js +612 -0
  138. package/dist/chunk-QQMU44KJ.js.map +1 -0
  139. package/dist/chunk-QZN7R2WP.cjs +114 -0
  140. package/dist/chunk-QZN7R2WP.cjs.map +1 -0
  141. package/dist/chunk-RKVSJU46.js +35 -0
  142. package/dist/chunk-RKVSJU46.js.map +1 -0
  143. package/dist/chunk-RM6ZWNT3.js +561 -0
  144. package/dist/chunk-RM6ZWNT3.js.map +1 -0
  145. package/dist/chunk-SX4VQXAA.cjs +114 -0
  146. package/dist/chunk-SX4VQXAA.cjs.map +1 -0
  147. package/dist/chunk-SZ7BLAY3.js +92 -0
  148. package/dist/chunk-SZ7BLAY3.js.map +1 -0
  149. package/dist/chunk-TN4MG6FY.js +112 -0
  150. package/dist/chunk-TN4MG6FY.js.map +1 -0
  151. package/dist/chunk-UC7PHDM6.cjs +331 -0
  152. package/dist/chunk-UC7PHDM6.cjs.map +1 -0
  153. package/dist/chunk-UXVLYUUW.js +108 -0
  154. package/dist/chunk-UXVLYUUW.js.map +1 -0
  155. package/dist/chunk-VVGYRZ7S.cjs +38 -0
  156. package/dist/chunk-VVGYRZ7S.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-WUMOSOEK.cjs +62 -0
  160. package/dist/chunk-WUMOSOEK.cjs.map +1 -0
  161. package/dist/chunk-XLRE2J25.js +140 -0
  162. package/dist/chunk-XLRE2J25.js.map +1 -0
  163. package/dist/chunk-Y6W5V2CI.js +19 -0
  164. package/dist/chunk-Y6W5V2CI.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-Dmq3i5v3.d.cts +884 -0
  168. package/dist/createEngineGridQuery-Mt1hc33m.d.ts +884 -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 +504 -0
  188. package/dist/headless.d.ts +504 -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 +8002 -11409
  194. package/dist/index.cjs.map +1 -1
  195. package/dist/index.d.cts +437 -2305
  196. package/dist/index.d.ts +437 -2305
  197. package/dist/index.js +7244 -11083
  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 +184 -28
@@ -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,19 @@
1
+ // infrastructure/Repositories/callbackRemoteApi.ts
2
+ var CallbackRemoteApi = class {
3
+ constructor(send, onError) {
4
+ this.send = send;
5
+ this.onError = onError;
6
+ }
7
+ async request(input) {
8
+ try {
9
+ return await this.send(input);
10
+ } catch (error) {
11
+ this.onError?.(error);
12
+ throw error;
13
+ }
14
+ }
15
+ };
16
+
17
+ export { CallbackRemoteApi };
18
+ //# sourceMappingURL=chunk-Y6W5V2CI.js.map
19
+ //# sourceMappingURL=chunk-Y6W5V2CI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../infrastructure/Repositories/callbackRemoteApi.ts"],"names":[],"mappings":";AAuBO,IAAM,oBAAN,MAA6C;AAAA,EAClD,WAAA,CACmB,MACA,OAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAChB;AAAA,EAEH,MAAM,QAA6B,KAAA,EAA6C;AAC9E,IAAA,IAAI;AACF,MAAA,OAAQ,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,IAC/B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AACF","file":"chunk-Y6W5V2CI.js","sourcesContent":["import type { RemoteApi } from '../../application/ports/RemoteApi';\r\n\r\nexport type RemoteApiRequest = {\r\n endpoint: string;\r\n params?: Record<string, unknown>;\r\n method?: 'GET' | 'POST';\r\n};\r\n\r\n/**\r\n * Wraps ANY host transport as a `RemoteApi` port — the grid never learns how\r\n * requests are authenticated or where defaults come from.\r\n *\r\n * arianERP example (RTK Query base query with token refresh + Redux defaults):\r\n *\r\n * const remoteApi = new CallbackRemoteApi(async ({ endpoint, params, method }) => {\r\n * const res = await baseQueryByToken(\r\n * { url: endpoint, method: method ?? 'POST', body: params ?? {} },\r\n * { getState: () => store.getState(), dispatch: store.dispatch } as never,\r\n * {},\r\n * );\r\n * return res.data;\r\n * });\r\n */\r\nexport class CallbackRemoteApi implements RemoteApi {\r\n constructor(\r\n private readonly send: (request: RemoteApiRequest) => Promise<unknown>,\r\n private readonly onError?: (error: unknown) => void,\r\n ) {}\r\n\r\n async request<TResponse = unknown>(input: RemoteApiRequest): Promise<TResponse> {\r\n try {\r\n return (await this.send(input)) as TResponse;\r\n } catch (error) {\r\n this.onError?.(error);\r\n throw error;\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":";;;AAGO,IAAM,UAAA,GAA+B;AAAA,EAC1C,mBAAA,EAAqB,6CAAA;AAAA,EACrB,cAAA,EAAgB,oBAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,eAAA,EAAiB,oBAAA;AAAA,EACjB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,wBAAA,EAA0B,kFAAA;AAAA,EAC1B,gBAAA,EAAkB,yDAAA;AAAA,EAClB,uBAAA,EAAyB,yDAAA;AAAA,EACzB,8BAAA,EAAgC,kFAAA;AAAA,EAChC,4BAAA,EAA8B,yDAAA;AAAA,EAC9B,qBAAA,EAAuB,uDAAA;AAAA,EACvB,4BAAA,EAA8B,gFAAA;AAAA,EAC9B,0BAAA,EAA4B,uDAAA;AAAA,EAC5B,yBAAA,EAA2B,+DAAA;AAAA,EAC3B,gCAAA,EAAkC,8FAAA;AAAA,EAClC,8BAAA,EAAgC,qEAAA;AAAA,EAChC,kBAAA,EAAoB,0BAAA;AAAA,EACpB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,qBAAA,EAAuB,0BAAA;AAAA,EACvB,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,gBAAA,EAAkB,+DAAA;AAAA,EAClB,cAAA,EAAgB,sCAAA;AAAA,EAChB,cAAA,EAAgB,sCAAA;AAAA,EAChB,gBAAA,EAAkB,4EAAA;AAAA,EAClB,iBAAA,EAAmB,2EAAA;AAAA,EACnB,qBAAA,EAAuB,4CAAA;AAAA,EACvB,mBAAA,EAAqB,4CAAA;AAAA,EACrB,sBAAA,EAAwB,yDAAA;AAAA,EACxB,cAAA,EAAgB,gCAAA;AAAA,EAChB,iBAAA,EAAmB,yDAAA;AAAA,EACnB,aAAA,EAAe,cAAA;AAAA,EACf,mBAAA,EAAqB,yDAAA;AAAA,EACrB,cAAA,EAAgB,oBAAA;AAAA,EAChB,mBAAA,EAAqB,uCAAA;AAAA,EACrB,aAAA,EAAe,gCAAA;AAAA,EACf,mBAAA,EAAqB,qEAAA;AAAA,EACrB,oBAAA,EAAsB,qEAAA;AAAA,EACtB,iBAAA,EAAmB,qEAAA;AAAA,EACnB,gBAAA,EAAkB,gCAAA;AAAA,EAClB,qBAAA,EAAuB,gCAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,sBAAA,EAAwB,qEAAA;AAAA,EACxB,gBAAA,EAAkB,uCAAA;AAAA,EAClB,cAAA,EAAgB,gCAAA;AAAA,EAChB,yBAAA,EAA2B,uCAAA;AAAA,EAC3B,4BAAA,EAA8B,mDAAA;AAAA,EAC9B,kBAAA,EAAoB,0FAAA;AAAA,EACpB,qBAAA,EAAuB,6GAAA;AAAA,EACvB,wBAAA,EAA0B,sEAAA;AAAA,EAC1B,wBAAA,EAA0B,gCAAA;AAAA,EAC1B,iBAAA,EAAmB,qEAAA;AAAA,EACnB,oBAAA,EAAsB,yDAAA;AAAA,EACtB,qBAAA,EAAuB,yDAAA;AAAA,EACvB,qBAAA,EAAuB,+DAAA;AAAA,EACvB,mBAAA,EAAqB,sCAAA;AAAA,EACrB,uBAAA,EAAyB,qEAAA;AAAA,EACzB,qBAAA,EAAuB,2EAAA;AAAA,EACvB,mBAAA,EAAqB,2EAAA;AAAA,EACrB,oBAAA,EAAsB,2EAAA;AAAA,EACtB,qBAAA,EAAuB,qEAAA;AAAA,EACvB,yBAAA,EAA2B,2EAAA;AAAA,EAC3B,gBAAA,EAAkB,0HAAA;AAAA,EAClB,iBAAA,EAAmB,0HAAA;AAAA,EACnB,kBAAA,EAAoB,4EAAA;AAAA,EACpB,mBAAA,EAAqB,2GAAA;AAAA,EACrB,oBAAA,EAAsB,wFAAA;AAAA,EACtB,mBAAA,EAAqB,kEAAA;AAAA,EACrB,uBAAA,EAAyB,wFAAA;AAAA,EACzB,sBAAA,EAAwB,iFAAA;AAAA,EACxB,wBAAA,EAA0B,sEAAA;AAAA,EAC1B,eAAA,EAAiB,gCAAA;AAAA,EACjB,eAAA,EAAiB,qMAAA;AAAA,EACjB,kBAAA,EAAoB,gCAAA;AAAA,EACpB,kBAAA,EAAoB,gCAAA;AAAA,EACpB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,uBAAA,EAAyB,sCAAA;AAAA,EACzB,0BAAA,EAA4B,gCAAA;AAAA,EAC5B,wBAAA,EAA0B,oBAAA;AAAA,EAC1B,uBAAA,EAAyB,sCAAA;AAAA,EACzB,4BAAA,EAA8B,0BAAA;AAAA,EAC9B,uBAAA,EAAyB,oBAAA;AAAA,EACzB,yBAAA,EAA2B,0BAAA;AAAA,EAC3B,iBAAA,EAAmB,4HAAA;AAAA,EACnB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,iBAAA,EAAmB,6CAAA;AAAA,EACnB,sBAAA,EAAwB,4GAAA;AAAA,EACxB,sBAAA,EAAwB,0IAAA;AAAA,EACxB,aAAA,EAAe,2EAAA;AAAA,EACf,2BAAA,EAA6B,4EAAA;AAAA,EAC7B,wBAAA,EAA0B,+DAAA;AAAA,EAC1B,oBAAA,EAAsB,0BAAA;AAAA,EACtB,UAAA,EAAY,+DAAA;AAAA,EACZ,cAAA,EAAgB,iFAAA;AAAA,EAChB,kBAAA,EAAoB,iHAAA;AAAA,EACpB,aAAA,EAAe,0JAAA;AAAA,EACf,YAAA,EAAc,0BAAA;AAAA,EACd,aAAA,EAAe,0BAAA;AAAA,EACf,gBAAA,EAAkB,oGAAA;AAAA,EAClB,iBAAA,EAAmB,oGAAA;AAAA,EACnB,eAAA,EAAiB,qEAAA;AAAA,EACjB,gBAAA,EAAkB,+DAAA;AAAA,EAClB,YAAA,EAAc,oBAAA;AAAA,EACd,eAAA,EAAiB,+DAAA;AAAA,EACjB,gBAAA,EAAkB,qEAAA;AAAA,EAClB,gBAAA,EAAkB;AACpB","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"]}