@erpsquad/common 1.8.81 → 1.8.82

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 (648) hide show
  1. package/CHANGELOG.md +253 -253
  2. package/README.md +979 -979
  3. package/dist/_virtual/index/index.esm10.js +3 -3
  4. package/dist/_virtual/index/index.esm11.js +3 -3
  5. package/dist/_virtual/index/index.esm4.js +1 -1
  6. package/dist/_virtual/index/index.esm5.js +3 -3
  7. package/dist/_virtual/index/index.esm6.js +3 -3
  8. package/dist/_virtual/index/index.esm7.js +3 -3
  9. package/dist/_virtual/index/index.esm8.js +3 -3
  10. package/dist/_virtual/index/index.esm9.js +3 -3
  11. package/dist/_virtual/index/index10.js +1 -1
  12. package/dist/_virtual/index/index11.js +1 -1
  13. package/dist/_virtual/index/index4.js +1 -1
  14. package/dist/_virtual/index/index5.js +1 -1
  15. package/dist/_virtual/index/index6.js +1 -1
  16. package/dist/_virtual/index/index7.js +1 -1
  17. package/dist/_virtual/index/index8.js +1 -1
  18. package/dist/_virtual/index/index9.js +1 -1
  19. package/dist/api-client/api.accounting/api/index.esm.js.map +1 -1
  20. package/dist/api-client/api.accounting/api/index.js.map +1 -1
  21. package/dist/api-client/api.accounting/api-types.d.ts +15883 -15883
  22. package/dist/api-client/api.drive/api/index.esm.js.map +1 -1
  23. package/dist/api-client/api.drive/api/index.js.map +1 -1
  24. package/dist/api-client/api.drive/api-types.d.ts +696 -696
  25. package/dist/api-client/api.hrms/api/index.esm.js.map +1 -1
  26. package/dist/api-client/api.hrms/api/index.js.map +1 -1
  27. package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
  28. package/dist/api-client/api.inventory/api/index.js.map +1 -1
  29. package/dist/api-client/api.inventory/api-types.d.ts +6110 -6110
  30. package/dist/api-client/api.manufacturing/api/index.esm.js.map +1 -1
  31. package/dist/api-client/api.manufacturing/api/index.js.map +1 -1
  32. package/dist/api-client/api.manufacturing/api-types.d.ts +10066 -10066
  33. package/dist/api-client/api.purchase/api/index.esm.js.map +1 -1
  34. package/dist/api-client/api.purchase/api/index.js.map +1 -1
  35. package/dist/api-client/api.purchase/api-types.d.ts +6715 -6715
  36. package/dist/api-client/api.rbac/api/index.esm.js.map +1 -1
  37. package/dist/api-client/api.rbac/api/index.esm2.js.map +1 -1
  38. package/dist/api-client/api.rbac/api/index.js.map +1 -1
  39. package/dist/api-client/api.rbac/api/index2.js.map +1 -1
  40. package/dist/api-client/api.rbac/api-types.d.ts +1753 -1753
  41. package/dist/api-client/api.rental/api/index.esm.js.map +1 -1
  42. package/dist/api-client/api.rental/api/index.js.map +1 -1
  43. package/dist/api-client/api.rental/api-types.d.ts +15666 -15666
  44. package/dist/api-client/api.sales/api/index.esm.js.map +1 -1
  45. package/dist/api-client/api.sales/api/index.js.map +1 -1
  46. package/dist/api-client/api.sales/api-types.d.ts +8258 -8258
  47. package/dist/api-client/api.system-feature/api/index.esm.js.map +1 -1
  48. package/dist/api-client/api.system-feature/api/index.js.map +1 -1
  49. package/dist/api-client/api.system-feature/api-types.d.ts +2875 -2875
  50. package/dist/api-client/api.user/api/index.esm.js.map +1 -1
  51. package/dist/api-client/api.user/api/index.js.map +1 -1
  52. package/dist/api-client/api.user/api-types.d.ts +95 -95
  53. package/dist/api-client/api.workflow-automation/api/index.esm.js.map +1 -1
  54. package/dist/api-client/api.workflow-automation/api/index.js.map +1 -1
  55. package/dist/api-client/index.d.ts +39 -39
  56. package/dist/components/accordion/accordion/index.esm.js.map +1 -1
  57. package/dist/components/accordion/accordion/index.js.map +1 -1
  58. package/dist/components/accordion/accordion.d.ts +1 -1
  59. package/dist/components/action-bar/action-bar/index.esm.js +1 -1
  60. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  61. package/dist/components/action-bar/action-bar/index.js +5 -5
  62. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  63. package/dist/components/action-bar/action-bar.d.ts +1 -1
  64. package/dist/components/activity-tag/activity-tag/index.esm.js.map +1 -1
  65. package/dist/components/activity-tag/activity-tag/index.js.map +1 -1
  66. package/dist/components/alert/alert/index.esm.js.map +1 -1
  67. package/dist/components/alert/alert/index.js.map +1 -1
  68. package/dist/components/button/button/index.esm.js.map +1 -1
  69. package/dist/components/button/button/index.js.map +1 -1
  70. package/dist/components/change-user-password-modal/change-user-password-modal/index.esm.js.map +1 -1
  71. package/dist/components/change-user-password-modal/change-user-password-modal/index.js.map +1 -1
  72. package/dist/components/checkbox/checkbox/index.esm.js.map +1 -1
  73. package/dist/components/checkbox/checkbox/index.js.map +1 -1
  74. package/dist/components/checkbox/checkbox.d.ts +1 -1
  75. package/dist/components/chip/chip/index.esm.js.map +1 -1
  76. package/dist/components/chip/chip/index.js.map +1 -1
  77. package/dist/components/chip-generator/chip-generator/index.esm.js.map +1 -1
  78. package/dist/components/chip-generator/chip-generator/index.js.map +1 -1
  79. package/dist/components/date-picker/date-picker/index.esm.js.map +1 -1
  80. package/dist/components/date-picker/date-picker/index.js.map +1 -1
  81. package/dist/components/date-picker/date-picker.d.ts +1 -1
  82. package/dist/components/date-time-picker/date-time-picker/index.esm.js.map +1 -1
  83. package/dist/components/date-time-picker/date-time-picker/index.js.map +1 -1
  84. package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
  85. package/dist/components/editor/custom-editor/index.js.map +1 -1
  86. package/dist/components/filter/components/delete-group/index.esm.js +0 -1
  87. package/dist/components/filter/components/delete-group/index.esm.js.map +1 -1
  88. package/dist/components/filter/components/delete-group/index.js +1 -1
  89. package/dist/components/filter/components/delete-group/index.js.map +1 -1
  90. package/dist/components/filter/filter/index.esm.js +1 -1
  91. package/dist/components/filter/filter/index.esm.js.map +1 -1
  92. package/dist/components/filter/filter/index.js +7 -7
  93. package/dist/components/filter/filter/index.js.map +1 -1
  94. package/dist/components/footer/footer.d.ts +1 -1
  95. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
  96. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
  97. package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
  98. package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
  99. package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
  100. package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
  101. package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
  102. package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
  103. package/dist/components/header/header/index.esm.js.map +1 -1
  104. package/dist/components/header/header/index.js.map +1 -1
  105. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  106. package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
  107. package/dist/components/header/redux/actionCreator/index.js +1 -1
  108. package/dist/components/header/redux/actionCreator/index.js.map +1 -1
  109. package/dist/components/icons/action/index.esm.js.map +1 -1
  110. package/dist/components/icons/action/index.js.map +1 -1
  111. package/dist/components/icons/action-arrow.d.ts +3 -3
  112. package/dist/components/icons/add-circle.d.ts +3 -3
  113. package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
  114. package/dist/components/icons/arrow-circle-down.d.ts +3 -3
  115. package/dist/components/icons/arrow-down-three.d.ts +3 -3
  116. package/dist/components/icons/arrow-down-two.d.ts +3 -3
  117. package/dist/components/icons/arrow-down.d.ts +3 -3
  118. package/dist/components/icons/arrow-up-down.d.ts +3 -3
  119. package/dist/components/icons/arrow-up-two.d.ts +3 -3
  120. package/dist/components/icons/assignments.d.ts +3 -3
  121. package/dist/components/icons/blank-circle.d.ts +3 -3
  122. package/dist/components/icons/block-filled.d.ts +3 -3
  123. package/dist/components/icons/calendar-add.d.ts +3 -3
  124. package/dist/components/icons/calendar.d.ts +3 -3
  125. package/dist/components/icons/checkbox-square.d.ts +3 -3
  126. package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
  127. package/dist/components/icons/clock.d.ts +3 -3
  128. package/dist/components/icons/close.d.ts +3 -3
  129. package/dist/components/icons/coin-outline.d.ts +3 -3
  130. package/dist/components/icons/copy.d.ts +3 -3
  131. package/dist/components/icons/coupon.d.ts +3 -3
  132. package/dist/components/icons/criteria/index.esm.js.map +1 -1
  133. package/dist/components/icons/criteria/index.js.map +1 -1
  134. package/dist/components/icons/cross/index.esm.js.map +1 -1
  135. package/dist/components/icons/cross/index.js.map +1 -1
  136. package/dist/components/icons/cross-hire.d.ts +3 -3
  137. package/dist/components/icons/custom-styled-icon.d.ts +3 -3
  138. package/dist/components/icons/dashboard.d.ts +3 -3
  139. package/dist/components/icons/document-download.d.ts +3 -3
  140. package/dist/components/icons/document.d.ts +3 -3
  141. package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
  142. package/dist/components/icons/dollar-circle.d.ts +3 -3
  143. package/dist/components/icons/edit.d.ts +3 -3
  144. package/dist/components/icons/email.d.ts +3 -3
  145. package/dist/components/icons/export.d.ts +3 -3
  146. package/dist/components/icons/eye-off.d.ts +3 -3
  147. package/dist/components/icons/eye-plus-circle.d.ts +3 -3
  148. package/dist/components/icons/eye.d.ts +3 -3
  149. package/dist/components/icons/filled-circle.d.ts +3 -3
  150. package/dist/components/icons/filter-remove.d.ts +3 -3
  151. package/dist/components/icons/filter.d.ts +3 -3
  152. package/dist/components/icons/folder-save.d.ts +3 -3
  153. package/dist/components/icons/grid.d.ts +3 -3
  154. package/dist/components/icons/hashtag.d.ts +3 -3
  155. package/dist/components/icons/image.d.ts +3 -3
  156. package/dist/components/icons/import.d.ts +3 -3
  157. package/dist/components/icons/info-circle.d.ts +3 -3
  158. package/dist/components/icons/info.d.ts +3 -3
  159. package/dist/components/icons/link-horizontal.d.ts +3 -3
  160. package/dist/components/icons/link.d.ts +3 -3
  161. package/dist/components/icons/location.d.ts +3 -3
  162. package/dist/components/icons/lowest-lead-time.d.ts +3 -3
  163. package/dist/components/icons/lowest-min-qty.d.ts +3 -3
  164. package/dist/components/icons/lowest-price.d.ts +3 -3
  165. package/dist/components/icons/more.d.ts +3 -3
  166. package/dist/components/icons/notification.d.ts +3 -3
  167. package/dist/components/icons/paper-clip.d.ts +3 -3
  168. package/dist/components/icons/paragraph.d.ts +3 -3
  169. package/dist/components/icons/payment-request.d.ts +3 -3
  170. package/dist/components/icons/phone.d.ts +3 -3
  171. package/dist/components/icons/printer.d.ts +3 -3
  172. package/dist/components/icons/process-calendar.d.ts +3 -3
  173. package/dist/components/icons/promotion.d.ts +3 -3
  174. package/dist/components/icons/radio-button.d.ts +3 -3
  175. package/dist/components/icons/receipt-filled.d.ts +3 -3
  176. package/dist/components/icons/receipt-outline.d.ts +3 -3
  177. package/dist/components/icons/receipt.d.ts +3 -3
  178. package/dist/components/icons/refresh-icon.d.ts +3 -3
  179. package/dist/components/icons/replace.d.ts +3 -3
  180. package/dist/components/icons/save.d.ts +3 -3
  181. package/dist/components/icons/search-status.d.ts +3 -3
  182. package/dist/components/icons/search.d.ts +3 -3
  183. package/dist/components/icons/settings-fallback.d.ts +3 -3
  184. package/dist/components/icons/share/index.esm.js.map +1 -1
  185. package/dist/components/icons/share/index.js.map +1 -1
  186. package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
  187. package/dist/components/icons/stacked-layer.d.ts +3 -3
  188. package/dist/components/icons/start-filled.d.ts +3 -3
  189. package/dist/components/icons/three-dot-icon.d.ts +3 -3
  190. package/dist/components/icons/tick-circle-filled.d.ts +3 -3
  191. package/dist/components/icons/tick-circle.d.ts +3 -3
  192. package/dist/components/icons/tick-octagon.d.ts +3 -3
  193. package/dist/components/icons/tick.d.ts +3 -3
  194. package/dist/components/icons/toggle-switch.d.ts +3 -3
  195. package/dist/components/icons/trash.d.ts +3 -3
  196. package/dist/components/icons/wave.d.ts +3 -3
  197. package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
  198. package/dist/components/icons/work-centre.d.ts +3 -3
  199. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  200. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  201. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
  202. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
  203. package/dist/components/label-value/label-value/index.esm.js.map +1 -1
  204. package/dist/components/label-value/label-value/index.js.map +1 -1
  205. package/dist/components/listing/listing/index.esm.js.map +1 -1
  206. package/dist/components/listing/listing/index.js.map +1 -1
  207. package/dist/components/loaders/erp-loader/index.esm.js.map +1 -1
  208. package/dist/components/loaders/erp-loader/index.js.map +1 -1
  209. package/dist/components/loaders/form-loader/index.esm.js.map +1 -1
  210. package/dist/components/loaders/form-loader/index.js.map +1 -1
  211. package/dist/components/loaders/modal-loader/index.esm.js.map +1 -1
  212. package/dist/components/loaders/modal-loader/index.js.map +1 -1
  213. package/dist/components/loaders/page-loader/index.esm.js.map +1 -1
  214. package/dist/components/loaders/page-loader/index.js.map +1 -1
  215. package/dist/components/location-select.d.ts +1 -1
  216. package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js.map +1 -1
  217. package/dist/components/material-editable-table/components/inline-edit-fields/index.js.map +1 -1
  218. package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +1 -1
  219. package/dist/components/material-editable-table/material-editable-table/index.js.map +1 -1
  220. package/dist/components/material-editable-table/material-editable-table.d.ts +1 -1
  221. package/dist/components/material-table/material-table.d.ts +1 -1
  222. package/dist/components/menu/menu/index.esm.js.map +1 -1
  223. package/dist/components/menu/menu/index.js.map +1 -1
  224. package/dist/components/modal/modal/index.esm.js.map +1 -1
  225. package/dist/components/modal/modal/index.js.map +1 -1
  226. package/dist/components/page-navigator/page-navigator/index.esm.js.map +1 -1
  227. package/dist/components/page-navigator/page-navigator/index.js.map +1 -1
  228. package/dist/components/phone-input/phone-input.d.ts +1 -1
  229. package/dist/components/providers/ERPUIProvider/index.esm.js.map +1 -1
  230. package/dist/components/providers/ERPUIProvider/index.js.map +1 -1
  231. package/dist/components/radio/radio.d.ts +1 -1
  232. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  233. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  234. package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
  235. package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
  236. package/dist/components/reset-password-modal/reset-password-modal/index.esm.js.map +1 -1
  237. package/dist/components/reset-password-modal/reset-password-modal/index.js.map +1 -1
  238. package/dist/components/search-bar/search-bar/index.esm.js.map +1 -1
  239. package/dist/components/search-bar/search-bar/index.js.map +1 -1
  240. package/dist/components/searchable-select/index.esm.js.map +1 -1
  241. package/dist/components/searchable-select/index.js.map +1 -1
  242. package/dist/components/select/controller/chip-or-placeholder/index.esm.js.map +1 -1
  243. package/dist/components/select/controller/chip-or-placeholder/index.js.map +1 -1
  244. package/dist/components/select/select/index.esm.js.map +1 -1
  245. package/dist/components/select/select/index.js.map +1 -1
  246. package/dist/components/select/select-search/index.esm.js.map +1 -1
  247. package/dist/components/select/select-search/index.js.map +1 -1
  248. package/dist/components/select/select.d.ts +1 -1
  249. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  250. package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
  251. package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
  252. package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
  253. package/dist/components/sub-header-doc/sub-header-doc/index.esm.js.map +1 -1
  254. package/dist/components/sub-header-doc/sub-header-doc/index.js.map +1 -1
  255. package/dist/components/switches/android-12-switch/index.esm.js.map +1 -1
  256. package/dist/components/switches/android-12-switch/index.js.map +1 -1
  257. package/dist/components/switches/android-12-switch.d.ts +3 -1
  258. package/dist/components/text-area/text-area/index.esm.js.map +1 -1
  259. package/dist/components/text-area/text-area/index.js.map +1 -1
  260. package/dist/components/text-field/text-field/index.esm.js.map +1 -1
  261. package/dist/components/text-field/text-field/index.js.map +1 -1
  262. package/dist/components/text-field/text-field.d.ts +1 -1
  263. package/dist/components/time-picker/time-picker/index.esm.js.map +1 -1
  264. package/dist/components/time-picker/time-picker/index.js.map +1 -1
  265. package/dist/components/time-picker/time-picker.d.ts +1 -1
  266. package/dist/components/toast/toast/index.esm.js.map +1 -1
  267. package/dist/components/toast/toast/index.js.map +1 -1
  268. package/dist/components/toggle/toggle/index.esm.js.map +1 -1
  269. package/dist/components/toggle/toggle/index.js.map +1 -1
  270. package/dist/components/typography/typography/index.esm.js.map +1 -1
  271. package/dist/components/typography/typography/index.js.map +1 -1
  272. package/dist/components/upload/upload/index.esm.js +2 -2
  273. package/dist/components/upload/upload/index.esm.js.map +1 -1
  274. package/dist/components/upload/upload/index.js +11 -11
  275. package/dist/components/upload/upload/index.js.map +1 -1
  276. package/dist/components/upload-media/upload-media.d.ts +1 -1
  277. package/dist/constants/defaultColumns/index.esm.js.map +1 -1
  278. package/dist/constants/defaultColumns/index.js.map +1 -1
  279. package/dist/constants/modules/index.esm.js.map +1 -1
  280. package/dist/constants/modules/index.js.map +1 -1
  281. package/dist/constants/pathnames/pathname/index.esm.js.map +1 -1
  282. package/dist/constants/pathnames/pathname/index.js.map +1 -1
  283. package/dist/constants/pathnames/pathname.accounting/index.esm.js.map +1 -1
  284. package/dist/constants/pathnames/pathname.accounting/index.js.map +1 -1
  285. package/dist/constants/pathnames/pathname.crm/index.esm.js.map +1 -1
  286. package/dist/constants/pathnames/pathname.crm/index.js.map +1 -1
  287. package/dist/constants/pathnames/pathname.document/index.esm.js.map +1 -1
  288. package/dist/constants/pathnames/pathname.document/index.js.map +1 -1
  289. package/dist/constants/pathnames/pathname.hrms/index.esm.js.map +1 -1
  290. package/dist/constants/pathnames/pathname.hrms/index.js.map +1 -1
  291. package/dist/constants/pathnames/pathname.inventory/index.esm.js.map +1 -1
  292. package/dist/constants/pathnames/pathname.inventory/index.js.map +1 -1
  293. package/dist/constants/pathnames/pathname.manufacturing/index.esm.js.map +1 -1
  294. package/dist/constants/pathnames/pathname.manufacturing/index.js.map +1 -1
  295. package/dist/constants/pathnames/pathname.office/index.esm.js.map +1 -1
  296. package/dist/constants/pathnames/pathname.office/index.js.map +1 -1
  297. package/dist/constants/pathnames/pathname.procurement/index.esm.js.map +1 -1
  298. package/dist/constants/pathnames/pathname.procurement/index.js.map +1 -1
  299. package/dist/constants/pathnames/pathname.project/index.esm.js.map +1 -1
  300. package/dist/constants/pathnames/pathname.project/index.js.map +1 -1
  301. package/dist/constants/pathnames/pathname.quotes/index.esm.js.map +1 -1
  302. package/dist/constants/pathnames/pathname.quotes/index.js.map +1 -1
  303. package/dist/constants/pathnames/pathname.rental/index.esm.js.map +1 -1
  304. package/dist/constants/pathnames/pathname.rental/index.js.map +1 -1
  305. package/dist/constants/pathnames/pathname.user/index.esm.js.map +1 -1
  306. package/dist/constants/pathnames/pathname.user/index.js.map +1 -1
  307. package/dist/constants/route-page-map/index.esm.js.map +1 -1
  308. package/dist/constants/route-page-map/index.js.map +1 -1
  309. package/dist/constants/status/index.esm.js.map +1 -1
  310. package/dist/constants/status/index.js.map +1 -1
  311. package/dist/contexts/AuthContext/index.esm.js +1 -1
  312. package/dist/contexts/AuthContext/index.esm.js.map +1 -1
  313. package/dist/contexts/AuthContext/index.js +1 -1
  314. package/dist/contexts/AuthContext/index.js.map +1 -1
  315. package/dist/contexts/languageContext/index.esm.js +1 -1
  316. package/dist/contexts/languageContext/index.esm.js.map +1 -1
  317. package/dist/contexts/languageContext/index.js +1 -1
  318. package/dist/contexts/languageContext/index.js.map +1 -1
  319. package/dist/contexts/page-context/index.esm.js.map +1 -1
  320. package/dist/contexts/page-context/index.js.map +1 -1
  321. package/dist/hooks/use-translations/index.esm.js.map +1 -1
  322. package/dist/hooks/use-translations/index.js.map +1 -1
  323. package/dist/hooks/useApi/index.esm.js.map +1 -1
  324. package/dist/hooks/useApi/index.js.map +1 -1
  325. package/dist/hooks/useDataFetcher/index.esm.js.map +1 -1
  326. package/dist/hooks/useDataFetcher/index.js.map +1 -1
  327. package/dist/layout/fullScreen/fullScreen/index.esm.js.map +1 -1
  328. package/dist/layout/fullScreen/fullScreen/index.js.map +1 -1
  329. package/dist/layout/sidebarScreen/sidebarScreen/index.esm.js.map +1 -1
  330. package/dist/layout/sidebarScreen/sidebarScreen/index.js.map +1 -1
  331. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.esm.js +1 -1
  332. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js +2 -2
  333. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js.map +1 -1
  334. package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
  335. package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
  336. package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
  337. package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
  338. package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
  339. package/dist/node_modules/@mui/system/createStyled/index.js.map +1 -1
  340. package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
  341. package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
  342. package/dist/node_modules/{material-react-table/node_modules/@tanstack → @tanstack}/react-virtual/dist/esm/index/index.esm.js +2 -2
  343. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +1 -0
  344. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +2 -0
  345. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +1 -0
  346. package/dist/node_modules/{@glideapps/glide-data-grid-cells/node_modules/@toast-ui → @toast-ui}/react-editor/dist/esm/index/index.esm.js +2 -2
  347. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +1 -0
  348. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +2 -0
  349. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +1 -0
  350. package/dist/node_modules/material-react-table/dist/index.esm/index.esm.js +1 -1
  351. package/dist/node_modules/material-react-table/dist/index.esm/index.js +1 -1
  352. package/dist/node_modules/material-react-table/dist/index.esm/index.js.map +1 -1
  353. package/dist/redux/actionCreator/index.esm.js.map +1 -1
  354. package/dist/redux/actionCreator/index.js.map +1 -1
  355. package/dist/redux/module-reducer/index.esm.js.map +1 -1
  356. package/dist/redux/module-reducer/index.js.map +1 -1
  357. package/dist/redux/store/index.esm.js.map +1 -1
  358. package/dist/redux/store/index.js.map +1 -1
  359. package/dist/server/index.esm.js.map +1 -1
  360. package/dist/server/index.js.map +1 -1
  361. package/dist/src/components/accordion/accordion.d.ts +1 -1
  362. package/dist/src/components/action-bar/action-bar.d.ts +1 -1
  363. package/dist/src/components/checkbox/checkbox.d.ts +1 -1
  364. package/dist/src/components/date-picker/date-picker.d.ts +1 -1
  365. package/dist/src/components/footer/footer.d.ts +1 -1
  366. package/dist/src/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
  367. package/dist/src/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
  368. package/dist/src/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
  369. package/dist/src/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
  370. package/dist/src/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
  371. package/dist/src/components/form-control/form-parser/form-switcher.d.ts +1 -1
  372. package/dist/src/components/icons/action-arrow.d.ts +3 -3
  373. package/dist/src/components/icons/add-circle.d.ts +3 -3
  374. package/dist/src/components/icons/arrow-bidirectional.d.ts +3 -3
  375. package/dist/src/components/icons/arrow-circle-down.d.ts +3 -3
  376. package/dist/src/components/icons/arrow-down-three.d.ts +3 -3
  377. package/dist/src/components/icons/arrow-down-two.d.ts +3 -3
  378. package/dist/src/components/icons/arrow-down.d.ts +3 -3
  379. package/dist/src/components/icons/arrow-up-down.d.ts +3 -3
  380. package/dist/src/components/icons/arrow-up-two.d.ts +3 -3
  381. package/dist/src/components/icons/assignments.d.ts +3 -3
  382. package/dist/src/components/icons/blank-circle.d.ts +3 -3
  383. package/dist/src/components/icons/block-filled.d.ts +3 -3
  384. package/dist/src/components/icons/calendar-add.d.ts +3 -3
  385. package/dist/src/components/icons/calendar.d.ts +3 -3
  386. package/dist/src/components/icons/checkbox-square.d.ts +3 -3
  387. package/dist/src/components/icons/circular-arrow-setting.d.ts +3 -3
  388. package/dist/src/components/icons/clock.d.ts +3 -3
  389. package/dist/src/components/icons/close.d.ts +3 -3
  390. package/dist/src/components/icons/coin-outline.d.ts +3 -3
  391. package/dist/src/components/icons/copy.d.ts +3 -3
  392. package/dist/src/components/icons/coupon.d.ts +3 -3
  393. package/dist/src/components/icons/cross-hire.d.ts +3 -3
  394. package/dist/src/components/icons/custom-styled-icon.d.ts +3 -3
  395. package/dist/src/components/icons/dashboard.d.ts +3 -3
  396. package/dist/src/components/icons/document-download.d.ts +3 -3
  397. package/dist/src/components/icons/document.d.ts +3 -3
  398. package/dist/src/components/icons/dollar-circle-filled.d.ts +3 -3
  399. package/dist/src/components/icons/dollar-circle.d.ts +3 -3
  400. package/dist/src/components/icons/edit.d.ts +3 -3
  401. package/dist/src/components/icons/email.d.ts +3 -3
  402. package/dist/src/components/icons/export.d.ts +3 -3
  403. package/dist/src/components/icons/eye-off.d.ts +3 -3
  404. package/dist/src/components/icons/eye-plus-circle.d.ts +3 -3
  405. package/dist/src/components/icons/eye.d.ts +3 -3
  406. package/dist/src/components/icons/filled-circle.d.ts +3 -3
  407. package/dist/src/components/icons/filter-remove.d.ts +3 -3
  408. package/dist/src/components/icons/filter.d.ts +3 -3
  409. package/dist/src/components/icons/folder-save.d.ts +3 -3
  410. package/dist/src/components/icons/grid.d.ts +3 -3
  411. package/dist/src/components/icons/hashtag.d.ts +3 -3
  412. package/dist/src/components/icons/image.d.ts +3 -3
  413. package/dist/src/components/icons/import.d.ts +3 -3
  414. package/dist/src/components/icons/info-circle.d.ts +3 -3
  415. package/dist/src/components/icons/info.d.ts +3 -3
  416. package/dist/src/components/icons/link-horizontal.d.ts +3 -3
  417. package/dist/src/components/icons/link.d.ts +3 -3
  418. package/dist/src/components/icons/location.d.ts +3 -3
  419. package/dist/src/components/icons/lowest-lead-time.d.ts +3 -3
  420. package/dist/src/components/icons/lowest-min-qty.d.ts +3 -3
  421. package/dist/src/components/icons/lowest-price.d.ts +3 -3
  422. package/dist/src/components/icons/more.d.ts +3 -3
  423. package/dist/src/components/icons/notification.d.ts +3 -3
  424. package/dist/src/components/icons/paper-clip.d.ts +3 -3
  425. package/dist/src/components/icons/paragraph.d.ts +3 -3
  426. package/dist/src/components/icons/payment-request.d.ts +3 -3
  427. package/dist/src/components/icons/phone.d.ts +3 -3
  428. package/dist/src/components/icons/printer.d.ts +3 -3
  429. package/dist/src/components/icons/process-calendar.d.ts +3 -3
  430. package/dist/src/components/icons/promotion.d.ts +3 -3
  431. package/dist/src/components/icons/radio-button.d.ts +3 -3
  432. package/dist/src/components/icons/receipt-filled.d.ts +3 -3
  433. package/dist/src/components/icons/receipt-outline.d.ts +3 -3
  434. package/dist/src/components/icons/receipt.d.ts +3 -3
  435. package/dist/src/components/icons/refresh-icon.d.ts +3 -3
  436. package/dist/src/components/icons/replace.d.ts +3 -3
  437. package/dist/src/components/icons/save.d.ts +3 -3
  438. package/dist/src/components/icons/search-status.d.ts +3 -3
  439. package/dist/src/components/icons/search.d.ts +3 -3
  440. package/dist/src/components/icons/settings-fallback.d.ts +3 -3
  441. package/dist/src/components/icons/sort-arrow-icon.d.ts +3 -3
  442. package/dist/src/components/icons/stacked-layer.d.ts +3 -3
  443. package/dist/src/components/icons/start-filled.d.ts +3 -3
  444. package/dist/src/components/icons/three-dot-icon.d.ts +3 -3
  445. package/dist/src/components/icons/tick-circle-filled.d.ts +3 -3
  446. package/dist/src/components/icons/tick-circle.d.ts +3 -3
  447. package/dist/src/components/icons/tick-octagon.d.ts +3 -3
  448. package/dist/src/components/icons/tick.d.ts +3 -3
  449. package/dist/src/components/icons/toggle-switch.d.ts +3 -3
  450. package/dist/src/components/icons/trash.d.ts +3 -3
  451. package/dist/src/components/icons/wave.d.ts +3 -3
  452. package/dist/src/components/icons/with-out-tick-octagon.d.ts +3 -3
  453. package/dist/src/components/icons/work-centre.d.ts +3 -3
  454. package/dist/src/components/location-select.d.ts +1 -1
  455. package/dist/src/components/material-editable-table/material-editable-table.d.ts +1 -1
  456. package/dist/src/components/material-table/material-table.d.ts +1 -1
  457. package/dist/src/components/phone-input/phone-input.d.ts +1 -1
  458. package/dist/src/components/radio/radio.d.ts +1 -1
  459. package/dist/src/components/select/select.d.ts +1 -1
  460. package/dist/src/components/switches/android-12-switch.d.ts +3 -1
  461. package/dist/src/components/text-field/text-field.d.ts +1 -1
  462. package/dist/src/components/time-picker/time-picker.d.ts +1 -1
  463. package/dist/src/components/upload-media/upload-media.d.ts +1 -1
  464. package/dist/src/utils/common-utility.d.ts +1 -1
  465. package/dist/style.css +69 -69
  466. package/dist/styles/index.d.ts +1 -1
  467. package/dist/theme/theme-impl/index.esm.js.map +1 -1
  468. package/dist/theme/theme-impl/index.js.map +1 -1
  469. package/dist/utils/api/index.esm.js +6 -6
  470. package/dist/utils/api/index.esm.js.map +1 -1
  471. package/dist/utils/api/index.js +1 -1
  472. package/dist/utils/api/index.js.map +1 -1
  473. package/dist/utils/common/index.esm.js +6 -6
  474. package/dist/utils/common/index.esm.js.map +1 -1
  475. package/dist/utils/common/index.js +1 -1
  476. package/dist/utils/common/index.js.map +1 -1
  477. package/dist/utils/common-utility.d.ts +1 -1
  478. package/dist/utils/date-range/index.esm.js.map +1 -1
  479. package/dist/utils/date-range/index.js.map +1 -1
  480. package/dist/utils/i18n/index.esm.js.map +1 -1
  481. package/dist/utils/i18n/index.js.map +1 -1
  482. package/dist/utils/menu-filter/index.esm.js.map +1 -1
  483. package/dist/utils/menu-filter/index.js.map +1 -1
  484. package/dist/views/404/index.esm.js.map +1 -1
  485. package/dist/views/404/index.js.map +1 -1
  486. package/dist/views/afterAuth/dashboard/dashboard/index.esm.js.map +1 -1
  487. package/dist/views/afterAuth/dashboard/dashboard/index.js.map +1 -1
  488. package/dist/views/afterAuth/dashboard/redux/actionCreator/index.esm.js.map +1 -1
  489. package/dist/views/afterAuth/dashboard/redux/actionCreator/index.js.map +1 -1
  490. package/dist/views/afterAuth/dashboard/redux/reducer/index.esm.js.map +1 -1
  491. package/dist/views/afterAuth/dashboard/redux/reducer/index.js.map +1 -1
  492. package/dist/views/afterAuth/dashboard/redux/state/index.esm.js.map +1 -1
  493. package/dist/views/afterAuth/dashboard/redux/state/index.js.map +1 -1
  494. package/dist/views/afterAuth/page-view/page-view/index.esm.js.map +1 -1
  495. package/dist/views/afterAuth/page-view/page-view/index.js.map +1 -1
  496. package/dist/views/afterAuth/page-view/redux/actionCreator/index.esm.js.map +1 -1
  497. package/dist/views/afterAuth/page-view/redux/actionCreator/index.js.map +1 -1
  498. package/dist/views/afterAuth/page-view/redux/reducer/index.esm.js.map +1 -1
  499. package/dist/views/afterAuth/page-view/redux/reducer/index.js.map +1 -1
  500. package/dist/views/afterAuth/page-view/redux/state/index.esm.js.map +1 -1
  501. package/dist/views/afterAuth/page-view/redux/state/index.js.map +1 -1
  502. package/dist/views/afterAuth/page-view/utils/default-data/index.esm.js.map +1 -1
  503. package/dist/views/afterAuth/page-view/utils/default-data/index.js.map +1 -1
  504. package/dist/views/afterAuth/page-view/utils/local-data/index.esm.js.map +1 -1
  505. package/dist/views/afterAuth/page-view/utils/local-data/index.js.map +1 -1
  506. package/dist/views/beforeAuth/change-password/change-password/index.esm.js.map +1 -1
  507. package/dist/views/beforeAuth/change-password/change-password/index.js.map +1 -1
  508. package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js.map +1 -1
  509. package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js.map +1 -1
  510. package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js.map +1 -1
  511. package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js.map +1 -1
  512. package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js.map +1 -1
  513. package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js.map +1 -1
  514. package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js.map +1 -1
  515. package/dist/views/beforeAuth/components/grid-data/grid-data/index.js.map +1 -1
  516. package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js.map +1 -1
  517. package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js.map +1 -1
  518. package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js.map +1 -1
  519. package/dist/views/beforeAuth/components/list-content/column-raw/index.js.map +1 -1
  520. package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js.map +1 -1
  521. package/dist/views/beforeAuth/components/list-content/list-data/index.js.map +1 -1
  522. package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js.map +1 -1
  523. package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js.map +1 -1
  524. package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.esm.js.map +1 -1
  525. package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.js.map +1 -1
  526. package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.esm.js.map +1 -1
  527. package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.js.map +1 -1
  528. package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js.map +1 -1
  529. package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js.map +1 -1
  530. package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.esm.js.map +1 -1
  531. package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.js.map +1 -1
  532. package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js.map +1 -1
  533. package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js.map +1 -1
  534. package/dist/views/beforeAuth/forgot-password/forgot-password/index.esm.js.map +1 -1
  535. package/dist/views/beforeAuth/forgot-password/forgot-password/index.js.map +1 -1
  536. package/dist/views/beforeAuth/landing/landing/index.esm.js.map +1 -1
  537. package/dist/views/beforeAuth/landing/landing/index.js.map +1 -1
  538. package/dist/views/beforeAuth/reset-password/reset-password/index.esm.js.map +1 -1
  539. package/dist/views/beforeAuth/reset-password/reset-password/index.js.map +1 -1
  540. package/dist/views/form-builder/custom-form/index.esm.js.map +1 -1
  541. package/dist/views/form-builder/custom-form/index.js.map +1 -1
  542. package/dist/views/form-builder/element-edit-forms/checkbox/index.esm.js.map +1 -1
  543. package/dist/views/form-builder/element-edit-forms/checkbox/index.js.map +1 -1
  544. package/dist/views/form-builder/element-edit-forms/column-width/index.esm.js.map +1 -1
  545. package/dist/views/form-builder/element-edit-forms/column-width/index.js.map +1 -1
  546. package/dist/views/form-builder/element-edit-forms/field-select/index.esm.js.map +1 -1
  547. package/dist/views/form-builder/element-edit-forms/field-select/index.js.map +1 -1
  548. package/dist/views/form-builder/element-edit-forms/section/index.esm.js.map +1 -1
  549. package/dist/views/form-builder/element-edit-forms/section/index.js.map +1 -1
  550. package/dist/views/form-builder/element-edit-forms/select/index.esm.js.map +1 -1
  551. package/dist/views/form-builder/element-edit-forms/select/index.js.map +1 -1
  552. package/dist/views/form-builder/element-edit-forms/table-form/index.esm.js.map +1 -1
  553. package/dist/views/form-builder/element-edit-forms/table-form/index.js.map +1 -1
  554. package/dist/views/form-builder/element-edit-forms/text/index.esm.js.map +1 -1
  555. package/dist/views/form-builder/element-edit-forms/text/index.js.map +1 -1
  556. package/dist/views/form-builder/field_properties/index.esm.js.map +1 -1
  557. package/dist/views/form-builder/field_properties/index.js.map +1 -1
  558. package/dist/views/form-builder/form-fields/index.esm.js.map +1 -1
  559. package/dist/views/form-builder/form-fields/index.js.map +1 -1
  560. package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
  561. package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
  562. package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
  563. package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
  564. package/dist/views/form-builder/redux/reducer/index.esm.js.map +1 -1
  565. package/dist/views/form-builder/redux/reducer/index.js.map +1 -1
  566. package/dist/views/form-builder/redux/state/index.esm.js.map +1 -1
  567. package/dist/views/form-builder/redux/state/index.js.map +1 -1
  568. package/dist/views/form-builder/utils/common/index.esm.js.map +1 -1
  569. package/dist/views/form-builder/utils/common/index.js.map +1 -1
  570. package/dist/views/index.d.ts +8 -8
  571. package/dist/views/privateRoute/index.esm.js.map +1 -1
  572. package/dist/views/privateRoute/index.js.map +1 -1
  573. package/dist/views/template-editor/add-template/add-template/index.esm.js.map +1 -1
  574. package/dist/views/template-editor/add-template/add-template/index.js.map +1 -1
  575. package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.esm.js.map +1 -1
  576. package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.js.map +1 -1
  577. package/dist/views/template-editor/components/EditorCanvas/index.esm.js.map +1 -1
  578. package/dist/views/template-editor/components/EditorCanvas/index.js.map +1 -1
  579. package/dist/views/template-editor/components/EditorHeader/index.esm.js.map +1 -1
  580. package/dist/views/template-editor/components/EditorHeader/index.js.map +1 -1
  581. package/dist/views/template-editor/components/EditorSection/index.esm.js.map +1 -1
  582. package/dist/views/template-editor/components/EditorSection/index.js.map +1 -1
  583. package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
  584. package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
  585. package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
  586. package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
  587. package/dist/views/template-editor/components/SectionFlowEditor/index.esm.js.map +1 -1
  588. package/dist/views/template-editor/components/SectionFlowEditor/index.js.map +1 -1
  589. package/dist/views/template-editor/components/SectionFormatPanel/index.esm.js.map +1 -1
  590. package/dist/views/template-editor/components/SectionFormatPanel/index.js.map +1 -1
  591. package/dist/views/template-editor/components/controllers/AlignmentControl/index.esm.js.map +1 -1
  592. package/dist/views/template-editor/components/controllers/AlignmentControl/index.js.map +1 -1
  593. package/dist/views/template-editor/components/controllers/ButtonControls/index.esm.js.map +1 -1
  594. package/dist/views/template-editor/components/controllers/ButtonControls/index.js.map +1 -1
  595. package/dist/views/template-editor/components/controllers/CodeControls/index.esm.js.map +1 -1
  596. package/dist/views/template-editor/components/controllers/CodeControls/index.js.map +1 -1
  597. package/dist/views/template-editor/components/controllers/DividerControls/index.esm.js.map +1 -1
  598. package/dist/views/template-editor/components/controllers/DividerControls/index.js.map +1 -1
  599. package/dist/views/template-editor/components/controllers/ImageControls/index.esm.js.map +1 -1
  600. package/dist/views/template-editor/components/controllers/ImageControls/index.js.map +1 -1
  601. package/dist/views/template-editor/components/controllers/SignatureControls/index.esm.js.map +1 -1
  602. package/dist/views/template-editor/components/controllers/SignatureControls/index.js.map +1 -1
  603. package/dist/views/template-editor/components/controllers/TableControls/index.esm.js.map +1 -1
  604. package/dist/views/template-editor/components/controllers/TableControls/index.js.map +1 -1
  605. package/dist/views/template-editor/components/controllers/TextControls/index.esm.js.map +1 -1
  606. package/dist/views/template-editor/components/controllers/TextControls/index.js.map +1 -1
  607. package/dist/views/template-editor/components/controllers/border-control/index.esm.js.map +1 -1
  608. package/dist/views/template-editor/components/controllers/border-control/index.js.map +1 -1
  609. package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.esm.js.map +1 -1
  610. package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.js.map +1 -1
  611. package/dist/views/template-editor/routes/index.esm.js.map +1 -1
  612. package/dist/views/template-editor/routes/index.js.map +1 -1
  613. package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.esm.js.map +1 -1
  614. package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.js.map +1 -1
  615. package/dist/views/template-editor/template-modal/template-modal/index.esm.js.map +1 -1
  616. package/dist/views/template-editor/template-modal/template-modal/index.js.map +1 -1
  617. package/dist/views/template-editor/template-name-modal/template-name-modal/index.esm.js.map +1 -1
  618. package/dist/views/template-editor/template-name-modal/template-name-modal/index.js.map +1 -1
  619. package/dist/views/template-editor/templates/index.esm.js +1 -1
  620. package/dist/views/template-editor/templates/index.esm.js.map +1 -1
  621. package/dist/views/template-editor/templates/index.js +1 -1
  622. package/dist/views/template-editor/templates/index.js.map +1 -1
  623. package/dist/views/template-editor/utils/common/index.esm.js.map +1 -1
  624. package/dist/views/template-editor/utils/common/index.js.map +1 -1
  625. package/dist/views/template-editor/utils/constant/index.esm.js.map +1 -1
  626. package/dist/views/template-editor/utils/constant/index.js.map +1 -1
  627. package/dist/views/template-editor/utils/default-data/index.esm.js.map +1 -1
  628. package/dist/views/template-editor/utils/default-data/index.js.map +1 -1
  629. package/dist/views/template-editor/utils/style-extractor/index.esm.js.map +1 -1
  630. package/dist/views/template-editor/utils/style-extractor/index.js.map +1 -1
  631. package/dist/vite-env.d.ts +23 -23
  632. package/package.json +299 -299
  633. package/src/styles/README.md +287 -287
  634. package/src/styles/all.scss +7 -7
  635. package/src/styles/animations.scss +5 -5
  636. package/src/styles/css/reset.css +1 -1
  637. package/src/styles/index.d.ts +1 -1
  638. package/src/styles/index.ts +1 -1
  639. package/src/styles/mixins.scss +5 -5
  640. package/src/styles/sass/main.scss +11 -11
  641. package/src/styles/utils.scss +5 -5
  642. package/src/styles/variables.scss +4 -4
  643. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +0 -1
  644. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +0 -2
  645. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +0 -1
  646. package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +0 -1
  647. package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +0 -2
  648. package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\r\nimport {\r\n\tpostV1AuthChangePassword,\r\n\tpostV1AuthForgotPassword,\r\n\tpostV1AuthChangeUserPassword,\r\n\t// getV1UserId,\r\n\tpostV1AuthLogin,\r\n\tpostV1AuthResetPassword,\r\n\tsetBaseUrl,\r\n\tpostV1AuthChangeUserPasswordByAdmin\r\n} from '../api-client/api.rbac/api';\r\nimport { auth } from '../constants/auth';\r\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\r\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { generateRouteWithId } from '../utils/route-utils';\r\nimport {\r\n\tPathnameAccounting,\r\n\tPathnameGenerator\r\n} from '../constants/pathnames/pathname.accounting';\r\n\r\nimport {\r\n\tPathnameInventory,\r\n\tPathnameGenerator as PathnameGeneratorInventory\r\n} from '../constants/pathnames/pathname.inventory';\r\n\r\nimport {\r\n\tPathnameManufacturing,\r\n\tPathnameGenerator as PathnameGeneratorManufacuring\r\n} from '../constants/pathnames/pathname.manufacturing';\r\n\r\nimport {\r\n\tPathnamePurchase,\r\n\tPathnameGenerator as PathnameGeneratorPurchase\r\n} from '../constants/pathnames/pathname.procurement';\r\n\r\nimport {\r\n\tPathnameCrm,\r\n\tPathnameGenerator as PathnameGeneratorCrm\r\n} from '../constants/pathnames/pathname.crm';\r\n\r\nimport {\r\n\tPathnameRental,\r\n\tPathnameGenerator as PathnameGeneratorRental\r\n} from '../constants/pathnames/pathname.rental';\r\n\r\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\r\n\r\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\r\nexport interface LoginFormValues {\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface resetFormValues {\r\n\temail: string;\r\n}\r\n\r\nexport interface resetPasswordValues {\r\n\ttoken: string;\r\n}\r\n\r\nexport interface changePasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\nexport interface changeUserPasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\ninterface ERPApiUser {\r\n\tid: string | number;\r\n\tfirst_name: string;\r\n\tlast_name: string;\r\n\tmiddle_name: string;\r\n\tcountry_code: string;\r\n\temail: string;\r\n\tcreated_by: any;\r\n\tupdated_by: any;\r\n\tcreated_at: string;\r\n\tupdated_at: string;\r\n\trole_id: string;\r\n\tdepartment_id: number;\r\n\tis_deleted: number;\r\n\tdeleted_at: string | null;\r\n\tdeleted_by: any;\r\n\ttoken: string;\r\n\tprofile_image: string;\r\n\tcurrency_data?: {\r\n\t\tid: number;\r\n\t\tsymbol: string;\r\n\t\tcurrency_name: string;\r\n\t\tnumber_format:string;\r\n\t\tposition: string | null;\r\n\t\tfraction_unit: string | null\r\n\t};\r\n\taccessCompanies?: any[]\r\n}\r\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\r\n\tfull_name: string;\r\n\tcompany_id: string;\r\n}\r\n\r\ninterface DefaultProviderProps {\r\n\tuser: ERPUser | null;\r\n\tloading: boolean;\r\n\tauthToken: string;\r\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\r\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n\tlogin: (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tlogout: () => Promise<void>;\r\n\tforgotPassword: (\r\n\t\tparams: resetFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tresetPassword: (\r\n\t\tparams: resetPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangePassword: (\r\n\t\tparams: changePasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangeUserPassword: (\r\n\t\tparams: changeUserPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n}\r\n\r\nconst defaultProvider: DefaultProviderProps = {\r\n\tuser: null,\r\n\tloading: true,\r\n\tauthToken: '',\r\n\tsetUser: () => null,\r\n\tsetLoading: () => Boolean,\r\n\tlogin: () => Promise.resolve(),\r\n\tlogout: () => Promise.resolve(),\r\n\tforgotPassword: () => Promise.resolve(),\r\n\tresetPassword: () => Promise.resolve(),\r\n\tchangePassword: () => Promise.resolve(),\r\n\tchangeUserPassword: () => Promise.resolve()\r\n};\r\n\r\nconst AuthContext = createContext(defaultProvider);\r\n\r\ninterface AuthProviderProps {\r\n\tchildren: React.ReactNode;\r\n}\r\n\r\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\r\n\r\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\r\n\t// ** States\r\n\tconst [user, setUser] = useState(defaultProvider.user);\r\n\tconst [authToken, setAuthToken] = useState<string>('');\r\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\r\n\tconst socketRef = useRef<Socket | null>(null);\r\n\r\n\t// ** Hooks\r\n\tconst navigate = useNavigate();\r\n\t// const location = useLocation();\r\n\tconst isJsonParse = (string?: string | null) => {\r\n\t\tif (!string) return false;\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(string);\r\n\t\t} catch (error) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNotificationUrl = (data: any) => {\r\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\r\n\t\tconst key = moduleName.toLowerCase();\r\n\r\n\t\tconst routeMap: Record<string, () => string> = {\r\n\t\t\t'sales invoice': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\r\n\r\n\t\t\t'asset transfers': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'budgets': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\r\n\r\n\t\t\t'cash expense': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\r\n\r\n\t\t\t'credit notes': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'debit notes': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'expense reimbursement': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\r\n\r\n\t\t\t'journal entries': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'payment entries': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'purchase invoice': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\r\n\r\n\t\t\t'stock transfer': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'bills of materials': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\r\n\r\n\t\t\t'purchase agreement': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'purchase orders': () =>\r\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\r\n\r\n\t\t\t'purchase request': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'vra': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sl customer returns': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sales order': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental order': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'replacement order': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental agreement': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'cross hire order': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'cross hire request': () =>\r\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\r\n\t\t};\r\n\r\n\t\treturn routeMap[key]?.() || '/dashboard';\r\n\t};\r\n\r\n\r\n\t// const initAuth = async () => {\r\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t// \tconst storedUser: ERPUser =\r\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\r\n\t// \tif (storedToken && storedUser) {\r\n\t// \t\ttry {\r\n\t// \t\t\tconst userData = await getV1UserId({\r\n\t// \t\t\t\t'x-token': storedToken,\r\n\t// \t\t\t\tid: String(storedUser.id)\r\n\t// \t\t\t});\r\n\t// \t\t} catch (error) {\r\n\t// \t\t}\r\n\t// \t} else {\r\n\t// \t\tsetLoading(false);\r\n\t// \t}\r\n\t// \tif (storedToken && storedUser) {\r\n\t// \t\tsetUser(storedUser);\r\n\t// setLoading(false);\r\n\t// \t} else {\r\n\t// \t\thandleLogout();\r\n\t// setLoading(false);\r\n\t// \t}\r\n\t// };\r\n\r\n\t// useEffect(() => {\r\n\t// setLoading(true)\r\n\t// \tinitAuth();\r\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t// \tif (!storedToken) {\r\n\t// \t\tsetUser(null);\r\n\t// \t} else {\r\n\t// \t\tsetLoading(false);\r\n\t// \t}\r\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\r\n\t// }, [location.pathname]);\r\n\r\n\t// useEffect(() => {\r\n\t// \tsetLoading(true);\r\n\t// \tinitAuth();\r\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t// \tif (!storedToken) {\r\n\t// \t\tsetLoading(false);\r\n\t// \t\tnavigate(Pathname.LOGIN);\r\n\t// \t}\r\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t// }, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\t// initAuth()\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tconst storedUser =\r\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\r\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\r\n\t\tconst currentPath = window.location.pathname;\r\n\t\tif (!storedToken && !storedUser) {\r\n\t\t\tif (!publicRoutes.includes(currentPath)) {\r\n\t\t\t\tnavigate(Pathname.LOGIN);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t} else {\r\n\t\t\tsetUser(storedUser);\r\n\t\t\tsetAuthToken(storedToken || '');\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!authToken) {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current?.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\r\n\t\t\ttransports: [\"websocket\"],\r\n\t\t\tauth: { token: authToken },\r\n\t\t\tpath: \"/socket.io/\",\r\n\t\t\t\r\n\t\t});\r\n\t\tsocketRef.current = socket;\r\n\r\n\t\tsocket.on(\"connect\", () => {\r\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\r\n\t\t\tsocket.onAny((event, ...args) => {\r\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\r\n\t\t\t});\r\n\t\t});\r\n\t\t\r\n\t\t// socket event handler\r\n\t\tsocket.on('notification', (data) => {\r\n\t\tconst { message, notificationData } = data || {};\r\n\t\tlet notificationContent: React.ReactNode = message;\r\n\t\tconst url = getNotificationUrl(data);\r\n\r\n\t\tif (notificationData) {\r\n\t\t\tconst { notification_type } = notificationData;\r\n\r\n\t\t\tswitch (notification_type) {\r\n\t\t\t\tcase 'addApprovers': {\r\n\t\t\t\t\t\r\n\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase 'change_approval_status': {\r\n\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdefault: {\r\n\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tenqueueSnackbar(String(message), {\r\n\t\t\tvariant: 'default',\r\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n\t\t\tautoHideDuration: 5000,\r\n\t\t\tcontent: (key) => (\r\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\r\n\t\t\t),\r\n\t\t});\r\n\t\t});\r\n\r\n\r\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\r\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\r\n\t\t});\r\n\r\n\t\tsocket.on(\"error\", (errMsg) => {\r\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\r\n\t\t\tconsole.error(\"Socket error:\", errMsg);\r\n\t\t});\r\n\r\n\t\t// Clean up on unmount\r\n\t\treturn () => {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t};\r\n\t}, [authToken]);\r\n\r\n\tconst handleLogin = async (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => {\r\n\t\tsetLoading(true);\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tif (storedToken && user) {\r\n\t\t\treturn navigate(Pathname.DASHBOARD);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\r\n\t\t\tif (loginUser.success) {\r\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\r\n\t\t\t\t\tconst userData: ERPUser = {\r\n\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\r\n\t\t\t\t\t};\r\n\t\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\t\tauth.storageUserKeyName,\r\n\t\t\t\t\t\tJSON.stringify(userData)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tsetUser(userData);\r\n\t\t\t\t\tsetAuthToken(data.token);\r\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\tdelete data.token;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleLogout = async () => {\r\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\r\n\t\tsetUser(null);\r\n\t\tsetAuthToken('');\r\n\t\tnavigate(Pathname.LOGIN);\r\n\t};\r\n\r\n\tconst handleForgotPassword = async (params: resetFormValues,\r\n\t\tcallback: (type: boolean, err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(true, \"Reset Link sent to your email\");\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false, message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleResetPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(response);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangePassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\r\n\t\t\tcallback(null);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcallback(\"reset\");\r\n\t}\r\n\r\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconst values = {\r\n\t\tuser,\r\n\t\tauthToken,\r\n\t\tloading,\r\n\t\tsetUser,\r\n\t\tsetLoading,\r\n\t\tlogin: handleLogin,\r\n\t\tlogout: handleLogout,\r\n\t\tforgotPassword: handleForgotPassword,\r\n\t\tresetPassword: handleResetPassword,\r\n\t\tchangePassword: handleChangePassword,\r\n\t\tchangeUserPassword: handleChangeUserPassword,\r\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\r\n\t};\r\n\r\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\r\n};\r\n\r\nexport { AuthContext, AuthProvider };\r\n"],"names":["defaultProvider","user","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","setBaseUrl","children","useState","setAuthToken","socketRef","useRef","navigate","useNavigate","isJsonParse","string","JSON","parse","error","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","publicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","currentPath","location","pathname","includes","current","_a","disconnect","socket","io","transports","token","path","on","onAny","event","args","data","message","notificationData","notificationContent","url","moduleName","moduleId","routeMap","generateRouteWithId","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","toString","VIEW_ASSET_TRANSFER","budgets","VIEW_BUDGET","VIEW_CASH_EXPENSE","VIEW_CREDIT_NOTE","VIEW_DEBIT_NOTE","VIEW_EXPENSE_REIMBURSEMENT","VIEW_JOURNAL_ENTRY","VIEW_PAYMENT_ENTRY","VIEW_PURCHASE_INVOICE","PathnameGeneratorInventory","PathnameInventory","VIEW_STOCK_TRANSFER","PathnameGeneratorManufacuring","PathnameManufacturing","VIEW_BILL_OF_MATERIAL","PathnameGeneratorPurchase","PathnamePurchase","VIEW_PURCHASE_AGREEMENT","is_rental","RENTALROUTES","VIEW","VIEW_PURCHASE_ORDER","vra","VIEW_VENDOR_RETURNS","PathnameGeneratorCrm","PathnameCrm","VIEW_CUSTOMER_RETURNS","VIEW_SALES_ORDER","PathnameGeneratorRental","PathnameRental","VIEW_RENTAL_ORDER","VIEW_AGREEMENT","VIEW_CROSS_HIRE_ORDER","VIEW_CROSS_HIRE_REQUEST","toLowerCase","call","getNotificationUrl","notification_type","enqueueSnackbar","String","variant","anchorOrigin","vertical","horizontal","autoHideDuration","content","key","jsx","CustomSnackbar","snackbarKey","linkUrl","errMsg","values","async","params","callback","DASHBOARD","loginUser","postV1AuthLogin","getToken","success","setItem","userData","full_name","first_name","last_name","stringify","Error","removeItem","storageAccessKeyName","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","value"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format:string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n\tcompany_id: string;\n}\n\ninterface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n}\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\t// const location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\n\t// const initAuth = async () => {\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tconst storedUser: ERPUser =\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\n\t// \tif (storedToken && storedUser) {\n\t// \t\ttry {\n\t// \t\t\tconst userData = await getV1UserId({\n\t// \t\t\t\t'x-token': storedToken,\n\t// \t\t\t\tid: String(storedUser.id)\n\t// \t\t\t});\n\t// \t\t} catch (error) {\n\t// \t\t}\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \tif (storedToken && storedUser) {\n\t// \t\tsetUser(storedUser);\n\t// setLoading(false);\n\t// \t} else {\n\t// \t\thandleLogout();\n\t// setLoading(false);\n\t// \t}\n\t// };\n\n\t// useEffect(() => {\n\t// setLoading(true)\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetUser(null);\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, [location.pathname]);\n\n\t// useEffect(() => {\n\t// \tsetLoading(true);\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetLoading(false);\n\t// \t\tnavigate(Pathname.LOGIN);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tif (!publicRoutes.includes(currentPath)) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\t\t\t\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\t\t\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\tconst { message, notificationData } = data || {};\n\t\tlet notificationContent: React.ReactNode = message;\n\t\tconst url = getNotificationUrl(data);\n\n\t\tif (notificationData) {\n\t\t\tconst { notification_type } = notificationData;\n\n\t\t\tswitch (notification_type) {\n\t\t\t\tcase 'addApprovers': {\n\t\t\t\t\t\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tenqueueSnackbar(String(message), {\n\t\t\tvariant: 'default',\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\tautoHideDuration: 5000,\n\t\t\tcontent: (key) => (\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\n\t\t\t),\n\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tauth.storageUserKeyName,\n\t\t\t\t\t\tJSON.stringify(userData)\n\t\t\t\t\t);\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tdelete data.token;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n"],"names":["defaultProvider","user","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","setBaseUrl","children","useState","setAuthToken","socketRef","useRef","navigate","useNavigate","isJsonParse","string","JSON","parse","error","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","publicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","currentPath","location","pathname","includes","current","_a","disconnect","socket","io","transports","token","path","on","onAny","event","args","data","message","notificationData","notificationContent","url","moduleName","moduleId","routeMap","generateRouteWithId","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","toString","VIEW_ASSET_TRANSFER","budgets","VIEW_BUDGET","VIEW_CASH_EXPENSE","VIEW_CREDIT_NOTE","VIEW_DEBIT_NOTE","VIEW_EXPENSE_REIMBURSEMENT","VIEW_JOURNAL_ENTRY","VIEW_PAYMENT_ENTRY","VIEW_PURCHASE_INVOICE","PathnameGeneratorInventory","PathnameInventory","VIEW_STOCK_TRANSFER","PathnameGeneratorManufacuring","PathnameManufacturing","VIEW_BILL_OF_MATERIAL","PathnameGeneratorPurchase","PathnamePurchase","VIEW_PURCHASE_AGREEMENT","is_rental","RENTALROUTES","VIEW","VIEW_PURCHASE_ORDER","vra","VIEW_VENDOR_RETURNS","PathnameGeneratorCrm","PathnameCrm","VIEW_CUSTOMER_RETURNS","VIEW_SALES_ORDER","PathnameGeneratorRental","PathnameRental","VIEW_RENTAL_ORDER","VIEW_AGREEMENT","VIEW_CROSS_HIRE_ORDER","VIEW_CROSS_HIRE_REQUEST","toLowerCase","call","getNotificationUrl","notification_type","enqueueSnackbar","String","variant","anchorOrigin","vertical","horizontal","autoHideDuration","content","key","jsx","CustomSnackbar","snackbarKey","linkUrl","errMsg","values","async","params","callback","DASHBOARD","loginUser","postV1AuthLogin","getToken","success","setItem","userData","full_name","first_name","last_name","stringify","Error","removeItem","storageAccessKeyName","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","value"],"mappings":"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"}
@@ -80,7 +80,7 @@ const LanguageProvider = ({ children }) => {
80
80
  const [state, dispatch] = useReducer(languageReducer, initialState);
81
81
  const { i18n } = useTranslation();
82
82
  useEffect(() => {
83
- setBaseUrl(`${"https://apidev.erpforce.co"}/rbac`);
83
+ setBaseUrl(`${"http://127.0.0.1:4011"}/rbac`);
84
84
  }, []);
85
85
  const safeChangeLanguage = async (langCode) => {
86
86
  if (i18n && typeof i18n.changeLanguage === "function") {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\r\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DEFAULT_LANG } from '../constants/all-language';\r\nimport { getToken } from '../utils/common';\r\nimport { setRoleURL } from '../utils/server';\r\nimport { getV1Languages } from '../api-client/api.system-feature/api';\r\n// import ErpLoader from '../components/loader/erp-loader';\r\n\r\n// Types\r\ninterface ILanguage {\r\n label: string;\r\n code: string;\r\n direction: string;\r\n}\r\n\r\ninterface LanguageState {\r\n languages: ILanguage[];\r\n currentLanguage: ILanguage | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n isFallbackActive: boolean; // Track if we're using fallback\r\n}\r\n\r\ninterface LanguageContextType extends LanguageState {\r\n changeLanguage: (langCode: string) => void;\r\n fetchLanguages: () => Promise<void>;\r\n}\r\n\r\n// Define fallback languages in order of preference - English first\r\nconst FALLBACK_LANGUAGES = [\r\n 'en', // English as primary fallback\r\n 'en-US', // US English as secondary\r\n DEFAULT_LANG, // Then default language\r\n];\r\n\r\n// Create English fallback language object\r\nconst createEnglishFallback = (): ILanguage => ({\r\n code: 'en',\r\n label: 'English',\r\n direction: 'ltr'\r\n});\r\n\r\n// Action types\r\ntype LanguageAction =\r\n | { type: 'FETCH_LANGUAGES_START' }\r\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\r\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\r\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\r\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\r\n\r\n// Initial state\r\nconst initialState: LanguageState = {\r\n languages: [],\r\n currentLanguage: null,\r\n isLoading: false,\r\n error: null,\r\n isFallbackActive: false,\r\n};\r\n\r\n// Helper function to find the best available language\r\nconst findBestAvailableLanguage = (\r\n languages: ILanguage[], \r\n preferredCode?: string\r\n): ILanguage | null => {\r\n if (!languages || languages.length === 0) return null;\r\n\r\n // First try the preferred language if provided\r\n if (preferredCode) {\r\n const preferred = languages.find(lang => lang.code === preferredCode);\r\n if (preferred) return preferred;\r\n }\r\n\r\n // Try fallback languages in order (English first)\r\n for (const fallbackCode of FALLBACK_LANGUAGES) {\r\n const fallback = languages.find(lang => lang.code === fallbackCode);\r\n if (fallback) return fallback;\r\n }\r\n\r\n // If no fallbacks found, return the first available language\r\n return languages[0] || null;\r\n};\r\n\r\n// Reducer\r\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\r\n switch (action.type) {\r\n case 'FETCH_LANGUAGES_START':\r\n return {\r\n ...state,\r\n isLoading: true,\r\n error: null,\r\n };\r\n case 'FETCH_LANGUAGES_SUCCESS':\r\n return {\r\n ...state,\r\n languages: action.payload,\r\n isLoading: false,\r\n error: null,\r\n isFallbackActive: false,\r\n };\r\n case 'FETCH_LANGUAGES_ERROR':\r\n return {\r\n ...state,\r\n isLoading: false,\r\n error: action.payload,\r\n isFallbackActive: true, \r\n };\r\n case 'SET_CURRENT_LANGUAGE':\r\n return {\r\n ...state,\r\n currentLanguage: action.payload,\r\n isFallbackActive: action.isFallback || false,\r\n };\r\n case 'SET_FALLBACK_ACTIVE':\r\n return {\r\n ...state,\r\n isFallbackActive: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n// Create context\r\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\r\n\r\n// Provider component\r\ninterface LanguageProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\r\n const [state, dispatch] = useReducer(languageReducer, initialState);\r\n const { i18n } = useTranslation();\r\n\r\n // Initialize role URL\r\n useEffect(() => {\r\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\r\n }, []);\r\n\r\n // Guarded i18n changeLanguage call\r\n const safeChangeLanguage = async (langCode: string) => {\r\n if (i18n && typeof i18n.changeLanguage === 'function') {\r\n try {\r\n await i18n.changeLanguage(langCode);\r\n } catch (error) {\r\n console.warn(`Failed to change language to \"${langCode}\"`, error);\r\n }\r\n } else {\r\n console.warn(\r\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\r\n );\r\n }\r\n };\r\n\r\n // Apply language settings\r\n const applyLanguageSettings = (language: ILanguage) => {\r\n document.body.dir = language.direction || 'ltr';\r\n safeChangeLanguage(language.code);\r\n localStorage.setItem('_language', language.code);\r\n };\r\n\r\n // Fetch languages from API\r\n const fetchLanguages = async (): Promise<void> => {\r\n try {\r\n dispatch({ type: 'FETCH_LANGUAGES_START' });\r\n \r\n const response = await getV1Languages({\r\n order: `id:1`,\r\n filters: `(is_active.in=[1])`,\r\n ...getToken(),\r\n });\r\n \r\n const data = response?.data?.languages || [];\r\n const languages = data\r\n ?.filter((d: any) => d?.is_active)\r\n ?.map((d: any) => ({\r\n label: d?.name,\r\n code: d?.code,\r\n direction: d?.direction,\r\n }));\r\n\r\n // Always ensure English is available in the languages list\r\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\r\n if (!hasEnglish) {\r\n languages.unshift(createEnglishFallback());\r\n }\r\n\r\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\r\n \r\n // Get saved language or use fallback\r\n const savedLangCode = localStorage.getItem('_language');\r\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\r\n \r\n if (bestLanguage) {\r\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: bestLanguage,\r\n isFallback \r\n });\r\n applyLanguageSettings(bestLanguage);\r\n \r\n // Log if we're using a fallback\r\n if (isFallback) {\r\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\r\n }\r\n } else {\r\n console.error('No languages available');\r\n }\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\r\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\r\n \r\n // On error, always fall back to English\r\n const englishFallback = createEnglishFallback();\r\n \r\n // Create languages array with English fallback for dropdown\r\n const fallbackLanguages = [englishFallback];\r\n \r\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: englishFallback,\r\n isFallback: true \r\n });\r\n \r\n document.body.dir = 'ltr';\r\n safeChangeLanguage('en');\r\n localStorage.setItem('_language', 'en');\r\n \r\n console.warn('Language fetch failed, using English fallback');\r\n }\r\n };\r\n\r\n // Change language function\r\n const changeLanguage = (langCode: string): void => {\r\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\r\n \r\n if (selectedLanguage) {\r\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\r\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\r\n applyLanguageSettings(selectedLanguage);\r\n } else {\r\n console.error(`Language \"${langCode}\" not found in available languages`);\r\n \r\n // If language not found, fall back to English\r\n const englishFallback = createEnglishFallback();\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: englishFallback,\r\n isFallback: true \r\n });\r\n applyLanguageSettings(englishFallback);\r\n }\r\n };\r\n\r\n // Initialize on mount\r\n useEffect(() => {\r\n fetchLanguages();\r\n //eslint-disable-next-line \r\n }, []);\r\n\r\n const contextValue: LanguageContextType = {\r\n ...state,\r\n changeLanguage,\r\n fetchLanguages,\r\n };\r\n\r\n return (\r\n <LanguageContext.Provider value={contextValue}>\r\n {/* {state.isLoading } */}\r\n {children}\r\n </LanguageContext.Provider>\r\n );\r\n};\r\n\r\nexport { LanguageContext };\r\nexport default LanguageContext;"],"names":["setRoleURL"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport { LanguageContext };\nexport default LanguageContext;"],"names":["setRoleURL"],"mappings":";;;;;;;AA8BA,MAAM,qBAAqB;AAAA,EACzB;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAGA,MAAM,wBAAwB,OAAkB;AAAA,EAC9C,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAWA,MAAM,eAA8B;AAAA,EAClC,WAAW,CAAA;AAAA,EACX,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AACpB;AAGA,MAAM,4BAA4B,CAChC,WACA,kBACqB;AACrB,MAAI,CAAC,aAAa,UAAU,WAAW,EAAG,QAAO;AAGjD,MAAI,eAAe;AACjB,UAAM,YAAY,UAAU,KAAK,CAAA,SAAQ,KAAK,SAAS,aAAa;AACpE,QAAI,UAAW,QAAO;AAAA,EACxB;AAGA,aAAW,gBAAgB,oBAAoB;AAC7C,UAAM,WAAW,UAAU,KAAK,CAAA,SAAQ,KAAK,SAAS,YAAY;AAClE,QAAI,SAAU,QAAO;AAAA,EACvB;AAGA,SAAO,UAAU,CAAC,KAAK;AACzB;AAGA,MAAM,kBAAkB,CAAC,OAAsB,WAA0C;AACvF,UAAQ,OAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,QACX,OAAO;AAAA,MAAA;AAAA,IAEX,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW,OAAO;AAAA,QAClB,WAAW;AAAA,QACX,OAAO;AAAA,QACP,kBAAkB;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,QACX,OAAO,OAAO;AAAA,QACd,kBAAkB;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,iBAAiB,OAAO;AAAA,QACxB,kBAAkB,OAAO,cAAc;AAAA,MAAA;AAAA,IAE3C,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,kBAAkB,OAAO;AAAA,MAAA;AAAA,IAE7B;AACE,aAAO;AAAA,EAAA;AAEb;AAGA,MAAM,kBAAkB,cAA+C,MAAS;AAOzE,MAAM,mBAAoD,CAAC,EAAE,eAAe;AACjF,QAAM,CAAC,OAAO,QAAQ,IAAI,WAAW,iBAAiB,YAAY;AAClE,QAAM,EAAE,KAAA,IAAS,eAAA;AAGjB,YAAU,MAAM;AACdA,eAAW,GAAG,uBAAqC,OAAO;AAAA,EAC5D,GAAG,CAAA,CAAE;AAGL,QAAM,qBAAqB,OAAO,aAAqB;AACrD,QAAI,QAAQ,OAAO,KAAK,mBAAmB,YAAY;AACrD,UAAI;AACF,cAAM,KAAK,eAAe,QAAQ;AAAA,MACpC,SAAS,OAAO;AACd,gBAAQ,KAAK,iCAAiC,QAAQ,KAAK,KAAK;AAAA,MAClE;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AAGA,QAAM,wBAAwB,CAAC,aAAwB;AACrD,aAAS,KAAK,MAAM,SAAS,aAAa;AAC1C,uBAAmB,SAAS,IAAI;AAChC,iBAAa,QAAQ,aAAa,SAAS,IAAI;AAAA,EACjD;AAGA,QAAM,iBAAiB,YAA2B;;AAChD,QAAI;AACF,eAAS,EAAE,MAAM,yBAAyB;AAE1C,YAAM,WAAW,MAAM,eAAe;AAAA,QACpC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,GAAG,SAAA;AAAA,MAAS,CACb;AAED,YAAM,SAAO,0CAAU,SAAV,mBAAgB,cAAa,CAAA;AAC1C,YAAM,aAAY,kCACd,OAAO,CAAC,MAAW,uBAAG,eADR,mBAEd,IAAI,CAAC,OAAY;AAAA,QACjB,OAAO,uBAAG;AAAA,QACV,MAAM,uBAAG;AAAA,QACT,WAAW,uBAAG;AAAA,MAAA;AAIlB,YAAM,aAAa,UAAU,KAAK,CAAC,SAAoB,KAAK,SAAS,IAAI;AACzE,UAAI,CAAC,YAAY;AACf,kBAAU,QAAQ,uBAAuB;AAAA,MAC3C;AAEA,eAAS,EAAE,MAAM,2BAA2B,SAAS,WAAW;AAGhE,YAAM,gBAAgB,aAAa,QAAQ,WAAW;AACtD,YAAM,eAAe,0BAA0B,WAAW,iBAAiB,MAAS;AAEpF,UAAI,cAAc;AAChB,cAAM,aAAa,iBAAiB,kBAAkB,aAAa;AACnE,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,UACT;AAAA,QAAA,CACD;AACD,8BAAsB,YAAY;AAGlC,YAAI,YAAY;AACd,kBAAQ,KAAK,mBAAmB,aAAa,qCAAqC,aAAa,IAAI,GAAG;AAAA,QACxG;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,wBAAwB;AAAA,MACxC;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;AAC9D,eAAS,EAAE,MAAM,yBAAyB,SAAS,cAAc;AAGjE,YAAM,kBAAkB,sBAAA;AAGxB,YAAM,oBAAoB,CAAC,eAAe;AAE1C,eAAS,EAAE,MAAM,2BAA2B,SAAS,mBAAmB;AACxE,eAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY;AAAA,MAAA,CACb;AAED,eAAS,KAAK,MAAM;AACpB,yBAAmB,IAAI;AACvB,mBAAa,QAAQ,aAAa,IAAI;AAEtC,cAAQ,KAAK,+CAA+C;AAAA,IAC9D;AAAA,EACF;AAGA,QAAM,iBAAiB,CAAC,aAA2B;AACjD,UAAM,mBAAmB,MAAM,UAAU,KAAK,CAAC,SAAS,KAAK,SAAS,QAAQ;AAE9E,QAAI,kBAAkB;AACpB,eAAS,EAAE,MAAM,wBAAwB,SAAS,kBAAkB;AACpE,eAAS,EAAE,MAAM,uBAAuB,SAAS,OAAO;AACxD,4BAAsB,gBAAgB;AAAA,IACxC,OAAO;AACL,cAAQ,MAAM,aAAa,QAAQ,oCAAoC;AAGvE,YAAM,kBAAkB,sBAAA;AACxB,eAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY;AAAA,MAAA,CACb;AACD,4BAAsB,eAAe;AAAA,IACvC;AAAA,EACF;AAGA,YAAU,MAAM;AACd,mBAAA;AAAA,EAEF,GAAG,CAAA,CAAE;AAEL,QAAM,eAAoC;AAAA,IACxC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EAAA;AAGF,6BACG,gBAAgB,UAAhB,EAAyB,OAAO,cAE9B,UACH;AAEJ;"}
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-i18next"),n=require("../../constants/all-language/index.js"),l=require("../../utils/common/index.js"),r=require("../../api-client/api.rbac/api/index.js"),i=require("../../api-client/api.system-feature/api/index.js");const o=["en","en-US",n.DEFAULT_LANG],c={languages:[],currentLanguage:null,isLoading:!1,error:null,isFallbackActive:!1},s=(e,a)=>{switch(a.type){case"FETCH_LANGUAGES_START":return{...e,isLoading:!0,error:null};case"FETCH_LANGUAGES_SUCCESS":return{...e,languages:a.payload,isLoading:!1,error:null,isFallbackActive:!1};case"FETCH_LANGUAGES_ERROR":return{...e,isLoading:!1,error:a.payload,isFallbackActive:!0};case"SET_CURRENT_LANGUAGE":return{...e,currentLanguage:a.payload,isFallbackActive:a.isFallback||!1};case"SET_FALLBACK_ACTIVE":return{...e,isFallbackActive:a.payload};default:return e}},d=a.createContext(void 0);exports.LanguageContext=d,exports.LanguageProvider=({children:n})=>{const[u,g]=a.useReducer(s,c),{i18n:E}=t.useTranslation();a.useEffect(()=>{r.setBaseUrl("https://apidev.erpforce.co/rbac")},[]);const A=async e=>{if(E&&"function"==typeof E.changeLanguage)try{await E.changeLanguage(e)}catch(a){}},p=e=>{document.body.dir=e.direction||"ltr",A(e.code),localStorage.setItem("_language",e.code)},_=async()=>{var e,a;try{g({type:"FETCH_LANGUAGES_START"});const t=await i.getV1Languages({order:"id:1",filters:"(is_active.in=[1])",...l.getToken()}),n=(null==(e=null==t?void 0:t.data)?void 0:e.languages)||[],r=null==(a=null==n?void 0:n.filter(e=>null==e?void 0:e.is_active))?void 0:a.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}));r.some(e=>"en"===e.code)||r.unshift({code:"en",label:"English",direction:"ltr"}),g({type:"FETCH_LANGUAGES_SUCCESS",payload:r});const c=localStorage.getItem("_language"),s=((e,a)=>{if(!e||0===e.length)return null;if(a){const t=e.find(e=>e.code===a);if(t)return t}for(const t of o){const a=e.find(e=>e.code===t);if(a)return a}return e[0]||null})(r,c||void 0);if(s){const e=c&&c!==s.code;g({type:"SET_CURRENT_LANGUAGE",payload:s,isFallback:e}),p(s)}}catch(t){const e=t instanceof Error?t.message:"Failed to fetch languages";g({type:"FETCH_LANGUAGES_ERROR",payload:e});const a={code:"en",label:"English",direction:"ltr"};g({type:"FETCH_LANGUAGES_SUCCESS",payload:[a]}),g({type:"SET_CURRENT_LANGUAGE",payload:a,isFallback:!0}),document.body.dir="ltr",A("en"),localStorage.setItem("_language","en")}};a.useEffect(()=>{_()},[]);const y={...u,changeLanguage:e=>{const a=u.languages.find(a=>a.code===e);if(a)g({type:"SET_CURRENT_LANGUAGE",payload:a}),g({type:"SET_FALLBACK_ACTIVE",payload:!1}),p(a);else{const e={code:"en",label:"English",direction:"ltr"};g({type:"SET_CURRENT_LANGUAGE",payload:e,isFallback:!0}),p(e)}},fetchLanguages:_};/* @__PURE__ */
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-i18next"),n=require("../../constants/all-language/index.js"),l=require("../../utils/common/index.js"),i=require("../../api-client/api.rbac/api/index.js"),r=require("../../api-client/api.system-feature/api/index.js");const o=["en","en-US",n.DEFAULT_LANG],c={languages:[],currentLanguage:null,isLoading:!1,error:null,isFallbackActive:!1},s=(e,a)=>{switch(a.type){case"FETCH_LANGUAGES_START":return{...e,isLoading:!0,error:null};case"FETCH_LANGUAGES_SUCCESS":return{...e,languages:a.payload,isLoading:!1,error:null,isFallbackActive:!1};case"FETCH_LANGUAGES_ERROR":return{...e,isLoading:!1,error:a.payload,isFallbackActive:!0};case"SET_CURRENT_LANGUAGE":return{...e,currentLanguage:a.payload,isFallbackActive:a.isFallback||!1};case"SET_FALLBACK_ACTIVE":return{...e,isFallbackActive:a.payload};default:return e}},d=a.createContext(void 0);exports.LanguageContext=d,exports.LanguageProvider=({children:n})=>{const[u,g]=a.useReducer(s,c),{i18n:E}=t.useTranslation();a.useEffect(()=>{i.setBaseUrl("http://127.0.0.1:4011/rbac")},[]);const A=async e=>{if(E&&"function"==typeof E.changeLanguage)try{await E.changeLanguage(e)}catch(a){}},p=e=>{document.body.dir=e.direction||"ltr",A(e.code),localStorage.setItem("_language",e.code)},_=async()=>{var e,a;try{g({type:"FETCH_LANGUAGES_START"});const t=await r.getV1Languages({order:"id:1",filters:"(is_active.in=[1])",...l.getToken()}),n=(null==(e=null==t?void 0:t.data)?void 0:e.languages)||[],i=null==(a=null==n?void 0:n.filter(e=>null==e?void 0:e.is_active))?void 0:a.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}));i.some(e=>"en"===e.code)||i.unshift({code:"en",label:"English",direction:"ltr"}),g({type:"FETCH_LANGUAGES_SUCCESS",payload:i});const c=localStorage.getItem("_language"),s=((e,a)=>{if(!e||0===e.length)return null;if(a){const t=e.find(e=>e.code===a);if(t)return t}for(const t of o){const a=e.find(e=>e.code===t);if(a)return a}return e[0]||null})(i,c||void 0);if(s){const e=c&&c!==s.code;g({type:"SET_CURRENT_LANGUAGE",payload:s,isFallback:e}),p(s)}}catch(t){const e=t instanceof Error?t.message:"Failed to fetch languages";g({type:"FETCH_LANGUAGES_ERROR",payload:e});const a={code:"en",label:"English",direction:"ltr"};g({type:"FETCH_LANGUAGES_SUCCESS",payload:[a]}),g({type:"SET_CURRENT_LANGUAGE",payload:a,isFallback:!0}),document.body.dir="ltr",A("en"),localStorage.setItem("_language","en")}};a.useEffect(()=>{_()},[]);const y={...u,changeLanguage:e=>{const a=u.languages.find(a=>a.code===e);if(a)g({type:"SET_CURRENT_LANGUAGE",payload:a}),g({type:"SET_FALLBACK_ACTIVE",payload:!1}),p(a);else{const e={code:"en",label:"English",direction:"ltr"};g({type:"SET_CURRENT_LANGUAGE",payload:e,isFallback:!0}),p(e)}},fetchLanguages:_};/* @__PURE__ */
2
2
  return e.jsx(d.Provider,{value:y,children:n})},exports.default=d;
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\r\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DEFAULT_LANG } from '../constants/all-language';\r\nimport { getToken } from '../utils/common';\r\nimport { setRoleURL } from '../utils/server';\r\nimport { getV1Languages } from '../api-client/api.system-feature/api';\r\n// import ErpLoader from '../components/loader/erp-loader';\r\n\r\n// Types\r\ninterface ILanguage {\r\n label: string;\r\n code: string;\r\n direction: string;\r\n}\r\n\r\ninterface LanguageState {\r\n languages: ILanguage[];\r\n currentLanguage: ILanguage | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n isFallbackActive: boolean; // Track if we're using fallback\r\n}\r\n\r\ninterface LanguageContextType extends LanguageState {\r\n changeLanguage: (langCode: string) => void;\r\n fetchLanguages: () => Promise<void>;\r\n}\r\n\r\n// Define fallback languages in order of preference - English first\r\nconst FALLBACK_LANGUAGES = [\r\n 'en', // English as primary fallback\r\n 'en-US', // US English as secondary\r\n DEFAULT_LANG, // Then default language\r\n];\r\n\r\n// Create English fallback language object\r\nconst createEnglishFallback = (): ILanguage => ({\r\n code: 'en',\r\n label: 'English',\r\n direction: 'ltr'\r\n});\r\n\r\n// Action types\r\ntype LanguageAction =\r\n | { type: 'FETCH_LANGUAGES_START' }\r\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\r\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\r\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\r\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\r\n\r\n// Initial state\r\nconst initialState: LanguageState = {\r\n languages: [],\r\n currentLanguage: null,\r\n isLoading: false,\r\n error: null,\r\n isFallbackActive: false,\r\n};\r\n\r\n// Helper function to find the best available language\r\nconst findBestAvailableLanguage = (\r\n languages: ILanguage[], \r\n preferredCode?: string\r\n): ILanguage | null => {\r\n if (!languages || languages.length === 0) return null;\r\n\r\n // First try the preferred language if provided\r\n if (preferredCode) {\r\n const preferred = languages.find(lang => lang.code === preferredCode);\r\n if (preferred) return preferred;\r\n }\r\n\r\n // Try fallback languages in order (English first)\r\n for (const fallbackCode of FALLBACK_LANGUAGES) {\r\n const fallback = languages.find(lang => lang.code === fallbackCode);\r\n if (fallback) return fallback;\r\n }\r\n\r\n // If no fallbacks found, return the first available language\r\n return languages[0] || null;\r\n};\r\n\r\n// Reducer\r\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\r\n switch (action.type) {\r\n case 'FETCH_LANGUAGES_START':\r\n return {\r\n ...state,\r\n isLoading: true,\r\n error: null,\r\n };\r\n case 'FETCH_LANGUAGES_SUCCESS':\r\n return {\r\n ...state,\r\n languages: action.payload,\r\n isLoading: false,\r\n error: null,\r\n isFallbackActive: false,\r\n };\r\n case 'FETCH_LANGUAGES_ERROR':\r\n return {\r\n ...state,\r\n isLoading: false,\r\n error: action.payload,\r\n isFallbackActive: true, \r\n };\r\n case 'SET_CURRENT_LANGUAGE':\r\n return {\r\n ...state,\r\n currentLanguage: action.payload,\r\n isFallbackActive: action.isFallback || false,\r\n };\r\n case 'SET_FALLBACK_ACTIVE':\r\n return {\r\n ...state,\r\n isFallbackActive: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n// Create context\r\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\r\n\r\n// Provider component\r\ninterface LanguageProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\r\n const [state, dispatch] = useReducer(languageReducer, initialState);\r\n const { i18n } = useTranslation();\r\n\r\n // Initialize role URL\r\n useEffect(() => {\r\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\r\n }, []);\r\n\r\n // Guarded i18n changeLanguage call\r\n const safeChangeLanguage = async (langCode: string) => {\r\n if (i18n && typeof i18n.changeLanguage === 'function') {\r\n try {\r\n await i18n.changeLanguage(langCode);\r\n } catch (error) {\r\n console.warn(`Failed to change language to \"${langCode}\"`, error);\r\n }\r\n } else {\r\n console.warn(\r\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\r\n );\r\n }\r\n };\r\n\r\n // Apply language settings\r\n const applyLanguageSettings = (language: ILanguage) => {\r\n document.body.dir = language.direction || 'ltr';\r\n safeChangeLanguage(language.code);\r\n localStorage.setItem('_language', language.code);\r\n };\r\n\r\n // Fetch languages from API\r\n const fetchLanguages = async (): Promise<void> => {\r\n try {\r\n dispatch({ type: 'FETCH_LANGUAGES_START' });\r\n \r\n const response = await getV1Languages({\r\n order: `id:1`,\r\n filters: `(is_active.in=[1])`,\r\n ...getToken(),\r\n });\r\n \r\n const data = response?.data?.languages || [];\r\n const languages = data\r\n ?.filter((d: any) => d?.is_active)\r\n ?.map((d: any) => ({\r\n label: d?.name,\r\n code: d?.code,\r\n direction: d?.direction,\r\n }));\r\n\r\n // Always ensure English is available in the languages list\r\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\r\n if (!hasEnglish) {\r\n languages.unshift(createEnglishFallback());\r\n }\r\n\r\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\r\n \r\n // Get saved language or use fallback\r\n const savedLangCode = localStorage.getItem('_language');\r\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\r\n \r\n if (bestLanguage) {\r\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: bestLanguage,\r\n isFallback \r\n });\r\n applyLanguageSettings(bestLanguage);\r\n \r\n // Log if we're using a fallback\r\n if (isFallback) {\r\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\r\n }\r\n } else {\r\n console.error('No languages available');\r\n }\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\r\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\r\n \r\n // On error, always fall back to English\r\n const englishFallback = createEnglishFallback();\r\n \r\n // Create languages array with English fallback for dropdown\r\n const fallbackLanguages = [englishFallback];\r\n \r\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: englishFallback,\r\n isFallback: true \r\n });\r\n \r\n document.body.dir = 'ltr';\r\n safeChangeLanguage('en');\r\n localStorage.setItem('_language', 'en');\r\n \r\n console.warn('Language fetch failed, using English fallback');\r\n }\r\n };\r\n\r\n // Change language function\r\n const changeLanguage = (langCode: string): void => {\r\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\r\n \r\n if (selectedLanguage) {\r\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\r\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\r\n applyLanguageSettings(selectedLanguage);\r\n } else {\r\n console.error(`Language \"${langCode}\" not found in available languages`);\r\n \r\n // If language not found, fall back to English\r\n const englishFallback = createEnglishFallback();\r\n dispatch({ \r\n type: 'SET_CURRENT_LANGUAGE', \r\n payload: englishFallback,\r\n isFallback: true \r\n });\r\n applyLanguageSettings(englishFallback);\r\n }\r\n };\r\n\r\n // Initialize on mount\r\n useEffect(() => {\r\n fetchLanguages();\r\n //eslint-disable-next-line \r\n }, []);\r\n\r\n const contextValue: LanguageContextType = {\r\n ...state,\r\n changeLanguage,\r\n fetchLanguages,\r\n };\r\n\r\n return (\r\n <LanguageContext.Provider value={contextValue}>\r\n {/* {state.isLoading } */}\r\n {children}\r\n </LanguageContext.Provider>\r\n );\r\n};\r\n\r\nexport { LanguageContext };\r\nexport default LanguageContext;"],"names":["FALLBACK_LANGUAGES","DEFAULT_LANG","initialState","languages","currentLanguage","isLoading","error","isFallbackActive","languageReducer","state","action","type","payload","isFallback","LanguageContext","createContext","children","dispatch","useReducer","i18n","useTranslation","useEffect","setRoleURL","safeChangeLanguage","async","langCode","changeLanguage","applyLanguageSettings","language","document","body","dir","direction","code","localStorage","setItem","fetchLanguages","response","getV1Languages","order","filters","getToken","data","_a","_b","filter","d","is_active","map","label","name","some","lang","unshift","savedLangCode","getItem","bestLanguage","preferredCode","length","preferred","find","fallbackCode","fallback","findBestAvailableLanguage","errorMessage","Error","message","englishFallback","contextValue","selectedLanguage","Provider","value"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/contexts/languageContext.tsx"],"sourcesContent":["// contexts/LanguageContext.tsx\nimport React, { createContext, useEffect, useReducer, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_LANG } from '../constants/all-language';\nimport { getToken } from '../utils/common';\nimport { setRoleURL } from '../utils/server';\nimport { getV1Languages } from '../api-client/api.system-feature/api';\n// import ErpLoader from '../components/loader/erp-loader';\n\n// Types\ninterface ILanguage {\n label: string;\n code: string;\n direction: string;\n}\n\ninterface LanguageState {\n languages: ILanguage[];\n currentLanguage: ILanguage | null;\n isLoading: boolean;\n error: string | null;\n isFallbackActive: boolean; // Track if we're using fallback\n}\n\ninterface LanguageContextType extends LanguageState {\n changeLanguage: (langCode: string) => void;\n fetchLanguages: () => Promise<void>;\n}\n\n// Define fallback languages in order of preference - English first\nconst FALLBACK_LANGUAGES = [\n 'en', // English as primary fallback\n 'en-US', // US English as secondary\n DEFAULT_LANG, // Then default language\n];\n\n// Create English fallback language object\nconst createEnglishFallback = (): ILanguage => ({\n code: 'en',\n label: 'English',\n direction: 'ltr'\n});\n\n// Action types\ntype LanguageAction =\n | { type: 'FETCH_LANGUAGES_START' }\n | { type: 'FETCH_LANGUAGES_SUCCESS'; payload: ILanguage[] }\n | { type: 'FETCH_LANGUAGES_ERROR'; payload: string }\n | { type: 'SET_CURRENT_LANGUAGE'; payload: ILanguage; isFallback?: boolean }\n | { type: 'SET_FALLBACK_ACTIVE'; payload: boolean };\n\n// Initial state\nconst initialState: LanguageState = {\n languages: [],\n currentLanguage: null,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n};\n\n// Helper function to find the best available language\nconst findBestAvailableLanguage = (\n languages: ILanguage[], \n preferredCode?: string\n): ILanguage | null => {\n if (!languages || languages.length === 0) return null;\n\n // First try the preferred language if provided\n if (preferredCode) {\n const preferred = languages.find(lang => lang.code === preferredCode);\n if (preferred) return preferred;\n }\n\n // Try fallback languages in order (English first)\n for (const fallbackCode of FALLBACK_LANGUAGES) {\n const fallback = languages.find(lang => lang.code === fallbackCode);\n if (fallback) return fallback;\n }\n\n // If no fallbacks found, return the first available language\n return languages[0] || null;\n};\n\n// Reducer\nconst languageReducer = (state: LanguageState, action: LanguageAction): LanguageState => {\n switch (action.type) {\n case 'FETCH_LANGUAGES_START':\n return {\n ...state,\n isLoading: true,\n error: null,\n };\n case 'FETCH_LANGUAGES_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n isLoading: false,\n error: null,\n isFallbackActive: false,\n };\n case 'FETCH_LANGUAGES_ERROR':\n return {\n ...state,\n isLoading: false,\n error: action.payload,\n isFallbackActive: true, \n };\n case 'SET_CURRENT_LANGUAGE':\n return {\n ...state,\n currentLanguage: action.payload,\n isFallbackActive: action.isFallback || false,\n };\n case 'SET_FALLBACK_ACTIVE':\n return {\n ...state,\n isFallbackActive: action.payload,\n };\n default:\n return state;\n }\n};\n\n// Create context\nconst LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n// Provider component\ninterface LanguageProviderProps {\n children: ReactNode;\n}\n\nexport const LanguageProvider: React.FC<LanguageProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(languageReducer, initialState);\n const { i18n } = useTranslation();\n\n // Initialize role URL\n useEffect(() => {\n setRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n }, []);\n\n // Guarded i18n changeLanguage call\n const safeChangeLanguage = async (langCode: string) => {\n if (i18n && typeof i18n.changeLanguage === 'function') {\n try {\n await i18n.changeLanguage(langCode);\n } catch (error) {\n console.warn(`Failed to change language to \"${langCode}\"`, error);\n }\n } else {\n console.warn(\n 'i18n.changeLanguage is unavailable. Ensure I18nextProvider is configured in the host application.'\n );\n }\n };\n\n // Apply language settings\n const applyLanguageSettings = (language: ILanguage) => {\n document.body.dir = language.direction || 'ltr';\n safeChangeLanguage(language.code);\n localStorage.setItem('_language', language.code);\n };\n\n // Fetch languages from API\n const fetchLanguages = async (): Promise<void> => {\n try {\n dispatch({ type: 'FETCH_LANGUAGES_START' });\n \n const response = await getV1Languages({\n order: `id:1`,\n filters: `(is_active.in=[1])`,\n ...getToken(),\n });\n \n const data = response?.data?.languages || [];\n const languages = data\n ?.filter((d: any) => d?.is_active)\n ?.map((d: any) => ({\n label: d?.name,\n code: d?.code,\n direction: d?.direction,\n }));\n\n // Always ensure English is available in the languages list\n const hasEnglish = languages.some((lang: ILanguage) => lang.code === 'en');\n if (!hasEnglish) {\n languages.unshift(createEnglishFallback());\n }\n\n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: languages });\n \n // Get saved language or use fallback\n const savedLangCode = localStorage.getItem('_language');\n const bestLanguage = findBestAvailableLanguage(languages, savedLangCode || undefined);\n \n if (bestLanguage) {\n const isFallback = savedLangCode && savedLangCode !== bestLanguage.code;\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: bestLanguage,\n isFallback \n });\n applyLanguageSettings(bestLanguage);\n \n // Log if we're using a fallback\n if (isFallback) {\n console.warn(`Saved language \"${savedLangCode}\" not available. Using fallback: \"${bestLanguage.code}\"`);\n }\n } else {\n console.error('No languages available');\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch languages';\n dispatch({ type: 'FETCH_LANGUAGES_ERROR', payload: errorMessage });\n \n // On error, always fall back to English\n const englishFallback = createEnglishFallback();\n \n // Create languages array with English fallback for dropdown\n const fallbackLanguages = [englishFallback];\n \n dispatch({ type: 'FETCH_LANGUAGES_SUCCESS', payload: fallbackLanguages });\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n \n document.body.dir = 'ltr';\n safeChangeLanguage('en');\n localStorage.setItem('_language', 'en');\n \n console.warn('Language fetch failed, using English fallback');\n }\n };\n\n // Change language function\n const changeLanguage = (langCode: string): void => {\n const selectedLanguage = state.languages.find((lang) => lang.code === langCode);\n \n if (selectedLanguage) {\n dispatch({ type: 'SET_CURRENT_LANGUAGE', payload: selectedLanguage });\n dispatch({ type: 'SET_FALLBACK_ACTIVE', payload: false });\n applyLanguageSettings(selectedLanguage);\n } else {\n console.error(`Language \"${langCode}\" not found in available languages`);\n \n // If language not found, fall back to English\n const englishFallback = createEnglishFallback();\n dispatch({ \n type: 'SET_CURRENT_LANGUAGE', \n payload: englishFallback,\n isFallback: true \n });\n applyLanguageSettings(englishFallback);\n }\n };\n\n // Initialize on mount\n useEffect(() => {\n fetchLanguages();\n //eslint-disable-next-line \n }, []);\n\n const contextValue: LanguageContextType = {\n ...state,\n changeLanguage,\n fetchLanguages,\n };\n\n return (\n <LanguageContext.Provider value={contextValue}>\n {/* {state.isLoading } */}\n {children}\n </LanguageContext.Provider>\n );\n};\n\nexport { LanguageContext };\nexport default LanguageContext;"],"names":["FALLBACK_LANGUAGES","DEFAULT_LANG","initialState","languages","currentLanguage","isLoading","error","isFallbackActive","languageReducer","state","action","type","payload","isFallback","LanguageContext","createContext","children","dispatch","useReducer","i18n","useTranslation","useEffect","setRoleURL","safeChangeLanguage","async","langCode","changeLanguage","applyLanguageSettings","language","document","body","dir","direction","code","localStorage","setItem","fetchLanguages","response","getV1Languages","order","filters","getToken","data","_a","_b","filter","d","is_active","map","label","name","some","lang","unshift","savedLangCode","getItem","bestLanguage","preferredCode","length","preferred","find","fallbackCode","fallback","findBestAvailableLanguage","errorMessage","Error","message","englishFallback","contextValue","selectedLanguage","Provider","value"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData:Record<string, any>\r\n\tsetFormData:(data:Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n}\r\n\r\nconst UpdatePageInfo = () => {};\r\nconst UpdateGeneratedColumns = () => {};\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => {},\r\n\tsetActivePage: () => {},\r\n\tsetPages: () => {},\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => {},\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\tif(dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\treturn f || column\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\t\t\t\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field)=>!field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst {user} = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\t\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName]);\r\n\t\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName]);\r\n\r\n\t//Translation\r\n\tconst {t}=useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\t\t\t\r\n\t\t\ttry {\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n \r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\t\t\t\r\n\t};\r\n\r\n\tconst addOrDeletePage=async(restPages?:any[])=>{\r\n\t\ttry {\r\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n \t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t} \r\n\t}\r\n\t\r\n\tconst deletePage=async(pages:string)=>{\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\t\t\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\t\t\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\t\t\r\n\t\t// Fetch data for new page with current values\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData:Record<string, any>\r\n\tsetFormData:(data:Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n}\r\n\r\nconst UpdatePageInfo = () => {};\r\nconst UpdateGeneratedColumns = () => {};\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => {},\r\n\tsetActivePage: () => {},\r\n\tsetPages: () => {},\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => {},\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\tif(dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\treturn f || column\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\t\t\t\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field)=>!field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst {user} = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\t\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName]);\r\n\t\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName]);\r\n\r\n\t//Translation\r\n\tconst {t}=useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\t\t\t\r\n\t\t\ttry {\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n \r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\t\t\t\r\n\t};\r\n\r\n\tconst addOrDeletePage=async(restPages?:any[])=>{\r\n\t\ttry {\r\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n \t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t} \r\n\t}\r\n\t\r\n\tconst deletePage=async(pages:string)=>{\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\t\t\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\t\t\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\t\t\r\n\t\t// Fetch data for new page with current values\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","routeToColumnsMap","resources","routeToResourceMap","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Provider","updates","deletePage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","routeToColumnsMap","resources","routeToResourceMap","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Provider","updates","deletePage"],"mappings":"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"}