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,174 @@
1
+ 'use strict';
2
+
3
+ var chunkDFFP7SJ6_cjs = require('./chunk-DFFP7SJ6.cjs');
4
+
5
+ // infrastructure/date/jalaliMath.ts
6
+ function isJalaliLeap(jy) {
7
+ return jalaliLeapOffset(jy) === 0;
8
+ }
9
+ function jalaliLeapOffset(jy) {
10
+ const breaks = [
11
+ -61,
12
+ 9,
13
+ 38,
14
+ 199,
15
+ 426,
16
+ 686,
17
+ 756,
18
+ 818,
19
+ 1111,
20
+ 1181,
21
+ 1210,
22
+ 1635,
23
+ 2060,
24
+ 2097,
25
+ 2192,
26
+ 2262,
27
+ 2324,
28
+ 2394,
29
+ 2456,
30
+ 3178
31
+ ];
32
+ const bl = breaks.length;
33
+ let jp = breaks[0];
34
+ let jump = 0;
35
+ for (let i = 1; i < bl; i += 1) {
36
+ const jm = breaks[i];
37
+ jump = jm - jp;
38
+ if (jy < jm) break;
39
+ jp = jm;
40
+ }
41
+ let n = jy - jp;
42
+ if (jump - n < 6) n = n - jump + Math.floor((jump + 4) / 33) * 33;
43
+ let leap = ((n + 1) % 33 - 1) % 4;
44
+ if (leap === -1) leap = 4;
45
+ return leap;
46
+ }
47
+ function jalaliMonthLength(jy, jm) {
48
+ if (jm <= 6) return 31;
49
+ if (jm <= 11) return 30;
50
+ return isJalaliLeap(jy) ? 30 : 29;
51
+ }
52
+ function jalaliToGregorian(jy, jm, jd) {
53
+ const r = jalaliToJdn(jy, jm, jd);
54
+ return jdnToGregorian(r);
55
+ }
56
+ function gregorianToJalali(gy, gm, gd) {
57
+ return jdnToJalali(gregorianToJdn(gy, gm, gd));
58
+ }
59
+ function jalaliToGregorianDate(jy, jm, jd) {
60
+ const g = jalaliToGregorian(jy, jm, jd);
61
+ return new Date(Date.UTC(g.gy, g.gm - 1, g.gd, 12, 0, 0));
62
+ }
63
+ function gregorianDateToJalali(date) {
64
+ return gregorianToJalali(
65
+ date.getUTCFullYear(),
66
+ date.getUTCMonth() + 1,
67
+ date.getUTCDate()
68
+ );
69
+ }
70
+ function pad2(n) {
71
+ return String(n).padStart(2, "0");
72
+ }
73
+ function div(a, b) {
74
+ return Math.floor(a / b);
75
+ }
76
+ function gregorianToJdn(gy, gm, gd) {
77
+ const a = div(14 - gm, 12);
78
+ const y = gy + 4800 - a;
79
+ const m = gm + 12 * a - 3;
80
+ return gd + div(153 * m + 2, 5) + 365 * y + div(y, 4) - div(y, 100) + div(y, 400) - 32045;
81
+ }
82
+ function jdnToGregorian(jdn) {
83
+ let a = jdn + 32044;
84
+ const b = div(4 * a + 3, 146097);
85
+ a -= div(146097 * b, 4);
86
+ const c = div(4 * a + 3, 1461);
87
+ a -= div(1461 * c, 4);
88
+ const d = div(5 * a + 2, 153);
89
+ const gd = a - div(153 * d + 2, 5) + 1;
90
+ const gm = d + 3 - 12 * div(d, 10);
91
+ const gy = 100 * b + c - 4800 + div(d, 10);
92
+ return { gy, gm, gd };
93
+ }
94
+ function jalaliToJdn(jy, jm, jd) {
95
+ const epbase = jy - (jy >= 0 ? 474 : 473);
96
+ const epyear = 474 + epbase % 2820;
97
+ return jd + (jm <= 7 ? (jm - 1) * 31 : (jm - 1) * 30 + 6) + div(epyear * 682 - 110, 2816) + (epyear - 1) * 365 + div(epbase, 2820) * 1029983 + (1948320 - 1);
98
+ }
99
+ function jdnToJalali(jdn) {
100
+ const depoch = jdn - jalaliToJdn(475, 1, 1);
101
+ const cycle = div(depoch, 1029983);
102
+ const cyear = depoch % 1029983;
103
+ let ycycle;
104
+ if (cyear === 1029982) {
105
+ ycycle = 2820;
106
+ } else {
107
+ const aux1 = div(cyear, 366);
108
+ const aux2 = cyear % 366;
109
+ ycycle = div(2134 * aux1 + 2816 * aux2 + 2815, 1028522) + aux1 + 1;
110
+ }
111
+ const jy = ycycle + 2820 * cycle + 474;
112
+ const yday = jdn - jalaliToJdn(jy, 1, 1) + 1;
113
+ const jm = yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
114
+ const jd = jdn - jalaliToJdn(jy, jm, 1) + 1;
115
+ return { jy, jm, jd };
116
+ }
117
+
118
+ // infrastructure/date/jalaliAdapter.ts
119
+ var JALALI_RE = /^(\d{4})[/\-.](\d{1,2})[/\-.](\d{1,2})$/;
120
+ function utcDay(date) {
121
+ return new Date(
122
+ Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 12)
123
+ );
124
+ }
125
+ function parseTimestamp(input) {
126
+ if (input instanceof Date && !Number.isNaN(input.getTime())) {
127
+ return utcDay(input);
128
+ }
129
+ if (typeof input === "number" && Number.isFinite(input)) {
130
+ const d = new Date(input);
131
+ return Number.isNaN(d.getTime()) ? null : utcDay(d);
132
+ }
133
+ return null;
134
+ }
135
+ var jalaliAdapter = {
136
+ id: "jalali",
137
+ parse(input) {
138
+ if (input == null || input === "") return null;
139
+ const fromTs = parseTimestamp(input);
140
+ if (fromTs) return fromTs;
141
+ const text = chunkDFFP7SJ6_cjs.normalizeDigits(String(input).trim());
142
+ const m = JALALI_RE.exec(text);
143
+ if (!m) return null;
144
+ const jy = Number(m[1]);
145
+ const jm = Number(m[2]);
146
+ const jd = Number(m[3]);
147
+ if (jm < 1 || jm > 12 || jd < 1 || jd > 31) return null;
148
+ return jalaliToGregorianDate(jy, jm, jd);
149
+ },
150
+ format(date) {
151
+ const { jy, jm, jd } = gregorianDateToJalali(utcDay(date));
152
+ return `${jy}/${pad2(jm)}/${pad2(jd)}`;
153
+ },
154
+ addDays(date, days) {
155
+ const next = utcDay(date);
156
+ next.setUTCDate(next.getUTCDate() + days);
157
+ return next;
158
+ },
159
+ startOfMonth(date) {
160
+ const { jy, jm } = gregorianDateToJalali(utcDay(date));
161
+ return jalaliToGregorianDate(jy, jm, 1);
162
+ },
163
+ compare(a, b) {
164
+ return utcDay(a).getTime() - utcDay(b).getTime();
165
+ }
166
+ };
167
+
168
+ exports.gregorianDateToJalali = gregorianDateToJalali;
169
+ exports.jalaliAdapter = jalaliAdapter;
170
+ exports.jalaliMonthLength = jalaliMonthLength;
171
+ exports.jalaliToGregorianDate = jalaliToGregorianDate;
172
+ exports.pad2 = pad2;
173
+ //# sourceMappingURL=chunk-KRJG3KMP.cjs.map
174
+ //# sourceMappingURL=chunk-KRJG3KMP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../infrastructure/date/jalaliMath.ts","../infrastructure/date/jalaliAdapter.ts"],"names":["normalizeDigits"],"mappings":"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","file":"chunk-KRJG3KMP.cjs","sourcesContent":["/**\r\n * Jalali ↔ Gregorian conversion (PR-128).\r\n * Algorithm adapted from the public-domain jalaali-js approach.\r\n */\r\n\r\nexport function isJalaliLeap(jy: number): boolean {\r\n return jalaliLeapOffset(jy) === 0;\r\n}\r\n\r\nfunction jalaliLeapOffset(jy: number): number {\r\n const breaks = [\r\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097,\r\n 2192, 2262, 2324, 2394, 2456, 3178,\r\n ];\r\n const bl = breaks.length;\r\n let jp = breaks[0]!;\r\n let jump = 0;\r\n for (let i = 1; i < bl; i += 1) {\r\n const jm = breaks[i]!;\r\n jump = jm - jp;\r\n if (jy < jm) break;\r\n jp = jm;\r\n }\r\n let n = jy - jp;\r\n if (jump - n < 6) n = n - jump + Math.floor((jump + 4) / 33) * 33;\r\n let leap = ((((n + 1) % 33) - 1) % 4);\r\n if (leap === -1) leap = 4;\r\n return leap;\r\n}\r\n\r\nexport function jalaliMonthLength(jy: number, jm: number): number {\r\n if (jm <= 6) return 31;\r\n if (jm <= 11) return 30;\r\n return isJalaliLeap(jy) ? 30 : 29;\r\n}\r\n\r\nexport function jalaliToGregorian(\r\n jy: number,\r\n jm: number,\r\n jd: number,\r\n): { gy: number; gm: number; gd: number } {\r\n const r = jalaliToJdn(jy, jm, jd);\r\n return jdnToGregorian(r);\r\n}\r\n\r\nexport function gregorianToJalali(\r\n gy: number,\r\n gm: number,\r\n gd: number,\r\n): { jy: number; jm: number; jd: number } {\r\n return jdnToJalali(gregorianToJdn(gy, gm, gd));\r\n}\r\n\r\nexport function jalaliToGregorianDate(jy: number, jm: number, jd: number): Date {\r\n const g = jalaliToGregorian(jy, jm, jd);\r\n return new Date(Date.UTC(g.gy, g.gm - 1, g.gd, 12, 0, 0));\r\n}\r\n\r\nexport function gregorianDateToJalali(date: Date): {\r\n jy: number;\r\n jm: number;\r\n jd: number;\r\n} {\r\n return gregorianToJalali(\r\n date.getUTCFullYear(),\r\n date.getUTCMonth() + 1,\r\n date.getUTCDate(),\r\n );\r\n}\r\n\r\nexport function pad2(n: number): string {\r\n return String(n).padStart(2, '0');\r\n}\r\n\r\nfunction div(a: number, b: number): number {\r\n return Math.floor(a / b);\r\n}\r\n\r\nfunction gregorianToJdn(gy: number, gm: number, gd: number): number {\r\n const a = div(14 - gm, 12);\r\n const y = gy + 4800 - a;\r\n const m = gm + 12 * a - 3;\r\n return (\r\n gd +\r\n div(153 * m + 2, 5) +\r\n 365 * y +\r\n div(y, 4) -\r\n div(y, 100) +\r\n div(y, 400) -\r\n 32045\r\n );\r\n}\r\n\r\nfunction jdnToGregorian(jdn: number): { gy: number; gm: number; gd: number } {\r\n let a = jdn + 32044;\r\n const b = div(4 * a + 3, 146097);\r\n a -= div(146097 * b, 4);\r\n const c = div(4 * a + 3, 1461);\r\n a -= div(1461 * c, 4);\r\n const d = div(5 * a + 2, 153);\r\n const gd = a - div(153 * d + 2, 5) + 1;\r\n const gm = d + 3 - 12 * div(d, 10);\r\n const gy = 100 * b + c - 4800 + div(d, 10);\r\n return { gy, gm, gd };\r\n}\r\n\r\nfunction jalaliToJdn(jy: number, jm: number, jd: number): number {\r\n const epbase = jy - (jy >= 0 ? 474 : 473);\r\n const epyear = 474 + (epbase % 2820);\r\n return (\r\n jd +\r\n (jm <= 7 ? (jm - 1) * 31 : (jm - 1) * 30 + 6) +\r\n div(epyear * 682 - 110, 2816) +\r\n (epyear - 1) * 365 +\r\n div(epbase, 2820) * 1029983 +\r\n (1948320 - 1)\r\n );\r\n}\r\n\r\nfunction jdnToJalali(jdn: number): { jy: number; jm: number; jd: number } {\r\n const depoch = jdn - jalaliToJdn(475, 1, 1);\r\n const cycle = div(depoch, 1029983);\r\n const cyear = depoch % 1029983;\r\n let ycycle: number;\r\n if (cyear === 1029982) {\r\n ycycle = 2820;\r\n } else {\r\n const aux1 = div(cyear, 366);\r\n const aux2 = cyear % 366;\r\n ycycle = div(2134 * aux1 + 2816 * aux2 + 2815, 1028522) + aux1 + 1;\r\n }\r\n const jy = ycycle + 2820 * cycle + 474;\r\n const yday = jdn - jalaliToJdn(jy, 1, 1) + 1;\r\n const jm = yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);\r\n const jd = jdn - jalaliToJdn(jy, jm, 1) + 1;\r\n return { jy, jm, jd };\r\n}\r\n","import type { DateAdapter } from '../../application/ports/DateAdapter';\r\nimport { normalizeDigits } from '../../engine/dataOps/sortModel';\r\nimport {\r\n gregorianDateToJalali,\r\n jalaliToGregorianDate,\r\n pad2,\r\n} from './jalaliMath';\r\n\r\nconst JALALI_RE = /^(\\d{4})[/\\-.](\\d{1,2})[/\\-.](\\d{1,2})$/;\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\nfunction parseTimestamp(input: unknown): Date | null {\r\n if (input instanceof Date && !Number.isNaN(input.getTime())) {\r\n return utcDay(input);\r\n }\r\n if (typeof input === 'number' && Number.isFinite(input)) {\r\n const d = new Date(input);\r\n return Number.isNaN(d.getTime()) ? null : utcDay(d);\r\n }\r\n return null;\r\n}\r\n\r\n/** Default calendar for Persian hosts (PR-128 / D21). */\r\nexport const jalaliAdapter: DateAdapter = {\r\n id: 'jalali',\r\n\r\n parse(input: unknown): Date | null {\r\n if (input == null || input === '') return null;\r\n const fromTs = parseTimestamp(input);\r\n if (fromTs) return fromTs;\r\n const text = normalizeDigits(String(input).trim());\r\n const m = JALALI_RE.exec(text);\r\n if (!m) return null;\r\n const jy = Number(m[1]);\r\n const jm = Number(m[2]);\r\n const jd = Number(m[3]);\r\n if (jm < 1 || jm > 12 || jd < 1 || jd > 31) return null;\r\n return jalaliToGregorianDate(jy, jm, jd);\r\n },\r\n\r\n format(date: Date): string {\r\n const { jy, jm, jd } = gregorianDateToJalali(utcDay(date));\r\n return `${jy}/${pad2(jm)}/${pad2(jd)}`;\r\n },\r\n\r\n addDays(date: Date, days: number): Date {\r\n const next = utcDay(date);\r\n next.setUTCDate(next.getUTCDate() + days);\r\n return next;\r\n },\r\n\r\n startOfMonth(date: Date): Date {\r\n const { jy, jm } = gregorianDateToJalali(utcDay(date));\r\n return jalaliToGregorianDate(jy, jm, 1);\r\n },\r\n\r\n compare(a: Date, b: Date): number {\r\n return utcDay(a).getTime() - utcDay(b).getTime();\r\n },\r\n};\r\n"]}