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,653 @@
1
+ 'use strict';
2
+
3
+ var chunkCILNIWYW_cjs = require('./chunk-CILNIWYW.cjs');
4
+ var chunkKRJG3KMP_cjs = require('./chunk-KRJG3KMP.cjs');
5
+ var chunkJ7CPPFXT_cjs = require('./chunk-J7CPPFXT.cjs');
6
+ var chunkDFFP7SJ6_cjs = require('./chunk-DFFP7SJ6.cjs');
7
+ var react = require('react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // infrastructure/date/gregorianAdapter.ts
11
+ var ISO_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
12
+ var SLASH_RE = /^(\d{4})[/\-.](\d{1,2})[/\-.](\d{1,2})$/;
13
+ function utcDay(y, m, d) {
14
+ return new Date(Date.UTC(y, m - 1, d, 12, 0, 0));
15
+ }
16
+ function asUtcDay(date) {
17
+ return utcDay(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
18
+ }
19
+ var gregorianAdapter = {
20
+ id: "gregory",
21
+ parse(input) {
22
+ if (input == null || input === "") return null;
23
+ if (input instanceof Date && !Number.isNaN(input.getTime())) {
24
+ return asUtcDay(input);
25
+ }
26
+ if (typeof input === "number" && Number.isFinite(input)) {
27
+ const d = new Date(input);
28
+ return Number.isNaN(d.getTime()) ? null : asUtcDay(d);
29
+ }
30
+ const text = chunkDFFP7SJ6_cjs.normalizeDigits(String(input).trim());
31
+ const iso = ISO_RE.exec(text);
32
+ if (iso) {
33
+ return utcDay(Number(iso[1]), Number(iso[2]), Number(iso[3]));
34
+ }
35
+ const slash = SLASH_RE.exec(text);
36
+ if (slash) {
37
+ return utcDay(Number(slash[1]), Number(slash[2]), Number(slash[3]));
38
+ }
39
+ const fallback = new Date(text);
40
+ return Number.isNaN(fallback.getTime()) ? null : asUtcDay(fallback);
41
+ },
42
+ format(date) {
43
+ const d = asUtcDay(date);
44
+ return `${d.getUTCFullYear()}-${chunkKRJG3KMP_cjs.pad2(d.getUTCMonth() + 1)}-${chunkKRJG3KMP_cjs.pad2(d.getUTCDate())}`;
45
+ },
46
+ addDays(date, days) {
47
+ const next = asUtcDay(date);
48
+ next.setUTCDate(next.getUTCDate() + days);
49
+ return next;
50
+ },
51
+ startOfMonth(date) {
52
+ const d = asUtcDay(date);
53
+ return utcDay(d.getUTCFullYear(), d.getUTCMonth() + 1, 1);
54
+ },
55
+ compare(a, b) {
56
+ return asUtcDay(a).getTime() - asUtcDay(b).getTime();
57
+ }
58
+ };
59
+
60
+ // infrastructure/date/jalaliCalendarModel.ts
61
+ var MONTH_NAMES_FA = [
62
+ "\u0641\u0631\u0648\u0631\u062F\u06CC\u0646",
63
+ "\u0627\u0631\u062F\u06CC\u0628\u0647\u0634\u062A",
64
+ "\u062E\u0631\u062F\u0627\u062F",
65
+ "\u062A\u06CC\u0631",
66
+ "\u0645\u0631\u062F\u0627\u062F",
67
+ "\u0634\u0647\u0631\u06CC\u0648\u0631",
68
+ "\u0645\u0647\u0631",
69
+ "\u0622\u0628\u0627\u0646",
70
+ "\u0622\u0630\u0631",
71
+ "\u062F\u06CC",
72
+ "\u0628\u0647\u0645\u0646",
73
+ "\u0627\u0633\u0641\u0646\u062F"
74
+ ];
75
+ var JALALI_WEEKDAY_LABELS_FA = [
76
+ "\u0634",
77
+ "\u06CC",
78
+ "\u062F",
79
+ "\u0633",
80
+ "\u0686",
81
+ "\u067E",
82
+ "\u062C"
83
+ ];
84
+ function jalaliMonthName(jm) {
85
+ return MONTH_NAMES_FA[jm - 1] ?? String(jm);
86
+ }
87
+ function toJalaliYmd(date) {
88
+ return chunkKRJG3KMP_cjs.gregorianDateToJalali(utcNoon(date));
89
+ }
90
+ function sameJalaliDay(a, b) {
91
+ const x = toJalaliYmd(a);
92
+ const y = toJalaliYmd(b);
93
+ return x.jy === y.jy && x.jm === y.jm && x.jd === y.jd;
94
+ }
95
+ function compareJalaliDay(a, b) {
96
+ return utcNoon(a).getTime() - utcNoon(b).getTime();
97
+ }
98
+ function addJalaliMonths(jy, jm, delta) {
99
+ const idx = jy * 12 + (jm - 1) + delta;
100
+ return {
101
+ jy: Math.floor(idx / 12),
102
+ jm: idx % 12 + 1
103
+ };
104
+ }
105
+ function buildJalaliMonthGrid(jy, jm) {
106
+ const first = chunkKRJG3KMP_cjs.jalaliToGregorianDate(jy, jm, 1);
107
+ const jsDow = first.getUTCDay();
108
+ const jalaliWeekStart = (jsDow + 1) % 7;
109
+ const daysInMonth = chunkKRJG3KMP_cjs.jalaliMonthLength(jy, jm);
110
+ const cells = [];
111
+ for (let i = 0; i < 42; i += 1) {
112
+ const offset = i - jalaliWeekStart;
113
+ let cellJy = jy;
114
+ let cellJm = jm;
115
+ let cellJd;
116
+ let inCurrentMonth = true;
117
+ if (offset < 0) {
118
+ const prev = addJalaliMonths(jy, jm, -1);
119
+ cellJy = prev.jy;
120
+ cellJm = prev.jm;
121
+ cellJd = chunkKRJG3KMP_cjs.jalaliMonthLength(cellJy, cellJm) + offset + 1;
122
+ inCurrentMonth = false;
123
+ } else if (offset >= daysInMonth) {
124
+ const next = addJalaliMonths(jy, jm, 1);
125
+ cellJy = next.jy;
126
+ cellJm = next.jm;
127
+ cellJd = offset - daysInMonth + 1;
128
+ inCurrentMonth = false;
129
+ } else {
130
+ cellJd = offset + 1;
131
+ }
132
+ const date = chunkKRJG3KMP_cjs.jalaliToGregorianDate(cellJy, cellJm, cellJd);
133
+ cells.push({
134
+ ymd: { jy: cellJy, jm: cellJm, jd: cellJd },
135
+ date,
136
+ inCurrentMonth,
137
+ weekday: i % 7
138
+ });
139
+ }
140
+ return cells;
141
+ }
142
+ function isDateInRange(date, range) {
143
+ if (!range.start) return false;
144
+ if (!range.end) return sameJalaliDay(date, range.start);
145
+ const t = utcNoon(date).getTime();
146
+ const a = utcNoon(range.start).getTime();
147
+ const b = utcNoon(range.end).getTime();
148
+ return t >= Math.min(a, b) && t <= Math.max(a, b);
149
+ }
150
+ function utcNoon(date) {
151
+ return new Date(
152
+ Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 12)
153
+ );
154
+ }
155
+
156
+ // ui/theme/GridTheme.ts
157
+ function aliasErpTokens(vars) {
158
+ const out = {};
159
+ for (const [key, value] of Object.entries(vars)) {
160
+ if (key.startsWith("--pdg-")) {
161
+ out[`--erp-${key.slice("--pdg-".length)}`] = value;
162
+ }
163
+ }
164
+ return out;
165
+ }
166
+ var GridTheme = class _GridTheme {
167
+ constructor(params, extraCssVars = {}) {
168
+ this.params = params;
169
+ this.extraCssVars = extraCssVars;
170
+ }
171
+ withParams(partial) {
172
+ return new _GridTheme({ ...this.params, ...partial }, this.extraCssVars);
173
+ }
174
+ withExtraCssVars(extra) {
175
+ return new _GridTheme(this.params, { ...this.extraCssVars, ...extra });
176
+ }
177
+ toCssVars() {
178
+ const p = this.params;
179
+ const roles = {
180
+ "--pdg-bg": p.backgroundColor,
181
+ "--pdg-fg": p.foregroundColor,
182
+ "--pdg-accent": p.accentColor,
183
+ "--pdg-header-bg": p.headerBackgroundColor,
184
+ "--pdg-row-stripe": p.rowStripeColor,
185
+ "--pdg-row-selected": p.rowSelectedColor,
186
+ "--pdg-border": p.borderColor,
187
+ "--pdg-danger": p.dangerColor,
188
+ "--pdg-search-match": p.searchMatchColor,
189
+ "--pdg-font": p.fontFamily,
190
+ "--pdg-row-height": `${p.rowHeight}px`,
191
+ "--pdg-font-size": `${p.cellFontSize}px`,
192
+ "--pdg-radius": p.borderRadius
193
+ };
194
+ return {
195
+ ...roles,
196
+ ...aliasErpTokens(roles),
197
+ ...this.extraCssVars,
198
+ ...aliasErpTokens(this.extraCssVars)
199
+ };
200
+ }
201
+ };
202
+ var themeDefault = new GridTheme({
203
+ backgroundColor: "#fff",
204
+ foregroundColor: "#292929",
205
+ accentColor: "#0658b0",
206
+ headerBackgroundColor: "#f4f4f4",
207
+ rowStripeColor: "#ddecfd",
208
+ rowSelectedColor: "#dbeafe",
209
+ borderColor: "#ececec",
210
+ dangerColor: "#dc2626",
211
+ searchMatchColor: "#facc15",
212
+ fontFamily: "IRANSans, Tahoma, sans-serif",
213
+ rowHeight: 40,
214
+ cellFontSize: 12,
215
+ borderRadius: "0.25rem"
216
+ });
217
+ var themeErp = themeDefault;
218
+ var DARK_PALETTE_VARS = {
219
+ "--pdg-main-white": "#171717",
220
+ "--pdg-main-black": "#f4f4f4",
221
+ "--pdg-gray-3": "#262626",
222
+ "--pdg-gray-5": "#404040",
223
+ "--pdg-gray-6": "#525252",
224
+ "--pdg-gray-7": "#a3a3a3",
225
+ "--pdg-gray-8": "#d4d4d4",
226
+ "--pdg-gray-85": "#d4d4d4",
227
+ "--pdg-gray-9": "#e5e5e5",
228
+ "--pdg-gray-10": "#f5f5f5",
229
+ "--pdg-gray-11": "#fafafa",
230
+ "--pdg-black-6": "#f4f4f4",
231
+ "--pdg-blue-6": "#60a5fa",
232
+ "--pdg-blue-11": "#1e3a5f",
233
+ "--pdg-blue-100": "#1e3a8a",
234
+ "--pdg-red-100": "#7f1d1d",
235
+ "--pdg-red-300": "#fca5a5",
236
+ "--pdg-red-600": "#f87171",
237
+ "--pdg-yellow-200": "#854d0e",
238
+ "--pdg-yellow-400": "#eab308",
239
+ "--pdg-zinc-200": "#3f3f46",
240
+ "--pdg-neutral-500": "#a3a3a3",
241
+ "--pdg-gray-100": "#27272a",
242
+ "--pdg-scrollbar": "#525252",
243
+ "--pdg-overlay": "rgba(0, 0, 0, 0.55)"
244
+ };
245
+ var themeDark = themeDefault.withParams({
246
+ backgroundColor: "#171717",
247
+ foregroundColor: "#f4f4f4",
248
+ accentColor: "#60a5fa",
249
+ headerBackgroundColor: "#262626",
250
+ rowStripeColor: "#1e3a5f",
251
+ rowSelectedColor: "#1e3a8a",
252
+ borderColor: "#404040",
253
+ dangerColor: "#f87171",
254
+ searchMatchColor: "#eab308"
255
+ }).withExtraCssVars(DARK_PALETTE_VARS);
256
+ var themeErpDark = themeDark;
257
+
258
+ // ui/theme/resolveActiveTheme.ts
259
+ function themeParamsEqual(a, b) {
260
+ return a.backgroundColor === b.backgroundColor && a.foregroundColor === b.foregroundColor && a.accentColor === b.accentColor && a.headerBackgroundColor === b.headerBackgroundColor && a.rowStripeColor === b.rowStripeColor && a.rowSelectedColor === b.rowSelectedColor && a.borderColor === b.borderColor && a.dangerColor === b.dangerColor && a.searchMatchColor === b.searchMatchColor && a.fontFamily === b.fontFamily && a.rowHeight === b.rowHeight && a.cellFontSize === b.cellFontSize && a.borderRadius === b.borderRadius;
261
+ }
262
+ function isStockLightTheme(theme) {
263
+ return themeParamsEqual(theme.params, themeErp.params);
264
+ }
265
+ function isStockDarkTheme(theme) {
266
+ return themeParamsEqual(theme.params, themeErpDark.params);
267
+ }
268
+ function isStockTheme(theme) {
269
+ return isStockLightTheme(theme) || isStockDarkTheme(theme);
270
+ }
271
+ function resolveActiveTheme(input) {
272
+ const requested = input.requested ?? themeErp;
273
+ const locked = !isStockTheme(requested);
274
+ if (locked) return { theme: requested, locked: true };
275
+ return {
276
+ theme: input.preferDark ? themeErpDark : themeErp,
277
+ locked: false
278
+ };
279
+ }
280
+
281
+ // ui/theme/applyCssVars.ts
282
+ var lastVars = themeErp.toCssVars();
283
+ function rememberThemeVars(vars) {
284
+ lastVars = vars;
285
+ }
286
+ function themeToStyle(theme, extra) {
287
+ return { ...theme.toCssVars(), ...extra };
288
+ }
289
+ function assignThemeVars(el, vars = lastVars) {
290
+ for (const [key, value] of Object.entries(vars)) {
291
+ el.style.setProperty(key, value);
292
+ }
293
+ }
294
+
295
+ // ui/host/messages.ts
296
+ var FA_MESSAGES = chunkCILNIWYW_cjs.getLocalePack("fa");
297
+ var EN_MESSAGES = chunkCILNIWYW_cjs.getLocalePack("en");
298
+ var AR_MESSAGES = chunkCILNIWYW_cjs.getLocalePack("ar");
299
+ function translate(key, locale, overrides) {
300
+ const pack = chunkCILNIWYW_cjs.getLocalePack(locale);
301
+ return overrides?.[key] ?? pack[key] ?? key;
302
+ }
303
+ function formatMessage(template, vars) {
304
+ return template.replace(/\{(\w+)\}/g, (_, name) => {
305
+ const value = vars[name];
306
+ return value == null ? `{${name}}` : String(value);
307
+ });
308
+ }
309
+ function defaultDateAdapter(locale) {
310
+ return locale === "fa" ? chunkKRJG3KMP_cjs.jalaliAdapter : gregorianAdapter;
311
+ }
312
+ var ERPTableHostContext = react.createContext({
313
+ locale: "fa",
314
+ direction: "rtl",
315
+ dateAdapter: chunkKRJG3KMP_cjs.jalaliAdapter,
316
+ theme: themeErp,
317
+ themeToggle: true,
318
+ themeLocked: false
319
+ });
320
+ function ERPTableHostProvider({
321
+ children,
322
+ locale = "fa",
323
+ direction,
324
+ numberingSystem,
325
+ dateAdapter,
326
+ remoteApi,
327
+ messages,
328
+ onToast,
329
+ theme = themeErp,
330
+ themeToggle = true,
331
+ themeLocked = false,
332
+ onToggleTheme,
333
+ components,
334
+ filterComponents,
335
+ columnMenuItems,
336
+ onColumnMenuAction,
337
+ useDependOn
338
+ }) {
339
+ const value = react.useMemo(
340
+ () => ({
341
+ locale,
342
+ direction: chunkCILNIWYW_cjs.resolveDirection(locale, direction),
343
+ numberingSystem,
344
+ dateAdapter: dateAdapter ?? defaultDateAdapter(locale),
345
+ remoteApi,
346
+ messages,
347
+ onToast,
348
+ theme,
349
+ themeToggle,
350
+ themeLocked,
351
+ onToggleTheme,
352
+ components,
353
+ filterComponents,
354
+ columnMenuItems,
355
+ onColumnMenuAction,
356
+ useDependOn
357
+ }),
358
+ [
359
+ locale,
360
+ direction,
361
+ numberingSystem,
362
+ dateAdapter,
363
+ remoteApi,
364
+ messages,
365
+ onToast,
366
+ theme,
367
+ themeToggle,
368
+ themeLocked,
369
+ onToggleTheme,
370
+ components,
371
+ filterComponents,
372
+ columnMenuItems,
373
+ onColumnMenuAction,
374
+ useDependOn
375
+ ]
376
+ );
377
+ react.useEffect(() => {
378
+ rememberThemeVars(theme.toCssVars());
379
+ }, [theme]);
380
+ return /* @__PURE__ */ jsxRuntime.jsx(ERPTableHostContext.Provider, { value, children });
381
+ }
382
+ function useERPTableHost() {
383
+ return react.useContext(ERPTableHostContext);
384
+ }
385
+ function useERPTableTheme() {
386
+ return useERPTableHost().theme ?? themeErp;
387
+ }
388
+ function useThemePortalStyle(extra) {
389
+ const theme = useERPTableTheme();
390
+ return themeToStyle(theme, extra);
391
+ }
392
+ function useTranslations() {
393
+ const { locale, messages } = useERPTableHost();
394
+ return (key, vars) => {
395
+ const raw = translate(key, locale, messages);
396
+ return vars ? formatMessage(raw, vars) : raw;
397
+ };
398
+ }
399
+ function useLocale() {
400
+ return useERPTableHost().locale;
401
+ }
402
+ function useNumberingSystem() {
403
+ return useERPTableHost().numberingSystem;
404
+ }
405
+ function useDateAdapter() {
406
+ return useERPTableHost().dateAdapter ?? chunkKRJG3KMP_cjs.jalaliAdapter;
407
+ }
408
+ function useDirection() {
409
+ return useERPTableHost().direction;
410
+ }
411
+
412
+ // ui/host/dependOn.ts
413
+ var toList = (dependOn) => !dependOn ? [] : Array.isArray(dependOn) ? dependOn : [dependOn];
414
+ var getDependFieldName = (item) => typeof item === "string" ? item : item.fieldName;
415
+ var getStaticDependValue = (item) => typeof item === "object" ? item.value : void 0;
416
+ var hasDependValue = (dependOn, resolve = getStaticDependValue) => toList(dependOn).every((item) => resolve(item) != null);
417
+ var buildDependencyBody = (dependOn, resolve = getStaticDependValue) => Object.fromEntries(
418
+ toList(dependOn).map((item) => [getDependFieldName(item), resolve(item)])
419
+ );
420
+ var useStaticDependOn = (dependOn, options) => {
421
+ const unwrap = (value) => options?.unwrapObjectValue && value !== null && typeof value === "object" && !Array.isArray(value) && "value" in value ? value.value : value;
422
+ const resolve = (item) => unwrap(getStaticDependValue(item));
423
+ return {
424
+ isReady: hasDependValue(dependOn, resolve),
425
+ dependencyBody: buildDependencyBody(dependOn, resolve),
426
+ dependencyKey: JSON.stringify(dependOn ?? null)
427
+ };
428
+ };
429
+ var useHostDependOn = (dependOn, options) => {
430
+ const host = useERPTableHost();
431
+ const hook = host.useDependOn ?? useStaticDependOn;
432
+ return hook(dependOn, options);
433
+ };
434
+
435
+ // ui/host/bindGridHostEvents.ts
436
+ function selectedKeysEqual(a, b) {
437
+ const left = Object.keys(a ?? {});
438
+ const right = Object.keys(b ?? {});
439
+ if (left.length !== right.length) return false;
440
+ return left.every((key) => {
441
+ const id = Number(key);
442
+ return Boolean(a?.[id]) === Boolean(b?.[id]);
443
+ });
444
+ }
445
+ function activeCellEqual(a, b) {
446
+ return a?.rowId === b?.rowId && a?.columnId === b?.columnId;
447
+ }
448
+ function selectedRowIds(selected) {
449
+ return Object.keys(selected ?? {}).map(Number).filter((id) => Number.isFinite(id) && Boolean(selected?.[id]));
450
+ }
451
+ function bindGridHostEvents(input) {
452
+ const { eventStore, controller, tableKey, handlers } = input;
453
+ const unsubCatalog = chunkJ7CPPFXT_cjs.subscribeCatalogHostEvents(
454
+ eventStore,
455
+ {
456
+ tableId: tableKey,
457
+ getRowData: (rowId) => controller.getAllRows()?.find((row) => row.id.value === rowId)?.data,
458
+ getAllRowData: () => (controller.getAllRows() ?? []).map((row) => row.data).filter((data) => data !== void 0)
459
+ },
460
+ handlers
461
+ );
462
+ const unsubSelection = controller.subscribeSelected(
463
+ () => controller.getSelectedRows(),
464
+ (selected) => {
465
+ const ids = selectedRowIds(selected);
466
+ const rows = controller.getAllRows() ?? [];
467
+ const selectedRows = ids.map((id) => rows.find((row) => row.id.value === id)?.data).filter((data) => data !== void 0);
468
+ handlers.onSelectionChanged?.({
469
+ selectedRowIds: ids,
470
+ selectedRows
471
+ });
472
+ },
473
+ selectedKeysEqual
474
+ );
475
+ const unsubFocus = controller.subscribeSelected(
476
+ () => controller.getActiveCell(),
477
+ (cell) => {
478
+ handlers.onCellFocused?.({
479
+ rowId: cell?.rowId ?? null,
480
+ colId: cell?.columnId ?? null
481
+ });
482
+ },
483
+ activeCellEqual
484
+ );
485
+ return () => {
486
+ unsubCatalog();
487
+ unsubSelection();
488
+ unsubFocus();
489
+ };
490
+ }
491
+ var QUERIES = {
492
+ XLUP: "(min-width: 1024px)",
493
+ XXLUP: "(min-width: 1366px)"
494
+ };
495
+ function useMediaQuery(query) {
496
+ const media = QUERIES[query] ?? query;
497
+ const [match, setMatch] = react.useState(() => {
498
+ if (typeof window === "undefined") return null;
499
+ return window.matchMedia(media).matches;
500
+ });
501
+ react.useEffect(() => {
502
+ const mql = window.matchMedia(media);
503
+ const onChange = () => setMatch(mql.matches);
504
+ onChange();
505
+ mql.addEventListener("change", onChange);
506
+ return () => mql.removeEventListener("change", onChange);
507
+ }, [media]);
508
+ return { match };
509
+ }
510
+ function useRemoteQuery(args) {
511
+ const { remoteApi } = useERPTableHost();
512
+ const [data, setData] = react.useState(null);
513
+ const [isFetching, setIsFetching] = react.useState(false);
514
+ const refetch = react.useCallback(async () => {
515
+ if (!args.url || args.skip || !remoteApi) {
516
+ setData(null);
517
+ return;
518
+ }
519
+ setIsFetching(true);
520
+ try {
521
+ const response = await remoteApi.request({
522
+ endpoint: args.url,
523
+ params: args.body,
524
+ method: "POST"
525
+ });
526
+ setData(response ?? null);
527
+ } finally {
528
+ setIsFetching(false);
529
+ }
530
+ }, [args.url, args.skip, args.noCache, JSON.stringify(args.body ?? {}), remoteApi]);
531
+ react.useEffect(() => {
532
+ void refetch();
533
+ }, [refetch]);
534
+ return { data, isFetching, refetch };
535
+ }
536
+ function useLazyRemote() {
537
+ const { remoteApi } = useERPTableHost();
538
+ const [data, setData] = react.useState(null);
539
+ const [isFetching, setIsFetching] = react.useState(false);
540
+ const trigger = react.useCallback(
541
+ async (args) => {
542
+ if (!args.url || !remoteApi) {
543
+ setData(null);
544
+ return;
545
+ }
546
+ setIsFetching(true);
547
+ try {
548
+ const response = await remoteApi.request({ endpoint: args.url, params: args.body, method: "POST" });
549
+ setData(response ?? null);
550
+ } finally {
551
+ setIsFetching(false);
552
+ }
553
+ },
554
+ [remoteApi]
555
+ );
556
+ return [trigger, { data, isFetching }];
557
+ }
558
+
559
+ // ui/host/toast.ts
560
+ function showSuccessToast(message, _detail) {
561
+ const text = String(message ?? "");
562
+ emitToast("success", text);
563
+ }
564
+ function showErrorToast(message, _detail) {
565
+ const text = String(message ?? "");
566
+ emitToast("error", text);
567
+ }
568
+ function emitToast(kind, message) {
569
+ if (typeof document === "undefined") return;
570
+ const existing = document.querySelector(".erp-table-toast");
571
+ existing?.remove();
572
+ const el = document.createElement("div");
573
+ el.className = `erp-table-toast is-${kind}`;
574
+ el.textContent = message;
575
+ assignThemeVars(el);
576
+ document.body.appendChild(el);
577
+ window.setTimeout(() => el.remove(), 2800);
578
+ }
579
+ function useHostToast() {
580
+ const host = useERPTableHost();
581
+ return {
582
+ success: (message, detail) => {
583
+ if (host.onToast) host.onToast("success", message, detail);
584
+ else showSuccessToast(message);
585
+ },
586
+ error: (message, detail) => {
587
+ if (host.onToast) host.onToast("error", message, detail);
588
+ else showErrorToast(message);
589
+ }
590
+ };
591
+ }
592
+ function useGridHostEvents(input) {
593
+ const handlersRef = react.useRef(input);
594
+ handlersRef.current = input;
595
+ react.useEffect(() => {
596
+ if (!input.ready || !input.controller || !input.eventStore) return;
597
+ return bindGridHostEvents({
598
+ eventStore: input.eventStore,
599
+ controller: input.controller,
600
+ tableKey: input.tableKey,
601
+ handlers: {
602
+ onCellValueChanged: (event) => handlersRef.current.onCellValueChanged?.(event),
603
+ onRowValueChanged: (event) => handlersRef.current.onRowValueChanged?.(event),
604
+ onRowDataUpdated: (event) => handlersRef.current.onRowDataUpdated?.(event),
605
+ onSelectionChanged: (event) => handlersRef.current.onSelectionChanged?.(event),
606
+ onCellFocused: (event) => handlersRef.current.onCellFocused?.(event)
607
+ }
608
+ });
609
+ }, [input.ready, input.controller, input.eventStore, input.tableKey]);
610
+ }
611
+
612
+ exports.AR_MESSAGES = AR_MESSAGES;
613
+ exports.EN_MESSAGES = EN_MESSAGES;
614
+ exports.ERPTableHostProvider = ERPTableHostProvider;
615
+ exports.FA_MESSAGES = FA_MESSAGES;
616
+ exports.GridTheme = GridTheme;
617
+ exports.JALALI_WEEKDAY_LABELS_FA = JALALI_WEEKDAY_LABELS_FA;
618
+ exports.addJalaliMonths = addJalaliMonths;
619
+ exports.bindGridHostEvents = bindGridHostEvents;
620
+ exports.buildDependencyBody = buildDependencyBody;
621
+ exports.buildJalaliMonthGrid = buildJalaliMonthGrid;
622
+ exports.compareJalaliDay = compareJalaliDay;
623
+ exports.gregorianAdapter = gregorianAdapter;
624
+ exports.hasDependValue = hasDependValue;
625
+ exports.isDateInRange = isDateInRange;
626
+ exports.isStockDarkTheme = isStockDarkTheme;
627
+ exports.jalaliMonthName = jalaliMonthName;
628
+ exports.resolveActiveTheme = resolveActiveTheme;
629
+ exports.sameJalaliDay = sameJalaliDay;
630
+ exports.themeDark = themeDark;
631
+ exports.themeDefault = themeDefault;
632
+ exports.themeErp = themeErp;
633
+ exports.themeErpDark = themeErpDark;
634
+ exports.themeToStyle = themeToStyle;
635
+ exports.toJalaliYmd = toJalaliYmd;
636
+ exports.translate = translate;
637
+ exports.useDateAdapter = useDateAdapter;
638
+ exports.useDirection = useDirection;
639
+ exports.useERPTableHost = useERPTableHost;
640
+ exports.useERPTableTheme = useERPTableTheme;
641
+ exports.useGridHostEvents = useGridHostEvents;
642
+ exports.useHostDependOn = useHostDependOn;
643
+ exports.useHostToast = useHostToast;
644
+ exports.useLazyRemote = useLazyRemote;
645
+ exports.useLocale = useLocale;
646
+ exports.useMediaQuery = useMediaQuery;
647
+ exports.useNumberingSystem = useNumberingSystem;
648
+ exports.useRemoteQuery = useRemoteQuery;
649
+ exports.useStaticDependOn = useStaticDependOn;
650
+ exports.useThemePortalStyle = useThemePortalStyle;
651
+ exports.useTranslations = useTranslations;
652
+ //# sourceMappingURL=chunk-KUBVDIF7.cjs.map
653
+ //# sourceMappingURL=chunk-KUBVDIF7.cjs.map