@erpsquad/common 1.9.97 → 1.9.99

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 (156) hide show
  1. package/dist/chunks/{actionCreator-DmP63jZz.esm.js → actionCreator-C-u8gtV-.esm.js} +2 -2
  2. package/dist/chunks/{actionCreator-DmP63jZz.esm.js.map → actionCreator-C-u8gtV-.esm.js.map} +1 -1
  3. package/dist/chunks/{actionCreator-DwRQnQNP.js → actionCreator-DSrKE0hh.js} +2 -2
  4. package/dist/chunks/{actionCreator-DwRQnQNP.js.map → actionCreator-DSrKE0hh.js.map} +1 -1
  5. package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js → android-12-switch-DSBIf4t0.esm.js} +46 -38
  6. package/dist/chunks/android-12-switch-DSBIf4t0.esm.js.map +1 -0
  7. package/dist/chunks/{android-12-switch-B5UmJZxg.js → android-12-switch-DvCF0gyx.js} +46 -38
  8. package/dist/chunks/android-12-switch-DvCF0gyx.js.map +1 -0
  9. package/dist/chunks/{apiHelper-BrzRrxpx.js → apiHelper-5tNsUtSY.js} +18 -10
  10. package/dist/chunks/apiHelper-5tNsUtSY.js.map +1 -0
  11. package/dist/chunks/{apiHelper-BvnhN2uo.esm.js → apiHelper-Cv_qWaYo.esm.js} +18 -10
  12. package/dist/chunks/apiHelper-Cv_qWaYo.esm.js.map +1 -0
  13. package/dist/chunks/{appbar-Dn00gF0A.esm.js → appbar-DM2iBqb4.esm.js} +5 -5
  14. package/dist/chunks/{appbar-Dn00gF0A.esm.js.map → appbar-DM2iBqb4.esm.js.map} +1 -1
  15. package/dist/chunks/{appbar-dBRF2bDa.js → appbar-rfkAYQdQ.js} +5 -5
  16. package/dist/chunks/{appbar-dBRF2bDa.js.map → appbar-rfkAYQdQ.js.map} +1 -1
  17. package/dist/chunks/{common-QvMCr1xx.js → common-6VUrYJDq.js} +10 -1
  18. package/dist/chunks/{common-QvMCr1xx.js.map → common-6VUrYJDq.js.map} +1 -1
  19. package/dist/chunks/{common-B-nmtH5r.esm.js → common-B6euWODJ.esm.js} +10 -1
  20. package/dist/chunks/{common-B-nmtH5r.esm.js.map → common-B6euWODJ.esm.js.map} +1 -1
  21. package/dist/chunks/{custom-editor-BvMlZ1Oc.js → custom-editor-DIQqk_yI.js} +2 -2
  22. package/dist/chunks/{custom-editor-BvMlZ1Oc.js.map → custom-editor-DIQqk_yI.js.map} +1 -1
  23. package/dist/chunks/{custom-editor-OrxKsIQY.esm.js → custom-editor-DnfTs5-j.esm.js} +2 -2
  24. package/dist/chunks/{custom-editor-OrxKsIQY.esm.js.map → custom-editor-DnfTs5-j.esm.js.map} +1 -1
  25. package/dist/chunks/{default-data-otyfdCNu.esm.js → default-data-BV_r59U9.esm.js} +14 -14
  26. package/dist/chunks/{default-data-otyfdCNu.esm.js.map → default-data-BV_r59U9.esm.js.map} +1 -1
  27. package/dist/chunks/{default-data-BCroqbYg.js → default-data-DQ7VPUoj.js} +14 -14
  28. package/dist/chunks/{default-data-BCroqbYg.js.map → default-data-DQ7VPUoj.js.map} +1 -1
  29. package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js → form-builder-conversion-BdWASNEo.esm.js} +2 -2
  30. package/dist/chunks/{form-builder-conversion-Var45CEx.esm.js.map → form-builder-conversion-BdWASNEo.esm.js.map} +1 -1
  31. package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js → form-builder-conversion-D69EGO5g.js} +2 -2
  32. package/dist/chunks/{form-builder-conversion-nTpiw7Q2.js.map → form-builder-conversion-D69EGO5g.js.map} +1 -1
  33. package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js → form-builder-deconversion-CUwBfP4C.esm.js} +3 -3
  34. package/dist/chunks/{form-builder-deconversion-BjiEAt-i.esm.js.map → form-builder-deconversion-CUwBfP4C.esm.js.map} +1 -1
  35. package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js → form-builder-deconversion-v5GvXDZ9.js} +3 -3
  36. package/dist/chunks/{form-builder-deconversion-CFTqjOTb.js.map → form-builder-deconversion-v5GvXDZ9.js.map} +1 -1
  37. package/dist/chunks/{fullScreen-BdyRsEBm.esm.js → fullScreen-BO0UA3Zr.esm.js} +2 -2
  38. package/dist/chunks/{fullScreen-BdyRsEBm.esm.js.map → fullScreen-BO0UA3Zr.esm.js.map} +1 -1
  39. package/dist/chunks/{fullScreen-BHrQ0vTa.js → fullScreen-Bfrr-bT2.js} +2 -2
  40. package/dist/chunks/{fullScreen-BHrQ0vTa.js.map → fullScreen-Bfrr-bT2.js.map} +1 -1
  41. package/dist/chunks/{languageContext-s_EUKz_A.js → languageContext-BP7EvzMv.js} +3 -3
  42. package/dist/chunks/{languageContext-s_EUKz_A.js.map → languageContext-BP7EvzMv.js.map} +1 -1
  43. package/dist/chunks/{languageContext-CbCRCTbP.esm.js → languageContext-DM_LTp53.esm.js} +3 -3
  44. package/dist/chunks/{languageContext-CbCRCTbP.esm.js.map → languageContext-DM_LTp53.esm.js.map} +1 -1
  45. package/dist/chunks/{migration-utils-Bn35YUJM.esm.js → migration-utils-D9TSOBR0.esm.js} +2 -2
  46. package/dist/chunks/{migration-utils-Bn35YUJM.esm.js.map → migration-utils-D9TSOBR0.esm.js.map} +1 -1
  47. package/dist/chunks/{migration-utils-CmzV1tw3.js → migration-utils-DwLXzWtr.js} +2 -2
  48. package/dist/chunks/{migration-utils-CmzV1tw3.js.map → migration-utils-DwLXzWtr.js.map} +1 -1
  49. package/dist/chunks/module-routes-config-B8IucBuj.js +19 -0
  50. package/dist/chunks/module-routes-config-B8IucBuj.js.map +1 -0
  51. package/dist/chunks/module-routes-config-CCkZEtfg.esm.js +20 -0
  52. package/dist/chunks/module-routes-config-CCkZEtfg.esm.js.map +1 -0
  53. package/dist/chunks/{modules-BDHGBfwa.js → modules-C3T2Pnwc.js} +10 -5
  54. package/dist/chunks/modules-C3T2Pnwc.js.map +1 -0
  55. package/dist/chunks/{modules-UIv-lDBW.esm.js → modules-D5_hDIg9.esm.js} +10 -5
  56. package/dist/chunks/modules-D5_hDIg9.esm.js.map +1 -0
  57. package/dist/chunks/{page-context-DLUB4Qx9.esm.js → page-context-B_wK6kLR.esm.js} +4 -4
  58. package/dist/chunks/{page-context-DLUB4Qx9.esm.js.map → page-context-B_wK6kLR.esm.js.map} +1 -1
  59. package/dist/chunks/{page-context-DRbgpYFO.js → page-context-h7LEMAG0.js} +4 -4
  60. package/dist/chunks/{page-context-DRbgpYFO.js.map → page-context-h7LEMAG0.js.map} +1 -1
  61. package/dist/chunks/pathname.hrms-2_BEXO_r.js +262 -0
  62. package/dist/chunks/pathname.hrms-2_BEXO_r.js.map +1 -0
  63. package/dist/chunks/pathname.hrms-C5ojsho0.esm.js +263 -0
  64. package/dist/chunks/pathname.hrms-C5ojsho0.esm.js.map +1 -0
  65. package/dist/chunks/{reducer-Gajha1Kz.esm.js → reducer-Bpuo5eq1.esm.js} +2 -2
  66. package/dist/chunks/{reducer-Gajha1Kz.esm.js.map → reducer-Bpuo5eq1.esm.js.map} +1 -1
  67. package/dist/chunks/{reducer-DGvVphqy.js → reducer-t-U331ho.js} +2 -2
  68. package/dist/chunks/{reducer-DGvVphqy.js.map → reducer-t-U331ho.js.map} +1 -1
  69. package/dist/chunks/{route-page-map-DPlRjCJm.esm.js → route-page-map-C4wM0M4A.esm.js} +2 -2
  70. package/dist/chunks/{route-page-map-DPlRjCJm.esm.js.map → route-page-map-C4wM0M4A.esm.js.map} +1 -1
  71. package/dist/chunks/{route-page-map-Btth_lp5.js → route-page-map-CJLyl6P1.js} +2 -2
  72. package/dist/chunks/{route-page-map-Btth_lp5.js.map → route-page-map-CJLyl6P1.js.map} +1 -1
  73. package/dist/chunks/{shareSlice-Cn2PGA6m.js → shareSlice-Br9IsR9k.js} +2 -2
  74. package/dist/chunks/{shareSlice-Cn2PGA6m.js.map → shareSlice-Br9IsR9k.js.map} +1 -1
  75. package/dist/chunks/{shareSlice-DGme6jBu.esm.js → shareSlice-CbG_VJcW.esm.js} +2 -2
  76. package/dist/chunks/{shareSlice-DGme6jBu.esm.js.map → shareSlice-CbG_VJcW.esm.js.map} +1 -1
  77. package/dist/chunks/{sidebar-Dcw_6aQ7.js → sidebar-C2zkLZyA.js} +4 -4
  78. package/dist/chunks/{sidebar-Dcw_6aQ7.js.map → sidebar-C2zkLZyA.js.map} +1 -1
  79. package/dist/chunks/{sidebar-PZqii53B.esm.js → sidebar-l49eLo8p.esm.js} +4 -4
  80. package/dist/chunks/{sidebar-PZqii53B.esm.js.map → sidebar-l49eLo8p.esm.js.map} +1 -1
  81. package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js → sidebarScreen-BQN2N8jx.esm.js} +5 -5
  82. package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js.map → sidebarScreen-BQN2N8jx.esm.js.map} +1 -1
  83. package/dist/chunks/{sidebarScreen-FH1CEH8k.js → sidebarScreen-PoYXto7E.js} +5 -5
  84. package/dist/chunks/{sidebarScreen-FH1CEH8k.js.map → sidebarScreen-PoYXto7E.js.map} +1 -1
  85. package/dist/chunks/{store-DEoLcgbp.js → store-BdrUnJ3G.js} +3 -3
  86. package/dist/chunks/{store-DEoLcgbp.js.map → store-BdrUnJ3G.js.map} +1 -1
  87. package/dist/chunks/{store-zDGOGRDm.esm.js → store-ksRZPIIc.esm.js} +3 -3
  88. package/dist/chunks/{store-zDGOGRDm.esm.js.map → store-ksRZPIIc.esm.js.map} +1 -1
  89. package/dist/chunks/{translations-BVvsrCTo.js → translations-1vp9srMj.js} +2 -2
  90. package/dist/chunks/{translations-BVvsrCTo.js.map → translations-1vp9srMj.js.map} +1 -1
  91. package/dist/chunks/{translations-DJFxXzIm.esm.js → translations-B5t-KZNN.esm.js} +2 -2
  92. package/dist/chunks/{translations-DJFxXzIm.esm.js.map → translations-B5t-KZNN.esm.js.map} +1 -1
  93. package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js → uom-field-wrapper-Ckop1JTE.esm.js} +15 -15
  94. package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js.map → uom-field-wrapper-Ckop1JTE.esm.js.map} +1 -1
  95. package/dist/chunks/{uom-field-wrapper-UBPKubPh.js → uom-field-wrapper-l8HA79k1.js} +15 -15
  96. package/dist/chunks/{uom-field-wrapper-UBPKubPh.js.map → uom-field-wrapper-l8HA79k1.js.map} +1 -1
  97. package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js → useAccountSetting-D6Hhq1Pz.esm.js} +3 -3
  98. package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js.map → useAccountSetting-D6Hhq1Pz.esm.js.map} +1 -1
  99. package/dist/chunks/{useAccountSetting-B5qXSiGa.js → useAccountSetting-ngzko7sX.js} +3 -3
  100. package/dist/chunks/{useAccountSetting-B5qXSiGa.js.map → useAccountSetting-ngzko7sX.js.map} +1 -1
  101. package/dist/chunks/{useAuth-BhsPEB2T.js → useAuth-HvZ6U960.js} +2 -2
  102. package/dist/chunks/{useAuth-BhsPEB2T.js.map → useAuth-HvZ6U960.js.map} +1 -1
  103. package/dist/chunks/{useAuth-C4WcddEE.esm.js → useAuth-Tfx2guEJ.esm.js} +2 -2
  104. package/dist/chunks/{useAuth-C4WcddEE.esm.js.map → useAuth-Tfx2guEJ.esm.js.map} +1 -1
  105. package/dist/chunks/{useLangauge-Bie5anLS.esm.js → useLangauge-BU_fP3ZM.esm.js} +2 -2
  106. package/dist/chunks/{useLangauge-Bie5anLS.esm.js.map → useLangauge-BU_fP3ZM.esm.js.map} +1 -1
  107. package/dist/chunks/{useLangauge-BtG3kyRv.js → useLangauge-DwsR1jcv.js} +2 -2
  108. package/dist/chunks/{useLangauge-BtG3kyRv.js.map → useLangauge-DwsR1jcv.js.map} +1 -1
  109. package/dist/chunks/{useReduxIntegration-DvUNoDIr.js → useReduxIntegration-JMVTp0lq.js} +4 -4
  110. package/dist/chunks/{useReduxIntegration-DvUNoDIr.js.map → useReduxIntegration-JMVTp0lq.js.map} +1 -1
  111. package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js → useReduxIntegration-VgWJGErE.esm.js} +4 -4
  112. package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js.map → useReduxIntegration-VgWJGErE.esm.js.map} +1 -1
  113. package/dist/components/index.esm.js +9 -9
  114. package/dist/components/index.js +9 -9
  115. package/dist/components/providers/ERPUIProvider.d.ts +1 -0
  116. package/dist/constants/index.esm.js +3 -3
  117. package/dist/constants/index.js +3 -3
  118. package/dist/constants/pathnames/pathname.hrms.d.ts +61 -3
  119. package/dist/contexts/index.esm.js +3 -3
  120. package/dist/contexts/index.js +3 -3
  121. package/dist/hooks/index.esm.js +5 -5
  122. package/dist/hooks/index.js +5 -5
  123. package/dist/index.esm.js +55 -50
  124. package/dist/index.esm.js.map +1 -1
  125. package/dist/index.js +32 -27
  126. package/dist/index.js.map +1 -1
  127. package/dist/layout/index.esm.js +2 -2
  128. package/dist/layout/index.js +2 -2
  129. package/dist/redux/index.esm.js +4 -4
  130. package/dist/redux/index.js +4 -4
  131. package/dist/src/components/providers/ERPUIProvider.d.ts +1 -0
  132. package/dist/src/constants/pathnames/pathname.hrms.d.ts +61 -3
  133. package/dist/src/utils/api.d.ts +10 -0
  134. package/dist/src/utils/index.d.ts +1 -0
  135. package/dist/src/utils/module-routes-config.d.ts +34 -0
  136. package/dist/src/views/form-builder/utils/common.d.ts +1 -1
  137. package/dist/utils/api.d.ts +10 -0
  138. package/dist/utils/index.esm.js +12 -7
  139. package/dist/utils/index.esm.js.map +1 -1
  140. package/dist/utils/index.js +11 -6
  141. package/dist/utils/index.js.map +1 -1
  142. package/dist/utils/module-routes-config.d.ts +34 -0
  143. package/dist/views/form-builder/utils/common.d.ts +1 -1
  144. package/dist/views/index.esm.js +10 -10
  145. package/dist/views/index.js +9 -9
  146. package/package.json +1 -1
  147. package/dist/chunks/android-12-switch-B5UmJZxg.js.map +0 -1
  148. package/dist/chunks/android-12-switch-D3fU6Qtm.esm.js.map +0 -1
  149. package/dist/chunks/apiHelper-BrzRrxpx.js.map +0 -1
  150. package/dist/chunks/apiHelper-BvnhN2uo.esm.js.map +0 -1
  151. package/dist/chunks/modules-BDHGBfwa.js.map +0 -1
  152. package/dist/chunks/modules-UIv-lDBW.esm.js.map +0 -1
  153. package/dist/chunks/pathname.hrms-BVwbtB1M.js +0 -109
  154. package/dist/chunks/pathname.hrms-BVwbtB1M.js.map +0 -1
  155. package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js +0 -110
  156. package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"form-builder-deconversion-CFTqjOTb.js","sources":["../../src/components/menu/menu.tsx","../../src/components/material-table/aggregation-fns/index.ts","../../src/components/material-table/components/default-aggregation.tsx","../../src/components/chip/chip.tsx","../../src/components/value-field/value-field.tsx","../../src/utils/common-utility.tsx","../../src/utils/form-builder-deconversion.ts"],"sourcesContent":["import { Menu as MUIMenu, MenuProps, styled } from \"@mui/material\";\n\nconst StyledMenu = styled(MUIMenu)(() => ({\n \".MuiPaper-rounded\": {\n borderRadius: \"0.5rem\",\n minWidth: \"10rem\",\n },\n}));\n\nconst Menu = ({ children, anchorEl, onClose, open, ...rest }: MenuProps) => {\n return (\n <>\n <StyledMenu\n id=\"basic-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n MenuListProps={{\n \"aria-labelledby\": \"basic-button\",\n }}\n {...rest}\n >\n {children}\n </StyledMenu>\n </>\n );\n};\n\nexport { Menu };\nexport default Menu;\n","import _ from 'lodash';\nimport { MRT_RowData } from 'material-react-table';\n\nconst average = (data: MRT_RowData[], column: string) => {\n\tconst sum = data.reduce(\n\t\t(acc: number, row) => acc + Number(extractNumber(row[column])),\n\t\t0\n\t);\n\tconst count = data.length;\n\treturn !isNaN(sum) ? `${_.round(sum / count,2)}` : '-';\n};\n\nconst extractNumber = (inputString: any) => {\n\t// Use a regular expression to match the numeric part, including decimals\n\tif (typeof inputString === 'string') {\n\t\tconst match = inputString.match(/[\\d,]+(\\.\\d{1,2})?/);\n\t\treturn match ? match[0] : 0;\n\t}\n\treturn inputString;\n};\nconst sum = (data: MRT_RowData[], column: string) => {\n\tconst sum = data.reduce(\n\t\t(acc: number, row) => acc + Number(extractNumber(row[column])),\n\t\t0\n\t);\n\treturn !isNaN(sum) ? `${_.round(sum,2)}` : '-';\n};\n\nconst max = (data: MRT_RowData[], column: string) => {\n\tconst maxVal = Math.max(...data.map((row) => Number(row[column])));\n\treturn `${maxVal}`;\n};\n\nconst countEmpty = (data: MRT_RowData[], column: string) => {\n\tconst empty = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value)) \n\t\t\t? Boolean(!_.size(value)) \n\t\t\t: Boolean(!Number(value))\n\t}\n\t);\n\treturn `${empty.length}`;\n};\n\nconst percentageEmpty = (data: MRT_RowData[], column: string) => {\n\tconst empty = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(!_.size(value))\n\t\t\t: Boolean(!Number(value))\n\t}\n\t);\n\tconst percentage = (empty.length / data.length) * 100;\n\n\treturn `${_.round(percentage,2)}%`;\n};\n\nconst percentageFull = (data: MRT_RowData[], column: string) => {\n\tconst full = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(_.size(value))\n\t\t\t: Boolean(Number(value))\n\t}\n\t);\n\tconst percentage = (full.length / data.length) * 100;\n\n\treturn `${_.round(percentage,2)}%`;\n};\n\nconst countFull = (data: MRT_RowData[], column: string) => {\n\tconst full = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(_.size(value))\n\t\t\t: Boolean(Number(value))\n\t}\n\t);\n\treturn `${full.length}`;\n};\n\nconst none = () => {\n\treturn null;\n};\n\nconst min = (data: MRT_RowData[], column: string) => {\n\tconst minValue = Math.min(...data.map((row) => Number(row[column])));\n\treturn `${minValue}`;\n};\n\nexport const aggregationFns = {\n\tnone,\n\tmin,\n\tmax,\n\tsum,\n\taverage,\n\tcountEmpty,\n\tcountFull,\n\tpercentageEmpty,\n\tpercentageFull\n};\n","import React, { useEffect } from 'react';\nimport Typography from '../../typography/typography';\nimport { MenuItem } from '@mui/material';\nimport Menu from '../../menu/menu';\nimport { aggregationFns } from '../aggregation-fns';\nimport { MRT_RowData } from 'material-react-table';\n\ntype aggregationType =\n\t| 'none'\n\t| 'count_empty'\n\t| 'count_full'\n\t| 'percentage_empty'\n\t| 'percentage_full'\n\t| 'average'\n\t| 'sum';\n\ninterface IAggregation {\n\tlabel: string;\n\tvalue: aggregationType;\n}\n\nconst aggregations: IAggregation[] = [\n\t{\n\t\tlabel: 'Count Empty',\n\t\tvalue: 'count_empty'\n\t},\n\t{\n\t\tlabel: 'Count Full',\n\t\tvalue: 'count_full'\n\t},\n\t{\n\t\tlabel: 'Percentage Full',\n\t\tvalue: 'percentage_full'\n\t},\n\t{\n\t\tlabel: 'Percentage Empty',\n\t\tvalue: 'percentage_empty'\n\t},\n\t{\n\t\tlabel: 'Average',\n\t\tvalue: 'average'\n\t},\n\t{\n\t\tlabel: 'Sum',\n\t\tvalue: 'sum'\n\t},\n\t{\n\t\tlabel: 'None',\n\t\tvalue: 'none'\n\t}\n];\n\nconst aggregationFnsLookup = {\n\tcount_empty: aggregationFns.countEmpty,\n\tcount_full: aggregationFns.countFull,\n\tpercentage_empty: aggregationFns.percentageEmpty,\n\tpercentage_full: aggregationFns.percentageFull,\n\taverage: aggregationFns.average,\n\tsum: aggregationFns.sum,\n\tnone: aggregationFns.none\n};\n\ninterface IDefaultAggregation {\n\tdata: MRT_RowData[];\n\tcolumn: string;\n\tcolumnDef?: any;\n}\n\nconst DefaultAggregation = ({\n\tdata,\n\tcolumn,\n\t// columnDef\n}: IDefaultAggregation) => {\n\tconst [selectedType, setSelectedType] =\n\t\tReact.useState<aggregationType>('none');\n\tconst [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n\tconst [calculatedValue, setCalculatedValue] = React.useState<string | null>();\n\tconst open = Boolean(anchorEl);\n\n\tconst handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleAggregationType = (val: aggregationType) => {\n\t\tsetSelectedType(val);\n\t\thandleClose();\n\t};\n\n\tuseEffect(() => {\n\t\tconst func = aggregationFnsLookup[selectedType];\n\t\tsetCalculatedValue(func(data, column));\n\t}, [selectedType, column, data]);\n\n\treturn (\n\t\t<>\n\t\t\t<Typography\n\t\t\t\tonClick={handleClick}\n\t\t\t\tsx={{ cursor: 'pointer', width:\"100%\", height:\"100%\" }}\n\t\t\t\ttype='s4'\n\t\t\t\tweight='normal'\n\t\t\t\tcolor={\n\t\t\t\t\tcalculatedValue ? 'theme.secondary.1000' : 'theme.secondary.500'\n\t\t\t\t}>\n\t\t\t\t{calculatedValue || '+ Add Calculation'}\n\t\t\t</Typography>\n\t\t\t<Menu\n\t\t\t\tid='basic-menu'\n\t\t\t\tanchorEl={anchorEl}\n\t\t\t\topen={open}\n\t\t\t\tonClose={handleClose}>\n\t\t\t\t{aggregations?.map((aggr) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={aggr.value}\n\t\t\t\t\t\tselected={selectedType == aggr?.value}\n\t\t\t\t\t\tonClick={() => handleAggregationType(aggr?.value)}\n\t\t\t\t\t\t// disabled={\n\t\t\t\t\t\t// \t(!columnDef || columnDef?.type !== 'number') &&\n\t\t\t\t\t\t// \t(aggr.value === 'sum' || aggr.value === 'average')\n\t\t\t\t\t\t// }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s4'>\n\t\t\t\t\t\t\t{aggr?.label}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t))}\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nexport { DefaultAggregation };\nexport default DefaultAggregation;\n","import { Chip as MUIChip, ChipProps, styled } from \"@mui/material\";\n\ninterface IChip extends ChipProps {\n type?: \"rounded\" | \"normal\";\n active?: boolean;\n inActive?: boolean;\n label?: string | React.ReactNode | number | JSX.Element;\n}\n\nconst StyledChip = styled(MUIChip)<IChip>(\n ({ theme: { palette }, active, type, inActive }) => ({\n cursor: \"pointer\",\n fontSize: \".75rem\",\n color: palette.theme?.secondary[800],\n borderRadius: type === \"rounded\" ? \"1.5rem\" : \"0.25rem\",\n backgroundColor: palette.theme?.secondary[200],\n ...(active && {\n \"&.MuiChip-filled\": {\n color: palette.theme?.primary[700],\n backgroundColor: palette.theme?.primary[200],\n \"&:hover\": {\n backgroundColor: palette.theme?.primary[200]\n },\n },\n \"&.MuiChip-outlined\": {\n color: palette.theme?.primary[800],\n borderColor: palette.theme?.primary[300],\n \"&:hover\": {\n backgroundColor: palette.theme?.primary[200]\n },\n },\n }),\n ...(inActive && {\n \"&.MuiChip-filled\": {\n color: palette.theme?.error[700],\n backgroundColor: palette.theme?.error[200],\n \"&:hover\": {\n backgroundColor: palette.theme?.error[200]\n },\n },\n \"&.MuiChip-outlined\": {\n color: palette.theme?.error[800],\n borderColor: palette.theme?.error[300],\n \"&:hover\": {\n backgroundColor: palette.theme?.error[200]\n },\n },\n }),\n\n \"& .MuiChip-icon\": {\n marginRight: \"0.125rem\",\n marginLeft: \"0rem\",\n color: \"inherit\",\n },\n \"& .MuiChip-deleteIcon\": {\n marginLeft: \"0.25rem\",\n fontSize: \".875rem\",\n color: \"inherit\",\n marginRight: \"0rem\",\n },\n \"&.MuiChip-root\": {\n height: \"fit-content\",\n padding: \"0.25rem 0.5rem\",\n \".MuiChip-label\": {\n padding: \"0rem\",\n },\n },\n }),\n);\n\nconst Chip = (props: IChip) => {\n const {\n label,\n type = \"rounded\",\n variant = \"filled\",\n active = false,\n inActive = false,\n ...rest\n } = props;\n\n return (\n <StyledChip\n label={label}\n variant={variant}\n active={active}\n inActive={inActive}\n type={type}\n {...rest}\n />\n );\n};\n\nexport { Chip };\nexport default Chip;\n","import { Box } from \"@mui/material\";\nimport Typography from \"../typography/typography\";\nimport \"./value-field.scss\";\n\ninterface ValueFieldProps {\n label: string;\n children: React.ReactNode;\n childrenTypoProps?:any\n}\n\nconst ValueField = (props: ValueFieldProps) => {\n const { label, children, childrenTypoProps } = props;\n\n return (\n <Box className=\"valueField--Container\" >\n <Typography weight={\"medium\"} type=\"s3\" color={\"theme.secondary.1000\"}>\n {label}\n </Typography>\n <Typography weight={\"medium\"} type=\"s5\" color={\"theme.secondary.700\"} sx={{ wordBreak:'break-all', pr: 1 }} {...childrenTypoProps}>\n {children}\n </Typography>\n </Box>\n );\n};\n\nexport { ValueField };\nexport default ValueField;\n","\nimport React from 'react';\n\nimport { Box } from '@mui/material';\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport Typography from '../components/typography/typography';\nimport { Document } from '../components/icons';\nimport { MaterialTableColumnProps, TypeBooleanLabels } from '../components/material-table/material-table';\nimport { TFunction } from 'i18next';\nimport { formatDate } from './dateFormat';\nimport { MRT_Row, MRT_RowData } from 'material-react-table';\nimport { Link } from 'react-router-dom';\nimport DefaultAggregation from '../components/material-table/components/default-aggregation';\nimport Chip from '../components/chip/chip';\nimport _ from 'lodash';\nimport images from '../assets/images';\nimport { formatAmount, formatAmountWithCurrency, toFixedWithNumbers } from \"./common\";\nimport { defaultCurrencyFormat } from './common';\n\nimport { defaultCurrencySymbol } from './common';\nimport ValueField from '../components/value-field/value-field';\nimport { formatLabel } from './format-text';\nimport { generateRouteWithId } from './route-utils';\nimport dayjs from 'dayjs';\nimport { useAuth } from '@/hooks';\nconst downloadFile = async (url, fileName) => {\n\ttry {\n\t\t// Fetch the file from the provided URL\n\t\tconst response = await fetch(url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to fetch file: ${response.statusText}`);\n\t\t}\n\n\t\t// Convert the response to a blob\n\t\tconst blob = await response.blob();\n\n\t\t// Create a temporary URL for the blob\n\t\tconst blobUrl = window.URL.createObjectURL(blob);\n\n\t\t// Create a link element\n\t\tconst link = document.createElement('a');\n\t\tlink.href = blobUrl;\n\t\tlink.download = fileName || 'downloaded-file'; // Fallback filename if none provided\n\n\t\t// Append link to the body, trigger click, and remove it\n\t\tdocument.body.appendChild(link);\n\t\tlink.click();\n\t\tdocument.body.removeChild(link);\n\n\t\t// Revoke the blob URL to free up memory\n\t\twindow.URL.revokeObjectURL(blobUrl);\n\t} catch (error) {\n\t\tconsole.error('Error downloading file:', error);\n\t\tthrow error; // Re-throw to allow caller to handle the error\n\t}\n};\n\nexport const getFileNamesFromUrlsAsLink = (fileUrls: string | string[], mode?: string) => {\n\tconst fUrls = fileUrls\n\t\t? Array.isArray(fileUrls)\n\t\t\t? fileUrls\n\t\t\t: [fileUrls]\n\t\t: [];\n\n\tif (fUrls && fUrls.length) {\n\t\treturn (\n\t\t\t<Box\n\t\t\t\tdisplay='flex'\n\t\t\t\tgap={1}\n\t\t\t\tmb={1}\n\t\t\t\talignItems='center'\n\t\t\t\tflexDirection='column'>\n\t\t\t\t{fUrls.map((url) => {\n\t\t\t\t\tconst fileName = url.substring(url.lastIndexOf('/') + 1);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\ttype='s3'\n\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\tcolor='#246DFF'\n\t\t\t\t\t\t\tsx={{ textDecoration: 'underline', textUnderlineOffset: '3px', cursor: 'pointer' }}\n\t\t\t\t\t\t\tnoWrap\n\t\t\t\t\t\t\tonClick={() => mode === 'add' ? undefined : downloadFile(url, fileName)}>\n\t\t\t\t\t\t\t{fileName}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn null;\n};\n\nexport const getFileNamesFromUrls = (fileUrls: string[]) => {\n\tif (!fileUrls) return null;\n\n\tif (!fileUrls?.filter(Boolean)?.length) return null;\n\n\treturn fileUrls?.filter(Boolean)?.map((url) => {\n\t\tconst fileName = url?.substring(url?.lastIndexOf('/') + 1) || '';\n\t\treturn (\n\t\t\t<Box display='flex' gap={1} mb={1} alignItems='center'>\n\t\t\t\t<Document fontSize='small' />\n\t\t\t\t<Typography\n\t\t\t\t\ttype='s3'\n\t\t\t\t\tweight='medium'\n\t\t\t\t\tcolor={'theme.secondary.1000'}\n\t\t\t\t\tsx={{ cursor: 'pointer' }}\n\t\t\t\t\tnoWrap onClick={() => downloadFile(url, fileName)}>\n\t\t\t\t\t{fileName}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t);\n\t});\n};\n\nexport type CurrencySymbolFn = (row: MRT_Row<MRT_RowData>) => string;\nexport type StatusClassesFn = (row: MRT_Row<MRT_RowData>) => string;\nexport type RedirectionLinkFn = (row: MRT_Row<MRT_RowData>) => string;\n\nexport interface ITransformTableColumns {\n\tcolumns: MaterialTableColumnProps[];\n\tcurrencySymbol?: string | CurrencySymbolFn;\n\ttranslationFn?: TFunction<'translation', undefined>;\n\tenableFooter?: boolean;\n\tredirectionLink?: string | RedirectionLinkFn;\n\tredirectionLinkState?: (row: MRT_Row<MRT_RowData>) => void;\n\tredirectionPathWithId?: string;\n\tidField?: string;\n\tcustomizeValue?: (row: MRT_Row<MRT_RowData>, columnAccessorKey?: string, value?: any) => any;\n\tstatusClasses?: string | StatusClassesFn;\n\trows: any[];\n\tcurrencyFormat?: boolean\n}\n\nconst jsonArrayToString = (json: any) => {\n\tif (!json) return '';\n\n\ttry {\n\t\treturn JSON.parse(json)?.join(', ');\n\t} catch (error) {\n\t\treturn '';\n\t}\n};\nconst getStatusClass = (status: any) => {\n\tif (typeof status === 'string') {\n\t\treturn status?.toLowerCase()?.replace(' ', '');\n\t} else if (typeof status === 'number') {\n\t\treturn status ? 'enabled' : 'disabled';\n\t}\n};\n\nexport const transformTableColumns = ({\n\tcolumns = [],\n\tcurrencySymbol,\n\ttranslationFn = undefined,\n\tenableFooter = false,\n\tredirectionLink = '',\n\tredirectionLinkState = undefined,\n\tredirectionPathWithId = '',\n\tidField = 'id',\n\tstatusClasses = '',\n\trows = [],\n\tcustomizeValue = undefined,\n\tcurrencyFormat\n}: ITransformTableColumns) => {\n\tconst currencyFormatData = currencyFormat ? currencyFormat : defaultCurrencyFormat()\n\n\treturn columns.map((column) => ({\n\t\t...column,\n\t\theader: translationFn ? translationFn(column.header) : column.header,\n\t\tCell: ({ renderedCellValue, row }: any) => {\n\t\t\tlet v = renderedCellValue;\n\t\t\tif (typeof v === 'number' && v && String(v)?.includes('.')) {\n\t\t\t\treturn v = toFixedWithNumbers(v)\n\t\t\t}\n\t\t\tconst columnType = column.type || (column.header === \"Amount\" || column.header === \"Rate\" ? \"currency\" : undefined);\n\t\t\tswitch (columnType) {\n\t\t\t\tcase 'formattedString':\n\t\t\t\t\tv = formatLabel(renderedCellValue) || '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'date':\n\t\t\t\t\tv = formatDate(\n\t\t\t\t\t\trenderedCellValue,\n\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY'\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'datetime':\n\t\t\t\t\tv = formatDate(\n\t\t\t\t\t\trenderedCellValue,\n\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY hh:mm A'\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'currency':\n\t\t\t\tcase 'amount': {\n\t\t\t\t\tconst cs = column?.showDefaultCurrency ? defaultCurrencySymbol() : currencySymbol instanceof Function ? currencySymbol(row) : (currencySymbol || defaultCurrencySymbol());\n\t\t\t\t\tv = renderedCellValue || renderedCellValue == 0\n\t\t\t\t\t\t? `${formatAmount(renderedCellValue, currencyFormatData, 'before', cs) || '-'}`\n\t\t\t\t\t\t: null;\n\n\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'status':\n\t\t\t\tcase 'enum':\n\t\t\t\tcase 'array':\n\t\t\t\t\t{\n\t\t\t\t\t\tv = renderedCellValue || renderedCellValue === 0 ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{Array.isArray(renderedCellValue) ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{renderedCellValue?.length ? <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap' }}>\n\t\t\t\t\t\t\t\t\t\t\t{renderedCellValue.map((rcv) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={column.custom_class ? column?.custom_class : (typeof rcv === 'string' ? rcv : '')}\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{typeof rcv === 'object' ? _.get(rcv, column?.typeArrayAccessorKey || '', '') : rcv}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</Box> : '-'}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tcolumn.custom_class ? column?.custom_class :\n\t\t\t\t\t\t\t\t\t\t\t\t(statusClasses instanceof Function\n\t\t\t\t\t\t\t\t\t\t\t\t\t? statusClasses(row)\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `${statusClasses}${getStatusClass(renderedCellValue)}`)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\n\t\t\t\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderedCellValue}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\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\tbreak;\n\t\t\t\tcase 'boolean':\n\t\t\t\t\tv = (\n\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t// active={Boolean(renderedCellValue)}\n\t\t\t\t\t\t\t// inActive={Boolean(!renderedCellValue)}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\t...(renderedCellValue ?\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette?.theme.tertiary4[200],\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette?.theme.tertiary4[900]\n\t\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette?.theme.tertiary6[200],\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette?.theme.tertiary6[900]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t{column?.typeBooleanLabels?.[renderedCellValue as keyof TypeBooleanLabels] || '-'}\n\t\t\t\t\t\t\t\t</Typography>\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\tbreak;\n\t\t\t\tcase 'jsonArray':\n\t\t\t\t\tv = jsonArrayToString(renderedCellValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'custom':\n\t\t\t\tcase 'custom_link':\n\t\t\t\t\tv = customizeValue?.(row, column.accessorKey, renderedCellValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'toFixed':\n\t\t\t\t\tv = toFixedWithNumbers(renderedCellValue)\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Allow customizeValue to override any type's default rendering\n\t\t\t// if (customizeValue) {\n\t\t\t// \tconst customResult = customizeValue(row, column.accessorKey, renderedCellValue);\n\t\t\t// \tif (customResult !== undefined) {\n\t\t\t// \t\tv = customResult;\n\t\t\t// \t}\n\t\t\t// }\n\n\t\t\t// If redirectionPathWithId is provided, use it for URL parameter-based navigation\n\t\t\tif (redirectionPathWithId && column.type != 'custom_link') {\n\t\t\t\tconst id = row.original[idField || 'id'];\n\t\t\t\tif (id) {\n\t\t\t\t\tconst path = redirectionPathWithId instanceof Function ? generateRouteWithId(redirectionPathWithId(row), id?.toString()) : generateRouteWithId(redirectionPathWithId, id?.toString());\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Link to={path}>\n\t\t\t\t\t\t\t{v}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Fall back to the existing redirection logic\n\t\t\telse if (redirectionLink && column.type != 'custom_link') {\n\t\t\t\tconst id = row.original[idField || 'id'];\n\t\t\t\tconst path = redirectionLink instanceof Function ? generateRouteWithId(redirectionLink(row), id?.toString()) : generateRouteWithId(redirectionLink, id?.toString());\n\t\t\t\treturn (\n\t\t\t\t\t<Link to={path}\n\t\t\t\t\t\tstate={redirectionLinkState?.(row)}>\n\t\t\t\t\t\t{v}\n\t\t\t\t\t</Link>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn v;\n\t\t},\n\t\t...(Boolean(enableFooter) && {\n\t\t\tFooter: ({ column }) => (\n\t\t\t\t<DefaultAggregation data={rows} column={String(column.id)} />\n\t\t\t)\n\t\t})\n\t}));\n};\n\nexport const renderEmptyRowsFallback = (text: string) => (\n\t<Box className='no-data'>\n\t\t<img src={images.common.tableNoData} />\n\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t{text}\n\t\t</Typography>\n\t</Box>\n)\n\n/* eslint-disable no-mixed-spaces-and-tabs */\nexport const renderValueField = (label: string, value: any, t: any, formatFn?: (val: any) => string) => {\n\treturn (\n\t\t<ValueField key={label} label={t?.(label)}>\n\t\t\t{formatFn ? formatFn(value) : value ?? '-'}\n\t\t</ValueField>\n\t);\n};\n\nexport const formateValueByType = ({\n\tvalue,\n\ttype,\n\tformat,\n\tweight\n}: {\n\tvalue: any;\n\ttype: string;\n\tformat?: string;\n\tweight?: \"normal\" | \"medium\" | \"bold\";\n}) => {\n\tconst numberTypes = ['number', 'amount', 'toFixed'];\n\tconst valueCheck = [null, undefined, '0'];\n\tif (valueCheck.includes(value)) return <Typography type='s4' weight={weight} color='theme.neutral.1000'>{numberTypes?.includes(type) ? value : (value || '-')}</Typography>;\n\n\tswitch (type) {\n\t\tcase 'date':\n\t\t\treturn dayjs(value).isValid() ? formatDate(value, format) : value;\n\t\tcase 'toFixed':\n\t\t\treturn <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value ? toFixedWithNumbers(Number(value)) : '-'}</Typography>;\n\t\tcase 'amount':\n\t\t\treturn <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value ? formatAmountWithCurrency(Number(value)) : '-'}</Typography>;\n\t\tdefault:\n\t\t\treturn weight ? <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value || '-'}</Typography> : value || '-';\n\t}\n};\n\n\nconst setCompany = (value: any) => {\n\tconst { user } = useAuth();\n\treturn {\n\t\tvalue: user?.company_id,\n\t\toptions: [{\n\t\t\tlabel: user?.company_data?.name,\n\t\t\tvalue: user?.company_id\n\t\t}]\n\t}\n}\nexport const configMapper = {\n\t'company': {\n\t\tcallBack: setCompany,\n\n\t}\n}\n","type ItemType = {\n section_name: any;\n is_system_field: boolean;\n field_type: string;\n label: string;\n name?: string;\n placeholder: string;\n default_value: any;\n validation: any[];\n is_multiline: any;\n section_order: any;\n option?: any;\n time_format?: string;\n currency?: string;\n field_properties: {\n is_accordion?: boolean;\n float_step?: any;\n options: any;\n is_multiselect: any;\n title: string;\n title_position: \"start\" | \"end\";\n is_multiline: boolean\n is_checked: boolean\n table: string,\n table_columns: string[]\n table_rows?: any\n is_multiple: boolean\n enable_footer?: boolean\n footer_action?: 'add'\n other_buttons?: React.ReactNode[]\n };\n is_section_field?: true;\n section_type?: \"default\" | \"Form switcher section\";\n form_switcher_label?: string;\n form_switcher_name?: string;\n switcher_forms?: {\n value?: string;\n name?: string;\n id?: number;\n }[];\n is_accordion?: boolean;\n}\n\nconst getFirstNonSectionField = (formData: any[]) => {\n const firstField = formData?.find((field) => !field.is_section_field)\n return firstField\n}\n\nconst formBuilderDeConversion = (formData: any) => {\n const outputData: any = {};\n if (formData.length === 0) {\n return outputData;\n }\n\n const firstItem = getFirstNonSectionField(formData);\n\n if (firstItem?.tab_name) {\n outputData.tab = <any>[];\n let currentTab: {\n title: string;\n data: any;\n remove_tab?: any;\n tab_order?: any;\n } | null = null;\n let currentSection: {\n label: string;\n members: any;\n remove_section: any;\n field_type?: string;\n is_accordion?: boolean;\n } | null = null;\n let otherSectionDetails: any = {}\n let sectionOrder: any = null\n\n formData.forEach((item: any) => {\n if (item?.is_section_field) {\n otherSectionDetails = {\n field_type: item?.field_type,\n label: item?.label,\n is_accordion: item?.is_accordion,\n is_section_field: item?.is_section_field,\n section_type: item?.section_type,\n form_switcher_label: item?.form_switcher_label,\n form_switcher_name: item?.form_switcher_name,\n switcher_forms: item?.switcher_forms,\n disabled: Boolean(item?.disabled)\n }\n currentSection = null\n sectionOrder = sectionOrder++\n } else {\n if (!currentTab || currentTab.title !== item.tab_name) {\n\n currentTab = {\n tab_order: item.tab_order || 1,\n title: item.tab_name,\n data: [],\n };\n const checkIfTabExist = outputData.tab.find(tab => tab.title === currentTab?.title)\n\n if (!checkIfTabExist) {\n outputData.tab.push(currentTab);\n } else {\n currentTab = checkIfTabExist\n }\n currentSection = null;\n }\n\n if (!currentSection || currentSection.label !== item.section_name || sectionOrder !== item.section_order) {\n currentSection = {\n field_type: \"section\",\n label: item.section_name || \"\",\n is_accordion: item.field_properties?.is_accordion,\n members: [],\n remove_section: item.is_system_field === true ? true : false,\n };\n\n const checkIfSectionExist = currentTab.data.find(section => section.label === currentSection?.label)\n if (!checkIfSectionExist) {\n // Merge section details and update currentSection reference to the actual pushed object\n currentSection = { ...otherSectionDetails, ...currentSection };\n currentTab.data.push(currentSection);\n } else {\n currentSection = checkIfSectionExist\n }\n otherSectionDetails = null\n }\n sectionOrder = item.section_order\n\n const thenValidations = item?.validation?.find((v: { type: string }) => v.type === \"when\")?.thenValidations || []\n\n const member = {\n ...item,\n id: `${Date.now()}-${Math.random()}`,\n field_type:\n item.field_type === \"media\" ? \"file\" : item.field_type || \"text\",\n type: item.is_system_field ? \"system\" : \"custom\",\n label: item.label || \"\",\n placeholder: item.placeholder || \"\",\n default_value: item.default_value || \"\",\n ...(item?.time_format &&\n item?.field_type === \"time\" && { option: item?.time_format }),\n ...(item?.currency &&\n item?.field_type === \"currency\" && { option: item?.currency }),\n ...(item.field_type === \"text\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"text\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n min_length:\n item.validation.find((v: { type: string }) => v.type === \"min_val\")\n ?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n max_length:\n item.validation.find((v: { type: string }) => v.type === \"max_val\")\n ?.value || null,\n }),\n ...((item.is_multiline !== undefined || item.field_properties.is_multiline !== undefined) && {\n is_multiline: item.is_multiline || item.field_properties.is_multiline,\n }),\n is_required:\n item.validation.find((v: { type: string }) => v.type === \"required\")?.value ||\n thenValidations?.find((v: { type: string }) => v.type === \"required\")?.value ||\n false,\n is_unique:\n item.validation.find((v: { type: string }) => v.type === \"unique\")\n ?.value || false,\n section_order: item.section_order || 0,\n ...(item.field_properties.float_step && {\n float_step: item.field_properties.float_step.toString(),\n }),\n ...(item.field_properties.options && {\n options: item.field_properties.options,\n }),\n ...(item.field_properties.is_multiselect !== undefined && {\n is_multiselect: item.field_properties.is_multiselect,\n }),\n ...(item.field_properties?.enable_footer !== undefined && {\n enable_footer: Boolean(item.field_properties.enable_footer),\n }),\n ...(item.field_properties?.footer_action !== undefined && {\n footer_action: item.field_properties.footer_action || 'add',\n }),\n ...(item.field_type === \"date\" && {\n is_future_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_future_dates_allowed\",\n )?.value || null,\n }),\n ...(item.field_type === \"date\" && {\n is_past_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_past_dates_allowed\",\n )?.value || null,\n }),\n ...((item.field_type === \"image\" || item.field_type === \"media\" || item.field_type === \"file\") && {\n max_size:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_file_size\",\n )?.value || undefined,\n is_multiple: item.field_properties?.is_multiple\n }),\n ...((item.field_type === \"toggleButton\" || item.field_type === \"checkbox\" || item.field_type === \"radioButton\") && {\n title: item.field_properties?.title ? item.field_properties?.title : '',\n title_position: item.field_properties?.title_position ?? \"end\",\n is_checked: item.field_properties?.is_checked\n }),\n ...((item.field_type === \"table\") && {\n table: item.field_properties?.table,\n table_columns: convertTableColumns(item.field_properties?.table_columns),\n table_rows: item.field_properties?.table_rows,\n otherButtons: item.field_properties?.other_buttons || []\n }),\n };\n if (currentSection) {\n currentSection.members.push(member);\n if (\n currentSection.members.some((member: any) => member.type === \"system\")\n ) {\n currentSection.remove_section = true;\n } else {\n currentSection.remove_section = false;\n }\n currentTab.remove_tab = currentTab.data.some(\n (section: { members: any[] }) =>\n section.members.some(\n (member: { type: string }) => member.type === \"system\",\n ),\n );\n }\n }\n });\n } else {\n // Convert to sections format\n outputData.section = [];\n let currentSection: {\n label: any;\n members: any;\n remove_section: any;\n field_type?: string;\n is_accordion?: boolean;\n } | null = null;\n let otherSectionDetails: any = {}\n let sectionOrder: any = null\n\n formData.forEach(\n (item: ItemType) => {\n if (item.is_section_field) {\n otherSectionDetails = {\n field_type: item?.field_type,\n label: item?.label,\n is_accordion: item?.is_accordion,\n is_section_field: item?.is_section_field,\n section_type: item?.section_type,\n form_switcher_label: item?.form_switcher_label,\n form_switcher_name: item?.form_switcher_name,\n switcher_forms: item?.switcher_forms,\n disabled: Boolean(item?.disabled)\n }\n sectionOrder = sectionOrder++\n currentSection = null\n } else {\n if (!currentSection || currentSection.label !== item.section_name || sectionOrder !== item.section_order) {\n currentSection = {\n field_type: \"section\",\n label: item.section_name || \"\",\n is_accordion: item.field_properties?.is_accordion,\n members: [],\n remove_section: item.is_system_field === true ? true : false,\n };\n\n const checkIfSectionExist = outputData?.section?.find(section => section.label === currentSection?.label)\n if (!checkIfSectionExist) {\n // Merge section details and update currentSection reference to the actual pushed object\n currentSection = { ...otherSectionDetails, ...currentSection };\n outputData.section.push(currentSection);\n } else {\n currentSection = checkIfSectionExist\n }\n\n // outputData.section.push({ ...otherSectionDetails, ...currentSection });\n\n otherSectionDetails = null\n }\n sectionOrder = item.section_order\n\n const thenValidations = item?.validation?.find((v: { type: string }) => v.type === \"when\")?.thenValidations || []\n\n const member = {\n ...item,\n id: `${Date.now()}-${Math.random()}`,\n field_type:\n item.field_type === \"media\" ? \"file\" : item.field_type || \"text\",\n type: item.is_system_field ? \"system\" : \"custom\",\n label: item.label,\n placeholder: item.placeholder || \"\",\n default_value: item.default_value || \"\",\n ...(item?.time_format &&\n item?.field_type === \"time\" && { option: item?.time_format }),\n ...(item?.currency &&\n item?.field_type === \"currency\" && { option: item?.currency }),\n ...(item.field_type === \"text\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"text\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_val\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_val\",\n )?.value || null,\n }),\n ...((item.is_multiline !== undefined || item.field_properties?.is_multiline !== undefined) && {\n is_multiline: item.is_multiline || item.field_properties.is_multiline,\n }),\n is_required:\n item.validation.find((v: { type: string }) => v.type === \"required\")?.value ||\n thenValidations?.find((v: { type: string }) => v.type === \"required\")?.value ||\n false,\n is_unique:\n item.validation.find((v: { type: string }) => v.type === \"unique\")\n ?.value || false,\n section_order: item.section_order || 0,\n ...(item.field_properties?.float_step && {\n float_step: Number(item.field_properties.float_step),\n }),\n ...(item.field_properties?.options && {\n options: item.field_properties.options,\n }),\n ...(item.field_properties?.is_multiselect !== undefined && {\n is_multiselect: item.field_properties.is_multiselect,\n }),\n ...(item.field_properties?.enable_footer !== undefined && {\n enable_footer: Boolean(item.field_properties.enable_footer),\n }),\n ...(item.field_properties?.footer_action !== undefined && {\n footer_action: item.field_properties.footer_action || 'add',\n }),\n ...(item.field_type === \"date\" && {\n is_future_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_future_dates_allowed\",\n )?.value || null,\n }),\n ...(item.field_type === \"date\" && {\n is_past_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_past_dates_allowed\",\n )?.value || null,\n }),\n ...((item.field_type === \"image\" || item.field_type === \"media\" || item.field_type === \"file\") && {\n max_size:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_file_size\",\n )?.value || undefined,\n is_multiple: item.field_properties?.is_multiple\n }),\n ...((item.field_type === \"toggleButton\" || item.field_type === \"checkbox\") && {\n title: item.field_properties?.title ? item.field_properties?.title : item.label,\n title_position: item.field_properties?.title_position ?? \"end\",\n is_checked: item.field_properties?.is_checked\n }),\n ...((item.field_type === \"table\") && {\n table: item.field_properties?.table,\n table_columns: convertTableColumns(item.field_properties?.table_columns),\n table_rows: item.field_properties?.table_rows,\n otherButtons: item.field_properties?.other_buttons || []\n }),\n };\n\n currentSection.members.push(member);\n if (\n currentSection.members.some((member: any) => member.type === \"system\")\n ) {\n currentSection.remove_section = true;\n } else {\n currentSection.remove_section = false;\n }\n }\n }\n );\n }\n\n return outputData;\n};\n\n\n\nfunction formatText(key: string): string {\n return key ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \") : key;\n}\n\nexport const convertTableColumns = (columns: string[]) => {\n if (!Array.isArray(columns)) return [];\n\n return columns.map(column => {\n if (typeof column === 'object') {\n return { ...column }\n } else {\n const colArr = column.split(\".\").filter(str => str)\n const header = colArr.length ? (colArr.length > 1 ? formatText(colArr[colArr.length - 1]) : formatText(colArr[0])) : \"-\"\n\n return {\n header,\n accessorKey: column,\n visible: true,\n }\n }\n })\n}\n\nexport default formBuilderDeConversion;\n"],"names":["styled","MUIMenu","jsx","Fragment","sum","useEffect","jsxs","Typography","MenuItem","MUIChip","Box","Document","defaultCurrencyFormat","toFixedWithNumbers","formatLabel","formatDate","defaultCurrencySymbol","formatAmount","_a","_b","_c","_d","generateRouteWithId","Link","column","images","formatAmountWithCurrency","useAuth","member"],"mappings":"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"}
