persian-data-grid 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/OFL.txt +93 -0
  2. package/README.md +179 -22
  3. package/dist/ERPTableGroupRow-E5Q6FYDS.js +125 -0
  4. package/dist/ERPTableGroupRow-E5Q6FYDS.js.map +1 -0
  5. package/dist/ERPTableGroupRow-F2IPDYL5.cjs +131 -0
  6. package/dist/ERPTableGroupRow-F2IPDYL5.cjs.map +1 -0
  7. package/dist/GridPlugin-Bewn0X51.d.ts +57 -0
  8. package/dist/GridPlugin-DewWufGZ.d.cts +57 -0
  9. package/dist/GridPresenceService-GEH6535Q.js +3 -0
  10. package/dist/GridPresenceService-GEH6535Q.js.map +1 -0
  11. package/dist/GridPresenceService-RDN5FXHQ.cjs +12 -0
  12. package/dist/GridPresenceService-RDN5FXHQ.cjs.map +1 -0
  13. package/dist/GridSession-CeIfVFck.d.ts +2625 -0
  14. package/dist/GridSession-CmQn2RnL.d.cts +2625 -0
  15. package/dist/GridSyncService-3JQLEY65.cjs +12 -0
  16. package/dist/GridSyncService-3JQLEY65.cjs.map +1 -0
  17. package/dist/GridSyncService-GECXGEKL.js +3 -0
  18. package/dist/GridSyncService-GECXGEKL.js.map +1 -0
  19. package/dist/PdfRenderer-B9FJaCo_.d.cts +22 -0
  20. package/dist/PdfRenderer-bN7ca_Aj.d.ts +22 -0
  21. package/dist/RemoteApi-CCQxiSf1.d.cts +28 -0
  22. package/dist/RemoteApi-CCQxiSf1.d.ts +28 -0
  23. package/dist/SelectImpl-NM4O4IGW.js +447 -0
  24. package/dist/SelectImpl-NM4O4IGW.js.map +1 -0
  25. package/dist/SelectImpl-W2EI4T7O.cjs +453 -0
  26. package/dist/SelectImpl-W2EI4T7O.cjs.map +1 -0
  27. package/dist/UITableController-C71LXBiX.d.ts +678 -0
  28. package/dist/UITableController-CIwnHIw8.d.cts +678 -0
  29. package/dist/VazirmatnPdfRenderer-CpCqA-Wh.d.cts +96 -0
  30. package/dist/VazirmatnPdfRenderer-D46smncn.d.ts +96 -0
  31. package/dist/adapters/arian-erp.cjs +89 -0
  32. package/dist/adapters/arian-erp.cjs.map +1 -0
  33. package/dist/adapters/arian-erp.d.cts +62 -0
  34. package/dist/adapters/arian-erp.d.ts +62 -0
  35. package/dist/adapters/arian-erp.js +79 -0
  36. package/dist/adapters/arian-erp.js.map +1 -0
  37. package/dist/appendAtEnd-RHIQRG2W.cjs +35 -0
  38. package/dist/appendAtEnd-RHIQRG2W.cjs.map +1 -0
  39. package/dist/appendAtEnd-TJEABLGD.js +33 -0
  40. package/dist/appendAtEnd-TJEABLGD.js.map +1 -0
  41. package/dist/applyImportedRows-C2fWYoPy.d.cts +135 -0
  42. package/dist/applyImportedRows-Cqh_N_0k.d.ts +135 -0
  43. package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs +86 -0
  44. package/dist/applyRowVisibilityHandler-Q64ZFC7A.cjs.map +1 -0
  45. package/dist/applyRowVisibilityHandler-ZLZXQEGY.js +84 -0
  46. package/dist/applyRowVisibilityHandler-ZLZXQEGY.js.map +1 -0
  47. package/dist/broadcastChannelTransport-FHUMV76O.cjs +12 -0
  48. package/dist/broadcastChannelTransport-FHUMV76O.cjs.map +1 -0
  49. package/dist/broadcastChannelTransport-MIH53VNZ.js +3 -0
  50. package/dist/broadcastChannelTransport-MIH53VNZ.js.map +1 -0
  51. package/dist/callbackRemoteApi-BYLjmSI6.d.ts +51 -0
  52. package/dist/callbackRemoteApi-Cv26MmSD.d.cts +51 -0
  53. package/dist/cellRenderContext-BaNh4qn_.d.ts +42 -0
  54. package/dist/cellRenderContext-DvngkptV.d.cts +42 -0
  55. package/dist/chunk-27ALJSZP.js +12187 -0
  56. package/dist/chunk-27ALJSZP.js.map +1 -0
  57. package/dist/chunk-3HP3HQCW.cjs +688 -0
  58. package/dist/chunk-3HP3HQCW.cjs.map +1 -0
  59. package/dist/chunk-3Y3KKGEC.js +3 -0
  60. package/dist/chunk-3Y3KKGEC.js.map +1 -0
  61. package/dist/chunk-52LFOPXD.cjs +588 -0
  62. package/dist/chunk-52LFOPXD.cjs.map +1 -0
  63. package/dist/chunk-5ALMNLUR.cjs +1408 -0
  64. package/dist/chunk-5ALMNLUR.cjs.map +1 -0
  65. package/dist/chunk-5HKVMPBD.js +937 -0
  66. package/dist/chunk-5HKVMPBD.js.map +1 -0
  67. package/dist/chunk-72IVAOTK.cjs +38 -0
  68. package/dist/chunk-72IVAOTK.cjs.map +1 -0
  69. package/dist/chunk-77UXAJII.js +112 -0
  70. package/dist/chunk-77UXAJII.js.map +1 -0
  71. package/dist/chunk-7GWV5HGO.js +36 -0
  72. package/dist/chunk-7GWV5HGO.js.map +1 -0
  73. package/dist/chunk-7T6AWRPU.js +581 -0
  74. package/dist/chunk-7T6AWRPU.js.map +1 -0
  75. package/dist/chunk-AU3RDJYQ.js +243 -0
  76. package/dist/chunk-AU3RDJYQ.js.map +1 -0
  77. package/dist/chunk-CILNIWYW.cjs +100 -0
  78. package/dist/chunk-CILNIWYW.cjs.map +1 -0
  79. package/dist/chunk-CMQ4VLCW.cjs +840 -0
  80. package/dist/chunk-CMQ4VLCW.cjs.map +1 -0
  81. package/dist/chunk-DFFP7SJ6.cjs +257 -0
  82. package/dist/chunk-DFFP7SJ6.cjs.map +1 -0
  83. package/dist/chunk-E2J533UH.cjs +53 -0
  84. package/dist/chunk-E2J533UH.cjs.map +1 -0
  85. package/dist/chunk-EBV6HGZB.cjs +33 -0
  86. package/dist/chunk-EBV6HGZB.cjs.map +1 -0
  87. package/dist/chunk-F4PYOYHR.js +112 -0
  88. package/dist/chunk-F4PYOYHR.js.map +1 -0
  89. package/dist/chunk-F6EMC75A.cjs +34 -0
  90. package/dist/chunk-F6EMC75A.cjs.map +1 -0
  91. package/dist/chunk-GKE33FOJ.js +32 -0
  92. package/dist/chunk-GKE33FOJ.js.map +1 -0
  93. package/dist/chunk-GQEDLUMB.js +168 -0
  94. package/dist/chunk-GQEDLUMB.js.map +1 -0
  95. package/dist/chunk-HLOHWFOA.js +645 -0
  96. package/dist/chunk-HLOHWFOA.js.map +1 -0
  97. package/dist/chunk-IMPCRWYP.cjs +251 -0
  98. package/dist/chunk-IMPCRWYP.cjs.map +1 -0
  99. package/dist/chunk-IPPIXOVQ.js +317 -0
  100. package/dist/chunk-IPPIXOVQ.js.map +1 -0
  101. package/dist/chunk-J4XJ4UBC.js +1404 -0
  102. package/dist/chunk-J4XJ4UBC.js.map +1 -0
  103. package/dist/chunk-J7CPPFXT.cjs +89 -0
  104. package/dist/chunk-J7CPPFXT.cjs.map +1 -0
  105. package/dist/chunk-JOICD47Q.cjs +41 -0
  106. package/dist/chunk-JOICD47Q.cjs.map +1 -0
  107. package/dist/chunk-KCNTKYUY.js +206 -0
  108. package/dist/chunk-KCNTKYUY.js.map +1 -0
  109. package/dist/chunk-KHMG6EI2.js +13 -0
  110. package/dist/chunk-KHMG6EI2.js.map +1 -0
  111. package/dist/chunk-KMRURD5J.cjs +15 -0
  112. package/dist/chunk-KMRURD5J.cjs.map +1 -0
  113. package/dist/chunk-KRJG3KMP.cjs +174 -0
  114. package/dist/chunk-KRJG3KMP.cjs.map +1 -0
  115. package/dist/chunk-LY27YAXE.cjs +208 -0
  116. package/dist/chunk-LY27YAXE.cjs.map +1 -0
  117. package/dist/chunk-MT3KLB2Q.cjs +944 -0
  118. package/dist/chunk-MT3KLB2Q.cjs.map +1 -0
  119. package/dist/chunk-MUQQKPWR.js +84 -0
  120. package/dist/chunk-MUQQKPWR.js.map +1 -0
  121. package/dist/chunk-N7SJTINL.cjs +4 -0
  122. package/dist/chunk-N7SJTINL.cjs.map +1 -0
  123. package/dist/chunk-NB5GCGHL.js +833 -0
  124. package/dist/chunk-NB5GCGHL.js.map +1 -0
  125. package/dist/chunk-NQUVAJQA.js +298 -0
  126. package/dist/chunk-NQUVAJQA.js.map +1 -0
  127. package/dist/chunk-NTV2UUAJ.cjs +149 -0
  128. package/dist/chunk-NTV2UUAJ.cjs.map +1 -0
  129. package/dist/chunk-PJQWHF6T.js +31 -0
  130. package/dist/chunk-PJQWHF6T.js.map +1 -0
  131. package/dist/chunk-PQY54EL5.js +248 -0
  132. package/dist/chunk-PQY54EL5.js.map +1 -0
  133. package/dist/chunk-Q7TBBUTX.cjs +110 -0
  134. package/dist/chunk-Q7TBBUTX.cjs.map +1 -0
  135. package/dist/chunk-QZN7R2WP.cjs +114 -0
  136. package/dist/chunk-QZN7R2WP.cjs.map +1 -0
  137. package/dist/chunk-RKVSJU46.js +35 -0
  138. package/dist/chunk-RKVSJU46.js.map +1 -0
  139. package/dist/chunk-SVO62ZV2.js +50 -0
  140. package/dist/chunk-SVO62ZV2.js.map +1 -0
  141. package/dist/chunk-SX4VQXAA.cjs +114 -0
  142. package/dist/chunk-SX4VQXAA.cjs.map +1 -0
  143. package/dist/chunk-SZ7BLAY3.js +92 -0
  144. package/dist/chunk-SZ7BLAY3.js.map +1 -0
  145. package/dist/chunk-TN4MG6FY.js +112 -0
  146. package/dist/chunk-TN4MG6FY.js.map +1 -0
  147. package/dist/chunk-UC7PHDM6.cjs +331 -0
  148. package/dist/chunk-UC7PHDM6.cjs.map +1 -0
  149. package/dist/chunk-UXVLYUUW.js +108 -0
  150. package/dist/chunk-UXVLYUUW.js.map +1 -0
  151. package/dist/chunk-VBAZ77Q4.js +932 -0
  152. package/dist/chunk-VBAZ77Q4.js.map +1 -0
  153. package/dist/chunk-VSAFQTW5.cjs +319 -0
  154. package/dist/chunk-VSAFQTW5.cjs.map +1 -0
  155. package/dist/chunk-VYJQ2HTA.cjs +936 -0
  156. package/dist/chunk-VYJQ2HTA.cjs.map +1 -0
  157. package/dist/chunk-W5256BJ4.js +56 -0
  158. package/dist/chunk-W5256BJ4.js.map +1 -0
  159. package/dist/chunk-WTHTVKVI.cjs +12299 -0
  160. package/dist/chunk-WTHTVKVI.cjs.map +1 -0
  161. package/dist/chunk-WUMOSOEK.cjs +62 -0
  162. package/dist/chunk-WUMOSOEK.cjs.map +1 -0
  163. package/dist/chunk-XLRE2J25.js +140 -0
  164. package/dist/chunk-XLRE2J25.js.map +1 -0
  165. package/dist/chunk-Z4QPZ3Z3.cjs +114 -0
  166. package/dist/chunk-Z4QPZ3Z3.cjs.map +1 -0
  167. package/dist/createEngineGridQuery-BBkud5oE.d.ts +939 -0
  168. package/dist/createEngineGridQuery-D-fgO_jg.d.cts +939 -0
  169. package/dist/date-picker-jalali.cjs +263 -0
  170. package/dist/date-picker-jalali.cjs.map +1 -0
  171. package/dist/date-picker-jalali.d.cts +62 -0
  172. package/dist/date-picker-jalali.d.ts +62 -0
  173. package/dist/date-picker-jalali.js +256 -0
  174. package/dist/date-picker-jalali.js.map +1 -0
  175. package/dist/finance.cjs +205 -0
  176. package/dist/finance.cjs.map +1 -0
  177. package/dist/finance.d.cts +90 -0
  178. package/dist/finance.d.ts +90 -0
  179. package/dist/finance.js +157 -0
  180. package/dist/finance.js.map +1 -0
  181. package/dist/foldedColumn-IHDT4ARZ.cjs +66 -0
  182. package/dist/foldedColumn-IHDT4ARZ.cjs.map +1 -0
  183. package/dist/foldedColumn-TFURUKFG.js +64 -0
  184. package/dist/foldedColumn-TFURUKFG.js.map +1 -0
  185. package/dist/headless.cjs +729 -0
  186. package/dist/headless.cjs.map +1 -0
  187. package/dist/headless.d.cts +508 -0
  188. package/dist/headless.d.ts +508 -0
  189. package/dist/headless.js +226 -0
  190. package/dist/headless.js.map +1 -0
  191. package/dist/index-DN8M8Jkq.d.cts +14 -0
  192. package/dist/index-DmzL-F_o.d.ts +14 -0
  193. package/dist/index.cjs +8060 -11409
  194. package/dist/index.cjs.map +1 -1
  195. package/dist/index.d.cts +457 -2305
  196. package/dist/index.d.ts +457 -2305
  197. package/dist/index.js +7302 -11084
  198. package/dist/index.js.map +1 -1
  199. package/dist/locales/ar.cjs +12 -0
  200. package/dist/locales/ar.cjs.map +1 -0
  201. package/dist/locales/ar.d.cts +6 -0
  202. package/dist/locales/ar.d.ts +6 -0
  203. package/dist/locales/ar.js +3 -0
  204. package/dist/locales/ar.js.map +1 -0
  205. package/dist/locales/en.cjs +12 -0
  206. package/dist/locales/en.cjs.map +1 -0
  207. package/dist/locales/en.d.cts +6 -0
  208. package/dist/locales/en.d.ts +6 -0
  209. package/dist/locales/en.js +3 -0
  210. package/dist/locales/en.js.map +1 -0
  211. package/dist/locales/fa.cjs +12 -0
  212. package/dist/locales/fa.cjs.map +1 -0
  213. package/dist/locales/fa.d.cts +6 -0
  214. package/dist/locales/fa.d.ts +6 -0
  215. package/dist/locales/fa.js +3 -0
  216. package/dist/locales/fa.js.map +1 -0
  217. package/dist/locales/index.cjs +51 -0
  218. package/dist/locales/index.cjs.map +1 -0
  219. package/dist/locales/index.d.cts +5 -0
  220. package/dist/locales/index.d.ts +5 -0
  221. package/dist/locales/index.js +6 -0
  222. package/dist/locales/index.js.map +1 -0
  223. package/dist/memoryRecords-AWDKUJ2F.cjs +50 -0
  224. package/dist/memoryRecords-AWDKUJ2F.cjs.map +1 -0
  225. package/dist/memoryRecords-OJTGXLRH.js +47 -0
  226. package/dist/memoryRecords-OJTGXLRH.js.map +1 -0
  227. package/dist/pagedFooterTotals-DXCGDO6F.cjs +27 -0
  228. package/dist/pagedFooterTotals-DXCGDO6F.cjs.map +1 -0
  229. package/dist/pagedFooterTotals-ORWKUNE7.js +25 -0
  230. package/dist/pagedFooterTotals-ORWKUNE7.js.map +1 -0
  231. package/dist/pagedKit-MFGAJFSK.cjs +134 -0
  232. package/dist/pagedKit-MFGAJFSK.cjs.map +1 -0
  233. package/dist/pagedKit-WYWY4LRV.js +127 -0
  234. package/dist/pagedKit-WYWY4LRV.js.map +1 -0
  235. package/dist/pagedSearch-HCPJW7VM.js +38 -0
  236. package/dist/pagedSearch-HCPJW7VM.js.map +1 -0
  237. package/dist/pagedSearch-U3WCG4GN.cjs +42 -0
  238. package/dist/pagedSearch-U3WCG4GN.cjs.map +1 -0
  239. package/dist/plugins/csv.cjs +124 -0
  240. package/dist/plugins/csv.cjs.map +1 -0
  241. package/dist/plugins/csv.d.cts +44 -0
  242. package/dist/plugins/csv.d.ts +44 -0
  243. package/dist/plugins/csv.js +120 -0
  244. package/dist/plugins/csv.js.map +1 -0
  245. package/dist/plugins/excel.cjs +52 -0
  246. package/dist/plugins/excel.cjs.map +1 -0
  247. package/dist/plugins/excel.d.cts +14 -0
  248. package/dist/plugins/excel.d.ts +14 -0
  249. package/dist/plugins/excel.js +7 -0
  250. package/dist/plugins/excel.js.map +1 -0
  251. package/dist/plugins/pdf/fonts/vazirmatn.cjs +50 -0
  252. package/dist/plugins/pdf/fonts/vazirmatn.cjs.map +1 -0
  253. package/dist/plugins/pdf/fonts/vazirmatn.d.cts +24 -0
  254. package/dist/plugins/pdf/fonts/vazirmatn.d.ts +24 -0
  255. package/dist/plugins/pdf/fonts/vazirmatn.js +39 -0
  256. package/dist/plugins/pdf/fonts/vazirmatn.js.map +1 -0
  257. package/dist/plugins/pdf.cjs +24 -0
  258. package/dist/plugins/pdf.cjs.map +1 -0
  259. package/dist/plugins/pdf.d.cts +21 -0
  260. package/dist/plugins/pdf.d.ts +21 -0
  261. package/dist/plugins/pdf.js +7 -0
  262. package/dist/plugins/pdf.js.map +1 -0
  263. package/dist/presence.cjs +56 -0
  264. package/dist/presence.cjs.map +1 -0
  265. package/dist/presence.d.cts +17 -0
  266. package/dist/presence.d.ts +17 -0
  267. package/dist/presence.js +54 -0
  268. package/dist/presence.js.map +1 -0
  269. package/dist/rebuildRowVisibility-66EAZ356.cjs +21 -0
  270. package/dist/rebuildRowVisibility-66EAZ356.cjs.map +1 -0
  271. package/dist/rebuildRowVisibility-6TYM5BP2.js +19 -0
  272. package/dist/rebuildRowVisibility-6TYM5BP2.js.map +1 -0
  273. package/dist/styles.css +1440 -0
  274. package/dist/sync.cjs +148 -0
  275. package/dist/sync.cjs.map +1 -0
  276. package/dist/sync.d.cts +17 -0
  277. package/dist/sync.d.ts +17 -0
  278. package/dist/sync.js +146 -0
  279. package/dist/sync.js.map +1 -0
  280. package/dist/types-D__47BKv.d.cts +23 -0
  281. package/dist/types-D__47BKv.d.ts +23 -0
  282. package/package.json +185 -29
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkZ4QPZ3Z3_cjs = require('../chunk-Z4QPZ3Z3.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "arMessages", {
8
+ enumerable: true,
9
+ get: function () { return chunkZ4QPZ3Z3_cjs.arMessages; }
10
+ });
11
+ //# sourceMappingURL=ar.cjs.map
12
+ //# sourceMappingURL=ar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ar.cjs"}
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.cjs';
2
+
3
+ /** Arabic (ar) message pack (PR-127). */
4
+ declare const arMessages: ERPTableMessages;
5
+
6
+ export { arMessages };
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.js';
2
+
3
+ /** Arabic (ar) message pack (PR-127). */
4
+ declare const arMessages: ERPTableMessages;
5
+
6
+ export { arMessages };
@@ -0,0 +1,3 @@
1
+ export { arMessages } from '../chunk-TN4MG6FY.js';
2
+ //# sourceMappingURL=ar.js.map
3
+ //# sourceMappingURL=ar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ar.js"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkQZN7R2WP_cjs = require('../chunk-QZN7R2WP.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "enMessages", {
8
+ enumerable: true,
9
+ get: function () { return chunkQZN7R2WP_cjs.enMessages; }
10
+ });
11
+ //# sourceMappingURL=en.cjs.map
12
+ //# sourceMappingURL=en.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"en.cjs"}
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.cjs';
2
+
3
+ /** English (en) message pack (PR-127). */
4
+ declare const enMessages: ERPTableMessages;
5
+
6
+ export { enMessages };
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.js';
2
+
3
+ /** English (en) message pack (PR-127). */
4
+ declare const enMessages: ERPTableMessages;
5
+
6
+ export { enMessages };
@@ -0,0 +1,3 @@
1
+ export { enMessages } from '../chunk-77UXAJII.js';
2
+ //# sourceMappingURL=en.js.map
3
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"en.js"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkSX4VQXAA_cjs = require('../chunk-SX4VQXAA.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "faMessages", {
8
+ enumerable: true,
9
+ get: function () { return chunkSX4VQXAA_cjs.faMessages; }
10
+ });
11
+ //# sourceMappingURL=fa.cjs.map
12
+ //# sourceMappingURL=fa.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"fa.cjs"}
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.cjs';
2
+
3
+ /** Persian (fa) message pack — source of truth for keys (PR-127). */
4
+ declare const faMessages: ERPTableMessages;
5
+
6
+ export { faMessages };
@@ -0,0 +1,6 @@
1
+ import { a as ERPTableMessages } from '../types-D__47BKv.js';
2
+
3
+ /** Persian (fa) message pack — source of truth for keys (PR-127). */
4
+ declare const faMessages: ERPTableMessages;
5
+
6
+ export { faMessages };
@@ -0,0 +1,3 @@
1
+ export { faMessages } from '../chunk-F4PYOYHR.js';
2
+ //# sourceMappingURL=fa.js.map
3
+ //# sourceMappingURL=fa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"fa.js"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var chunkCILNIWYW_cjs = require('../chunk-CILNIWYW.cjs');
4
+ var chunkSX4VQXAA_cjs = require('../chunk-SX4VQXAA.cjs');
5
+ var chunkQZN7R2WP_cjs = require('../chunk-QZN7R2WP.cjs');
6
+ var chunkZ4QPZ3Z3_cjs = require('../chunk-Z4QPZ3Z3.cjs');
7
+
8
+
9
+
10
+ Object.defineProperty(exports, "LOCALE_META", {
11
+ enumerable: true,
12
+ get: function () { return chunkCILNIWYW_cjs.LOCALE_META; }
13
+ });
14
+ Object.defineProperty(exports, "LOCALE_PACKS", {
15
+ enumerable: true,
16
+ get: function () { return chunkCILNIWYW_cjs.LOCALE_PACKS; }
17
+ });
18
+ Object.defineProperty(exports, "formatLocaleDate", {
19
+ enumerable: true,
20
+ get: function () { return chunkCILNIWYW_cjs.formatLocaleDate; }
21
+ });
22
+ Object.defineProperty(exports, "formatLocaleNumber", {
23
+ enumerable: true,
24
+ get: function () { return chunkCILNIWYW_cjs.formatLocaleNumber; }
25
+ });
26
+ Object.defineProperty(exports, "getLocalePack", {
27
+ enumerable: true,
28
+ get: function () { return chunkCILNIWYW_cjs.getLocalePack; }
29
+ });
30
+ Object.defineProperty(exports, "resolveDirection", {
31
+ enumerable: true,
32
+ get: function () { return chunkCILNIWYW_cjs.resolveDirection; }
33
+ });
34
+ Object.defineProperty(exports, "resolveLocaleMeta", {
35
+ enumerable: true,
36
+ get: function () { return chunkCILNIWYW_cjs.resolveLocaleMeta; }
37
+ });
38
+ Object.defineProperty(exports, "faMessages", {
39
+ enumerable: true,
40
+ get: function () { return chunkSX4VQXAA_cjs.faMessages; }
41
+ });
42
+ Object.defineProperty(exports, "enMessages", {
43
+ enumerable: true,
44
+ get: function () { return chunkQZN7R2WP_cjs.enMessages; }
45
+ });
46
+ Object.defineProperty(exports, "arMessages", {
47
+ enumerable: true,
48
+ get: function () { return chunkZ4QPZ3Z3_cjs.arMessages; }
49
+ });
50
+ //# sourceMappingURL=index.cjs.map
51
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,5 @@
1
+ export { L as LOCALE_PACKS, f as formatLocaleDate, a as formatLocaleNumber, g as getLocalePack } from '../index-DN8M8Jkq.cjs';
2
+ export { E as ERPTableLocale, a as ERPTableMessages, L as LOCALE_META, b as LocaleMeta, N as NumberingSystem, r as resolveDirection, c as resolveLocaleMeta } from '../types-D__47BKv.cjs';
3
+ export { arMessages } from './ar.cjs';
4
+ export { enMessages } from './en.cjs';
5
+ export { faMessages } from './fa.cjs';
@@ -0,0 +1,5 @@
1
+ export { L as LOCALE_PACKS, f as formatLocaleDate, a as formatLocaleNumber, g as getLocalePack } from '../index-DmzL-F_o.js';
2
+ export { E as ERPTableLocale, a as ERPTableMessages, L as LOCALE_META, b as LocaleMeta, N as NumberingSystem, r as resolveDirection, c as resolveLocaleMeta } from '../types-D__47BKv.js';
3
+ export { arMessages } from './ar.js';
4
+ export { enMessages } from './en.js';
5
+ export { faMessages } from './fa.js';
@@ -0,0 +1,6 @@
1
+ export { LOCALE_META, LOCALE_PACKS, formatLocaleDate, formatLocaleNumber, getLocalePack, resolveDirection, resolveLocaleMeta } from '../chunk-SZ7BLAY3.js';
2
+ export { faMessages } from '../chunk-F4PYOYHR.js';
3
+ export { enMessages } from '../chunk-77UXAJII.js';
4
+ export { arMessages } from '../chunk-TN4MG6FY.js';
5
+ //# sourceMappingURL=index.js.map
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ // infrastructure/Repositories/paged/memoryRecords.ts
4
+ async function iterateMemoryRows(rows, onBatch, batchSize) {
5
+ const size = Math.max(1, batchSize ?? 500);
6
+ for (let base = 0; base < rows.length; base += size) {
7
+ const records = rows.slice(base, base + size).map((row, i) => ({
8
+ rowId: row.id.value,
9
+ collection: row.getCollection(),
10
+ sortIndex: Number(row.getCell("index")?.getValue() ?? base + i) || 0,
11
+ rowState: row.rowState.value,
12
+ cells: Object.fromEntries(
13
+ [...row.getCells()].map(([k, c]) => [
14
+ k,
15
+ {
16
+ value: c.getValue(),
17
+ originalValue: c.getOriginalValue().value,
18
+ display: c.getDisplay()
19
+ }
20
+ ])
21
+ )
22
+ }));
23
+ if (await onBatch(records, base) === false) return;
24
+ }
25
+ }
26
+ var hasMeaningfulValue = (value) => value !== void 0 && value !== null && value !== "";
27
+ function rowsToSnapshot(rows) {
28
+ return {
29
+ rows: rows.filter(
30
+ (row) => Array.from(row.getCells().entries()).some(
31
+ ([key, cell]) => key !== "index" && hasMeaningfulValue(cell.getValue())
32
+ )
33
+ ).map((row) => ({
34
+ id: row.id.value,
35
+ changeFields: row.getSnapshotChangeFields(),
36
+ cells: Object.fromEntries(
37
+ [...row.getCells()].map(([k, c]) => [k, c.getValue()])
38
+ ),
39
+ rowState: row.rowState.value,
40
+ collection: row.getCollection(),
41
+ rowType: row.getCollection(),
42
+ isSaveDescription: row.isSaveDescription
43
+ }))
44
+ };
45
+ }
46
+
47
+ exports.iterateMemoryRows = iterateMemoryRows;
48
+ exports.rowsToSnapshot = rowsToSnapshot;
49
+ //# sourceMappingURL=memoryRecords-AWDKUJ2F.cjs.map
50
+ //# sourceMappingURL=memoryRecords-AWDKUJ2F.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../infrastructure/Repositories/paged/memoryRecords.ts"],"names":[],"mappings":";;;AAKA,eAAsB,iBAAA,CACpB,IAAA,EACA,OAAA,EACA,SAAA,EACe;AACf,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,GAAG,CAAA;AACzC,EAAA,KAAA,IAAS,OAAO,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,MAAA,EAAQ,QAAQ,IAAA,EAAM;AACnD,IAAA,MAAM,OAAA,GAAgC,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,IAAA,GAAO,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,MAAO;AAAA,MACnF,KAAA,EAAO,IAAI,EAAA,CAAG,KAAA;AAAA,MACd,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,SAAA,EAAW,MAAA,CAAO,GAAA,CAAI,OAAA,CAAQ,OAAO,GAAG,QAAA,EAAS,IAAK,IAAA,GAAO,CAAC,CAAA,IAAK,CAAA;AAAA,MACnE,QAAA,EAAU,IAAI,QAAA,CAAS,KAAA;AAAA,MACvB,OAAO,MAAA,CAAO,WAAA;AAAA,QACZ,CAAC,GAAG,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AAAA,UAClC,CAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,QAAA,EAAS;AAAA,YAClB,aAAA,EAAe,CAAA,CAAE,gBAAA,EAAiB,CAAE,KAAA;AAAA,YACpC,OAAA,EAAS,EAAE,UAAA;AAAW;AACxB,SACD;AAAA;AACH,KACF,CAAE,CAAA;AACF,IAAA,IAAK,MAAM,OAAA,CAAQ,OAAA,EAAS,IAAI,MAAO,KAAA,EAAO;AAAA,EAChD;AACF;AAEA,IAAM,qBAAqB,CAAC,KAAA,KAC1B,UAAU,MAAA,IAAa,KAAA,KAAU,QAAQ,KAAA,KAAU,EAAA;AAG9C,SAAS,eAAe,IAAA,EAAqC;AAClE,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CACH,MAAA;AAAA,MAAO,CAAC,QACP,KAAA,CAAM,IAAA,CAAK,IAAI,QAAA,EAAS,CAAE,OAAA,EAAS,CAAA,CAAE,IAAA;AAAA,QACnC,CAAC,CAAC,GAAA,EAAK,IAAI,CAAA,KAAM,QAAQ,OAAA,IAAW,kBAAA,CAAmB,IAAA,CAAK,QAAA,EAAU;AAAA;AACxE,KACF,CACC,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,MACb,EAAA,EAAI,IAAI,EAAA,CAAG,KAAA;AAAA,MACX,YAAA,EAAc,IAAI,uBAAA,EAAwB;AAAA,MAC1C,OAAO,MAAA,CAAO,WAAA;AAAA,QACZ,CAAC,GAAG,GAAA,CAAI,QAAA,EAAU,EAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,GAAG,CAAA,CAAE,QAAA,EAAU,CAAC;AAAA,OACvD;AAAA,MACA,QAAA,EAAU,IAAI,QAAA,CAAS,KAAA;AAAA,MACvB,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,MAC3B,mBAAmB,GAAA,CAAI;AAAA,KACzB,CAAE;AAAA,GACN;AACF","file":"memoryRecords-AWDKUJ2F.cjs","sourcesContent":["// In-memory serving of the `iterateRowRecords` contract (default mode).\r\nimport type { PersistedRowRecord } from '../../../application/ports/TableRepository';\r\nimport type { Row } from '../../../domain/entities/Row';\r\nimport type { TableSnapShot } from '../../../engine/type';\r\n\r\nexport async function iterateMemoryRows(\r\n rows: readonly Row[],\r\n onBatch: (records: PersistedRowRecord[], ordinalBase: number) => Promise<boolean | void>,\r\n batchSize?: number,\r\n): Promise<void> {\r\n const size = Math.max(1, batchSize ?? 500);\r\n for (let base = 0; base < rows.length; base += size) {\r\n const records: PersistedRowRecord[] = rows.slice(base, base + size).map((row, i) => ({\r\n rowId: row.id.value,\r\n collection: row.getCollection(),\r\n sortIndex: Number(row.getCell('index')?.getValue() ?? base + i) || 0,\r\n rowState: row.rowState.value,\r\n cells: Object.fromEntries(\r\n [...row.getCells()].map(([k, c]) => [\r\n k,\r\n {\r\n value: c.getValue(),\r\n originalValue: c.getOriginalValue().value,\r\n display: c.getDisplay(),\r\n },\r\n ]),\r\n ),\r\n }));\r\n if ((await onBatch(records, base)) === false) return;\r\n }\r\n}\r\n\r\nconst hasMeaningfulValue = (value: unknown) =>\r\n value !== undefined && value !== null && value !== '';\r\n\r\n/** Rows with data (besides `index`) → server-save snapshot. */\r\nexport function rowsToSnapshot(rows: readonly Row[]): TableSnapShot {\r\n return {\r\n rows: rows\r\n .filter((row) =>\r\n Array.from(row.getCells().entries()).some(\r\n ([key, cell]) => key !== 'index' && hasMeaningfulValue(cell.getValue()),\r\n ),\r\n )\r\n .map((row) => ({\r\n id: row.id.value,\r\n changeFields: row.getSnapshotChangeFields(),\r\n cells: Object.fromEntries(\r\n [...row.getCells()].map(([k, c]) => [k, c.getValue()]),\r\n ),\r\n rowState: row.rowState.value,\r\n collection: row.getCollection(),\r\n rowType: row.getCollection(),\r\n isSaveDescription: row.isSaveDescription,\r\n })),\r\n };\r\n}\r\n"]}
@@ -0,0 +1,47 @@
1
+ // infrastructure/Repositories/paged/memoryRecords.ts
2
+ async function iterateMemoryRows(rows, onBatch, batchSize) {
3
+ const size = Math.max(1, batchSize ?? 500);
4
+ for (let base = 0; base < rows.length; base += size) {
5
+ const records = rows.slice(base, base + size).map((row, i) => ({
6
+ rowId: row.id.value,
7
+ collection: row.getCollection(),
8
+ sortIndex: Number(row.getCell("index")?.getValue() ?? base + i) || 0,
9
+ rowState: row.rowState.value,
10
+ cells: Object.fromEntries(
11
+ [...row.getCells()].map(([k, c]) => [
12
+ k,
13
+ {
14
+ value: c.getValue(),
15
+ originalValue: c.getOriginalValue().value,
16
+ display: c.getDisplay()
17
+ }
18
+ ])
19
+ )
20
+ }));
21
+ if (await onBatch(records, base) === false) return;
22
+ }
23
+ }
24
+ var hasMeaningfulValue = (value) => value !== void 0 && value !== null && value !== "";
25
+ function rowsToSnapshot(rows) {
26
+ return {
27
+ rows: rows.filter(
28
+ (row) => Array.from(row.getCells().entries()).some(
29
+ ([key, cell]) => key !== "index" && hasMeaningfulValue(cell.getValue())
30
+ )
31
+ ).map((row) => ({
32
+ id: row.id.value,
33
+ changeFields: row.getSnapshotChangeFields(),
34
+ cells: Object.fromEntries(
35
+ [...row.getCells()].map(([k, c]) => [k, c.getValue()])
36
+ ),
37
+ rowState: row.rowState.value,
38
+ collection: row.getCollection(),
39
+ rowType: row.getCollection(),
40
+ isSaveDescription: row.isSaveDescription
41
+ }))
42
+ };
43
+ }
44
+
45
+ export { iterateMemoryRows, rowsToSnapshot };
46
+ //# sourceMappingURL=memoryRecords-OJTGXLRH.js.map
47
+ //# sourceMappingURL=memoryRecords-OJTGXLRH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../infrastructure/Repositories/paged/memoryRecords.ts"],"names":[],"mappings":";AAKA,eAAsB,iBAAA,CACpB,IAAA,EACA,OAAA,EACA,SAAA,EACe;AACf,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,GAAG,CAAA;AACzC,EAAA,KAAA,IAAS,OAAO,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,MAAA,EAAQ,QAAQ,IAAA,EAAM;AACnD,IAAA,MAAM,OAAA,GAAgC,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,IAAA,GAAO,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,MAAO;AAAA,MACnF,KAAA,EAAO,IAAI,EAAA,CAAG,KAAA;AAAA,MACd,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,SAAA,EAAW,MAAA,CAAO,GAAA,CAAI,OAAA,CAAQ,OAAO,GAAG,QAAA,EAAS,IAAK,IAAA,GAAO,CAAC,CAAA,IAAK,CAAA;AAAA,MACnE,QAAA,EAAU,IAAI,QAAA,CAAS,KAAA;AAAA,MACvB,OAAO,MAAA,CAAO,WAAA;AAAA,QACZ,CAAC,GAAG,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AAAA,UAClC,CAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,QAAA,EAAS;AAAA,YAClB,aAAA,EAAe,CAAA,CAAE,gBAAA,EAAiB,CAAE,KAAA;AAAA,YACpC,OAAA,EAAS,EAAE,UAAA;AAAW;AACxB,SACD;AAAA;AACH,KACF,CAAE,CAAA;AACF,IAAA,IAAK,MAAM,OAAA,CAAQ,OAAA,EAAS,IAAI,MAAO,KAAA,EAAO;AAAA,EAChD;AACF;AAEA,IAAM,qBAAqB,CAAC,KAAA,KAC1B,UAAU,MAAA,IAAa,KAAA,KAAU,QAAQ,KAAA,KAAU,EAAA;AAG9C,SAAS,eAAe,IAAA,EAAqC;AAClE,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CACH,MAAA;AAAA,MAAO,CAAC,QACP,KAAA,CAAM,IAAA,CAAK,IAAI,QAAA,EAAS,CAAE,OAAA,EAAS,CAAA,CAAE,IAAA;AAAA,QACnC,CAAC,CAAC,GAAA,EAAK,IAAI,CAAA,KAAM,QAAQ,OAAA,IAAW,kBAAA,CAAmB,IAAA,CAAK,QAAA,EAAU;AAAA;AACxE,KACF,CACC,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,MACb,EAAA,EAAI,IAAI,EAAA,CAAG,KAAA;AAAA,MACX,YAAA,EAAc,IAAI,uBAAA,EAAwB;AAAA,MAC1C,OAAO,MAAA,CAAO,WAAA;AAAA,QACZ,CAAC,GAAG,GAAA,CAAI,QAAA,EAAU,EAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,GAAG,CAAA,CAAE,QAAA,EAAU,CAAC;AAAA,OACvD;AAAA,MACA,QAAA,EAAU,IAAI,QAAA,CAAS,KAAA;AAAA,MACvB,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,MAC3B,mBAAmB,GAAA,CAAI;AAAA,KACzB,CAAE;AAAA,GACN;AACF","file":"memoryRecords-OJTGXLRH.js","sourcesContent":["// In-memory serving of the `iterateRowRecords` contract (default mode).\r\nimport type { PersistedRowRecord } from '../../../application/ports/TableRepository';\r\nimport type { Row } from '../../../domain/entities/Row';\r\nimport type { TableSnapShot } from '../../../engine/type';\r\n\r\nexport async function iterateMemoryRows(\r\n rows: readonly Row[],\r\n onBatch: (records: PersistedRowRecord[], ordinalBase: number) => Promise<boolean | void>,\r\n batchSize?: number,\r\n): Promise<void> {\r\n const size = Math.max(1, batchSize ?? 500);\r\n for (let base = 0; base < rows.length; base += size) {\r\n const records: PersistedRowRecord[] = rows.slice(base, base + size).map((row, i) => ({\r\n rowId: row.id.value,\r\n collection: row.getCollection(),\r\n sortIndex: Number(row.getCell('index')?.getValue() ?? base + i) || 0,\r\n rowState: row.rowState.value,\r\n cells: Object.fromEntries(\r\n [...row.getCells()].map(([k, c]) => [\r\n k,\r\n {\r\n value: c.getValue(),\r\n originalValue: c.getOriginalValue().value,\r\n display: c.getDisplay(),\r\n },\r\n ]),\r\n ),\r\n }));\r\n if ((await onBatch(records, base)) === false) return;\r\n }\r\n}\r\n\r\nconst hasMeaningfulValue = (value: unknown) =>\r\n value !== undefined && value !== null && value !== '';\r\n\r\n/** Rows with data (besides `index`) → server-save snapshot. */\r\nexport function rowsToSnapshot(rows: readonly Row[]): TableSnapShot {\r\n return {\r\n rows: rows\r\n .filter((row) =>\r\n Array.from(row.getCells().entries()).some(\r\n ([key, cell]) => key !== 'index' && hasMeaningfulValue(cell.getValue()),\r\n ),\r\n )\r\n .map((row) => ({\r\n id: row.id.value,\r\n changeFields: row.getSnapshotChangeFields(),\r\n cells: Object.fromEntries(\r\n [...row.getCells()].map(([k, c]) => [k, c.getValue()]),\r\n ),\r\n rowState: row.rowState.value,\r\n collection: row.getCollection(),\r\n rowType: row.getCollection(),\r\n isSaveDescription: row.isSaveDescription,\r\n })),\r\n };\r\n}\r\n"]}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ // ui/desktop/pagedFooterTotals.ts
4
+ function subscribePagedTotals(controller, columns, setAggs) {
5
+ const unsubscribes = [];
6
+ for (const column of columns) {
7
+ if (column.fieldType !== "price" && column.fieldType !== "number") continue;
8
+ unsubscribes.push(
9
+ controller.subscribeColumn(
10
+ column.fieldName,
11
+ "active",
12
+ (sum, item) => sum + (Number(item.value) || 0),
13
+ 0,
14
+ (total) => {
15
+ setAggs((prev) => ({ ...prev, [column.fieldName]: total }));
16
+ }
17
+ )
18
+ );
19
+ }
20
+ return () => {
21
+ unsubscribes.forEach((unsubscribe) => unsubscribe?.());
22
+ };
23
+ }
24
+
25
+ exports.subscribePagedTotals = subscribePagedTotals;
26
+ //# sourceMappingURL=pagedFooterTotals-DXCGDO6F.cjs.map
27
+ //# sourceMappingURL=pagedFooterTotals-DXCGDO6F.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../ui/desktop/pagedFooterTotals.ts"],"names":[],"mappings":";;;AAKO,SAAS,oBAAA,CACd,UAAA,EACA,OAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,eAA2C,EAAC;AAClD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,MAAA,CAAO,SAAA,KAAc,OAAA,IAAW,MAAA,CAAO,cAAc,QAAA,EAAU;AACnE,IAAA,YAAA,CAAa,IAAA;AAAA,MACX,UAAA,CAAW,eAAA;AAAA,QACT,MAAA,CAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,CAAC,GAAA,EAAK,IAAA,KAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,IAAK,CAAA,CAAA;AAAA,QAC5C,CAAA;AAAA,QACA,CAAC,KAAA,KAAU;AACT,UAAA,OAAA,CAAQ,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,CAAC,MAAA,CAAO,SAAS,GAAG,KAAA,EAAM,CAAE,CAAA;AAAA,QAC5D;AAAA;AACF,KACF;AAAA,EACF;AACA,EAAA,OAAO,MAAM;AACX,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,WAAA,KAAgB,WAAA,IAAe,CAAA;AAAA,EACvD,CAAA;AACF","file":"pagedFooterTotals-DXCGDO6F.cjs","sourcesContent":["// Page-window ('paged-idb') footer totals — loaded lazily by ERPTableFooter.\r\n// Sums fold over the WHOLE dataset streamed from IndexedDB (O(batch) heap).\r\nimport type { ColumnSchema } from '../../bootstrap/type';\r\nimport type { UITableController } from '../../infrastructure/ui/UITableController';\r\n\r\nexport function subscribePagedTotals(\r\n controller: UITableController,\r\n columns: readonly ColumnSchema[],\r\n setAggs: (update: (prev: Record<string, unknown>) => Record<string, unknown>) => void,\r\n): () => void {\r\n const unsubscribes: Array<(() => void) | null> = [];\r\n for (const column of columns) {\r\n if (column.fieldType !== 'price' && column.fieldType !== 'number') continue;\r\n unsubscribes.push(\r\n controller.subscribeColumn<number>(\r\n column.fieldName,\r\n 'active',\r\n (sum, item) => sum + (Number(item.value) || 0),\r\n 0,\r\n (total) => {\r\n setAggs((prev) => ({ ...prev, [column.fieldName]: total }));\r\n },\r\n ),\r\n );\r\n }\r\n return () => {\r\n unsubscribes.forEach((unsubscribe) => unsubscribe?.());\r\n };\r\n}\r\n"]}
@@ -0,0 +1,25 @@
1
+ // ui/desktop/pagedFooterTotals.ts
2
+ function subscribePagedTotals(controller, columns, setAggs) {
3
+ const unsubscribes = [];
4
+ for (const column of columns) {
5
+ if (column.fieldType !== "price" && column.fieldType !== "number") continue;
6
+ unsubscribes.push(
7
+ controller.subscribeColumn(
8
+ column.fieldName,
9
+ "active",
10
+ (sum, item) => sum + (Number(item.value) || 0),
11
+ 0,
12
+ (total) => {
13
+ setAggs((prev) => ({ ...prev, [column.fieldName]: total }));
14
+ }
15
+ )
16
+ );
17
+ }
18
+ return () => {
19
+ unsubscribes.forEach((unsubscribe) => unsubscribe?.());
20
+ };
21
+ }
22
+
23
+ export { subscribePagedTotals };
24
+ //# sourceMappingURL=pagedFooterTotals-ORWKUNE7.js.map
25
+ //# sourceMappingURL=pagedFooterTotals-ORWKUNE7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../ui/desktop/pagedFooterTotals.ts"],"names":[],"mappings":";AAKO,SAAS,oBAAA,CACd,UAAA,EACA,OAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,eAA2C,EAAC;AAClD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,MAAA,CAAO,SAAA,KAAc,OAAA,IAAW,MAAA,CAAO,cAAc,QAAA,EAAU;AACnE,IAAA,YAAA,CAAa,IAAA;AAAA,MACX,UAAA,CAAW,eAAA;AAAA,QACT,MAAA,CAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,CAAC,GAAA,EAAK,IAAA,KAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,IAAK,CAAA,CAAA;AAAA,QAC5C,CAAA;AAAA,QACA,CAAC,KAAA,KAAU;AACT,UAAA,OAAA,CAAQ,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,CAAC,MAAA,CAAO,SAAS,GAAG,KAAA,EAAM,CAAE,CAAA;AAAA,QAC5D;AAAA;AACF,KACF;AAAA,EACF;AACA,EAAA,OAAO,MAAM;AACX,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,WAAA,KAAgB,WAAA,IAAe,CAAA;AAAA,EACvD,CAAA;AACF","file":"pagedFooterTotals-ORWKUNE7.js","sourcesContent":["// Page-window ('paged-idb') footer totals — loaded lazily by ERPTableFooter.\r\n// Sums fold over the WHOLE dataset streamed from IndexedDB (O(batch) heap).\r\nimport type { ColumnSchema } from '../../bootstrap/type';\r\nimport type { UITableController } from '../../infrastructure/ui/UITableController';\r\n\r\nexport function subscribePagedTotals(\r\n controller: UITableController,\r\n columns: readonly ColumnSchema[],\r\n setAggs: (update: (prev: Record<string, unknown>) => Record<string, unknown>) => void,\r\n): () => void {\r\n const unsubscribes: Array<(() => void) | null> = [];\r\n for (const column of columns) {\r\n if (column.fieldType !== 'price' && column.fieldType !== 'number') continue;\r\n unsubscribes.push(\r\n controller.subscribeColumn<number>(\r\n column.fieldName,\r\n 'active',\r\n (sum, item) => sum + (Number(item.value) || 0),\r\n 0,\r\n (total) => {\r\n setAggs((prev) => ({ ...prev, [column.fieldName]: total }));\r\n },\r\n ),\r\n );\r\n }\r\n return () => {\r\n unsubscribes.forEach((unsubscribe) => unsubscribe?.());\r\n };\r\n}\r\n"]}
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var chunk5ALMNLUR_cjs = require('./chunk-5ALMNLUR.cjs');
4
+ require('./chunk-MT3KLB2Q.cjs');
5
+ var chunkKMRURD5J_cjs = require('./chunk-KMRURD5J.cjs');
6
+ var chunkNTV2UUAJ_cjs = require('./chunk-NTV2UUAJ.cjs');
7
+
8
+ // application/handlers/deleteRowsCommandHandler.ts
9
+ var DeleteRowsCommandHandler = class {
10
+ constructor(repo, audit, permission) {
11
+ this.repo = repo;
12
+ this.audit = audit;
13
+ this.permission = permission;
14
+ }
15
+ /**
16
+ * Bulk delete — never toggles restore:
17
+ * - `Added` → hard-remove from IndexedDB
18
+ * - otherwise → `rowState = Deleted` (soft; قابل برگرداندن با حذف تکی)
19
+ * Already-`Deleted` rows stay deleted.
20
+ */
21
+ async execute(command, actor) {
22
+ try {
23
+ const rowIds = command.rowIds ?? [];
24
+ if (rowIds.length === 0) return null;
25
+ for (const rowId of rowIds) {
26
+ if (!this.permission.canDeleteRow?.({ actor, rowId })) {
27
+ throw new chunkKMRURD5J_cjs.DomainError(
28
+ "FORBIDDEN",
29
+ "Actor is not allowed to delete selected rows",
30
+ { actor, rowId }
31
+ );
32
+ }
33
+ }
34
+ const remainingWanted = new Set(rowIds);
35
+ let foundAny = false;
36
+ await this.repo.iterateRowRecords(
37
+ command.store,
38
+ command.tableKey,
39
+ "active",
40
+ async (records) => {
41
+ for (const rec of records) {
42
+ if (remainingWanted.delete(rec.rowId)) foundAny = true;
43
+ if (remainingWanted.size === 0) return false;
44
+ }
45
+ }
46
+ );
47
+ if (!foundAny) {
48
+ throw new chunkKMRURD5J_cjs.DomainError("ROW_NOT_FOUND", "No requested rows found", {
49
+ tableKey: command.tableKey
50
+ });
51
+ }
52
+ const { softDeleted, hardRemoved, remaining } = await this.repo.softDeleteRows(command.store, command.tableKey, rowIds);
53
+ this.audit.log({
54
+ type: "INFORMATION",
55
+ message: "ROWS_DELETED",
56
+ payload: {
57
+ requested: rowIds.length,
58
+ hardRemoved,
59
+ softDeleted,
60
+ remaining
61
+ }
62
+ });
63
+ return {
64
+ removed: hardRemoved,
65
+ softDeleted,
66
+ remaining
67
+ };
68
+ } catch (error) {
69
+ if (error instanceof chunkKMRURD5J_cjs.DomainError) {
70
+ this.audit.log({
71
+ type: error.code,
72
+ message: error.message,
73
+ payload: error.details
74
+ });
75
+ } else {
76
+ this.audit.log({
77
+ type: "INVARIANT_VIOLATION",
78
+ message: "Unexpected error",
79
+ payload: { error }
80
+ });
81
+ }
82
+ return null;
83
+ }
84
+ }
85
+ };
86
+
87
+ // infrastructure/Repositories/paged/pagedKit.ts
88
+ async function seedWindowedTable(args) {
89
+ const { repo, store, tableKey, loadedTable, columns, columnMeta, page, pageSize } = args;
90
+ let table = args.table;
91
+ if (loadedTable) {
92
+ table.setColumns(Array.from(columns.values()));
93
+ const activeName = table.getActiveCollectionName() ?? "default";
94
+ const conditionByCollection = /* @__PURE__ */ new Map();
95
+ for (const row of table.getCollections().get(activeName)?.getRows().values() ?? []) {
96
+ const cond = row.getVisibilityCondition() ?? {};
97
+ for (const [fieldName, flag] of Object.entries(cond)) {
98
+ if (flag !== true) continue;
99
+ const colCfg = columnMeta.get(`${activeName}_${fieldName}`) ?? columnMeta.get(fieldName);
100
+ const coll = colCfg?.fieldCollection ?? activeName;
101
+ (conditionByCollection.get(coll) ?? conditionByCollection.set(coll, /* @__PURE__ */ new Map()).get(coll)).set(fieldName, true);
102
+ }
103
+ }
104
+ for (const cfg of columnMeta.values()) {
105
+ const coll = cfg.fieldCollection ?? activeName;
106
+ if (conditionByCollection.get(coll)?.get(cfg.fieldName) !== true) continue;
107
+ const target = table.getCollections().get(coll);
108
+ const cur = target?.getColumns().get(cfg.fieldName);
109
+ if (target && cur) {
110
+ target.getColumns().set(cfg.fieldName, { ...cur, hidden: false });
111
+ }
112
+ }
113
+ const loadedActiveCount = table.getCollections().get(table.getActiveCollectionName())?.getRows().size ?? 0;
114
+ const totalRows = loadedActiveCount > 0 ? Math.max(table.getPagination().totalRows, loadedActiveCount) : table.getPagination().totalRows;
115
+ table.setPagination(new chunkNTV2UUAJ_cjs.Pagination(page, pageSize, totalRows));
116
+ await repo.save(store, table);
117
+ } else {
118
+ table.setColumns(Array.from(columns.values()));
119
+ table.setPagination(new chunkNTV2UUAJ_cjs.Pagination(page, pageSize, args.activeRowCount));
120
+ await repo.replaceAll(store, table);
121
+ }
122
+ const pageWindow = await repo.loadPage(store, tableKey, page, pageSize);
123
+ if (pageWindow) table = pageWindow;
124
+ return table.setPageWindow(true);
125
+ }
126
+
127
+ Object.defineProperty(exports, "PagedCachedTableRepository", {
128
+ enumerable: true,
129
+ get: function () { return chunk5ALMNLUR_cjs.PagedCachedTableRepository; }
130
+ });
131
+ exports.DeleteRowsCommandHandler = DeleteRowsCommandHandler;
132
+ exports.seedWindowedTable = seedWindowedTable;
133
+ //# sourceMappingURL=pagedKit-MFGAJFSK.cjs.map
134
+ //# sourceMappingURL=pagedKit-MFGAJFSK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../application/handlers/deleteRowsCommandHandler.ts","../infrastructure/Repositories/paged/pagedKit.ts"],"names":["DomainError","Pagination"],"mappings":";;;;;;;;AAkBO,IAAM,2BAAN,MAA+B;AAAA,EACpC,WAAA,CACmB,IAAA,EACA,KAAA,EACA,UAAA,EACjB;AAHiB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQJ,MAAM,OAAA,CAAQ,OAAA,EAA4B,KAAA,EAAc;AACtD,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,EAAC;AAClC,MAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEhC,MAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,QAAA,IAAI,CAAC,KAAK,UAAA,CAAW,YAAA,GAAe,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,EAAG;AACrD,UAAA,MAAM,IAAIA,6BAAA;AAAA,YACR,WAAA;AAAA,YACA,8CAAA;AAAA,YACA,EAAE,OAAO,KAAA;AAAM,WACjB;AAAA,QACF;AAAA,MACF;AAIA,MAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,MAAM,CAAA;AACtC,MAAA,IAAI,QAAA,GAAW,KAAA;AACf,MAAA,MAAM,KAAK,IAAA,CAAK,iBAAA;AAAA,QACd,OAAA,CAAQ,KAAA;AAAA,QACR,OAAA,CAAQ,QAAA;AAAA,QACR,QAAA;AAAA,QACA,OAAM,OAAA,KAAW;AACf,UAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,YAAA,IAAI,eAAA,CAAgB,MAAA,CAAO,GAAA,CAAI,KAAK,GAAG,QAAA,GAAW,IAAA;AAClD,YAAA,IAAI,eAAA,CAAgB,IAAA,KAAS,CAAA,EAAG,OAAO,KAAA;AAAA,UACzC;AAAA,QACF;AAAA,OACF;AACA,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAIA,6BAAA,CAAY,eAAA,EAAiB,yBAAA,EAA2B;AAAA,UAChE,UAAU,OAAA,CAAQ;AAAA,SACnB,CAAA;AAAA,MACH;AAQA,MAAA,MAAM,EAAE,WAAA,EAAa,WAAA,EAAa,SAAA,EAAU,GAC1C,MAAM,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,KAAA,EAAO,OAAA,CAAQ,UAAU,MAAM,CAAA;AAExE,MAAA,IAAA,CAAK,MAAM,GAAA,CAAI;AAAA,QACb,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS,cAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,WAAW,MAAA,CAAO,MAAA;AAAA,UAClB,WAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAED,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,WAAA;AAAA,QACT,WAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,iBAAiBA,6BAAA,EAAa;AAChC,QAAA,IAAA,CAAK,MAAM,GAAA,CAAI;AAAA,UACb,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,SAAS,KAAA,CAAM;AAAA,SAChB,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,MAAM,GAAA,CAAI;AAAA,UACb,IAAA,EAAM,qBAAA;AAAA,UACN,OAAA,EAAS,kBAAA;AAAA,UACT,OAAA,EAAS,EAAE,KAAA;AAAM,SAClB,CAAA;AAAA,MACH;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AACF;;;AC5FA,eAAsB,kBAAkB,IAAA,EAWrB;AACjB,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,QAAA,EAAU,aAAa,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,QAAA,EAAS,GAC9E,IAAA;AACF,EAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAEjB,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,KAAA,CAAM,WAAW,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAA;AAI7C,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,uBAAA,EAAwB,IAAK,SAAA;AACtD,IAAA,MAAM,qBAAA,uBAA4B,GAAA,EAAkC;AACpE,IAAA,KAAA,MAAW,GAAA,IAAO,KAAA,CAAM,cAAA,EAAe,CAAE,GAAA,CAAI,UAAU,CAAA,EAAG,OAAA,EAAQ,CAAE,MAAA,EAAO,IAAK,EAAC,EAAG;AAClF,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,sBAAA,EAAuB,IAAK,EAAC;AAC9C,MAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AACpD,QAAA,IAAI,SAAS,IAAA,EAAM;AACnB,QAAA,MAAM,MAAA,GACJ,UAAA,CAAW,GAAA,CAAI,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA,IAAK,UAAA,CAAW,GAAA,CAAI,SAAS,CAAA;AAC1E,QAAA,MAAM,IAAA,GAAO,QAAQ,eAAA,IAAmB,UAAA;AACxC,QAAA,CACE,sBAAsB,GAAA,CAAI,IAAI,CAAA,IAC9B,qBAAA,CAAsB,IAAI,IAAA,kBAAM,IAAI,GAAA,EAAK,EAAE,GAAA,CAAI,IAAI,CAAA,EACnD,GAAA,CAAI,WAAW,IAAI,CAAA;AAAA,MACvB;AAAA,IACF;AACA,IAAA,KAAA,MAAW,GAAA,IAAO,UAAA,CAAW,MAAA,EAAO,EAAG;AACrC,MAAA,MAAM,IAAA,GAAO,IAAI,eAAA,IAAmB,UAAA;AACpC,MAAA,IAAI,qBAAA,CAAsB,IAAI,IAAI,CAAA,EAAG,IAAI,GAAA,CAAI,SAAS,MAAM,IAAA,EAAM;AAClE,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,cAAA,EAAe,CAAE,IAAI,IAAI,CAAA;AAC9C,MAAA,MAAM,MAAM,MAAA,EAAQ,UAAA,EAAW,CAAE,GAAA,CAAI,IAAI,SAAS,CAAA;AAClD,MAAA,IAAI,UAAU,GAAA,EAAK;AACjB,QAAA,MAAA,CAAO,UAAA,EAAW,CAAE,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,EAAE,GAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,MAClE;AAAA,IACF;AACA,IAAA,MAAM,iBAAA,GACJ,KAAA,CAAM,cAAA,EAAe,CAAE,GAAA,CAAI,KAAA,CAAM,uBAAA,EAAyB,CAAA,EAAG,OAAA,EAAQ,CAAE,IAAA,IAAQ,CAAA;AACjF,IAAA,MAAM,SAAA,GACJ,iBAAA,GAAoB,CAAA,GAChB,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,aAAA,EAAc,CAAE,SAAA,EAAW,iBAAiB,CAAA,GAC3D,KAAA,CAAM,eAAc,CAAE,SAAA;AAC5B,IAAA,KAAA,CAAM,cAAc,IAAIC,4BAAA,CAAW,IAAA,EAAM,QAAA,EAAU,SAAS,CAAC,CAAA;AAC7D,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,WAAW,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAA;AAC7C,IAAA,KAAA,CAAM,cAAc,IAAIA,4BAAA,CAAW,MAAM,QAAA,EAAU,IAAA,CAAK,cAAc,CAAC,CAAA;AAEvE,IAAA,MAAM,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA;AAAA,EACpC;AAGA,EAAA,MAAM,aAAa,MAAM,IAAA,CAAK,SAAS,KAAA,EAAO,QAAA,EAAU,MAAM,QAAQ,CAAA;AACtE,EAAA,IAAI,YAAY,KAAA,GAAQ,UAAA;AACxB,EAAA,OAAO,KAAA,CAAM,cAAc,IAAI,CAAA;AACjC","file":"pagedKit-MFGAJFSK.cjs","sourcesContent":["// application/handlers/deleteRowsCommandHandler.ts\r\n//\r\n// Page-window (persistence 'paged-idb') bulk delete. Kept in its own module so\r\n// the default bundle only pays for it when the paged mode is actually used.\r\n\r\nimport { DomainError } from '../../domain/errors/DomainError';\r\nimport {\r\n Actor,\r\n PermissionPolicy,\r\n} from '../../domain/policies';\r\nimport { DeleteRowsCommand } from '../commands';\r\nimport { AuditLogger } from '../ports/AuditLogger';\r\nimport { WindowedTableRepository } from '../ports/TableRepository';\r\n\r\n/* ======================================================\r\n Delete Selected Rows (full dataset / IndexedDB SoT)\r\n ====================================================== */\r\n\r\nexport class DeleteRowsCommandHandler {\r\n constructor(\r\n private readonly repo: WindowedTableRepository,\r\n private readonly audit: AuditLogger,\r\n private readonly permission: PermissionPolicy,\r\n ) { }\r\n\r\n /**\r\n * Bulk delete — never toggles restore:\r\n * - `Added` → hard-remove from IndexedDB\r\n * - otherwise → `rowState = Deleted` (soft; قابل برگرداندن با حذف تکی)\r\n * Already-`Deleted` rows stay deleted.\r\n */\r\n async execute(command: DeleteRowsCommand, actor: Actor) {\r\n try {\r\n const rowIds = command.rowIds ?? [];\r\n if (rowIds.length === 0) return null;\r\n\r\n for (const rowId of rowIds) {\r\n if (!this.permission.canDeleteRow?.({ actor, rowId })) {\r\n throw new DomainError(\r\n 'FORBIDDEN',\r\n 'Actor is not allowed to delete selected rows',\r\n { actor, rowId },\r\n );\r\n }\r\n }\r\n\r\n // Memory Iron Rule: streamed validity check (heap = one batch) — every\r\n // requested id must exist in the active collection's persisted records.\r\n const remainingWanted = new Set(rowIds);\r\n let foundAny = false;\r\n await this.repo.iterateRowRecords(\r\n command.store,\r\n command.tableKey,\r\n 'active',\r\n async records => {\r\n for (const rec of records) {\r\n if (remainingWanted.delete(rec.rowId)) foundAny = true;\r\n if (remainingWanted.size === 0) return false; // early stop\r\n }\r\n },\r\n );\r\n if (!foundAny) {\r\n throw new DomainError('ROW_NOT_FOUND', 'No requested rows found', {\r\n tableKey: command.tableKey,\r\n });\r\n }\r\n // Ids absent from persisted records (e.g. unsaved RAM-only additions)\r\n // are skipped silently — the persisted delete cannot act on them.\r\n\r\n // Soft/hard delete applied DIRECTLY on IndexedDB records in one\r\n // readwrite transaction (cursor-based) — never getAllRows + replaceAll.\r\n // Added → hard-removed; others → rowState=Deleted on the record;\r\n // already-Deleted stay deleted (no restore on bulk delete).\r\n const { softDeleted, hardRemoved, remaining } =\r\n await this.repo.softDeleteRows(command.store, command.tableKey, rowIds);\r\n\r\n this.audit.log({\r\n type: 'INFORMATION',\r\n message: 'ROWS_DELETED',\r\n payload: {\r\n requested: rowIds.length,\r\n hardRemoved,\r\n softDeleted,\r\n remaining,\r\n },\r\n });\r\n\r\n return {\r\n removed: hardRemoved,\r\n softDeleted,\r\n remaining,\r\n };\r\n } catch (error) {\r\n if (error instanceof DomainError) {\r\n this.audit.log({\r\n type: error.code,\r\n message: error.message,\r\n payload: error.details,\r\n });\r\n } else {\r\n this.audit.log({\r\n type: 'INVARIANT_VIOLATION',\r\n message: 'Unexpected error',\r\n payload: { error },\r\n });\r\n }\r\n return null;\r\n }\r\n }\r\n}\r\n","// Page-window ('paged-idb') kit — loaded lazily by createGrid so the default\r\n// entry only pays for it when the mode is used.\r\nimport { DeleteRowsCommandHandler } from '../../../application/handlers/deleteRowsCommandHandler';\r\nimport type { WindowedTableRepository } from '../../../application/ports/TableRepository';\r\nimport type { ColumnSchema } from '../../../domain/types/ColumnSchema';\r\nimport type { Table } from '../../../domain/entities/Table';\r\nimport { Pagination } from '../../../domain/value-objects';\r\n\r\nexport { DeleteRowsCommandHandler };\r\nexport { PagedCachedTableRepository } from './PagedCachedTableRepository';\r\n\r\n/**\r\n * Page-window seeding (persistence 'paged-idb'): first open pushes the full\r\n * seed to IndexedDB (replaceAll) and keeps ONE page in RAM; re-open reuses the\r\n * persisted window. Conditional (whenFieldTruthy / whenRemoteFlag) columns that\r\n * hold data are unhidden in their own collection.\r\n */\r\nexport async function seedWindowedTable(args: {\r\n repo: WindowedTableRepository;\r\n store: string;\r\n tableKey: string;\r\n table: Table;\r\n loadedTable?: Table;\r\n columns: Map<string, ColumnSchema>;\r\n columnMeta: Map<string, ColumnSchema>;\r\n page: number;\r\n pageSize: number;\r\n activeRowCount: number;\r\n}): Promise<Table> {\r\n const { repo, store, tableKey, loadedTable, columns, columnMeta, page, pageSize } =\r\n args;\r\n let table = args.table;\r\n\r\n if (loadedTable) {\r\n table.setColumns(Array.from(columns.values()));\r\n // ویرایش (باز شدن مجدد جدول از IndexedDB): ستون‌های شرطیِ محتوا دار باید\r\n // در کالکشن خودشان نمایان شوند — حتی کالکشن‌هایی که سطرشان در پنجرهٔ RAM\r\n // نیست. اسکن مقدار، per-collection روی متای ستون‌ها انجام می‌شود.\r\n const activeName = table.getActiveCollectionName() ?? 'default';\r\n const conditionByCollection = new Map<string, Map<string, boolean>>();\r\n for (const row of table.getCollections().get(activeName)?.getRows().values() ?? []) {\r\n const cond = row.getVisibilityCondition() ?? {};\r\n for (const [fieldName, flag] of Object.entries(cond)) {\r\n if (flag !== true) continue;\r\n const colCfg =\r\n columnMeta.get(`${activeName}_${fieldName}`) ?? columnMeta.get(fieldName);\r\n const coll = colCfg?.fieldCollection ?? activeName;\r\n (\r\n conditionByCollection.get(coll) ??\r\n conditionByCollection.set(coll, new Map()).get(coll)!\r\n ).set(fieldName, true);\r\n }\r\n }\r\n for (const cfg of columnMeta.values()) {\r\n const coll = cfg.fieldCollection ?? activeName;\r\n if (conditionByCollection.get(coll)?.get(cfg.fieldName) !== true) continue;\r\n const target = table.getCollections().get(coll);\r\n const cur = target?.getColumns().get(cfg.fieldName);\r\n if (target && cur) {\r\n target.getColumns().set(cfg.fieldName, { ...cur, hidden: false });\r\n }\r\n }\r\n const loadedActiveCount =\r\n table.getCollections().get(table.getActiveCollectionName())?.getRows().size ?? 0;\r\n const totalRows =\r\n loadedActiveCount > 0\r\n ? Math.max(table.getPagination().totalRows, loadedActiveCount)\r\n : table.getPagination().totalRows;\r\n table.setPagination(new Pagination(page, pageSize, totalRows));\r\n await repo.save(store, table);\r\n } else {\r\n table.setColumns(Array.from(columns.values()));\r\n table.setPagination(new Pagination(page, pageSize, args.activeRowCount));\r\n // Full dataset → IndexedDB source of truth; RAM kept to page 1 only\r\n await repo.replaceAll(store, table);\r\n }\r\n\r\n // Always bind the engine to the RAM page window (not the full dataset)\r\n const pageWindow = await repo.loadPage(store, tableKey, page, pageSize);\r\n if (pageWindow) table = pageWindow;\r\n return table.setPageWindow(true);\r\n}\r\n"]}