1
+ {"version":3,"file":"form-builder-deconversion-v5GvXDZ9.js","sources":["../../src/components/menu/menu.tsx","../../src/components/material-table/aggregation-fns/index.ts","../../src/components/material-table/components/default-aggregation.tsx","../../src/components/chip/chip.tsx","../../src/components/value-field/value-field.tsx","../../src/utils/common-utility.tsx","../../src/utils/form-builder-deconversion.ts"],"sourcesContent":["import { Menu as MUIMenu, MenuProps, styled } from \"@mui/material\";\n\nconst StyledMenu = styled(MUIMenu)(() => ({\n \".MuiPaper-rounded\": {\n borderRadius: \"0.5rem\",\n minWidth: \"10rem\",\n },\n}));\n\nconst Menu = ({ children, anchorEl, onClose, open, ...rest }: MenuProps) => {\n return (\n <>\n <StyledMenu\n id=\"basic-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n MenuListProps={{\n \"aria-labelledby\": \"basic-button\",\n }}\n {...rest}\n >\n {children}\n </StyledMenu>\n </>\n );\n};\n\nexport { Menu };\nexport default Menu;\n","import _ from 'lodash';\nimport { MRT_RowData } from 'material-react-table';\n\nconst average = (data: MRT_RowData[], column: string) => {\n\tconst sum = data.reduce(\n\t\t(acc: number, row) => acc + Number(extractNumber(row[column])),\n\t\t0\n\t);\n\tconst count = data.length;\n\treturn !isNaN(sum) ? `${_.round(sum / count,2)}` : '-';\n};\n\nconst extractNumber = (inputString: any) => {\n\t// Use a regular expression to match the numeric part, including decimals\n\tif (typeof inputString === 'string') {\n\t\tconst match = inputString.match(/[\\d,]+(\\.\\d{1,2})?/);\n\t\treturn match ? match[0] : 0;\n\t}\n\treturn inputString;\n};\nconst sum = (data: MRT_RowData[], column: string) => {\n\tconst sum = data.reduce(\n\t\t(acc: number, row) => acc + Number(extractNumber(row[column])),\n\t\t0\n\t);\n\treturn !isNaN(sum) ? `${_.round(sum,2)}` : '-';\n};\n\nconst max = (data: MRT_RowData[], column: string) => {\n\tconst maxVal = Math.max(...data.map((row) => Number(row[column])));\n\treturn `${maxVal}`;\n};\n\nconst countEmpty = (data: MRT_RowData[], column: string) => {\n\tconst empty = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value)) \n\t\t\t? Boolean(!_.size(value)) \n\t\t\t: Boolean(!Number(value))\n\t}\n\t);\n\treturn `${empty.length}`;\n};\n\nconst percentageEmpty = (data: MRT_RowData[], column: string) => {\n\tconst empty = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(!_.size(value))\n\t\t\t: Boolean(!Number(value))\n\t}\n\t);\n\tconst percentage = (empty.length / data.length) * 100;\n\n\treturn `${_.round(percentage,2)}%`;\n};\n\nconst percentageFull = (data: MRT_RowData[], column: string) => {\n\tconst full = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(_.size(value))\n\t\t\t: Boolean(Number(value))\n\t}\n\t);\n\tconst percentage = (full.length / data.length) * 100;\n\n\treturn `${_.round(percentage,2)}%`;\n};\n\nconst countFull = (data: MRT_RowData[], column: string) => {\n\tconst full = data?.filter((d) => {\n\t\tconst value = _.get(d, column); \n\t\treturn isNaN(Number(value))\n\t\t\t? Boolean(_.size(value))\n\t\t\t: Boolean(Number(value))\n\t}\n\t);\n\treturn `${full.length}`;\n};\n\nconst none = () => {\n\treturn null;\n};\n\nconst min = (data: MRT_RowData[], column: string) => {\n\tconst minValue = Math.min(...data.map((row) => Number(row[column])));\n\treturn `${minValue}`;\n};\n\nexport const aggregationFns = {\n\tnone,\n\tmin,\n\tmax,\n\tsum,\n\taverage,\n\tcountEmpty,\n\tcountFull,\n\tpercentageEmpty,\n\tpercentageFull\n};\n","import React, { useEffect } from 'react';\nimport Typography from '../../typography/typography';\nimport { MenuItem } from '@mui/material';\nimport Menu from '../../menu/menu';\nimport { aggregationFns } from '../aggregation-fns';\nimport { MRT_RowData } from 'material-react-table';\n\ntype aggregationType =\n\t| 'none'\n\t| 'count_empty'\n\t| 'count_full'\n\t| 'percentage_empty'\n\t| 'percentage_full'\n\t| 'average'\n\t| 'sum';\n\ninterface IAggregation {\n\tlabel: string;\n\tvalue: aggregationType;\n}\n\nconst aggregations: IAggregation[] = [\n\t{\n\t\tlabel: 'Count Empty',\n\t\tvalue: 'count_empty'\n\t},\n\t{\n\t\tlabel: 'Count Full',\n\t\tvalue: 'count_full'\n\t},\n\t{\n\t\tlabel: 'Percentage Full',\n\t\tvalue: 'percentage_full'\n\t},\n\t{\n\t\tlabel: 'Percentage Empty',\n\t\tvalue: 'percentage_empty'\n\t},\n\t{\n\t\tlabel: 'Average',\n\t\tvalue: 'average'\n\t},\n\t{\n\t\tlabel: 'Sum',\n\t\tvalue: 'sum'\n\t},\n\t{\n\t\tlabel: 'None',\n\t\tvalue: 'none'\n\t}\n];\n\nconst aggregationFnsLookup = {\n\tcount_empty: aggregationFns.countEmpty,\n\tcount_full: aggregationFns.countFull,\n\tpercentage_empty: aggregationFns.percentageEmpty,\n\tpercentage_full: aggregationFns.percentageFull,\n\taverage: aggregationFns.average,\n\tsum: aggregationFns.sum,\n\tnone: aggregationFns.none\n};\n\ninterface IDefaultAggregation {\n\tdata: MRT_RowData[];\n\tcolumn: string;\n\tcolumnDef?: any;\n}\n\nconst DefaultAggregation = ({\n\tdata,\n\tcolumn,\n\t// columnDef\n}: IDefaultAggregation) => {\n\tconst [selectedType, setSelectedType] =\n\t\tReact.useState<aggregationType>('none');\n\tconst [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n\tconst [calculatedValue, setCalculatedValue] = React.useState<string | null>();\n\tconst open = Boolean(anchorEl);\n\n\tconst handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleAggregationType = (val: aggregationType) => {\n\t\tsetSelectedType(val);\n\t\thandleClose();\n\t};\n\n\tuseEffect(() => {\n\t\tconst func = aggregationFnsLookup[selectedType];\n\t\tsetCalculatedValue(func(data, column));\n\t}, [selectedType, column, data]);\n\n\treturn (\n\t\t<>\n\t\t\t<Typography\n\t\t\t\tonClick={handleClick}\n\t\t\t\tsx={{ cursor: 'pointer', width:\"100%\", height:\"100%\" }}\n\t\t\t\ttype='s4'\n\t\t\t\tweight='normal'\n\t\t\t\tcolor={\n\t\t\t\t\tcalculatedValue ? 'theme.secondary.1000' : 'theme.secondary.500'\n\t\t\t\t}>\n\t\t\t\t{calculatedValue || '+ Add Calculation'}\n\t\t\t</Typography>\n\t\t\t<Menu\n\t\t\t\tid='basic-menu'\n\t\t\t\tanchorEl={anchorEl}\n\t\t\t\topen={open}\n\t\t\t\tonClose={handleClose}>\n\t\t\t\t{aggregations?.map((aggr) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={aggr.value}\n\t\t\t\t\t\tselected={selectedType == aggr?.value}\n\t\t\t\t\t\tonClick={() => handleAggregationType(aggr?.value)}\n\t\t\t\t\t\t// disabled={\n\t\t\t\t\t\t// \t(!columnDef || columnDef?.type !== 'number') &&\n\t\t\t\t\t\t// \t(aggr.value === 'sum' || aggr.value === 'average')\n\t\t\t\t\t\t// }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s4'>\n\t\t\t\t\t\t\t{aggr?.label}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t))}\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nexport { DefaultAggregation };\nexport default DefaultAggregation;\n","import { Chip as MUIChip, ChipProps, styled } from \"@mui/material\";\n\ninterface IChip extends ChipProps {\n type?: \"rounded\" | \"normal\";\n active?: boolean;\n inActive?: boolean;\n label?: string | React.ReactNode | number | JSX.Element;\n}\n\nconst StyledChip = styled(MUIChip)<IChip>(\n ({ theme: { palette }, active, type, inActive }) => ({\n cursor: \"pointer\",\n fontSize: \".75rem\",\n color: palette.theme?.secondary[800],\n borderRadius: type === \"rounded\" ? \"1.5rem\" : \"0.25rem\",\n backgroundColor: palette.theme?.secondary[200],\n ...(active && {\n \"&.MuiChip-filled\": {\n color: palette.theme?.primary[700],\n backgroundColor: palette.theme?.primary[200],\n \"&:hover\": {\n backgroundColor: palette.theme?.primary[200]\n },\n },\n \"&.MuiChip-outlined\": {\n color: palette.theme?.primary[800],\n borderColor: palette.theme?.primary[300],\n \"&:hover\": {\n backgroundColor: palette.theme?.primary[200]\n },\n },\n }),\n ...(inActive && {\n \"&.MuiChip-filled\": {\n color: palette.theme?.error[700],\n backgroundColor: palette.theme?.error[200],\n \"&:hover\": {\n backgroundColor: palette.theme?.error[200]\n },\n },\n \"&.MuiChip-outlined\": {\n color: palette.theme?.error[800],\n borderColor: palette.theme?.error[300],\n \"&:hover\": {\n backgroundColor: palette.theme?.error[200]\n },\n },\n }),\n\n \"& .MuiChip-icon\": {\n marginRight: \"0.125rem\",\n marginLeft: \"0rem\",\n color: \"inherit\",\n },\n \"& .MuiChip-deleteIcon\": {\n marginLeft: \"0.25rem\",\n fontSize: \".875rem\",\n color: \"inherit\",\n marginRight: \"0rem\",\n },\n \"&.MuiChip-root\": {\n height: \"fit-content\",\n padding: \"0.25rem 0.5rem\",\n \".MuiChip-label\": {\n padding: \"0rem\",\n },\n },\n }),\n);\n\nconst Chip = (props: IChip) => {\n const {\n label,\n type = \"rounded\",\n variant = \"filled\",\n active = false,\n inActive = false,\n ...rest\n } = props;\n\n return (\n <StyledChip\n label={label}\n variant={variant}\n active={active}\n inActive={inActive}\n type={type}\n {...rest}\n />\n );\n};\n\nexport { Chip };\nexport default Chip;\n","import { Box } from \"@mui/material\";\nimport Typography from \"../typography/typography\";\nimport \"./value-field.scss\";\n\ninterface ValueFieldProps {\n label: string;\n children: React.ReactNode;\n childrenTypoProps?:any\n}\n\nconst ValueField = (props: ValueFieldProps) => {\n const { label, children, childrenTypoProps } = props;\n\n return (\n <Box className=\"valueField--Container\" >\n <Typography weight={\"medium\"} type=\"s3\" color={\"theme.secondary.1000\"}>\n {label}\n </Typography>\n <Typography weight={\"medium\"} type=\"s5\" color={\"theme.secondary.700\"} sx={{ wordBreak:'break-all', pr: 1 }} {...childrenTypoProps}>\n {children}\n </Typography>\n </Box>\n );\n};\n\nexport { ValueField };\nexport default ValueField;\n","\nimport React from 'react';\n\nimport { Box } from '@mui/material';\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport Typography from '../components/typography/typography';\nimport { Document } from '../components/icons';\nimport { MaterialTableColumnProps, TypeBooleanLabels } from '../components/material-table/material-table';\nimport { TFunction } from 'i18next';\nimport { formatDate } from './dateFormat';\nimport { MRT_Row, MRT_RowData } from 'material-react-table';\nimport { Link } from 'react-router-dom';\nimport DefaultAggregation from '../components/material-table/components/default-aggregation';\nimport Chip from '../components/chip/chip';\nimport _ from 'lodash';\nimport images from '../assets/images';\nimport { formatAmount, formatAmountWithCurrency, toFixedWithNumbers } from \"./common\";\nimport { defaultCurrencyFormat } from './common';\n\nimport { defaultCurrencySymbol } from './common';\nimport ValueField from '../components/value-field/value-field';\nimport { formatLabel } from './format-text';\nimport { generateRouteWithId } from './route-utils';\nimport dayjs from 'dayjs';\nimport { useAuth } from '@/hooks';\nconst downloadFile = async (url, fileName) => {\n\ttry {\n\t\t// Fetch the file from the provided URL\n\t\tconst response = await fetch(url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to fetch file: ${response.statusText}`);\n\t\t}\n\n\t\t// Convert the response to a blob\n\t\tconst blob = await response.blob();\n\n\t\t// Create a temporary URL for the blob\n\t\tconst blobUrl = window.URL.createObjectURL(blob);\n\n\t\t// Create a link element\n\t\tconst link = document.createElement('a');\n\t\tlink.href = blobUrl;\n\t\tlink.download = fileName || 'downloaded-file'; // Fallback filename if none provided\n\n\t\t// Append link to the body, trigger click, and remove it\n\t\tdocument.body.appendChild(link);\n\t\tlink.click();\n\t\tdocument.body.removeChild(link);\n\n\t\t// Revoke the blob URL to free up memory\n\t\twindow.URL.revokeObjectURL(blobUrl);\n\t} catch (error) {\n\t\tconsole.error('Error downloading file:', error);\n\t\tthrow error; // Re-throw to allow caller to handle the error\n\t}\n};\n\nexport const getFileNamesFromUrlsAsLink = (fileUrls: string | string[], mode?: string) => {\n\tconst fUrls = fileUrls\n\t\t? Array.isArray(fileUrls)\n\t\t\t? fileUrls\n\t\t\t: [fileUrls]\n\t\t: [];\n\n\tif (fUrls && fUrls.length) {\n\t\treturn (\n\t\t\t<Box\n\t\t\t\tdisplay='flex'\n\t\t\t\tgap={1}\n\t\t\t\tmb={1}\n\t\t\t\talignItems='center'\n\t\t\t\tflexDirection='column'>\n\t\t\t\t{fUrls.map((url) => {\n\t\t\t\t\tconst fileName = url.substring(url.lastIndexOf('/') + 1);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\ttype='s3'\n\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\tcolor='#246DFF'\n\t\t\t\t\t\t\tsx={{ textDecoration: 'underline', textUnderlineOffset: '3px', cursor: 'pointer' }}\n\t\t\t\t\t\t\tnoWrap\n\t\t\t\t\t\t\tonClick={() => mode === 'add' ? undefined : downloadFile(url, fileName)}>\n\t\t\t\t\t\t\t{fileName}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn null;\n};\n\nexport const getFileNamesFromUrls = (fileUrls: string[]) => {\n\tif (!fileUrls) return null;\n\n\tif (!fileUrls?.filter(Boolean)?.length) return null;\n\n\treturn fileUrls?.filter(Boolean)?.map((url) => {\n\t\tconst fileName = url?.substring(url?.lastIndexOf('/') + 1) || '';\n\t\treturn (\n\t\t\t<Box display='flex' gap={1} mb={1} alignItems='center'>\n\t\t\t\t<Document fontSize='small' />\n\t\t\t\t<Typography\n\t\t\t\t\ttype='s3'\n\t\t\t\t\tweight='medium'\n\t\t\t\t\tcolor={'theme.secondary.1000'}\n\t\t\t\t\tsx={{ cursor: 'pointer' }}\n\t\t\t\t\tnoWrap onClick={() => downloadFile(url, fileName)}>\n\t\t\t\t\t{fileName}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t);\n\t});\n};\n\nexport type CurrencySymbolFn = (row: MRT_Row<MRT_RowData>) => string;\nexport type StatusClassesFn = (row: MRT_Row<MRT_RowData>) => string;\nexport type RedirectionLinkFn = (row: MRT_Row<MRT_RowData>) => string;\n\nexport interface ITransformTableColumns {\n\tcolumns: MaterialTableColumnProps[];\n\tcurrencySymbol?: string | CurrencySymbolFn;\n\ttranslationFn?: TFunction<'translation', undefined>;\n\tenableFooter?: boolean;\n\tredirectionLink?: string | RedirectionLinkFn;\n\tredirectionLinkState?: (row: MRT_Row<MRT_RowData>) => void;\n\tredirectionPathWithId?: string;\n\tidField?: string;\n\tcustomizeValue?: (row: MRT_Row<MRT_RowData>, columnAccessorKey?: string, value?: any) => any;\n\tstatusClasses?: string | StatusClassesFn;\n\trows: any[];\n\tcurrencyFormat?: boolean\n}\n\nconst jsonArrayToString = (json: any) => {\n\tif (!json) return '';\n\n\ttry {\n\t\treturn JSON.parse(json)?.join(', ');\n\t} catch (error) {\n\t\treturn '';\n\t}\n};\nconst getStatusClass = (status: any) => {\n\tif (typeof status === 'string') {\n\t\treturn status?.toLowerCase()?.replace(' ', '');\n\t} else if (typeof status === 'number') {\n\t\treturn status ? 'enabled' : 'disabled';\n\t}\n};\n\nexport const transformTableColumns = ({\n\tcolumns = [],\n\tcurrencySymbol,\n\ttranslationFn = undefined,\n\tenableFooter = false,\n\tredirectionLink = '',\n\tredirectionLinkState = undefined,\n\tredirectionPathWithId = '',\n\tidField = 'id',\n\tstatusClasses = '',\n\trows = [],\n\tcustomizeValue = undefined,\n\tcurrencyFormat\n}: ITransformTableColumns) => {\n\tconst currencyFormatData = currencyFormat ? currencyFormat : defaultCurrencyFormat()\n\n\treturn columns.map((column) => ({\n\t\t...column,\n\t\theader: translationFn ? translationFn(column.header) : column.header,\n\t\tCell: ({ renderedCellValue, row }: any) => {\n\t\t\tlet v = renderedCellValue;\n\t\t\tif (typeof v === 'number' && v && String(v)?.includes('.')) {\n\t\t\t\treturn v = toFixedWithNumbers(v)\n\t\t\t}\n\t\t\tconst columnType = column.type || (column.header === \"Amount\" || column.header === \"Rate\" ? \"currency\" : undefined);\n\t\t\tswitch (columnType) {\n\t\t\t\tcase 'formattedString':\n\t\t\t\t\tv = formatLabel(renderedCellValue) || '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'date':\n\t\t\t\t\tv = formatDate(\n\t\t\t\t\t\trenderedCellValue,\n\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY'\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'datetime':\n\t\t\t\t\tv = formatDate(\n\t\t\t\t\t\trenderedCellValue,\n\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY hh:mm A'\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'currency':\n\t\t\t\tcase 'amount': {\n\t\t\t\t\tconst cs = column?.showDefaultCurrency ? defaultCurrencySymbol() : currencySymbol instanceof Function ? currencySymbol(row) : (currencySymbol || defaultCurrencySymbol());\n\t\t\t\t\tv = renderedCellValue || renderedCellValue == 0\n\t\t\t\t\t\t? `${formatAmount(renderedCellValue, currencyFormatData, 'before', cs) || '-'}`\n\t\t\t\t\t\t: null;\n\n\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'status':\n\t\t\t\tcase 'enum':\n\t\t\t\tcase 'array':\n\t\t\t\t\t{\n\t\t\t\t\t\tv = renderedCellValue || renderedCellValue === 0 ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{Array.isArray(renderedCellValue) ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{renderedCellValue?.length ? <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap' }}>\n\t\t\t\t\t\t\t\t\t\t\t{renderedCellValue.map((rcv) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={column.custom_class ? column?.custom_class : (typeof rcv === 'string' ? rcv : '')}\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{typeof rcv === 'object' ? _.get(rcv, column?.typeArrayAccessorKey || '', '') : rcv}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</Box> : '-'}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tcolumn.custom_class ? column?.custom_class :\n\t\t\t\t\t\t\t\t\t\t\t\t(statusClasses instanceof Function\n\t\t\t\t\t\t\t\t\t\t\t\t\t? statusClasses(row)\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `${statusClasses}${getStatusClass(renderedCellValue)}`)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\n\t\t\t\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderedCellValue}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\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\tbreak;\n\t\t\t\tcase 'boolean':\n\t\t\t\t\tv = (\n\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\t// active={Boolean(renderedCellValue)}\n\t\t\t\t\t\t\t// inActive={Boolean(!renderedCellValue)}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\t...(renderedCellValue ?\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette?.theme.tertiary4[200],\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette?.theme.tertiary4[900]\n\t\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette?.theme.tertiary6[200],\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette?.theme.tertiary6[900]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t\t{column?.typeBooleanLabels?.[renderedCellValue as keyof TypeBooleanLabels] || '-'}\n\t\t\t\t\t\t\t\t</Typography>\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\tbreak;\n\t\t\t\tcase 'jsonArray':\n\t\t\t\t\tv = jsonArrayToString(renderedCellValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'custom':\n\t\t\t\tcase 'custom_link':\n\t\t\t\t\tv = customizeValue?.(row, column.accessorKey, renderedCellValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'toFixed':\n\t\t\t\t\tv = toFixedWithNumbers(renderedCellValue)\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Allow customizeValue to override any type's default rendering\n\t\t\t// if (customizeValue) {\n\t\t\t// \tconst customResult = customizeValue(row, column.accessorKey, renderedCellValue);\n\t\t\t// \tif (customResult !== undefined) {\n\t\t\t// \t\tv = customResult;\n\t\t\t// \t}\n\t\t\t// }\n\n\t\t\t// If redirectionPathWithId is provided, use it for URL parameter-based navigation\n\t\t\tif (redirectionPathWithId && column.type != 'custom_link') {\n\t\t\t\tconst id = row.original[idField || 'id'];\n\t\t\t\tif (id) {\n\t\t\t\t\tconst path = redirectionPathWithId instanceof Function ? generateRouteWithId(redirectionPathWithId(row), id?.toString()) : generateRouteWithId(redirectionPathWithId, id?.toString());\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Link to={path}>\n\t\t\t\t\t\t\t{v}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Fall back to the existing redirection logic\n\t\t\telse if (redirectionLink && column.type != 'custom_link') {\n\t\t\t\tconst id = row.original[idField || 'id'];\n\t\t\t\tconst path = redirectionLink instanceof Function ? generateRouteWithId(redirectionLink(row), id?.toString()) : generateRouteWithId(redirectionLink, id?.toString());\n\t\t\t\treturn (\n\t\t\t\t\t<Link to={path}\n\t\t\t\t\t\tstate={redirectionLinkState?.(row)}>\n\t\t\t\t\t\t{v}\n\t\t\t\t\t</Link>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn v;\n\t\t},\n\t\t...(Boolean(enableFooter) && {\n\t\t\tFooter: ({ column }) => (\n\t\t\t\t<DefaultAggregation data={rows} column={String(column.id)} />\n\t\t\t)\n\t\t})\n\t}));\n};\n\nexport const renderEmptyRowsFallback = (text: string) => (\n\t<Box className='no-data'>\n\t\t<img src={images.common.tableNoData} />\n\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t{text}\n\t\t</Typography>\n\t</Box>\n)\n\n/* eslint-disable no-mixed-spaces-and-tabs */\nexport const renderValueField = (label: string, value: any, t: any, formatFn?: (val: any) => string) => {\n\treturn (\n\t\t<ValueField key={label} label={t?.(label)}>\n\t\t\t{formatFn ? formatFn(value) : value ?? '-'}\n\t\t</ValueField>\n\t);\n};\n\nexport const formateValueByType = ({\n\tvalue,\n\ttype,\n\tformat,\n\tweight\n}: {\n\tvalue: any;\n\ttype: string;\n\tformat?: string;\n\tweight?: \"normal\" | \"medium\" | \"bold\";\n}) => {\n\tconst numberTypes = ['number', 'amount', 'toFixed'];\n\tconst valueCheck = [null, undefined, '0'];\n\tif (valueCheck.includes(value)) return <Typography type='s4' weight={weight} color='theme.neutral.1000'>{numberTypes?.includes(type) ? value : (value || '-')}</Typography>;\n\n\tswitch (type) {\n\t\tcase 'date':\n\t\t\treturn dayjs(value).isValid() ? formatDate(value, format) : value;\n\t\tcase 'toFixed':\n\t\t\treturn <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value ? toFixedWithNumbers(Number(value)) : '-'}</Typography>;\n\t\tcase 'amount':\n\t\t\treturn <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value ? formatAmountWithCurrency(Number(value)) : '-'}</Typography>;\n\t\tdefault:\n\t\t\treturn weight ? <Typography type='s4' weight={weight} color='theme.neutral.1000'>{value || '-'}</Typography> : value || '-';\n\t}\n};\n\n\nconst setCompany = (value: any) => {\n\tconst { user } = useAuth();\n\treturn {\n\t\tvalue: user?.company_id,\n\t\toptions: [{\n\t\t\tlabel: user?.company_data?.name,\n\t\t\tvalue: user?.company_id\n\t\t}]\n\t}\n}\nexport const configMapper = {\n\t'company': {\n\t\tcallBack: setCompany,\n\n\t}\n}\n","type ItemType = {\n section_name: any;\n is_system_field: boolean;\n field_type: string;\n label: string;\n name?: string;\n placeholder: string;\n default_value: any;\n validation: any[];\n is_multiline: any;\n section_order: any;\n option?: any;\n time_format?: string;\n currency?: string;\n field_properties: {\n is_accordion?: boolean;\n float_step?: any;\n options: any;\n is_multiselect: any;\n title: string;\n title_position: \"start\" | \"end\";\n is_multiline: boolean\n is_checked: boolean\n table: string,\n table_columns: string[]\n table_rows?: any\n is_multiple: boolean\n enable_footer?: boolean\n footer_action?: 'add'\n other_buttons?: React.ReactNode[]\n };\n is_section_field?: true;\n section_type?: \"default\" | \"Form switcher section\";\n form_switcher_label?: string;\n form_switcher_name?: string;\n switcher_forms?: {\n value?: string;\n name?: string;\n id?: number;\n }[];\n is_accordion?: boolean;\n}\n\nconst getFirstNonSectionField = (formData: any[]) => {\n const firstField = formData?.find((field) => !field.is_section_field)\n return firstField\n}\n\nconst formBuilderDeConversion = (formData: any) => {\n const outputData: any = {};\n if (formData.length === 0) {\n return outputData;\n }\n\n const firstItem = getFirstNonSectionField(formData);\n\n if (firstItem?.tab_name) {\n outputData.tab = <any>[];\n let currentTab: {\n title: string;\n data: any;\n remove_tab?: any;\n tab_order?: any;\n } | null = null;\n let currentSection: {\n label: string;\n members: any;\n remove_section: any;\n field_type?: string;\n is_accordion?: boolean;\n } | null = null;\n let otherSectionDetails: any = {}\n let sectionOrder: any = null\n\n formData.forEach((item: any) => {\n if (item?.is_section_field) {\n otherSectionDetails = {\n field_type: item?.field_type,\n label: item?.label,\n is_accordion: item?.is_accordion,\n is_section_field: item?.is_section_field,\n section_type: item?.section_type,\n form_switcher_label: item?.form_switcher_label,\n form_switcher_name: item?.form_switcher_name,\n switcher_forms: item?.switcher_forms,\n disabled: Boolean(item?.disabled)\n }\n currentSection = null\n sectionOrder = sectionOrder++\n } else {\n if (!currentTab || currentTab.title !== item.tab_name) {\n\n currentTab = {\n tab_order: item.tab_order || 1,\n title: item.tab_name,\n data: [],\n };\n const checkIfTabExist = outputData.tab.find(tab => tab.title === currentTab?.title)\n\n if (!checkIfTabExist) {\n outputData.tab.push(currentTab);\n } else {\n currentTab = checkIfTabExist\n }\n currentSection = null;\n }\n\n if (!currentSection || currentSection.label !== item.section_name || sectionOrder !== item.section_order) {\n currentSection = {\n field_type: \"section\",\n label: item.section_name || \"\",\n is_accordion: item.field_properties?.is_accordion,\n members: [],\n remove_section: item.is_system_field === true ? true : false,\n };\n\n const checkIfSectionExist = currentTab.data.find(section => section.label === currentSection?.label)\n if (!checkIfSectionExist) {\n // Merge section details and update currentSection reference to the actual pushed object\n currentSection = { ...otherSectionDetails, ...currentSection };\n currentTab.data.push(currentSection);\n } else {\n currentSection = checkIfSectionExist\n }\n otherSectionDetails = null\n }\n sectionOrder = item.section_order\n\n const thenValidations = item?.validation?.find((v: { type: string }) => v.type === \"when\")?.thenValidations || []\n\n const member = {\n ...item,\n id: `${Date.now()}-${Math.random()}`,\n field_type:\n item.field_type === \"media\" ? \"file\" : item.field_type || \"text\",\n type: item.is_system_field ? \"system\" : \"custom\",\n label: item.label || \"\",\n placeholder: item.placeholder || \"\",\n default_value: item.default_value || \"\",\n ...(item?.time_format &&\n item?.field_type === \"time\" && { option: item?.time_format }),\n ...(item?.currency &&\n item?.field_type === \"currency\" && { option: item?.currency }),\n ...(item.field_type === \"text\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"text\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n min_length:\n item.validation.find((v: { type: string }) => v.type === \"min_val\")\n ?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n max_length:\n item.validation.find((v: { type: string }) => v.type === \"max_val\")\n ?.value || null,\n }),\n ...((item.is_multiline !== undefined || item.field_properties.is_multiline !== undefined) && {\n is_multiline: item.is_multiline || item.field_properties.is_multiline,\n }),\n is_required:\n item.validation.find((v: { type: string }) => v.type === \"required\")?.value ||\n thenValidations?.find((v: { type: string }) => v.type === \"required\")?.value ||\n false,\n is_unique:\n item.validation.find((v: { type: string }) => v.type === \"unique\")\n ?.value || false,\n section_order: item.section_order || 0,\n ...(item.field_properties.float_step && {\n float_step: item.field_properties.float_step.toString(),\n }),\n ...(item.field_properties.options && {\n options: item.field_properties.options,\n }),\n ...(item.field_properties.is_multiselect !== undefined && {\n is_multiselect: item.field_properties.is_multiselect,\n }),\n ...(item.field_properties?.enable_footer !== undefined && {\n enable_footer: Boolean(item.field_properties.enable_footer),\n }),\n ...(item.field_properties?.footer_action !== undefined && {\n footer_action: item.field_properties.footer_action || 'add',\n }),\n ...(item.field_type === \"date\" && {\n is_future_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_future_dates_allowed\",\n )?.value || null,\n }),\n ...(item.field_type === \"date\" && {\n is_past_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_past_dates_allowed\",\n )?.value || null,\n }),\n ...((item.field_type === \"image\" || item.field_type === \"media\" || item.field_type === \"file\") && {\n max_size:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_file_size\",\n )?.value || undefined,\n is_multiple: item.field_properties?.is_multiple\n }),\n ...((item.field_type === \"toggleButton\" || item.field_type === \"checkbox\" || item.field_type === \"radioButton\") && {\n title: item.field_properties?.title ? item.field_properties?.title : '',\n title_position: item.field_properties?.title_position ?? \"end\",\n is_checked: item.field_properties?.is_checked\n }),\n ...((item.field_type === \"table\") && {\n table: item.field_properties?.table,\n table_columns: convertTableColumns(item.field_properties?.table_columns),\n table_rows: item.field_properties?.table_rows,\n otherButtons: item.field_properties?.other_buttons || []\n }),\n };\n if (currentSection) {\n currentSection.members.push(member);\n if (\n currentSection.members.some((member: any) => member.type === \"system\")\n ) {\n currentSection.remove_section = true;\n } else {\n currentSection.remove_section = false;\n }\n currentTab.remove_tab = currentTab.data.some(\n (section: { members: any[] }) =>\n section.members.some(\n (member: { type: string }) => member.type === \"system\",\n ),\n );\n }\n }\n });\n } else {\n // Convert to sections format\n outputData.section = [];\n let currentSection: {\n label: any;\n members: any;\n remove_section: any;\n field_type?: string;\n is_accordion?: boolean;\n } | null = null;\n let otherSectionDetails: any = {}\n let sectionOrder: any = null\n\n formData.forEach(\n (item: ItemType) => {\n if (item.is_section_field) {\n otherSectionDetails = {\n field_type: item?.field_type,\n label: item?.label,\n is_accordion: item?.is_accordion,\n is_section_field: item?.is_section_field,\n section_type: item?.section_type,\n form_switcher_label: item?.form_switcher_label,\n form_switcher_name: item?.form_switcher_name,\n switcher_forms: item?.switcher_forms,\n disabled: Boolean(item?.disabled)\n }\n sectionOrder = sectionOrder++\n currentSection = null\n } else {\n if (!currentSection || currentSection.label !== item.section_name || sectionOrder !== item.section_order) {\n currentSection = {\n field_type: \"section\",\n label: item.section_name || \"\",\n is_accordion: item.field_properties?.is_accordion,\n members: [],\n remove_section: item.is_system_field === true ? true : false,\n };\n\n const checkIfSectionExist = outputData?.section?.find(section => section.label === currentSection?.label)\n if (!checkIfSectionExist) {\n // Merge section details and update currentSection reference to the actual pushed object\n currentSection = { ...otherSectionDetails, ...currentSection };\n outputData.section.push(currentSection);\n } else {\n currentSection = checkIfSectionExist\n }\n\n // outputData.section.push({ ...otherSectionDetails, ...currentSection });\n\n otherSectionDetails = null\n }\n sectionOrder = item.section_order\n\n const thenValidations = item?.validation?.find((v: { type: string }) => v.type === \"when\")?.thenValidations || []\n\n const member = {\n ...item,\n id: `${Date.now()}-${Math.random()}`,\n field_type:\n item.field_type === \"media\" ? \"file\" : item.field_type || \"text\",\n type: item.is_system_field ? \"system\" : \"custom\",\n label: item.label,\n placeholder: item.placeholder || \"\",\n default_value: item.default_value || \"\",\n ...(item?.time_format &&\n item?.field_type === \"time\" && { option: item?.time_format }),\n ...(item?.currency &&\n item?.field_type === \"currency\" && { option: item?.currency }),\n ...(item.field_type === \"text\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"text\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_length\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n min_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"min_val\",\n )?.value || null,\n }),\n ...(item.field_type === \"number\" && {\n max_length:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_val\",\n )?.value || null,\n }),\n ...((item.is_multiline !== undefined || item.field_properties?.is_multiline !== undefined) && {\n is_multiline: item.is_multiline || item.field_properties.is_multiline,\n }),\n is_required:\n item.validation.find((v: { type: string }) => v.type === \"required\")?.value ||\n thenValidations?.find((v: { type: string }) => v.type === \"required\")?.value ||\n false,\n is_unique:\n item.validation.find((v: { type: string }) => v.type === \"unique\")\n ?.value || false,\n section_order: item.section_order || 0,\n ...(item.field_properties?.float_step && {\n float_step: Number(item.field_properties.float_step),\n }),\n ...(item.field_properties?.options && {\n options: item.field_properties.options,\n }),\n ...(item.field_properties?.is_multiselect !== undefined && {\n is_multiselect: item.field_properties.is_multiselect,\n }),\n ...(item.field_properties?.enable_footer !== undefined && {\n enable_footer: Boolean(item.field_properties.enable_footer),\n }),\n ...(item.field_properties?.footer_action !== undefined && {\n footer_action: item.field_properties.footer_action || 'add',\n }),\n ...(item.field_type === \"date\" && {\n is_future_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_future_dates_allowed\",\n )?.value || null,\n }),\n ...(item.field_type === \"date\" && {\n is_past_dates_allowed:\n item.validation.find(\n (v: { type: string }) => v.type === \"is_past_dates_allowed\",\n )?.value || null,\n }),\n ...((item.field_type === \"image\" || item.field_type === \"media\" || item.field_type === \"file\") && {\n max_size:\n item.validation.find(\n (v: { type: string }) => v.type === \"max_file_size\",\n )?.value || undefined,\n is_multiple: item.field_properties?.is_multiple\n }),\n ...((item.field_type === \"toggleButton\" || item.field_type === \"checkbox\") && {\n title: item.field_properties?.title ? item.field_properties?.title : item.label,\n title_position: item.field_properties?.title_position ?? \"end\",\n is_checked: item.field_properties?.is_checked\n }),\n ...((item.field_type === \"table\") && {\n table: item.field_properties?.table,\n table_columns: convertTableColumns(item.field_properties?.table_columns),\n table_rows: item.field_properties?.table_rows,\n otherButtons: item.field_properties?.other_buttons || []\n }),\n };\n\n currentSection.members.push(member);\n if (\n currentSection.members.some((member: any) => member.type === \"system\")\n ) {\n currentSection.remove_section = true;\n } else {\n currentSection.remove_section = false;\n }\n }\n }\n );\n }\n\n return outputData;\n};\n\n\n\nfunction formatText(key: string): string {\n return key ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \") : key;\n}\n\nexport const convertTableColumns = (columns: string[]) => {\n if (!Array.isArray(columns)) return [];\n\n return columns.map(column => {\n if (typeof column === 'object') {\n return { ...column }\n } else {\n const colArr = column.split(\".\").filter(str => str)\n const header = colArr.length ? (colArr.length > 1 ? formatText(colArr[colArr.length - 1]) : formatText(colArr[0])) : \"-\"\n\n return {\n header,\n accessorKey: column,\n visible: true,\n }\n }\n })\n}\n\nexport default formBuilderDeConversion;\n"],"names":["styled","MUIMenu","jsx","Fragment","sum","useEffect","jsxs","Typography","MenuItem","MUIChip","Box","Document","defaultCurrencyFormat","toFixedWithNumbers","formatLabel","formatDate","defaultCurrencySymbol","formatAmount","_a","_b","_c","_d","generateRouteWithId","Link","column","images","formatAmountWithCurrency","useAuth","member"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
2
- import { f as Box, a as AppBarWrapper, A as ActivityArea } from "./appbar-Dn00gF0A.esm.js";
2
+ import { f as Box, a as AppBarWrapper, A as ActivityArea } from "./appbar-DM2iBqb4.esm.js";
3
3
  import { d as drawerWidth } from "./mui.constants-BFBzxaiA.esm.js";
4
4
  import { C as CssBaseline } from "./CssBaseline-qnbPrAjr.esm.js";
5
5
  const FullscreenLayout = (props) => {
@@ -13,4 +13,4 @@ const FullscreenLayout = (props) => {
13
13
  export {
14
14
  FullscreenLayout as F
15
15
  };
16
- //# sourceMappingURL=fullScreen-BdyRsEBm.esm.js.map
16
+ //# sourceMappingURL=fullScreen-BO0UA3Zr.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullScreen-BdyRsEBm.esm.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["jsx","AppBar"],"mappings":";;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,gDACE,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAA,kCAAAA,IAAC,aAAA,EAAY;AAAA,IACbA,kCAAAA,IAACC,eAAA,EAAO,OAAO,YAAA,CAAa;AAAA,IAC5BD,sCAAC,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;"}
1
+ {"version":3,"file":"fullScreen-BO0UA3Zr.esm.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["jsx","AppBar"],"mappings":";;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,gDACE,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAA,kCAAAA,IAAC,aAAA,EAAY;AAAA,IACbA,kCAAAA,IAACC,eAAA,EAAO,OAAO,YAAA,CAAa;AAAA,IAC5BD,sCAAC,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
3
- const appbar = require("./appbar-dBRF2bDa.js");
3
+ const appbar = require("./appbar-rfkAYQdQ.js");
4
4
  const mui_constants = require("./mui.constants-CJEIUmWO.js");
5
5
  const CssBaseline = require("./CssBaseline-Ba0wbudi.js");
6
6
  const FullscreenLayout = (props) => {
@@ -12,4 +12,4 @@ const FullscreenLayout = (props) => {
12
12
  ] });
13
13
  };
14
14
  exports.FullscreenLayout = FullscreenLayout;
15
- //# sourceMappingURL=fullScreen-BHrQ0vTa.js.map
15
+ //# sourceMappingURL=fullScreen-Bfrr-bT2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullScreen-BHrQ0vTa.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["Box","jsx","CssBaseline","AppBar","drawerWidth","ActivityArea"],"mappings":";;;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,2DACEA,OAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAC,2BAAAA,kBAAAA,IAACC,YAAAA,aAAA,EAAY;AAAA,IACbD,2BAAAA,kBAAAA,IAACE,OAAAA,eAAA,EAAO,OAAOC,cAAAA,YAAA,CAAa;AAAA,IAC5BH,iDAACI,OAAAA,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;;"}
1
+ {"version":3,"file":"fullScreen-Bfrr-bT2.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["Box","jsx","CssBaseline","AppBar","drawerWidth","ActivityArea"],"mappings":";;;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,2DACEA,OAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAC,2BAAAA,kBAAAA,IAACC,YAAAA,aAAA,EAAY;AAAA,IACbD,2BAAAA,kBAAAA,IAACE,OAAAA,eAAA,EAAO,OAAOC,cAAAA,YAAA,CAAa;AAAA,IAC5BH,iDAACI,OAAAA,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;;"}
@@ -3,10 +3,10 @@ const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
3
3
  const React = require("react");
4
4
  const reactI18next = require("react-i18next");
5
5
  const pathname_rental = require("./pathname.rental-C9fm1WTq.js");
6
- const common = require("./common-QvMCr1xx.js");
6
+ const common = require("./common-6VUrYJDq.js");
7
7
  const api = require("./api-DJMpbRRM.js");
8
8
  const apiConfig = require("./api-config-DXwDMFn-.js");
9
- const useAuth = require("./useAuth-BhsPEB2T.js");
9
+ const useAuth = require("./useAuth-HvZ6U960.js");
10
10
  const FALLBACK_LANGUAGES = [
11
11
  "en",
12
12
  // English as primary fallback
@@ -189,4 +189,4 @@ const LanguageProvider = ({ children }) => {
189
189
  };
190
190
  exports.LanguageContext = LanguageContext;
191
191
  exports.LanguageProvider = LanguageProvider;
192
- //# sourceMappingURL=languageContext-s_EUKz_A.js.map
192
+ //# sourceMappingURL=languageContext-BP7EvzMv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"languageContext-s_EUKz_A.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';\nimport { getApiConfig, isApiConfigInitialized } from '@/utils';\nimport { useAuth } from '@/hooks';\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\nexport interface 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 const { user, loading } = useAuth();\n\n // Initialize role URL - only when API config is available\n useEffect(() => {\n if (isApiConfigInitialized()) {\n setRoleURL(`${getApiConfig().backendBaseUrl}/rbac`);\n }\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 if(user?.id && !loading) {\n fetchLanguages();\n }\n //eslint-disable-next-line \n }, [user?.id, loading]);\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":["DEFAULT_LANG","createContext","useReducer","useTranslation","useAuth","useEffect","isApiConfigInitialized","setRoleURL","getApiConfig","getV1Languages","getToken"],"mappings":";;;;;;;;;AAgCA,MAAM,qBAAqB;AAAA,EACzB;AAAA;AAAA,EACA;AAAA;AAAA,EACAA,gBAAAA;AAAAA;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,kBAAkBC,MAAAA,cAA+C,MAAS;AAOzE,MAAM,mBAAoD,CAAC,EAAE,eAAe;AACjF,QAAM,CAAC,OAAO,QAAQ,IAAIC,MAAAA,WAAW,iBAAiB,YAAY;AAClE,QAAM,EAAE,KAAA,IAASC,4BAAA;AACjB,QAAM,EAAE,MAAM,QAAA,IAAYC,gBAAA;AAG1BC,QAAAA,UAAU,MAAM;AACd,QAAIC,UAAAA,0BAA0B;AAC5BC,UAAAA,aAAW,GAAGC,UAAAA,aAAA,EAAe,cAAc,OAAO;AAAA,IACpD;AAAA,EACF,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,MAAMC,mBAAe;AAAA,QACpC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,GAAGC,OAAAA,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;AAGAL,QAAAA,UAAU,MAAM;AACd,SAAG,6BAAM,OAAM,CAAC,SAAS;AACvB,qBAAA;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,6BAAM,IAAI,OAAO,CAAC;AAEtB,QAAM,eAAoC;AAAA,IACxC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EAAA;AAGF,0DACG,gBAAgB,UAAhB,EAAyB,OAAO,cAE9B,UACH;AAEJ;;;"}
1
+ {"version":3,"file":"languageContext-BP7EvzMv.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';\nimport { getApiConfig, isApiConfigInitialized } from '@/utils';\nimport { useAuth } from '@/hooks';\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\nexport interface 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 const { user, loading } = useAuth();\n\n // Initialize role URL - only when API config is available\n useEffect(() => {\n if (isApiConfigInitialized()) {\n setRoleURL(`${getApiConfig().backendBaseUrl}/rbac`);\n }\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 if(user?.id && !loading) {\n fetchLanguages();\n }\n //eslint-disable-next-line \n }, [user?.id, loading]);\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":["DEFAULT_LANG","createContext","useReducer","useTranslation","useAuth","useEffect","isApiConfigInitialized","setRoleURL","getApiConfig","getV1Languages","getToken"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
2
2
  import { createContext, useReducer, useEffect } from "react";
3
3
  import { useTranslation } from "react-i18next";
4
4
  import { D as DEFAULT_LANG } from "./pathname.rental-VYOFVGX6.esm.js";
5
- import { ar as getToken } from "./common-B-nmtH5r.esm.js";
5
+ import { ar as getToken } from "./common-B6euWODJ.esm.js";
6
6
  import { r as getV1Languages, j as setBaseUrl } from "./api-BAbF3OU7.esm.js";
7
7
  import { c as isApiConfigInitialized, g as getApiConfig } from "./api-config-GOys-syK.esm.js";
8
- import { u as useAuth } from "./useAuth-C4WcddEE.esm.js";
8
+ import { u as useAuth } from "./useAuth-Tfx2guEJ.esm.js";
9
9
  const FALLBACK_LANGUAGES = [
10
10
  "en",
11
11
  // English as primary fallback
@@ -190,4 +190,4 @@ export {
190
190
  LanguageContext as L,
191
191
  LanguageProvider as a
192
192
  };
193
- //# sourceMappingURL=languageContext-CbCRCTbP.esm.js.map
193
+ //# sourceMappingURL=languageContext-DM_LTp53.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"languageContext-CbCRCTbP.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';\nimport { getApiConfig, isApiConfigInitialized } from '@/utils';\nimport { useAuth } from '@/hooks';\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\nexport interface 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 const { user, loading } = useAuth();\n\n // Initialize role URL - only when API config is available\n useEffect(() => {\n if (isApiConfigInitialized()) {\n setRoleURL(`${getApiConfig().backendBaseUrl}/rbac`);\n }\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 if(user?.id && !loading) {\n fetchLanguages();\n }\n //eslint-disable-next-line \n }, [user?.id, loading]);\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":"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"}
1
+ {"version":3,"file":"languageContext-DM_LTp53.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';\nimport { getApiConfig, isApiConfigInitialized } from '@/utils';\nimport { useAuth } from '@/hooks';\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\nexport interface 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 const { user, loading } = useAuth();\n\n // Initialize role URL - only when API config is available\n useEffect(() => {\n if (isApiConfigInitialized()) {\n setRoleURL(`${getApiConfig().backendBaseUrl}/rbac`);\n }\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 if(user?.id && !loading) {\n fetchLanguages();\n }\n //eslint-disable-next-line \n }, [user?.id, loading]);\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":"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"}
@@ -8,7 +8,7 @@ import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
8
8
  import { r as requireObjectAssign, P as PropTypes } from "./identifier-u4E_J1of.esm.js";
9
9
  import { g as getDefaultExportFromCjs } from "./_commonjsHelpers-CcAunmGO.esm.js";
10
10
  import React__default$1 from "react";
11
- import { g as generateRouteWithId } from "./useAuth-C4WcddEE.esm.js";
11
+ import { g as generateRouteWithId } from "./useAuth-Tfx2guEJ.esm.js";
12
12
  i18n.use(i18nBackend).use(initReactI18next).init({
13
13
  fallbackLng: "en",
14
14
  lng: DEFAULT_LANG,
@@ -1264,4 +1264,4 @@ export {
1264
1264
  pastDateValidation as r,
1265
1265
  updateTableConfigForParameterizedNavigation as u
1266
1266
  };
1267
- //# sourceMappingURL=migration-utils-Bn35YUJM.esm.js.map
1267
+ //# sourceMappingURL=migration-utils-D9TSOBR0.esm.js.map