@erpsquad/common 1.11.8 → 1.11.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/dist/api-client/index.esm.js +2 -2
  2. package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js → DynamicDependentField-DOGY6cA_.esm.js} +2 -2
  3. package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js.map → DynamicDependentField-DOGY6cA_.esm.js.map} +1 -1
  4. package/dist/chunks/{DynamicDependentField-CQIfDDqc.js → DynamicDependentField-GTIwrPfP.js} +2 -2
  5. package/dist/chunks/{DynamicDependentField-CQIfDDqc.js.map → DynamicDependentField-GTIwrPfP.js.map} +1 -1
  6. package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js → ERPUIProvider-Dz0s77BR.esm.js} +3 -3
  7. package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js.map → ERPUIProvider-Dz0s77BR.esm.js.map} +1 -1
  8. package/dist/chunks/EditorSection-BLGcgQFm.esm.js +849 -0
  9. package/dist/chunks/EditorSection-BLGcgQFm.esm.js.map +1 -0
  10. package/dist/chunks/EditorSection-D6yaBfjP.js +848 -0
  11. package/dist/chunks/EditorSection-D6yaBfjP.js.map +1 -0
  12. package/dist/chunks/{FORMS-pxf6g6xE.esm.js → FORMS-CR_DlD1m.esm.js} +8 -8
  13. package/dist/chunks/{FORMS-pxf6g6xE.esm.js.map → FORMS-CR_DlD1m.esm.js.map} +1 -1
  14. package/dist/chunks/{FORMS-CUx32b_4.js → FORMS-EouVYay1.js} +5 -5
  15. package/dist/chunks/{FORMS-CUx32b_4.js.map → FORMS-EouVYay1.js.map} +1 -1
  16. package/dist/chunks/{FlexibleReduxExample-C-2qOGIw.esm.js → FlexibleReduxExample-B2e7Wa_S.esm.js} +4 -4
  17. package/dist/chunks/{FlexibleReduxExample-C-2qOGIw.esm.js.map → FlexibleReduxExample-B2e7Wa_S.esm.js.map} +1 -1
  18. package/dist/chunks/{FlexibleReduxExample--GtoEJhc.js → FlexibleReduxExample-CMUylyy1.js} +3 -3
  19. package/dist/chunks/{FlexibleReduxExample--GtoEJhc.js.map → FlexibleReduxExample-CMUylyy1.js.map} +1 -1
  20. package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js +12543 -0
  21. package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js.map +1 -0
  22. package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js +12542 -0
  23. package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js.map +1 -0
  24. package/dist/chunks/{action-bar-C7Alva4T.esm.js → action-bar-Ci6RlMBM.esm.js} +6 -6
  25. package/dist/chunks/{action-bar-C7Alva4T.esm.js.map → action-bar-Ci6RlMBM.esm.js.map} +1 -1
  26. package/dist/chunks/{action-bar-DdtpxWNk.js → action-bar-jLqQTqU7.js} +3 -3
  27. package/dist/chunks/{action-bar-DdtpxWNk.js.map → action-bar-jLqQTqU7.js.map} +1 -1
  28. package/dist/chunks/{actionCreator-CpePNxQM.esm.js → actionCreator-B6lXR_k1.esm.js} +2 -2
  29. package/dist/chunks/{actionCreator-CpePNxQM.esm.js.map → actionCreator-B6lXR_k1.esm.js.map} +1 -1
  30. package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js → actionCreator-D3uwEAua.esm.js} +3 -3
  31. package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js.map → actionCreator-D3uwEAua.esm.js.map} +1 -1
  32. package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js → actionCreator-DIdMRO9L.esm.js} +2 -2
  33. package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js.map → actionCreator-DIdMRO9L.esm.js.map} +1 -1
  34. package/dist/chunks/{actionCreator-Cb3NxILP.esm.js → actionCreator-DKYufGAZ.esm.js} +2 -2
  35. package/dist/chunks/{actionCreator-Cb3NxILP.esm.js.map → actionCreator-DKYufGAZ.esm.js.map} +1 -1
  36. package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js → actionCreator-DcdyGsIX.esm.js} +3 -3
  37. package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js.map → actionCreator-DcdyGsIX.esm.js.map} +1 -1
  38. package/dist/chunks/add-template-CUPbU0z7.js +10 -0
  39. package/dist/chunks/add-template-CUPbU0z7.js.map +1 -0
  40. package/dist/chunks/add-template-CxvhzFMF.esm.js +11 -0
  41. package/dist/chunks/add-template-CxvhzFMF.esm.js.map +1 -0
  42. package/dist/chunks/{address-modal-CYhiC7ui.js → address-modal-DFd5sQtR.js} +2 -2
  43. package/dist/chunks/{address-modal-CYhiC7ui.js.map → address-modal-DFd5sQtR.js.map} +1 -1
  44. package/dist/chunks/{address-modal-CkDBjnye.esm.js → address-modal-DYGLjrqd.esm.js} +2 -2
  45. package/dist/chunks/{address-modal-CkDBjnye.esm.js.map → address-modal-DYGLjrqd.esm.js.map} +1 -1
  46. package/dist/chunks/{ai-summary-SKK5KN2s.esm.js → ai-summary-x2t8BZCx.esm.js} +2 -2
  47. package/dist/chunks/{ai-summary-SKK5KN2s.esm.js.map → ai-summary-x2t8BZCx.esm.js.map} +1 -1
  48. package/dist/chunks/{api-BIVCMSwW.esm.js → api-8jutPLh0.esm.js} +3 -3
  49. package/dist/chunks/{api-BIVCMSwW.esm.js.map → api-8jutPLh0.esm.js.map} +1 -1
  50. package/dist/chunks/{api-DBmWILBN.esm.js → api-yLpQ3k5s.esm.js} +9 -9
  51. package/dist/chunks/{api-DBmWILBN.esm.js.map → api-yLpQ3k5s.esm.js.map} +1 -1
  52. package/dist/chunks/{app-switcher-D-Bvz9uO.esm.js → app-switcher-B6eapuGG.esm.js} +2 -2
  53. package/dist/chunks/{app-switcher-D-Bvz9uO.esm.js.map → app-switcher-B6eapuGG.esm.js.map} +1 -1
  54. package/dist/chunks/{app-switcher-CyEQmYAN.js → app-switcher-VhH9z0Rd.js} +2 -2
  55. package/dist/chunks/{app-switcher-CyEQmYAN.js.map → app-switcher-VhH9z0Rd.js.map} +1 -1
  56. package/dist/chunks/{appbar-BRbO--as.esm.js → appbar-B8EgZsrn.esm.js} +2 -2
  57. package/dist/chunks/{appbar-BRbO--as.esm.js.map → appbar-B8EgZsrn.esm.js.map} +1 -1
  58. package/dist/chunks/{appbar-rqqjZ99v.js → appbar-Is_7kfVo.js} +2 -2
  59. package/dist/chunks/{appbar-rqqjZ99v.js.map → appbar-Is_7kfVo.js.map} +1 -1
  60. package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js → approval-wrapper-_kYfACQp.esm.js} +2 -2
  61. package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js.map → approval-wrapper-_kYfACQp.esm.js.map} +1 -1
  62. package/dist/chunks/{chat-bot-osiGMG3g.js → chat-bot-2Ga_xA_K.js} +32 -38
  63. package/dist/chunks/chat-bot-2Ga_xA_K.js.map +1 -0
  64. package/dist/chunks/{chat-bot-BpNtrZEL.esm.js → chat-bot-DO3vAGxA.esm.js} +33 -39
  65. package/dist/chunks/chat-bot-DO3vAGxA.esm.js.map +1 -0
  66. package/dist/chunks/common-BgXEAs_y.esm.js +851 -0
  67. package/dist/chunks/common-BgXEAs_y.esm.js.map +1 -0
  68. package/dist/chunks/{common-yORBIVv-.esm.js → common-Cl5oGXmX.esm.js} +2 -2
  69. package/dist/chunks/{common-yORBIVv-.esm.js.map → common-Cl5oGXmX.esm.js.map} +1 -1
  70. package/dist/chunks/common-D6T6NGWY.js +850 -0
  71. package/dist/chunks/common-D6T6NGWY.js.map +1 -0
  72. package/dist/chunks/{common-CS5L0Ld_.js → common-PH2uWkqL.js} +2 -2
  73. package/dist/chunks/{common-CS5L0Ld_.js.map → common-PH2uWkqL.js.map} +1 -1
  74. package/dist/chunks/common-utility-CA_Upser.js.map +1 -1
  75. package/dist/chunks/{common-utility-DGpbsf7S.esm.js → common-utility-CS_sNoAC.esm.js} +2 -2
  76. package/dist/chunks/common-utility-CS_sNoAC.esm.js.map +1 -0
  77. package/dist/chunks/company-selection-modal-B7jFVWWs.js.map +1 -1
  78. package/dist/chunks/company-selection-modal-Dn2L_skh.esm.js.map +1 -1
  79. package/dist/chunks/{constant-Bwg2s_Sn.esm.js → constant-BXPcBhJN.esm.js} +35 -5
  80. package/dist/chunks/constant-BXPcBhJN.esm.js.map +1 -0
  81. package/dist/chunks/{constant-ZYAN_teD.js → constant-BXeJD4Af.js} +35 -5
  82. package/dist/chunks/constant-BXeJD4Af.js.map +1 -0
  83. package/dist/chunks/{constants-nmkxkzps.esm.js → constants-BrmMAwu2.esm.js} +2 -2
  84. package/dist/chunks/{constants-nmkxkzps.esm.js.map → constants-BrmMAwu2.esm.js.map} +1 -1
  85. package/dist/chunks/{constants-06kIVUBw.js → constants-D_xuLHSu.js} +2 -2
  86. package/dist/chunks/{constants-06kIVUBw.js.map → constants-D_xuLHSu.js.map} +1 -1
  87. package/dist/chunks/{custom-editor-6-xqhKz6.esm.js → custom-editor-C-B5BK-H.esm.js} +3 -3
  88. package/dist/chunks/{custom-editor-6-xqhKz6.esm.js.map → custom-editor-C-B5BK-H.esm.js.map} +1 -1
  89. package/dist/chunks/{custom-form-DD7YOHMF.esm.js → custom-form-DNUpk0nq.esm.js} +7 -7
  90. package/dist/chunks/{custom-form-DD7YOHMF.esm.js.map → custom-form-DNUpk0nq.esm.js.map} +1 -1
  91. package/dist/chunks/{custom-form-CFU7NEVb.js → custom-form-T4yc_sE_.js} +4 -4
  92. package/dist/chunks/{custom-form-CFU7NEVb.js.map → custom-form-T4yc_sE_.js.map} +1 -1
  93. package/dist/chunks/{dashboard-DL83yYRR.esm.js → dashboard-B4xzJ1Xc.esm.js} +4 -4
  94. package/dist/chunks/{dashboard-DL83yYRR.esm.js.map → dashboard-B4xzJ1Xc.esm.js.map} +1 -1
  95. package/dist/chunks/{dashboard-BcWVkWZt.js → dashboard-eMHQayU_.js} +3 -3
  96. package/dist/chunks/{dashboard-BcWVkWZt.js.map → dashboard-eMHQayU_.js.map} +1 -1
  97. package/dist/chunks/default-data-6IxhqPTP.esm.js.map +1 -1
  98. package/dist/chunks/default-data-yreKVx_z.js.map +1 -1
  99. package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js → dynamic-report-CMguvXj2.esm.js} +4 -4
  100. package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js.map → dynamic-report-CMguvXj2.esm.js.map} +1 -1
  101. package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js → dynamic-rows-CmAE9nbA.esm.js} +2 -2
  102. package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js.map → dynamic-rows-CmAE9nbA.esm.js.map} +1 -1
  103. package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js → dynamic-text-editor-CSWdR1lK.esm.js} +2 -2
  104. package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js.map → dynamic-text-editor-CSWdR1lK.esm.js.map} +1 -1
  105. package/dist/chunks/edit-section-modal-Br2ITvLk.js.map +1 -1
  106. package/dist/chunks/{edit-section-modal-BW-aZmUv.esm.js → edit-section-modal-HihKbN6K.esm.js} +2 -2
  107. package/dist/chunks/edit-section-modal-HihKbN6K.esm.js.map +1 -0
  108. package/dist/chunks/{filter-COXKBEER.esm.js → filter-D9BHP_qc.esm.js} +5 -5
  109. package/dist/chunks/{filter-COXKBEER.esm.js.map → filter-D9BHP_qc.esm.js.map} +1 -1
  110. package/dist/chunks/{filter-Cr_OSIpb.js → filter-DtCrOG6W.js} +3 -3
  111. package/dist/chunks/{filter-Cr_OSIpb.js.map → filter-DtCrOG6W.js.map} +1 -1
  112. package/dist/chunks/{footer-m3_dlNl8.esm.js → footer-Bv5NOAf9.esm.js} +2 -2
  113. package/dist/chunks/{footer-m3_dlNl8.esm.js.map → footer-Bv5NOAf9.esm.js.map} +1 -1
  114. package/dist/chunks/{footer-CD3kMRdS.js → footer-DioOh69g.js} +2 -2
  115. package/dist/chunks/{footer-CD3kMRdS.js.map → footer-DioOh69g.js.map} +1 -1
  116. package/dist/chunks/{form-fields-yE9kwjvb.js → form-fields-BYDhbAgB.js} +2 -2
  117. package/dist/chunks/{form-fields-yE9kwjvb.js.map → form-fields-BYDhbAgB.js.map} +1 -1
  118. package/dist/chunks/{form-fields-hMMnB_wE.esm.js → form-fields-Di-p9XKG.esm.js} +2 -2
  119. package/dist/chunks/{form-fields-hMMnB_wE.esm.js.map → form-fields-Di-p9XKG.esm.js.map} +1 -1
  120. package/dist/chunks/{form-parser-m4fnw38a.js → form-parser-BnMdMDSb.js} +2 -2
  121. package/dist/chunks/{form-parser-m4fnw38a.js.map → form-parser-BnMdMDSb.js.map} +1 -1
  122. package/dist/chunks/{form-parser-DbnSn5eY.esm.js → form-parser-ZQpEVrzG.esm.js} +2 -2
  123. package/dist/chunks/{form-parser-DbnSn5eY.esm.js.map → form-parser-ZQpEVrzG.esm.js.map} +1 -1
  124. package/dist/chunks/{form-section-TMjdOVeW.esm.js → form-section-BJ7Iqb9R.esm.js} +5 -5
  125. package/dist/chunks/{form-section-TMjdOVeW.esm.js.map → form-section-BJ7Iqb9R.esm.js.map} +1 -1
  126. package/dist/chunks/{form-section-CPIyMdk2.js → form-section-CFeWD-tF.js} +5 -5
  127. package/dist/chunks/{form-section-CPIyMdk2.js.map → form-section-CFeWD-tF.js.map} +1 -1
  128. package/dist/chunks/{fullScreen-DFgzE41_.esm.js → fullScreen-Cz3FIdU4.esm.js} +5 -5
  129. package/dist/chunks/fullScreen-Cz3FIdU4.esm.js.map +1 -0
  130. package/dist/chunks/{fullScreen-BLLa9ogA.js → fullScreen-h0JqBN4O.js} +5 -5
  131. package/dist/chunks/fullScreen-h0JqBN4O.js.map +1 -0
  132. package/dist/chunks/{global-search-BjKPmzsQ.js → global-search-BTV5iL6-.js} +2 -2
  133. package/dist/chunks/{global-search-BjKPmzsQ.js.map → global-search-BTV5iL6-.js.map} +1 -1
  134. package/dist/chunks/{global-search-BOkxXiZ0.esm.js → global-search-CGmupYFQ.esm.js} +3 -3
  135. package/dist/chunks/{global-search-BOkxXiZ0.esm.js.map → global-search-CGmupYFQ.esm.js.map} +1 -1
  136. package/dist/chunks/{grid-view-Bo86x7YL.esm.js → grid-view-BMfleQMC.esm.js} +2 -2
  137. package/dist/chunks/{grid-view-Bo86x7YL.esm.js.map → grid-view-BMfleQMC.esm.js.map} +1 -1
  138. package/dist/chunks/{header-B-HaoeK7.esm.js → header-BnVzqpGs.esm.js} +12 -10
  139. package/dist/chunks/{header-B-HaoeK7.esm.js.map → header-BnVzqpGs.esm.js.map} +1 -1
  140. package/dist/chunks/{header-enhanced-BjfqyQ1a.esm.js → header-enhanced-CkROCaOF.esm.js} +3 -3
  141. package/dist/chunks/{header-enhanced-BjfqyQ1a.esm.js.map → header-enhanced-CkROCaOF.esm.js.map} +1 -1
  142. package/dist/chunks/{header-enhanced-gJl4iC4m.js → header-enhanced-Dxdetx0I.js} +3 -3
  143. package/dist/chunks/{header-enhanced-gJl4iC4m.js.map → header-enhanced-Dxdetx0I.js.map} +1 -1
  144. package/dist/chunks/{header-BHsex2As.js → header-jWPMgcy6.js} +11 -9
  145. package/dist/chunks/{header-BHsex2As.js.map → header-jWPMgcy6.js.map} +1 -1
  146. package/dist/chunks/{index-ALqg8b5U.esm.js → index-BCmGHdos.esm.js} +2 -2
  147. package/dist/chunks/{index-ALqg8b5U.esm.js.map → index-BCmGHdos.esm.js.map} +1 -1
  148. package/dist/chunks/{index-BBWIBqaP.js → index-DBvje0t5.js} +73 -66
  149. package/dist/chunks/{index-BBWIBqaP.js.map → index-DBvje0t5.js.map} +1 -1
  150. package/dist/chunks/{index-BuPgYdiN.esm.js → index-DqwpZRkl.esm.js} +73 -66
  151. package/dist/chunks/{index-BuPgYdiN.esm.js.map → index-DqwpZRkl.esm.js.map} +1 -1
  152. package/dist/chunks/{inline-edit-fields-atDP84QL.js → inline-edit-fields-Cd_qUOjU.js} +2 -2
  153. package/dist/chunks/{inline-edit-fields-atDP84QL.js.map → inline-edit-fields-Cd_qUOjU.js.map} +1 -1
  154. package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js → inline-edit-fields-VOIx3qmC.esm.js} +2 -2
  155. package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js.map → inline-edit-fields-VOIx3qmC.esm.js.map} +1 -1
  156. package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js → inventory-reports-title-bar-BfUMM54c.js} +2 -2
  157. package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js.map → inventory-reports-title-bar-BfUMM54c.js.map} +1 -1
  158. package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js → inventory-reports-title-bar-CZZFFqDc.esm.js} +3 -3
  159. package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js.map → inventory-reports-title-bar-CZZFFqDc.esm.js.map} +1 -1
  160. package/dist/chunks/{item-response-details-SHSD-nBh.esm.js → item-response-details-BTHf6ZvN.esm.js} +4 -4
  161. package/dist/chunks/{item-response-details-SHSD-nBh.esm.js.map → item-response-details-BTHf6ZvN.esm.js.map} +1 -1
  162. package/dist/chunks/{item-response-details-DsGQ7Dlc.js → item-response-details-BheThTTK.js} +2 -2
  163. package/dist/chunks/{item-response-details-DsGQ7Dlc.js.map → item-response-details-BheThTTK.js.map} +1 -1
  164. package/dist/chunks/{listing-DIuzQrzb.js → listing-Dr_1DDBr.js} +4 -4
  165. package/dist/chunks/{listing-DIuzQrzb.js.map → listing-Dr_1DDBr.js.map} +1 -1
  166. package/dist/chunks/{listing-C0Yb6MVq.esm.js → listing-ELQeM6S3.esm.js} +4 -4
  167. package/dist/chunks/{listing-C0Yb6MVq.esm.js.map → listing-ELQeM6S3.esm.js.map} +1 -1
  168. package/dist/chunks/{location-select-g5uczAUF.js → location-select-CLyRUilk.js} +2 -2
  169. package/dist/chunks/{location-select-g5uczAUF.js.map → location-select-CLyRUilk.js.map} +1 -1
  170. package/dist/chunks/{location-select-CFa00fy4.esm.js → location-select-z1C88kCy.esm.js} +2 -2
  171. package/dist/chunks/{location-select-CFa00fy4.esm.js.map → location-select-z1C88kCy.esm.js.map} +1 -1
  172. package/dist/chunks/{material-editable-table-BGLjrTzT.js → material-editable-table-DFGB0q-s.js} +3 -3
  173. package/dist/chunks/{material-editable-table-BGLjrTzT.js.map → material-editable-table-DFGB0q-s.js.map} +1 -1
  174. package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js → material-editable-table-DyGdqNkX.esm.js} +4 -4
  175. package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js.map → material-editable-table-DyGdqNkX.esm.js.map} +1 -1
  176. package/dist/chunks/{metaComponent-B6kkj54U.esm.js → metaComponent-BqgfR7kW.esm.js} +2 -2
  177. package/dist/chunks/{metaComponent-B6kkj54U.esm.js.map → metaComponent-BqgfR7kW.esm.js.map} +1 -1
  178. package/dist/chunks/{metaComponent-D9sAbeXz.js → metaComponent-GukpY87Z.js} +2 -2
  179. package/dist/chunks/{metaComponent-D9sAbeXz.js.map → metaComponent-GukpY87Z.js.map} +1 -1
  180. package/dist/chunks/{module-reducer-DMxxForv.esm.js → module-reducer-CEv3LZCX.esm.js} +2 -2
  181. package/dist/chunks/{module-reducer-DMxxForv.esm.js.map → module-reducer-CEv3LZCX.esm.js.map} +1 -1
  182. package/dist/chunks/{modules-maXT99-4.js → modules-DTRr7zwt.js} +5 -5
  183. package/dist/chunks/{modules-maXT99-4.js.map → modules-DTRr7zwt.js.map} +1 -1
  184. package/dist/chunks/{modules-BBu2Y-K9.esm.js → modules-enwLrpfQ.esm.js} +5 -5
  185. package/dist/chunks/{modules-BBu2Y-K9.esm.js.map → modules-enwLrpfQ.esm.js.map} +1 -1
  186. package/dist/chunks/{notification-menu-D7ASm-K1.js → notification-menu-B00hDUbn.js} +2 -2
  187. package/dist/chunks/{notification-menu-D7ASm-K1.js.map → notification-menu-B00hDUbn.js.map} +1 -1
  188. package/dist/chunks/{notification-menu-XAadkn-e.esm.js → notification-menu-CehCt5fA.esm.js} +4 -4
  189. package/dist/chunks/{notification-menu-XAadkn-e.esm.js.map → notification-menu-CehCt5fA.esm.js.map} +1 -1
  190. package/dist/chunks/{page-action-C07iGjvN.esm.js → page-action-RqVevciV.esm.js} +4 -4
  191. package/dist/chunks/{page-action-C07iGjvN.esm.js.map → page-action-RqVevciV.esm.js.map} +1 -1
  192. package/dist/chunks/{page-action-BPzaL2KJ.js → page-action-TMFOytDw.js} +2 -2
  193. package/dist/chunks/{page-action-BPzaL2KJ.js.map → page-action-TMFOytDw.js.map} +1 -1
  194. package/dist/chunks/{page-navigator-8gZpp9_P.esm.js → page-navigator-CuIJ0KGf.esm.js} +2 -2
  195. package/dist/chunks/{page-navigator-8gZpp9_P.esm.js.map → page-navigator-CuIJ0KGf.esm.js.map} +1 -1
  196. package/dist/chunks/{page-navigator-Cgbh3tTG.js → page-navigator-DdRsmtLy.js} +2 -2
  197. package/dist/chunks/{page-navigator-Cgbh3tTG.js.map → page-navigator-DdRsmtLy.js.map} +1 -1
  198. package/dist/chunks/{page-view-DJ6HS_dV.js → page-view-CvfqzV03.js} +3 -3
  199. package/dist/chunks/{page-view-DJ6HS_dV.js.map → page-view-CvfqzV03.js.map} +1 -1
  200. package/dist/chunks/{page-view-CokUNMBn.esm.js → page-view-Daz-OKd_.esm.js} +3 -3
  201. package/dist/chunks/{page-view-CokUNMBn.esm.js.map → page-view-Daz-OKd_.esm.js.map} +1 -1
  202. package/dist/chunks/{pathname.rental-qsAe3XFd.esm.js → pathname.rental-CqHO_l_D.esm.js} +76 -81
  203. package/dist/chunks/{pathname.rental-qsAe3XFd.esm.js.map → pathname.rental-CqHO_l_D.esm.js.map} +1 -1
  204. package/dist/chunks/{pathname.rental-DgH4LoG7.js → pathname.rental-CwK6JuID.js} +2 -7
  205. package/dist/chunks/{pathname.rental-DgH4LoG7.js.map → pathname.rental-CwK6JuID.js.map} +1 -1
  206. package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js → quick-approval-modal-B-jvkgue.esm.js} +2 -2
  207. package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js.map → quick-approval-modal-B-jvkgue.esm.js.map} +1 -1
  208. package/dist/chunks/{reducer-CdJ6znKF.esm.js → reducer-BMkh_0Py.esm.js} +3 -3
  209. package/dist/chunks/{reducer-CdJ6znKF.esm.js.map → reducer-BMkh_0Py.esm.js.map} +1 -1
  210. package/dist/chunks/{reducer-3tSO6RW6.esm.js → reducer-BOwyP0QZ.esm.js} +3 -3
  211. package/dist/chunks/{reducer-3tSO6RW6.esm.js.map → reducer-BOwyP0QZ.esm.js.map} +1 -1
  212. package/dist/chunks/{reducer-IsgN83rP.esm.js → reducer-BTfG9J4W.esm.js} +2 -2
  213. package/dist/chunks/{reducer-IsgN83rP.esm.js.map → reducer-BTfG9J4W.esm.js.map} +1 -1
  214. package/dist/chunks/{reducer-yyZtsg1A.esm.js → reducer-BWiX5vxL.esm.js} +2 -2
  215. package/dist/chunks/{reducer-yyZtsg1A.esm.js.map → reducer-BWiX5vxL.esm.js.map} +1 -1
  216. package/dist/chunks/{reducer-sgaK2vfW.esm.js → reducer-CD1VDqeT.esm.js} +2 -2
  217. package/dist/chunks/{reducer-sgaK2vfW.esm.js.map → reducer-CD1VDqeT.esm.js.map} +1 -1
  218. package/dist/chunks/{reports-title-bar-Kz6JjqsY.js → reports-title-bar-B1_IweEc.js} +2 -2
  219. package/dist/chunks/{reports-title-bar-Kz6JjqsY.js.map → reports-title-bar-B1_IweEc.js.map} +1 -1
  220. package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js → reports-title-bar-Kl8XQe-K.esm.js} +4 -4
  221. package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js.map → reports-title-bar-Kl8XQe-K.esm.js.map} +1 -1
  222. package/dist/chunks/{route-page-map-Dn-SAbdf.js → route-page-map-CzFUh-SC.js} +3 -60
  223. package/dist/chunks/{route-page-map-Dn-SAbdf.js.map → route-page-map-CzFUh-SC.js.map} +1 -1
  224. package/dist/chunks/{route-page-map-DkWoisiB.esm.js → route-page-map-D6-7jBQT.esm.js} +76 -133
  225. package/dist/chunks/{route-page-map-DkWoisiB.esm.js.map → route-page-map-D6-7jBQT.esm.js.map} +1 -1
  226. package/dist/chunks/{routes-CAc76Zan.esm.js → routes-D9y_XQRu.esm.js} +4 -4
  227. package/dist/chunks/{routes-CAc76Zan.esm.js.map → routes-D9y_XQRu.esm.js.map} +1 -1
  228. package/dist/chunks/{routes-CfqLAYgR.js → routes-Dsumzjw0.js} +4 -4
  229. package/dist/chunks/{routes-CfqLAYgR.js.map → routes-Dsumzjw0.js.map} +1 -1
  230. package/dist/chunks/{schedule-report-B4ZfEuiU.js → schedule-report-BwmZ5jea.js} +4 -4
  231. package/dist/chunks/{schedule-report-B4ZfEuiU.js.map → schedule-report-BwmZ5jea.js.map} +1 -1
  232. package/dist/chunks/{schedule-report-CLXjjfjc.esm.js → schedule-report-CJXHVZ68.esm.js} +6 -6
  233. package/dist/chunks/{schedule-report-CLXjjfjc.esm.js.map → schedule-report-CJXHVZ68.esm.js.map} +1 -1
  234. package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js → schedule-report-modal-D8Y-TZ4u.esm.js} +3 -3
  235. package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js.map → schedule-report-modal-D8Y-TZ4u.esm.js.map} +1 -1
  236. package/dist/chunks/{schedule-report-modal-iwoDI-sg.js → schedule-report-modal-iNnWP9s4.js} +2 -2
  237. package/dist/chunks/{schedule-report-modal-iwoDI-sg.js.map → schedule-report-modal-iNnWP9s4.js.map} +1 -1
  238. package/dist/chunks/{searchable-select-0F6E4XAr.esm.js → searchable-select-BQtcqBKV.esm.js} +6 -6
  239. package/dist/chunks/{searchable-select-0F6E4XAr.esm.js.map → searchable-select-BQtcqBKV.esm.js.map} +1 -1
  240. package/dist/chunks/{searchable-select-_DCkITfk.js → searchable-select-DVUCWWti.js} +2 -2
  241. package/dist/chunks/{searchable-select-_DCkITfk.js.map → searchable-select-DVUCWWti.js.map} +1 -1
  242. package/dist/chunks/{share-modal-BaEyZs2h.esm.js → share-modal-BOyLBawK.esm.js} +3 -3
  243. package/dist/chunks/{share-modal-BaEyZs2h.esm.js.map → share-modal-BOyLBawK.esm.js.map} +1 -1
  244. package/dist/chunks/{share-modal-DrXvh-fV.js → share-modal-CobK7BN7.js} +2 -2
  245. package/dist/chunks/{share-modal-DrXvh-fV.js.map → share-modal-CobK7BN7.js.map} +1 -1
  246. package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js → share-modal-enhanced-CTp-tQw8.esm.js} +2 -2
  247. package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js.map → share-modal-enhanced-CTp-tQw8.esm.js.map} +1 -1
  248. package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js → share-modal-enhanced-DVarD-jt.js} +2 -2
  249. package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js.map → share-modal-enhanced-DVarD-jt.js.map} +1 -1
  250. package/dist/chunks/{sidebarScreen-DpYj_wlK.js → sidebarScreen-K-dlM6NA.js} +3 -3
  251. package/dist/chunks/{sidebarScreen-DpYj_wlK.js.map → sidebarScreen-K-dlM6NA.js.map} +1 -1
  252. package/dist/chunks/{sidebarScreen-DiOAiXeU.esm.js → sidebarScreen-lR6rw8bW.esm.js} +4 -4
  253. package/dist/chunks/{sidebarScreen-DiOAiXeU.esm.js.map → sidebarScreen-lR6rw8bW.esm.js.map} +1 -1
  254. package/dist/chunks/{store-BL5VFPie.esm.js → store-DJh8C3Vv.esm.js} +6 -6
  255. package/dist/chunks/{store-BL5VFPie.esm.js.map → store-DJh8C3Vv.esm.js.map} +1 -1
  256. package/dist/chunks/{table-DWx7x8zw.js → table-Bpt6ggr3.js} +2 -2
  257. package/dist/chunks/{table-DWx7x8zw.js.map → table-Bpt6ggr3.js.map} +1 -1
  258. package/dist/chunks/{table-gxAlAeTq.esm.js → table-DI3MyTNm.esm.js} +3 -3
  259. package/dist/chunks/{table-gxAlAeTq.esm.js.map → table-DI3MyTNm.esm.js.map} +1 -1
  260. package/dist/chunks/{table-form-DsTwCUcs.esm.js → table-form-8_f3FwhX.esm.js} +2 -2
  261. package/dist/chunks/{table-form-DsTwCUcs.esm.js.map → table-form-8_f3FwhX.esm.js.map} +1 -1
  262. package/dist/chunks/{template-editor-router-D4NIwVws.js → template-editor-router-DugWbCh0.js} +2 -2
  263. package/dist/chunks/{template-editor-router-D4NIwVws.js.map → template-editor-router-DugWbCh0.js.map} +1 -1
  264. package/dist/chunks/{template-editor-router-BXLUTvsk.esm.js → template-editor-router-uzghBOap.esm.js} +2 -2
  265. package/dist/chunks/{template-editor-router-BXLUTvsk.esm.js.map → template-editor-router-uzghBOap.esm.js.map} +1 -1
  266. package/dist/chunks/{template-modal-B2VgotrF.esm.js → template-modal-D7aLacan.esm.js} +7 -6
  267. package/dist/chunks/template-modal-D7aLacan.esm.js.map +1 -0
  268. package/dist/chunks/{template-modal-X-iSmlki.js → template-modal-Df7gF4QI.js} +5 -4
  269. package/dist/chunks/template-modal-Df7gF4QI.js.map +1 -0
  270. package/dist/chunks/{template-name-modal-CeqxIE2r.js → template-name-modal-ClreVUaz.js} +12 -5
  271. package/dist/chunks/template-name-modal-ClreVUaz.js.map +1 -0
  272. package/dist/chunks/{template-name-modal-Dctn8t3t.esm.js → template-name-modal-Dwe7U72p.esm.js} +12 -5
  273. package/dist/chunks/template-name-modal-Dwe7U72p.esm.js.map +1 -0
  274. package/dist/chunks/{templates-CCy1eG6A.esm.js → templates-9ZMHwRR6.esm.js} +10 -17
  275. package/dist/chunks/templates-9ZMHwRR6.esm.js.map +1 -0
  276. package/dist/chunks/{templates-CUREMwYo.js → templates-DCXbeOtH.js} +7 -14
  277. package/dist/chunks/templates-DCXbeOtH.js.map +1 -0
  278. package/dist/chunks/{text-area-B3nAZgFI.js → text-area-DxJs3eyE.js} +2 -2
  279. package/dist/chunks/{text-area-B3nAZgFI.js.map → text-area-DxJs3eyE.js.map} +1 -1
  280. package/dist/chunks/{text-area-xMWbJY0H.esm.js → text-area-zcBhicgg.esm.js} +2 -2
  281. package/dist/chunks/{text-area-xMWbJY0H.esm.js.map → text-area-zcBhicgg.esm.js.map} +1 -1
  282. package/dist/chunks/{text-measurement-BCjauPbB.esm.js → text-measurement-DMVkqP6b.esm.js} +2 -2
  283. package/dist/chunks/{text-measurement-BCjauPbB.esm.js.map → text-measurement-DMVkqP6b.esm.js.map} +1 -1
  284. package/dist/chunks/{translations-BrwQcVN3.esm.js → translations-JcE6qyDJ.esm.js} +3 -3
  285. package/dist/chunks/{translations-BrwQcVN3.esm.js.map → translations-JcE6qyDJ.esm.js.map} +1 -1
  286. package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js → uom-field-wrapper-CSqeiVPY.js} +2 -2
  287. package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js.map → uom-field-wrapper-CSqeiVPY.js.map} +1 -1
  288. package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js → uom-field-wrapper-CWTsSsSi.esm.js} +2 -2
  289. package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js.map → uom-field-wrapper-CWTsSsSi.esm.js.map} +1 -1
  290. package/dist/chunks/{upload-excel-BZPP13tP.esm.js → upload-excel-CkEQqZW2.esm.js} +2 -2
  291. package/dist/chunks/{upload-excel-BZPP13tP.esm.js.map → upload-excel-CkEQqZW2.esm.js.map} +1 -1
  292. package/dist/chunks/{use-translations-CcjSFA3F.esm.js → use-translations-BqBPN1DM.esm.js} +3 -3
  293. package/dist/chunks/{use-translations-CcjSFA3F.esm.js.map → use-translations-BqBPN1DM.esm.js.map} +1 -1
  294. package/dist/chunks/{use-translations-5wUQBxMm.js → use-translations-Cn3b4Kqh.js} +2 -2
  295. package/dist/chunks/{use-translations-5wUQBxMm.js.map → use-translations-Cn3b4Kqh.js.map} +1 -1
  296. package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js → useAccountSetting-DsU5zsjb.esm.js} +2 -2
  297. package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js.map → useAccountSetting-DsU5zsjb.esm.js.map} +1 -1
  298. package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js → useCheckSkuAndName-5ua30aZf.esm.js} +2 -2
  299. package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js.map → useCheckSkuAndName-5ua30aZf.esm.js.map} +1 -1
  300. package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js → useReduxIntegration-BlLpfwk6.esm.js} +2 -2
  301. package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js.map → useReduxIntegration-BlLpfwk6.esm.js.map} +1 -1
  302. package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js → useUniquenessCheck-CiR2q5bM.esm.js} +2 -2
  303. package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js.map → useUniquenessCheck-CiR2q5bM.esm.js.map} +1 -1
  304. package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js → useVendorAICompare-DMJvJJ3Y.esm.js} +2 -2
  305. package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js.map → useVendorAICompare-DMJvJJ3Y.esm.js.map} +1 -1
  306. package/dist/chunks/{value-editor-BSS9Ns2T.js → value-editor-Br7X_wEB.js} +2 -2
  307. package/dist/chunks/{value-editor-BSS9Ns2T.js.map → value-editor-Br7X_wEB.js.map} +1 -1
  308. package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js → value-editor-BxFdnUyM.esm.js} +4 -4
  309. package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js.map → value-editor-BxFdnUyM.esm.js.map} +1 -1
  310. package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js → vendor-ai-summary-Cpx90QOx.esm.js} +2 -2
  311. package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js.map → vendor-ai-summary-Cpx90QOx.esm.js.map} +1 -1
  312. package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js → vendor-ai-summary-zranZkfk.js} +2 -2
  313. package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js.map → vendor-ai-summary-zranZkfk.js.map} +1 -1
  314. package/dist/components/action-bar/action-bar/index.esm.js +1 -1
  315. package/dist/components/action-bar/action-bar/index.js +1 -1
  316. package/dist/components/action-bar/index.esm.js +1 -1
  317. package/dist/components/action-bar/index.js +1 -1
  318. package/dist/components/address-modal/index.esm.js +1 -1
  319. package/dist/components/address-modal/index.js +1 -1
  320. package/dist/components/ai-summary/ai-summary/index.esm.js +1 -1
  321. package/dist/components/ai-summary/index.esm.js +1 -1
  322. package/dist/components/appbar/appbar/index.esm.js +1 -1
  323. package/dist/components/appbar/appbar/index.js +1 -1
  324. package/dist/components/appbar/index.esm.js +1 -1
  325. package/dist/components/appbar/index.js +1 -1
  326. package/dist/components/approval-wrapper/approval-wrapper/index.esm.js +1 -1
  327. package/dist/components/approval-wrapper/index.esm.js +1 -1
  328. package/dist/components/chat-bot/index.esm.js +1 -1
  329. package/dist/components/chat-bot/index.js +1 -1
  330. package/dist/components/custom-forms/FORMS/index.esm.js +1 -1
  331. package/dist/components/custom-forms/FORMS/index.js +1 -1
  332. package/dist/components/custom-forms/grid-view/grid-view/index.esm.js +1 -1
  333. package/dist/components/custom-forms/grid-view/index.esm.js +1 -1
  334. package/dist/components/custom-forms/index.esm.js +2 -2
  335. package/dist/components/custom-forms/index.js +1 -1
  336. package/dist/components/department-add-modal/index.esm.js +1 -1
  337. package/dist/components/department-add-modal/index.js +1 -1
  338. package/dist/components/designation-add-modal/index.esm.js +1 -1
  339. package/dist/components/designation-add-modal/index.js +1 -1
  340. package/dist/components/editor/custom-editor/index.esm.js +1 -1
  341. package/dist/components/editor/index.esm.js +1 -1
  342. package/dist/components/examples/FlexibleReduxExample/index.esm.js +1 -1
  343. package/dist/components/examples/FlexibleReduxExample/index.js +1 -1
  344. package/dist/components/examples/index.esm.js +1 -1
  345. package/dist/components/examples/index.js +1 -1
  346. package/dist/components/filter/components/index.esm.js +1 -1
  347. package/dist/components/filter/components/index.js +1 -1
  348. package/dist/components/filter/components/value-editor/index.esm.js +1 -1
  349. package/dist/components/filter/components/value-editor/index.js +1 -1
  350. package/dist/components/filter/filter/index.esm.js +1 -1
  351. package/dist/components/filter/filter/index.js +1 -1
  352. package/dist/components/filter/index.esm.js +2 -2
  353. package/dist/components/filter/index.js +2 -2
  354. package/dist/components/footer/footer/index.esm.js +1 -1
  355. package/dist/components/footer/footer/index.js +1 -1
  356. package/dist/components/footer/index.esm.js +1 -1
  357. package/dist/components/footer/index.js +1 -1
  358. package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.esm.js +1 -1
  359. package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.js +1 -1
  360. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +1 -1
  361. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +1 -1
  362. package/dist/components/form-control/form-builder/form-builder-element/dynamic-text-editor/index.esm.js +1 -1
  363. package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.esm.js +1 -1
  364. package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.js +1 -1
  365. package/dist/components/form-control/form-builder/form-builder-element/index.esm.js +4 -4
  366. package/dist/components/form-control/form-builder/form-builder-element/index.js +3 -3
  367. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.esm.js +1 -1
  368. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.js +1 -1
  369. package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.esm.js +1 -1
  370. package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.js +1 -1
  371. package/dist/components/form-control/form-builder/form-builder-element/table/index.esm.js +1 -1
  372. package/dist/components/form-control/form-builder/form-builder-element/table/index.js +1 -1
  373. package/dist/components/form-control/form-builder/index.esm.js +4 -4
  374. package/dist/components/form-control/form-builder/index.js +3 -3
  375. package/dist/components/form-control/form-parser/form-parser/index.esm.js +1 -1
  376. package/dist/components/form-control/form-parser/form-parser/index.js +1 -1
  377. package/dist/components/form-control/form-parser/form-section/index.esm.js +1 -1
  378. package/dist/components/form-control/form-parser/form-section/index.js +1 -1
  379. package/dist/components/form-control/form-parser/index.esm.js +2 -2
  380. package/dist/components/form-control/form-parser/index.js +2 -2
  381. package/dist/components/form-control/index.esm.js +6 -6
  382. package/dist/components/form-control/index.js +5 -5
  383. package/dist/components/header/components/app-switcher/index.esm.js +1 -1
  384. package/dist/components/header/components/app-switcher/index.js +1 -1
  385. package/dist/components/header/components/global-search/index.esm.js +1 -1
  386. package/dist/components/header/components/global-search/index.js +1 -1
  387. package/dist/components/header/components/index.esm.js +1 -1
  388. package/dist/components/header/components/index.js +1 -1
  389. package/dist/components/header/components/notification-menu/index.esm.js +1 -1
  390. package/dist/components/header/components/notification-menu/index.js +1 -1
  391. package/dist/components/header/components/notification-menu/notification-menu/index.esm.js +1 -1
  392. package/dist/components/header/components/notification-menu/notification-menu/index.js +1 -1
  393. package/dist/components/header/header/index.esm.js +1 -1
  394. package/dist/components/header/header/index.js +1 -1
  395. package/dist/components/header/header-enhanced/index.esm.js +1 -1
  396. package/dist/components/header/header-enhanced/index.js +1 -1
  397. package/dist/components/header/index.esm.js +5 -5
  398. package/dist/components/header/index.js +3 -3
  399. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  400. package/dist/components/header/redux/index.esm.js +2 -2
  401. package/dist/components/header/redux/reducer/index.esm.js +1 -1
  402. package/dist/components/index.esm.js +37 -37
  403. package/dist/components/index.js +28 -28
  404. package/dist/components/inventory-reports-title-bar/index.esm.js +3 -3
  405. package/dist/components/inventory-reports-title-bar/index.js +1 -1
  406. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.esm.js +1 -1
  407. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.js +1 -1
  408. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  409. package/dist/components/inventory-reports-title-bar/redux/index.esm.js +2 -2
  410. package/dist/components/inventory-reports-title-bar/redux/reducer/index.esm.js +1 -1
  411. package/dist/components/listing/index.esm.js +1 -1
  412. package/dist/components/listing/index.js +1 -1
  413. package/dist/components/listing/listing/index.esm.js +1 -1
  414. package/dist/components/listing/listing/index.js +1 -1
  415. package/dist/components/location-select/index.esm.js +1 -1
  416. package/dist/components/location-select/index.js +1 -1
  417. package/dist/components/material-editable-table/components/index.esm.js +1 -1
  418. package/dist/components/material-editable-table/components/index.js +1 -1
  419. package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +1 -1
  420. package/dist/components/material-editable-table/components/inline-edit-fields/index.js +1 -1
  421. package/dist/components/material-editable-table/index.esm.js +2 -2
  422. package/dist/components/material-editable-table/index.js +2 -2
  423. package/dist/components/material-editable-table/material-editable-table/index.esm.js +1 -1
  424. package/dist/components/material-editable-table/material-editable-table/index.js +1 -1
  425. package/dist/components/material-table/components/index.esm.js +1 -1
  426. package/dist/components/material-table/components/index.js +1 -1
  427. package/dist/components/material-table/components/inline-edit-fields/index.esm.js +1 -1
  428. package/dist/components/material-table/components/inline-edit-fields/index.js +1 -1
  429. package/dist/components/material-table/index.esm.js +1 -1
  430. package/dist/components/material-table/index.js +1 -1
  431. package/dist/components/material-table/material-table/index.esm.js +1 -1
  432. package/dist/components/material-table/material-table/index.js +1 -1
  433. package/dist/components/page-navigator/components/index.esm.js +1 -1
  434. package/dist/components/page-navigator/components/index.js +1 -1
  435. package/dist/components/page-navigator/components/page-action/index.esm.js +1 -1
  436. package/dist/components/page-navigator/components/page-action/index.js +1 -1
  437. package/dist/components/page-navigator/index.esm.js +2 -2
  438. package/dist/components/page-navigator/index.js +2 -2
  439. package/dist/components/page-navigator/page-navigator/index.esm.js +1 -1
  440. package/dist/components/page-navigator/page-navigator/index.js +1 -1
  441. package/dist/components/parties-modal/index.esm.js +1 -1
  442. package/dist/components/parties-modal/index.js +1 -1
  443. package/dist/components/parties-modal/parties-modal/index.esm.js +1 -1
  444. package/dist/components/parties-modal/parties-modal/index.js +1 -1
  445. package/dist/components/providers/ERPUIProvider/index.esm.js +1 -1
  446. package/dist/components/providers/index.esm.js +1 -1
  447. package/dist/components/quick-approval-modal/index.esm.js +1 -1
  448. package/dist/components/quick-approval-modal/quick-approval-modal/index.esm.js +1 -1
  449. package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js +1 -1
  450. package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js +1 -1
  451. package/dist/components/reports/dynamic-report/index.esm.js +2 -2
  452. package/dist/components/reports/index.esm.js +2 -2
  453. package/dist/components/reports-title-bar/index.esm.js +3 -3
  454. package/dist/components/reports-title-bar/index.js +1 -1
  455. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  456. package/dist/components/reports-title-bar/redux/index.esm.js +2 -2
  457. package/dist/components/reports-title-bar/redux/reducer/index.esm.js +1 -1
  458. package/dist/components/reports-title-bar/reports-title-bar/index.esm.js +1 -1
  459. package/dist/components/reports-title-bar/reports-title-bar/index.js +1 -1
  460. package/dist/components/rfq-response/index.esm.js +1 -1
  461. package/dist/components/rfq-response/index.js +1 -1
  462. package/dist/components/rfq-response/item-response-details/index.esm.js +1 -1
  463. package/dist/components/rfq-response/item-response-details/index.js +1 -1
  464. package/dist/components/schedule-report/index.esm.js +2 -2
  465. package/dist/components/schedule-report/index.js +2 -2
  466. package/dist/components/schedule-report/schedule-report/index.esm.js +1 -1
  467. package/dist/components/schedule-report/schedule-report/index.js +1 -1
  468. package/dist/components/schedule-report/schedule-report-modal/index.esm.js +1 -1
  469. package/dist/components/schedule-report/schedule-report-modal/index.js +1 -1
  470. package/dist/components/schedule-report/utils/common/index.esm.js +1 -1
  471. package/dist/components/searchable-select/index.esm.js +1 -1
  472. package/dist/components/searchable-select/index.js +1 -1
  473. package/dist/components/share-modal/index.esm.js +4 -4
  474. package/dist/components/share-modal/index.js +2 -2
  475. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  476. package/dist/components/share-modal/redux/index.esm.js +2 -2
  477. package/dist/components/share-modal/redux/reducer/index.esm.js +1 -1
  478. package/dist/components/share-modal/share-modal/index.esm.js +1 -1
  479. package/dist/components/share-modal/share-modal/index.js +1 -1
  480. package/dist/components/share-modal/share-modal-enhanced/index.esm.js +1 -1
  481. package/dist/components/share-modal/share-modal-enhanced/index.js +1 -1
  482. package/dist/components/team-add-modal/index.esm.js +1 -1
  483. package/dist/components/team-add-modal/index.js +1 -1
  484. package/dist/components/text-area/index.esm.js +1 -1
  485. package/dist/components/text-area/index.js +1 -1
  486. package/dist/components/text-area/text-area/index.esm.js +1 -1
  487. package/dist/components/text-area/text-area/index.js +1 -1
  488. package/dist/components/uom-field-wrapper/index.esm.js +1 -1
  489. package/dist/components/uom-field-wrapper/index.js +1 -1
  490. package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js +1 -1
  491. package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js +1 -1
  492. package/dist/components/upload-excel/index.esm.js +1 -1
  493. package/dist/components/upload-excel/upload-excel/index.esm.js +1 -1
  494. package/dist/components/vendor-ai-summary/index.esm.js +1 -1
  495. package/dist/components/vendor-ai-summary/index.js +1 -1
  496. package/dist/constants/index.esm.js +143 -145
  497. package/dist/constants/index.js +3 -5
  498. package/dist/constants/index.js.map +1 -1
  499. package/dist/hooks/index.esm.js +6 -6
  500. package/dist/hooks/index.js +1 -1
  501. package/dist/hooks/use-translations/index.esm.js +1 -1
  502. package/dist/hooks/use-translations/index.js +1 -1
  503. package/dist/hooks/useAccountSetting/index.esm.js +1 -1
  504. package/dist/hooks/useCheckSkuAndName/index.esm.js +1 -1
  505. package/dist/hooks/useReduxIntegration/index.esm.js +1 -1
  506. package/dist/hooks/useUniquenessCheck/index.esm.js +1 -1
  507. package/dist/images/index.esm.js +5 -5
  508. package/dist/images/index.esm.js.map +1 -1
  509. package/dist/images/index.js +5 -5
  510. package/dist/images/index.js.map +1 -1
  511. package/dist/index.esm.js +237 -234
  512. package/dist/index.esm.js.map +1 -1
  513. package/dist/index.js +69 -66
  514. package/dist/index.js.map +1 -1
  515. package/dist/layout/fullScreen/index.esm.js +1 -1
  516. package/dist/layout/fullScreen/index.js +1 -1
  517. package/dist/layout/index.esm.js +2 -2
  518. package/dist/layout/index.js +2 -2
  519. package/dist/layout/sidebarScreen/index.esm.js +1 -1
  520. package/dist/layout/sidebarScreen/index.js +1 -1
  521. package/dist/redux/index.esm.js +3 -3
  522. package/dist/runtime/index.esm.js +4 -4
  523. package/dist/runtime/index.js +2 -2
  524. package/dist/src/components/chat-bot/chat-bot-welcome.d.ts +1 -2
  525. package/dist/src/components/chat-bot/chat-bot.d.ts +1 -5
  526. package/dist/src/constants/defaultColumns.d.ts +0 -1
  527. package/dist/src/constants/pathnames/pathname.procurement.d.ts +0 -4
  528. package/dist/src/layout/fullScreen/fullScreen.d.ts +0 -1
  529. package/dist/src/views/template-editor/components/EditorCanvas/FreeCanvas.d.ts +34 -0
  530. package/dist/src/views/template-editor/components/EditorCanvas/FreeElement.d.ts +30 -0
  531. package/dist/src/views/template-editor/components/EditorCanvas.d.ts +30 -12
  532. package/dist/src/views/template-editor/components/EditorHeader.d.ts +6 -0
  533. package/dist/src/views/template-editor/components/EditorSection.d.ts +1 -0
  534. package/dist/src/views/template-editor/components/SectionFlowEditor.d.ts +2 -3
  535. package/dist/src/views/template-editor/components/SectionFormatPanel.d.ts +2 -1
  536. package/dist/src/views/template-editor/components/controllers/TableControls.d.ts +23 -0
  537. package/dist/src/views/template-editor/components/controllers/TextControls.d.ts +3 -0
  538. package/dist/src/views/template-editor/components/stationery/StationeryPreview.d.ts +24 -0
  539. package/dist/src/views/template-editor/components/stationery/StationerySidebar.d.ts +9 -0
  540. package/dist/src/views/template-editor/engine/ai.d.ts +12 -0
  541. package/dist/src/views/template-editor/engine/app.d.ts +1 -0
  542. package/dist/src/views/template-editor/engine/controls.d.ts +4 -0
  543. package/dist/src/views/template-editor/engine/design-canvas.d.ts +24 -0
  544. package/dist/src/views/template-editor/engine/editor.d.ts +17 -0
  545. package/dist/src/views/template-editor/engine/engine.d.ts +18 -0
  546. package/dist/src/views/template-editor/engine/icons.d.ts +91 -0
  547. package/dist/src/views/template-editor/engine/letterpads.d.ts +1 -0
  548. package/dist/src/views/template-editor/engine/model.d.ts +20 -0
  549. package/dist/src/views/template-editor/engine/paginator.d.ts +30 -0
  550. package/dist/src/views/template-editor/engine/picker.d.ts +20 -0
  551. package/dist/src/views/template-editor/engine/schema.d.ts +647 -0
  552. package/dist/src/views/template-editor/engine/stationery-app.d.ts +10 -0
  553. package/dist/src/views/template-editor/engine/stationery-doc.d.ts +62 -0
  554. package/dist/src/views/template-editor/engine/stationery-free-element.d.ts +22 -0
  555. package/dist/src/views/template-editor/engine/stationery-store.d.ts +154 -0
  556. package/dist/src/views/template-editor/engine/templatebuilder.d.ts +51 -0
  557. package/dist/src/views/template-editor/engine/templates.d.ts +11 -0
  558. package/dist/src/views/template-editor/icons/custom-styled-icon.d.ts +7 -0
  559. package/dist/src/views/template-editor/icons/edit.d.ts +4 -0
  560. package/dist/src/views/template-editor/icons/trash.d.ts +4 -0
  561. package/dist/src/views/template-editor/types/editor.d.ts +20 -108
  562. package/dist/src/views/template-editor/types/stationery.d.ts +66 -0
  563. package/dist/src/views/template-editor/utils/common.d.ts +10 -1
  564. package/dist/src/views/template-editor/utils/compiler.d.ts +12 -0
  565. package/dist/src/views/template-editor/utils/constant.d.ts +4 -1
  566. package/dist/style.css +4629 -100
  567. package/dist/utils/api/index.esm.js +1 -1
  568. package/dist/utils/common/index.esm.js +1 -1
  569. package/dist/utils/common-utility/index.esm.js +1 -1
  570. package/dist/utils/export-filters/index.esm.js +0 -1
  571. package/dist/utils/export-filters/index.esm.js.map +1 -1
  572. package/dist/utils/export-filters/index.js +0 -1
  573. package/dist/utils/export-filters/index.js.map +1 -1
  574. package/dist/utils/index.esm.js +9 -9
  575. package/dist/utils/index.js +1 -1
  576. package/dist/utils/metaComponent/index.esm.js +1 -1
  577. package/dist/utils/metaComponent/index.js +1 -1
  578. package/dist/utils/server/index.esm.js +2 -2
  579. package/dist/utils/text-measurement/index.esm.js +1 -1
  580. package/dist/views/afterAuth/dashboard/index.esm.js +1 -1
  581. package/dist/views/afterAuth/dashboard/index.js +1 -1
  582. package/dist/views/afterAuth/index.esm.js +2 -2
  583. package/dist/views/afterAuth/index.js +2 -2
  584. package/dist/views/afterAuth/page-view/index.esm.js +1 -1
  585. package/dist/views/afterAuth/page-view/index.js +1 -1
  586. package/dist/views/form-builder/custom-form/index.esm.js +1 -1
  587. package/dist/views/form-builder/custom-form/index.js +1 -1
  588. package/dist/views/form-builder/element-edit-forms/index.esm.js +1 -1
  589. package/dist/views/form-builder/form-fields/index.esm.js +1 -1
  590. package/dist/views/form-builder/form-fields/index.js +1 -1
  591. package/dist/views/form-builder/index.esm.js +5 -5
  592. package/dist/views/form-builder/index.js +3 -3
  593. package/dist/views/form-builder/redux/index.esm.js +1 -1
  594. package/dist/views/form-builder/utils/index.esm.js +1 -1
  595. package/dist/views/form-builder/utils/index.js +1 -1
  596. package/dist/views/index.esm.js +39 -34
  597. package/dist/views/index.esm.js.map +1 -1
  598. package/dist/views/index.js +36 -31
  599. package/dist/views/index.js.map +1 -1
  600. package/dist/views/template-editor/add-template/index.esm.js +1 -1
  601. package/dist/views/template-editor/add-template/index.js +1 -1
  602. package/dist/views/template-editor/components/index.esm.js +7 -6
  603. package/dist/views/template-editor/components/index.esm.js.map +1 -1
  604. package/dist/views/template-editor/components/index.js +4 -3
  605. package/dist/views/template-editor/components/index.js.map +1 -1
  606. package/dist/views/template-editor/edit-section-modal/index.esm.js +1 -1
  607. package/dist/views/template-editor/index.esm.js +25 -20
  608. package/dist/views/template-editor/index.esm.js.map +1 -1
  609. package/dist/views/template-editor/index.js +16 -11
  610. package/dist/views/template-editor/index.js.map +1 -1
  611. package/dist/views/template-editor/routes/index.esm.js +1 -1
  612. package/dist/views/template-editor/routes/index.js +1 -1
  613. package/dist/views/template-editor/template-modal/index.esm.js +1 -1
  614. package/dist/views/template-editor/template-modal/index.js +1 -1
  615. package/dist/views/template-editor/template-name-modal/index.esm.js +1 -1
  616. package/dist/views/template-editor/template-name-modal/index.js +1 -1
  617. package/dist/views/template-editor/templates/index.esm.js +1 -1
  618. package/dist/views/template-editor/templates/index.js +1 -1
  619. package/dist/views/template-editor/utils/index.esm.js +10 -6
  620. package/dist/views/template-editor/utils/index.js +6 -2
  621. package/dist/views/template-editor/utils/index.js.map +1 -1
  622. package/package.json +1 -1
  623. package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js +0 -5479
  624. package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js.map +0 -1
  625. package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js +0 -5478
  626. package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js.map +0 -1
  627. package/dist/chunks/add-template-DVvbD9a4.esm.js +0 -11
  628. package/dist/chunks/add-template-DVvbD9a4.esm.js.map +0 -1
  629. package/dist/chunks/add-template-Dohg2bHJ.js +0 -10
  630. package/dist/chunks/add-template-Dohg2bHJ.js.map +0 -1
  631. package/dist/chunks/chat-bot-BpNtrZEL.esm.js.map +0 -1
  632. package/dist/chunks/chat-bot-osiGMG3g.js.map +0 -1
  633. package/dist/chunks/common-C5AokA7z.js +0 -368
  634. package/dist/chunks/common-C5AokA7z.js.map +0 -1
  635. package/dist/chunks/common-CaomnEjX.esm.js +0 -369
  636. package/dist/chunks/common-CaomnEjX.esm.js.map +0 -1
  637. package/dist/chunks/common-utility-DGpbsf7S.esm.js.map +0 -1
  638. package/dist/chunks/constant-Bwg2s_Sn.esm.js.map +0 -1
  639. package/dist/chunks/constant-ZYAN_teD.js.map +0 -1
  640. package/dist/chunks/edit-section-modal-BW-aZmUv.esm.js.map +0 -1
  641. package/dist/chunks/fullScreen-BLLa9ogA.js.map +0 -1
  642. package/dist/chunks/fullScreen-DFgzE41_.esm.js.map +0 -1
  643. package/dist/chunks/template-modal-B2VgotrF.esm.js.map +0 -1
  644. package/dist/chunks/template-modal-X-iSmlki.js.map +0 -1
  645. package/dist/chunks/template-name-modal-CeqxIE2r.js.map +0 -1
  646. package/dist/chunks/template-name-modal-Dctn8t3t.esm.js.map +0 -1
  647. package/dist/chunks/templates-CCy1eG6A.esm.js.map +0 -1
  648. package/dist/chunks/templates-CUREMwYo.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { a, b, c, d, e, f, g } from "../chunks/api-Bl6wVi9D.esm.js";
2
- import { a as a2 } from "../chunks/index-ALqg8b5U.esm.js";
2
+ import { a as a2 } from "../chunks/index-BCmGHdos.esm.js";
3
3
  import { a as a3 } from "../chunks/api-CZGorfuI.esm.js";
4
- import { a as a4 } from "../chunks/api-DBmWILBN.esm.js";
4
+ import { a as a4 } from "../chunks/api-yLpQ3k5s.esm.js";
5
5
  let baseUrl = "";
6
6
  let defaultHeaders = {};
7
7
  function sanitizeUrl(url) {
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { useMemo, useRef, useEffect } from "react";
3
3
  import { useFormContext } from "react-hook-form";
4
- import { D as DynamicSearchSelect } from "./searchable-select-0F6E4XAr.esm.js";
4
+ import { D as DynamicSearchSelect } from "./searchable-select-BQtcqBKV.esm.js";
5
5
  const normaliseFilterFields = (input, fallbackApiKey) => {
6
6
  if (typeof input === "string") {
7
7
  return [{ formField: input, apiKey: fallbackApiKey }];
@@ -125,4 +125,4 @@ const DynamicDependentFieldContent = ({ control, watch, setValue, getFieldState:
125
125
  export {
126
126
  DynamicDependentField as D
127
127
  };
128
- //# sourceMappingURL=DynamicDependentField-C0XXmMlG.esm.js.map
128
+ //# sourceMappingURL=DynamicDependentField-DOGY6cA_.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDependentField-C0XXmMlG.esm.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/DynamicDependentField.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport DynamicSearchSelect from '../dynamic-select';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Shape of the filter map passed to DynamicSearchSelect's customeFilter */\ntype FilterMap = Record<string, any>;\n\n/**\n * filterFields accepts:\n * - string: `\"company\"` → watch form field `company`, use `filterKey` prop as API filter key\n * - object: `{ company: 'company_id' }` → key = form field to watch, value = API filter key\n */\ntype FilterFieldsInput = string | Record<string, string>;\n\n/** Normalised entry: which form field to watch → which API filter key to use */\ninterface FilterFieldEntry {\n /** The form field name to watch (e.g. \"company\") */\n formField: string;\n /** The API filter key to send (e.g. \"company_id\") */\n apiKey: string;\n}\n\nexport interface DynamicDependentFieldProps {\n /** Field name registered in React Hook Form (e.g. \"department_id\") */\n name: string;\n\n /**\n * Describes which form field(s) this select depends on.\n *\n * **String** – a single form field name. The API filter key is taken from `filterKey`.\n * @example filterFields=\"company\"\n *\n * **Object** – keys are form field names, values are API filter keys.\n * @example filterFields={{ company: 'company_id', branch: 'branch_id' }}\n */\n filterFields: FilterFieldsInput;\n\n /**\n * The form array/namespace prefix used in the parent form\n * (same as `fieldArrayName` in DynamicSearchSelect).\n */\n fieldArrayName: string;\n\n /**\n * API filter key used when `filterFields` is a plain string.\n * Ignored when `filterFields` is an object (the object values are used instead).\n * @default 'company_id'\n */\n filterKey?: string;\n\n /** Label displayed above the select */\n label?: string;\n\n /** Placeholder text inside the select */\n placeholder?: string;\n\n /**\n * API key string forwarded to `DynamicSearchSelect` as `apiType`.\n */\n apiType?: string;\n\n /**\n * Custom fetch function forwarded to `DynamicSearchSelect` as `customFetchApi`.\n */\n customFetchApi?: (...args: any[]) => Promise<any>;\n\n /** Disable the field regardless of filter state */\n disabled?: boolean;\n\n /** React Hook Form validation rules */\n rules?: Record<string, any>;\n\n /** Allow multi-select (forwarded as `is_multiselect`) */\n isMulti?: boolean;\n\n /** Mark field as required */\n required?: boolean;\n\n /** Form control object from useForm */\n control?: any;\n formControl?: any;\n\n /** Watch function from useForm */\n watch?: any;\n\n /** SetValue function from useForm */\n setValue?: any;\n\n /** GetFieldState function from useForm */\n getFieldState?: any;\n\n /** FormState object from useForm */\n formState?: any;\n\n /** Any additional props forwarded verbatim to DynamicSearchSelect */\n [key: string]: any;\n}\n\n// ---------------------------------------------------------------------------\n// Helper utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise `filterFields` into a uniform array of { formField, apiKey } entries.\n *\n * - string `\"company\"` → [{ formField: 'company', apiKey: <filterKey> }]\n * - object `{ company: 'company_id' }` → [{ formField: 'company', apiKey: 'company_id' }]\n */\nconst normaliseFilterFields = (\n input: FilterFieldsInput,\n fallbackApiKey: string\n): FilterFieldEntry[] => {\n if (typeof input === 'string') {\n return [{ formField: input, apiKey: fallbackApiKey }];\n }\n\n // Object – each key is a form field, each value is the API filter key\n return Object.entries(input).map(([formField, apiKey]) => ({\n formField,\n apiKey,\n }));\n};\n\n/**\n * Returns `true` when **every** value in the map is non-empty.\n */\nconst allFiltersFilled = (filters: FilterMap): boolean =>\n Object.values(filters).every((v) => {\n if (v === null || v === undefined || v === '') return false;\n if (Array.isArray(v) && v.length === 0) return false;\n return true;\n });\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * `DynamicDependentField` is a fully reusable, typed wrapper around\n * `DynamicSearchSelect` that:\n *\n * - Reads `control`, `watch`, and `setValue` from the nearest `FormProvider`.\n * - Watches one or more dependent fields (`filterFields`).\n * - Builds a `customeFilter` object from the watched values.\n * - Resets its own value and triggers a fresh option load whenever a watched\n * field changes.\n * - Disables itself automatically while any required filter is empty.\n *\n * @example\n * // String – single dependency, uses filterKey for the API filter key\n * <DynamicDependentField\n * name=\"department_id\"\n * fieldArrayName=\"add_payment_entry\"\n * filterFields=\"company\"\n * filterKey=\"company_id\"\n * apiType=\"department\"\n * />\n *\n * @example\n * // Object – multiple dependencies with explicit API filter keys\n * <DynamicDependentField\n * name=\"location_id\"\n * fieldArrayName=\"employee\"\n * filterFields={{ company: 'company_id', branch: 'branch_id' }}\n * apiType=\"location\"\n * />\n */\nconst DynamicDependentField: React.FC<DynamicDependentFieldProps> = (props) => {\n const formContext = useFormContext();\n\n // Prioritise props over context to allow manual override (essential for MFE)\n const control = props.formControl || props.control || formContext?.control;\n const watch = props.watch || formContext?.watch;\n const setValue = props.setValue || formContext?.setValue;\n const getFieldState = props.getFieldState || formContext?.getFieldState;\n const formState = props.formState || formContext?.formState;\n\n const hasMethods = !!(control && watch && setValue);\n\n if (!hasMethods) {\n // Fallback: render the select without dependency logic if form methods are missing\n return (\n <DynamicSearchSelect\n addType={props?.addType || props?.apiType}\n enable_footer={props?.enable_footer ?? true}\n {...props}\n {...(control ? { formControl: control } : {})}\n />\n );\n }\n\n return (\n <DynamicDependentFieldContent\n {...props}\n control={control}\n watch={watch}\n setValue={setValue}\n getFieldState={getFieldState}\n formState={formState}\n />\n );\n};\n\n/**\n * Inner component that performs the dependency logic.\n * It is only rendered when form methods are available.\n */\nconst DynamicDependentFieldContent: React.FC<\n DynamicDependentFieldProps & {\n control: any;\n watch: any;\n setValue: any;\n getFieldState: any;\n formState: any;\n }\n> = ({ control, watch, setValue, getFieldState: _getFieldState, formState: _formState, ...props }) => {\n const {\n name,\n filterFields = 'company_id',\n filterKey = 'company_id',\n fieldArrayName,\n enable_footer = true,\n apiType,\n } = props;\n\n // -----------------------------------------------------------------------\n // Normalise filterFields into a uniform array of { formField, apiKey }\n // -----------------------------------------------------------------------\n const entries: FilterFieldEntry[] = useMemo(\n () => normaliseFilterFields(filterFields, filterKey),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(filterFields), filterKey]\n );\n\n /** Just the form field names – used for watching and change detection */\n const formFieldNames = useMemo(() => entries.map((e) => e.formField), [entries]);\n\n // -----------------------------------------------------------------------\n // Watch all dependent form field values\n // -----------------------------------------------------------------------\n const watchedValues = watch(formFieldNames.map((f) => `${fieldArrayName}.${f}`));\n\n const watchedValuesArray: any[] = useMemo(\n () => (Array.isArray(watchedValues) ? watchedValues : [watchedValues]),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(watchedValues)]\n );\n\n // -----------------------------------------------------------------------\n // Build the filter map { company: 1, branch: 2 } (keyed by formField)\n // -----------------------------------------------------------------------\n const filters: FilterMap = useMemo(() => {\n return formFieldNames.reduce<FilterMap>((acc, field, index) => {\n acc[field] = watchedValuesArray[index];\n return acc;\n }, {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(watchedValuesArray), formFieldNames.join(',')]);\n\n // -----------------------------------------------------------------------\n // Determine whether the field should be disabled\n // -----------------------------------------------------------------------\n const isDisabledDueToFilters = !allFiltersFilled(filters);\n const isFieldDisabled = props?.disabled || isDisabledDueToFilters;\n\n // -----------------------------------------------------------------------\n // Track previous filters to detect real changes and avoid infinite loops\n // -----------------------------------------------------------------------\n const prevFiltersRef = useRef<FilterMap | null>(null);\n const isFirstRender = useRef(true);\n\n // -----------------------------------------------------------------------\n // Reset own value when any filter changes (skip on mount)\n // -----------------------------------------------------------------------\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevFiltersRef.current = filters;\n return;\n }\n\n const prev = prevFiltersRef.current;\n const changedFields = formFieldNames.filter((field) => prev?.[field] !== filters[field]);\n const hasChanged = changedFields.length > 0;\n\n if (hasChanged) {\n prevFiltersRef.current = filters;\n\n setValue(`${fieldArrayName}.${name}`, props?.is_multiselect ? [] : null, {\n shouldValidate: false,\n shouldDirty: false\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters)]);\n\n // -----------------------------------------------------------------------\n // Build customeFilter in the format DynamicSearchSelect expects.\n //\n // For each entry, map the watched form value to the correct API filter key:\n // { formField: 'company', apiKey: 'company_id', value: 1 }\n // → { '&company_id.in': [1] }\n //\n // Array values (multiselect) are passed through as-is.\n // -----------------------------------------------------------------------\n const customeFilter: FilterMap = useMemo(() => {\n const dependentFilters = entries.reduce<FilterMap>((acc, entry) => {\n const value = filters[entry.formField];\n const hasValue = Array.isArray(value)\n ? value.length > 0\n : (value !== null && value !== undefined && value !== '');\n\n acc[`&${entry.apiKey}.in`] = hasValue ? Array.isArray(value) ? value : [value] : 0;\n return acc;\n }, {});\n\n // Merge with rest.customeFilter if provided\n return {\n ...dependentFilters,\n ...(props?.customeFilter || {})\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters), JSON.stringify(props?.customeFilter), isDisabledDueToFilters]);\n\n // -----------------------------------------------------------------------\n // Key derived from filter values — forces a full remount of DynamicSearchSelect\n // whenever any parent filter (e.g. company) changes, clearing its internal state.\n // -----------------------------------------------------------------------\n const updateKey = JSON.stringify(filters);\n\n // -----------------------------------------------------------------------\n // Render\n // -----------------------------------------------------------------------\n return (\n <DynamicSearchSelect\n key={updateKey}\n options={[]}\n addType={props?.addType || apiType}\n enable_footer={enable_footer}\n disabled={isFieldDisabled}\n {...(props as any)}\n customeFilter={customeFilter}\n formControl={control}\n />\n );\n};\n\nexport default DynamicDependentField;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicDependentField-DOGY6cA_.esm.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/DynamicDependentField.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport DynamicSearchSelect from '../dynamic-select';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Shape of the filter map passed to DynamicSearchSelect's customeFilter */\ntype FilterMap = Record<string, any>;\n\n/**\n * filterFields accepts:\n * - string: `\"company\"` → watch form field `company`, use `filterKey` prop as API filter key\n * - object: `{ company: 'company_id' }` → key = form field to watch, value = API filter key\n */\ntype FilterFieldsInput = string | Record<string, string>;\n\n/** Normalised entry: which form field to watch → which API filter key to use */\ninterface FilterFieldEntry {\n /** The form field name to watch (e.g. \"company\") */\n formField: string;\n /** The API filter key to send (e.g. \"company_id\") */\n apiKey: string;\n}\n\nexport interface DynamicDependentFieldProps {\n /** Field name registered in React Hook Form (e.g. \"department_id\") */\n name: string;\n\n /**\n * Describes which form field(s) this select depends on.\n *\n * **String** – a single form field name. The API filter key is taken from `filterKey`.\n * @example filterFields=\"company\"\n *\n * **Object** – keys are form field names, values are API filter keys.\n * @example filterFields={{ company: 'company_id', branch: 'branch_id' }}\n */\n filterFields: FilterFieldsInput;\n\n /**\n * The form array/namespace prefix used in the parent form\n * (same as `fieldArrayName` in DynamicSearchSelect).\n */\n fieldArrayName: string;\n\n /**\n * API filter key used when `filterFields` is a plain string.\n * Ignored when `filterFields` is an object (the object values are used instead).\n * @default 'company_id'\n */\n filterKey?: string;\n\n /** Label displayed above the select */\n label?: string;\n\n /** Placeholder text inside the select */\n placeholder?: string;\n\n /**\n * API key string forwarded to `DynamicSearchSelect` as `apiType`.\n */\n apiType?: string;\n\n /**\n * Custom fetch function forwarded to `DynamicSearchSelect` as `customFetchApi`.\n */\n customFetchApi?: (...args: any[]) => Promise<any>;\n\n /** Disable the field regardless of filter state */\n disabled?: boolean;\n\n /** React Hook Form validation rules */\n rules?: Record<string, any>;\n\n /** Allow multi-select (forwarded as `is_multiselect`) */\n isMulti?: boolean;\n\n /** Mark field as required */\n required?: boolean;\n\n /** Form control object from useForm */\n control?: any;\n formControl?: any;\n\n /** Watch function from useForm */\n watch?: any;\n\n /** SetValue function from useForm */\n setValue?: any;\n\n /** GetFieldState function from useForm */\n getFieldState?: any;\n\n /** FormState object from useForm */\n formState?: any;\n\n /** Any additional props forwarded verbatim to DynamicSearchSelect */\n [key: string]: any;\n}\n\n// ---------------------------------------------------------------------------\n// Helper utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise `filterFields` into a uniform array of { formField, apiKey } entries.\n *\n * - string `\"company\"` → [{ formField: 'company', apiKey: <filterKey> }]\n * - object `{ company: 'company_id' }` → [{ formField: 'company', apiKey: 'company_id' }]\n */\nconst normaliseFilterFields = (\n input: FilterFieldsInput,\n fallbackApiKey: string\n): FilterFieldEntry[] => {\n if (typeof input === 'string') {\n return [{ formField: input, apiKey: fallbackApiKey }];\n }\n\n // Object – each key is a form field, each value is the API filter key\n return Object.entries(input).map(([formField, apiKey]) => ({\n formField,\n apiKey,\n }));\n};\n\n/**\n * Returns `true` when **every** value in the map is non-empty.\n */\nconst allFiltersFilled = (filters: FilterMap): boolean =>\n Object.values(filters).every((v) => {\n if (v === null || v === undefined || v === '') return false;\n if (Array.isArray(v) && v.length === 0) return false;\n return true;\n });\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * `DynamicDependentField` is a fully reusable, typed wrapper around\n * `DynamicSearchSelect` that:\n *\n * - Reads `control`, `watch`, and `setValue` from the nearest `FormProvider`.\n * - Watches one or more dependent fields (`filterFields`).\n * - Builds a `customeFilter` object from the watched values.\n * - Resets its own value and triggers a fresh option load whenever a watched\n * field changes.\n * - Disables itself automatically while any required filter is empty.\n *\n * @example\n * // String – single dependency, uses filterKey for the API filter key\n * <DynamicDependentField\n * name=\"department_id\"\n * fieldArrayName=\"add_payment_entry\"\n * filterFields=\"company\"\n * filterKey=\"company_id\"\n * apiType=\"department\"\n * />\n *\n * @example\n * // Object – multiple dependencies with explicit API filter keys\n * <DynamicDependentField\n * name=\"location_id\"\n * fieldArrayName=\"employee\"\n * filterFields={{ company: 'company_id', branch: 'branch_id' }}\n * apiType=\"location\"\n * />\n */\nconst DynamicDependentField: React.FC<DynamicDependentFieldProps> = (props) => {\n const formContext = useFormContext();\n\n // Prioritise props over context to allow manual override (essential for MFE)\n const control = props.formControl || props.control || formContext?.control;\n const watch = props.watch || formContext?.watch;\n const setValue = props.setValue || formContext?.setValue;\n const getFieldState = props.getFieldState || formContext?.getFieldState;\n const formState = props.formState || formContext?.formState;\n\n const hasMethods = !!(control && watch && setValue);\n\n if (!hasMethods) {\n // Fallback: render the select without dependency logic if form methods are missing\n return (\n <DynamicSearchSelect\n addType={props?.addType || props?.apiType}\n enable_footer={props?.enable_footer ?? true}\n {...props}\n {...(control ? { formControl: control } : {})}\n />\n );\n }\n\n return (\n <DynamicDependentFieldContent\n {...props}\n control={control}\n watch={watch}\n setValue={setValue}\n getFieldState={getFieldState}\n formState={formState}\n />\n );\n};\n\n/**\n * Inner component that performs the dependency logic.\n * It is only rendered when form methods are available.\n */\nconst DynamicDependentFieldContent: React.FC<\n DynamicDependentFieldProps & {\n control: any;\n watch: any;\n setValue: any;\n getFieldState: any;\n formState: any;\n }\n> = ({ control, watch, setValue, getFieldState: _getFieldState, formState: _formState, ...props }) => {\n const {\n name,\n filterFields = 'company_id',\n filterKey = 'company_id',\n fieldArrayName,\n enable_footer = true,\n apiType,\n } = props;\n\n // -----------------------------------------------------------------------\n // Normalise filterFields into a uniform array of { formField, apiKey }\n // -----------------------------------------------------------------------\n const entries: FilterFieldEntry[] = useMemo(\n () => normaliseFilterFields(filterFields, filterKey),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(filterFields), filterKey]\n );\n\n /** Just the form field names – used for watching and change detection */\n const formFieldNames = useMemo(() => entries.map((e) => e.formField), [entries]);\n\n // -----------------------------------------------------------------------\n // Watch all dependent form field values\n // -----------------------------------------------------------------------\n const watchedValues = watch(formFieldNames.map((f) => `${fieldArrayName}.${f}`));\n\n const watchedValuesArray: any[] = useMemo(\n () => (Array.isArray(watchedValues) ? watchedValues : [watchedValues]),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(watchedValues)]\n );\n\n // -----------------------------------------------------------------------\n // Build the filter map { company: 1, branch: 2 } (keyed by formField)\n // -----------------------------------------------------------------------\n const filters: FilterMap = useMemo(() => {\n return formFieldNames.reduce<FilterMap>((acc, field, index) => {\n acc[field] = watchedValuesArray[index];\n return acc;\n }, {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(watchedValuesArray), formFieldNames.join(',')]);\n\n // -----------------------------------------------------------------------\n // Determine whether the field should be disabled\n // -----------------------------------------------------------------------\n const isDisabledDueToFilters = !allFiltersFilled(filters);\n const isFieldDisabled = props?.disabled || isDisabledDueToFilters;\n\n // -----------------------------------------------------------------------\n // Track previous filters to detect real changes and avoid infinite loops\n // -----------------------------------------------------------------------\n const prevFiltersRef = useRef<FilterMap | null>(null);\n const isFirstRender = useRef(true);\n\n // -----------------------------------------------------------------------\n // Reset own value when any filter changes (skip on mount)\n // -----------------------------------------------------------------------\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevFiltersRef.current = filters;\n return;\n }\n\n const prev = prevFiltersRef.current;\n const changedFields = formFieldNames.filter((field) => prev?.[field] !== filters[field]);\n const hasChanged = changedFields.length > 0;\n\n if (hasChanged) {\n prevFiltersRef.current = filters;\n\n setValue(`${fieldArrayName}.${name}`, props?.is_multiselect ? [] : null, {\n shouldValidate: false,\n shouldDirty: false\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters)]);\n\n // -----------------------------------------------------------------------\n // Build customeFilter in the format DynamicSearchSelect expects.\n //\n // For each entry, map the watched form value to the correct API filter key:\n // { formField: 'company', apiKey: 'company_id', value: 1 }\n // → { '&company_id.in': [1] }\n //\n // Array values (multiselect) are passed through as-is.\n // -----------------------------------------------------------------------\n const customeFilter: FilterMap = useMemo(() => {\n const dependentFilters = entries.reduce<FilterMap>((acc, entry) => {\n const value = filters[entry.formField];\n const hasValue = Array.isArray(value)\n ? value.length > 0\n : (value !== null && value !== undefined && value !== '');\n\n acc[`&${entry.apiKey}.in`] = hasValue ? Array.isArray(value) ? value : [value] : 0;\n return acc;\n }, {});\n\n // Merge with rest.customeFilter if provided\n return {\n ...dependentFilters,\n ...(props?.customeFilter || {})\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters), JSON.stringify(props?.customeFilter), isDisabledDueToFilters]);\n\n // -----------------------------------------------------------------------\n // Key derived from filter values — forces a full remount of DynamicSearchSelect\n // whenever any parent filter (e.g. company) changes, clearing its internal state.\n // -----------------------------------------------------------------------\n const updateKey = JSON.stringify(filters);\n\n // -----------------------------------------------------------------------\n // Render\n // -----------------------------------------------------------------------\n return (\n <DynamicSearchSelect\n key={updateKey}\n options={[]}\n addType={props?.addType || apiType}\n enable_footer={enable_footer}\n disabled={isFieldDisabled}\n {...(props as any)}\n customeFilter={customeFilter}\n formControl={control}\n />\n );\n};\n\nexport default DynamicDependentField;\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const React = require("react");
4
4
  const reactHookForm = require("react-hook-form");
5
- const searchableSelect = require("./searchable-select-_DCkITfk.js");
5
+ const searchableSelect = require("./searchable-select-DVUCWWti.js");
6
6
  const normaliseFilterFields = (input, fallbackApiKey) => {
7
7
  if (typeof input === "string") {
8
8
  return [{ formField: input, apiKey: fallbackApiKey }];
@@ -124,4 +124,4 @@ const DynamicDependentFieldContent = ({ control, watch, setValue, getFieldState:
124
124
  );
125
125
  };
126
126
  exports.DynamicDependentField = DynamicDependentField;
127
- //# sourceMappingURL=DynamicDependentField-CQIfDDqc.js.map
127
+ //# sourceMappingURL=DynamicDependentField-GTIwrPfP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDependentField-CQIfDDqc.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/DynamicDependentField.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport DynamicSearchSelect from '../dynamic-select';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Shape of the filter map passed to DynamicSearchSelect's customeFilter */\ntype FilterMap = Record<string, any>;\n\n/**\n * filterFields accepts:\n * - string: `\"company\"` → watch form field `company`, use `filterKey` prop as API filter key\n * - object: `{ company: 'company_id' }` → key = form field to watch, value = API filter key\n */\ntype FilterFieldsInput = string | Record<string, string>;\n\n/** Normalised entry: which form field to watch → which API filter key to use */\ninterface FilterFieldEntry {\n /** The form field name to watch (e.g. \"company\") */\n formField: string;\n /** The API filter key to send (e.g. \"company_id\") */\n apiKey: string;\n}\n\nexport interface DynamicDependentFieldProps {\n /** Field name registered in React Hook Form (e.g. \"department_id\") */\n name: string;\n\n /**\n * Describes which form field(s) this select depends on.\n *\n * **String** – a single form field name. The API filter key is taken from `filterKey`.\n * @example filterFields=\"company\"\n *\n * **Object** – keys are form field names, values are API filter keys.\n * @example filterFields={{ company: 'company_id', branch: 'branch_id' }}\n */\n filterFields: FilterFieldsInput;\n\n /**\n * The form array/namespace prefix used in the parent form\n * (same as `fieldArrayName` in DynamicSearchSelect).\n */\n fieldArrayName: string;\n\n /**\n * API filter key used when `filterFields` is a plain string.\n * Ignored when `filterFields` is an object (the object values are used instead).\n * @default 'company_id'\n */\n filterKey?: string;\n\n /** Label displayed above the select */\n label?: string;\n\n /** Placeholder text inside the select */\n placeholder?: string;\n\n /**\n * API key string forwarded to `DynamicSearchSelect` as `apiType`.\n */\n apiType?: string;\n\n /**\n * Custom fetch function forwarded to `DynamicSearchSelect` as `customFetchApi`.\n */\n customFetchApi?: (...args: any[]) => Promise<any>;\n\n /** Disable the field regardless of filter state */\n disabled?: boolean;\n\n /** React Hook Form validation rules */\n rules?: Record<string, any>;\n\n /** Allow multi-select (forwarded as `is_multiselect`) */\n isMulti?: boolean;\n\n /** Mark field as required */\n required?: boolean;\n\n /** Form control object from useForm */\n control?: any;\n formControl?: any;\n\n /** Watch function from useForm */\n watch?: any;\n\n /** SetValue function from useForm */\n setValue?: any;\n\n /** GetFieldState function from useForm */\n getFieldState?: any;\n\n /** FormState object from useForm */\n formState?: any;\n\n /** Any additional props forwarded verbatim to DynamicSearchSelect */\n [key: string]: any;\n}\n\n// ---------------------------------------------------------------------------\n// Helper utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise `filterFields` into a uniform array of { formField, apiKey } entries.\n *\n * - string `\"company\"` → [{ formField: 'company', apiKey: <filterKey> }]\n * - object `{ company: 'company_id' }` → [{ formField: 'company', apiKey: 'company_id' }]\n */\nconst normaliseFilterFields = (\n input: FilterFieldsInput,\n fallbackApiKey: string\n): FilterFieldEntry[] => {\n if (typeof input === 'string') {\n return [{ formField: input, apiKey: fallbackApiKey }];\n }\n\n // Object – each key is a form field, each value is the API filter key\n return Object.entries(input).map(([formField, apiKey]) => ({\n formField,\n apiKey,\n }));\n};\n\n/**\n * Returns `true` when **every** value in the map is non-empty.\n */\nconst allFiltersFilled = (filters: FilterMap): boolean =>\n Object.values(filters).every((v) => {\n if (v === null || v === undefined || v === '') return false;\n if (Array.isArray(v) && v.length === 0) return false;\n return true;\n });\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * `DynamicDependentField` is a fully reusable, typed wrapper around\n * `DynamicSearchSelect` that:\n *\n * - Reads `control`, `watch`, and `setValue` from the nearest `FormProvider`.\n * - Watches one or more dependent fields (`filterFields`).\n * - Builds a `customeFilter` object from the watched values.\n * - Resets its own value and triggers a fresh option load whenever a watched\n * field changes.\n * - Disables itself automatically while any required filter is empty.\n *\n * @example\n * // String – single dependency, uses filterKey for the API filter key\n * <DynamicDependentField\n * name=\"department_id\"\n * fieldArrayName=\"add_payment_entry\"\n * filterFields=\"company\"\n * filterKey=\"company_id\"\n * apiType=\"department\"\n * />\n *\n * @example\n * // Object – multiple dependencies with explicit API filter keys\n * <DynamicDependentField\n * name=\"location_id\"\n * fieldArrayName=\"employee\"\n * filterFields={{ company: 'company_id', branch: 'branch_id' }}\n * apiType=\"location\"\n * />\n */\nconst DynamicDependentField: React.FC<DynamicDependentFieldProps> = (props) => {\n const formContext = useFormContext();\n\n // Prioritise props over context to allow manual override (essential for MFE)\n const control = props.formControl || props.control || formContext?.control;\n const watch = props.watch || formContext?.watch;\n const setValue = props.setValue || formContext?.setValue;\n const getFieldState = props.getFieldState || formContext?.getFieldState;\n const formState = props.formState || formContext?.formState;\n\n const hasMethods = !!(control && watch && setValue);\n\n if (!hasMethods) {\n // Fallback: render the select without dependency logic if form methods are missing\n return (\n <DynamicSearchSelect\n addType={props?.addType || props?.apiType}\n enable_footer={props?.enable_footer ?? true}\n {...props}\n {...(control ? { formControl: control } : {})}\n />\n );\n }\n\n return (\n <DynamicDependentFieldContent\n {...props}\n control={control}\n watch={watch}\n setValue={setValue}\n getFieldState={getFieldState}\n formState={formState}\n />\n );\n};\n\n/**\n * Inner component that performs the dependency logic.\n * It is only rendered when form methods are available.\n */\nconst DynamicDependentFieldContent: React.FC<\n DynamicDependentFieldProps & {\n control: any;\n watch: any;\n setValue: any;\n getFieldState: any;\n formState: any;\n }\n> = ({ control, watch, setValue, getFieldState: _getFieldState, formState: _formState, ...props }) => {\n const {\n name,\n filterFields = 'company_id',\n filterKey = 'company_id',\n fieldArrayName,\n enable_footer = true,\n apiType,\n } = props;\n\n // -----------------------------------------------------------------------\n // Normalise filterFields into a uniform array of { formField, apiKey }\n // -----------------------------------------------------------------------\n const entries: FilterFieldEntry[] = useMemo(\n () => normaliseFilterFields(filterFields, filterKey),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(filterFields), filterKey]\n );\n\n /** Just the form field names – used for watching and change detection */\n const formFieldNames = useMemo(() => entries.map((e) => e.formField), [entries]);\n\n // -----------------------------------------------------------------------\n // Watch all dependent form field values\n // -----------------------------------------------------------------------\n const watchedValues = watch(formFieldNames.map((f) => `${fieldArrayName}.${f}`));\n\n const watchedValuesArray: any[] = useMemo(\n () => (Array.isArray(watchedValues) ? watchedValues : [watchedValues]),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(watchedValues)]\n );\n\n // -----------------------------------------------------------------------\n // Build the filter map { company: 1, branch: 2 } (keyed by formField)\n // -----------------------------------------------------------------------\n const filters: FilterMap = useMemo(() => {\n return formFieldNames.reduce<FilterMap>((acc, field, index) => {\n acc[field] = watchedValuesArray[index];\n return acc;\n }, {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(watchedValuesArray), formFieldNames.join(',')]);\n\n // -----------------------------------------------------------------------\n // Determine whether the field should be disabled\n // -----------------------------------------------------------------------\n const isDisabledDueToFilters = !allFiltersFilled(filters);\n const isFieldDisabled = props?.disabled || isDisabledDueToFilters;\n\n // -----------------------------------------------------------------------\n // Track previous filters to detect real changes and avoid infinite loops\n // -----------------------------------------------------------------------\n const prevFiltersRef = useRef<FilterMap | null>(null);\n const isFirstRender = useRef(true);\n\n // -----------------------------------------------------------------------\n // Reset own value when any filter changes (skip on mount)\n // -----------------------------------------------------------------------\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevFiltersRef.current = filters;\n return;\n }\n\n const prev = prevFiltersRef.current;\n const changedFields = formFieldNames.filter((field) => prev?.[field] !== filters[field]);\n const hasChanged = changedFields.length > 0;\n\n if (hasChanged) {\n prevFiltersRef.current = filters;\n\n setValue(`${fieldArrayName}.${name}`, props?.is_multiselect ? [] : null, {\n shouldValidate: false,\n shouldDirty: false\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters)]);\n\n // -----------------------------------------------------------------------\n // Build customeFilter in the format DynamicSearchSelect expects.\n //\n // For each entry, map the watched form value to the correct API filter key:\n // { formField: 'company', apiKey: 'company_id', value: 1 }\n // → { '&company_id.in': [1] }\n //\n // Array values (multiselect) are passed through as-is.\n // -----------------------------------------------------------------------\n const customeFilter: FilterMap = useMemo(() => {\n const dependentFilters = entries.reduce<FilterMap>((acc, entry) => {\n const value = filters[entry.formField];\n const hasValue = Array.isArray(value)\n ? value.length > 0\n : (value !== null && value !== undefined && value !== '');\n\n acc[`&${entry.apiKey}.in`] = hasValue ? Array.isArray(value) ? value : [value] : 0;\n return acc;\n }, {});\n\n // Merge with rest.customeFilter if provided\n return {\n ...dependentFilters,\n ...(props?.customeFilter || {})\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters), JSON.stringify(props?.customeFilter), isDisabledDueToFilters]);\n\n // -----------------------------------------------------------------------\n // Key derived from filter values — forces a full remount of DynamicSearchSelect\n // whenever any parent filter (e.g. company) changes, clearing its internal state.\n // -----------------------------------------------------------------------\n const updateKey = JSON.stringify(filters);\n\n // -----------------------------------------------------------------------\n // Render\n // -----------------------------------------------------------------------\n return (\n <DynamicSearchSelect\n key={updateKey}\n options={[]}\n addType={props?.addType || apiType}\n enable_footer={enable_footer}\n disabled={isFieldDisabled}\n {...(props as any)}\n customeFilter={customeFilter}\n formControl={control}\n />\n );\n};\n\nexport default DynamicDependentField;\n"],"names":["useFormContext","jsx","DynamicSearchSelect","useMemo","useRef","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicDependentField-GTIwrPfP.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/DynamicDependentField.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport DynamicSearchSelect from '../dynamic-select';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Shape of the filter map passed to DynamicSearchSelect's customeFilter */\ntype FilterMap = Record<string, any>;\n\n/**\n * filterFields accepts:\n * - string: `\"company\"` → watch form field `company`, use `filterKey` prop as API filter key\n * - object: `{ company: 'company_id' }` → key = form field to watch, value = API filter key\n */\ntype FilterFieldsInput = string | Record<string, string>;\n\n/** Normalised entry: which form field to watch → which API filter key to use */\ninterface FilterFieldEntry {\n /** The form field name to watch (e.g. \"company\") */\n formField: string;\n /** The API filter key to send (e.g. \"company_id\") */\n apiKey: string;\n}\n\nexport interface DynamicDependentFieldProps {\n /** Field name registered in React Hook Form (e.g. \"department_id\") */\n name: string;\n\n /**\n * Describes which form field(s) this select depends on.\n *\n * **String** – a single form field name. The API filter key is taken from `filterKey`.\n * @example filterFields=\"company\"\n *\n * **Object** – keys are form field names, values are API filter keys.\n * @example filterFields={{ company: 'company_id', branch: 'branch_id' }}\n */\n filterFields: FilterFieldsInput;\n\n /**\n * The form array/namespace prefix used in the parent form\n * (same as `fieldArrayName` in DynamicSearchSelect).\n */\n fieldArrayName: string;\n\n /**\n * API filter key used when `filterFields` is a plain string.\n * Ignored when `filterFields` is an object (the object values are used instead).\n * @default 'company_id'\n */\n filterKey?: string;\n\n /** Label displayed above the select */\n label?: string;\n\n /** Placeholder text inside the select */\n placeholder?: string;\n\n /**\n * API key string forwarded to `DynamicSearchSelect` as `apiType`.\n */\n apiType?: string;\n\n /**\n * Custom fetch function forwarded to `DynamicSearchSelect` as `customFetchApi`.\n */\n customFetchApi?: (...args: any[]) => Promise<any>;\n\n /** Disable the field regardless of filter state */\n disabled?: boolean;\n\n /** React Hook Form validation rules */\n rules?: Record<string, any>;\n\n /** Allow multi-select (forwarded as `is_multiselect`) */\n isMulti?: boolean;\n\n /** Mark field as required */\n required?: boolean;\n\n /** Form control object from useForm */\n control?: any;\n formControl?: any;\n\n /** Watch function from useForm */\n watch?: any;\n\n /** SetValue function from useForm */\n setValue?: any;\n\n /** GetFieldState function from useForm */\n getFieldState?: any;\n\n /** FormState object from useForm */\n formState?: any;\n\n /** Any additional props forwarded verbatim to DynamicSearchSelect */\n [key: string]: any;\n}\n\n// ---------------------------------------------------------------------------\n// Helper utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise `filterFields` into a uniform array of { formField, apiKey } entries.\n *\n * - string `\"company\"` → [{ formField: 'company', apiKey: <filterKey> }]\n * - object `{ company: 'company_id' }` → [{ formField: 'company', apiKey: 'company_id' }]\n */\nconst normaliseFilterFields = (\n input: FilterFieldsInput,\n fallbackApiKey: string\n): FilterFieldEntry[] => {\n if (typeof input === 'string') {\n return [{ formField: input, apiKey: fallbackApiKey }];\n }\n\n // Object – each key is a form field, each value is the API filter key\n return Object.entries(input).map(([formField, apiKey]) => ({\n formField,\n apiKey,\n }));\n};\n\n/**\n * Returns `true` when **every** value in the map is non-empty.\n */\nconst allFiltersFilled = (filters: FilterMap): boolean =>\n Object.values(filters).every((v) => {\n if (v === null || v === undefined || v === '') return false;\n if (Array.isArray(v) && v.length === 0) return false;\n return true;\n });\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * `DynamicDependentField` is a fully reusable, typed wrapper around\n * `DynamicSearchSelect` that:\n *\n * - Reads `control`, `watch`, and `setValue` from the nearest `FormProvider`.\n * - Watches one or more dependent fields (`filterFields`).\n * - Builds a `customeFilter` object from the watched values.\n * - Resets its own value and triggers a fresh option load whenever a watched\n * field changes.\n * - Disables itself automatically while any required filter is empty.\n *\n * @example\n * // String – single dependency, uses filterKey for the API filter key\n * <DynamicDependentField\n * name=\"department_id\"\n * fieldArrayName=\"add_payment_entry\"\n * filterFields=\"company\"\n * filterKey=\"company_id\"\n * apiType=\"department\"\n * />\n *\n * @example\n * // Object – multiple dependencies with explicit API filter keys\n * <DynamicDependentField\n * name=\"location_id\"\n * fieldArrayName=\"employee\"\n * filterFields={{ company: 'company_id', branch: 'branch_id' }}\n * apiType=\"location\"\n * />\n */\nconst DynamicDependentField: React.FC<DynamicDependentFieldProps> = (props) => {\n const formContext = useFormContext();\n\n // Prioritise props over context to allow manual override (essential for MFE)\n const control = props.formControl || props.control || formContext?.control;\n const watch = props.watch || formContext?.watch;\n const setValue = props.setValue || formContext?.setValue;\n const getFieldState = props.getFieldState || formContext?.getFieldState;\n const formState = props.formState || formContext?.formState;\n\n const hasMethods = !!(control && watch && setValue);\n\n if (!hasMethods) {\n // Fallback: render the select without dependency logic if form methods are missing\n return (\n <DynamicSearchSelect\n addType={props?.addType || props?.apiType}\n enable_footer={props?.enable_footer ?? true}\n {...props}\n {...(control ? { formControl: control } : {})}\n />\n );\n }\n\n return (\n <DynamicDependentFieldContent\n {...props}\n control={control}\n watch={watch}\n setValue={setValue}\n getFieldState={getFieldState}\n formState={formState}\n />\n );\n};\n\n/**\n * Inner component that performs the dependency logic.\n * It is only rendered when form methods are available.\n */\nconst DynamicDependentFieldContent: React.FC<\n DynamicDependentFieldProps & {\n control: any;\n watch: any;\n setValue: any;\n getFieldState: any;\n formState: any;\n }\n> = ({ control, watch, setValue, getFieldState: _getFieldState, formState: _formState, ...props }) => {\n const {\n name,\n filterFields = 'company_id',\n filterKey = 'company_id',\n fieldArrayName,\n enable_footer = true,\n apiType,\n } = props;\n\n // -----------------------------------------------------------------------\n // Normalise filterFields into a uniform array of { formField, apiKey }\n // -----------------------------------------------------------------------\n const entries: FilterFieldEntry[] = useMemo(\n () => normaliseFilterFields(filterFields, filterKey),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(filterFields), filterKey]\n );\n\n /** Just the form field names – used for watching and change detection */\n const formFieldNames = useMemo(() => entries.map((e) => e.formField), [entries]);\n\n // -----------------------------------------------------------------------\n // Watch all dependent form field values\n // -----------------------------------------------------------------------\n const watchedValues = watch(formFieldNames.map((f) => `${fieldArrayName}.${f}`));\n\n const watchedValuesArray: any[] = useMemo(\n () => (Array.isArray(watchedValues) ? watchedValues : [watchedValues]),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(watchedValues)]\n );\n\n // -----------------------------------------------------------------------\n // Build the filter map { company: 1, branch: 2 } (keyed by formField)\n // -----------------------------------------------------------------------\n const filters: FilterMap = useMemo(() => {\n return formFieldNames.reduce<FilterMap>((acc, field, index) => {\n acc[field] = watchedValuesArray[index];\n return acc;\n }, {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(watchedValuesArray), formFieldNames.join(',')]);\n\n // -----------------------------------------------------------------------\n // Determine whether the field should be disabled\n // -----------------------------------------------------------------------\n const isDisabledDueToFilters = !allFiltersFilled(filters);\n const isFieldDisabled = props?.disabled || isDisabledDueToFilters;\n\n // -----------------------------------------------------------------------\n // Track previous filters to detect real changes and avoid infinite loops\n // -----------------------------------------------------------------------\n const prevFiltersRef = useRef<FilterMap | null>(null);\n const isFirstRender = useRef(true);\n\n // -----------------------------------------------------------------------\n // Reset own value when any filter changes (skip on mount)\n // -----------------------------------------------------------------------\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevFiltersRef.current = filters;\n return;\n }\n\n const prev = prevFiltersRef.current;\n const changedFields = formFieldNames.filter((field) => prev?.[field] !== filters[field]);\n const hasChanged = changedFields.length > 0;\n\n if (hasChanged) {\n prevFiltersRef.current = filters;\n\n setValue(`${fieldArrayName}.${name}`, props?.is_multiselect ? [] : null, {\n shouldValidate: false,\n shouldDirty: false\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters)]);\n\n // -----------------------------------------------------------------------\n // Build customeFilter in the format DynamicSearchSelect expects.\n //\n // For each entry, map the watched form value to the correct API filter key:\n // { formField: 'company', apiKey: 'company_id', value: 1 }\n // → { '&company_id.in': [1] }\n //\n // Array values (multiselect) are passed through as-is.\n // -----------------------------------------------------------------------\n const customeFilter: FilterMap = useMemo(() => {\n const dependentFilters = entries.reduce<FilterMap>((acc, entry) => {\n const value = filters[entry.formField];\n const hasValue = Array.isArray(value)\n ? value.length > 0\n : (value !== null && value !== undefined && value !== '');\n\n acc[`&${entry.apiKey}.in`] = hasValue ? Array.isArray(value) ? value : [value] : 0;\n return acc;\n }, {});\n\n // Merge with rest.customeFilter if provided\n return {\n ...dependentFilters,\n ...(props?.customeFilter || {})\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(filters), JSON.stringify(props?.customeFilter), isDisabledDueToFilters]);\n\n // -----------------------------------------------------------------------\n // Key derived from filter values — forces a full remount of DynamicSearchSelect\n // whenever any parent filter (e.g. company) changes, clearing its internal state.\n // -----------------------------------------------------------------------\n const updateKey = JSON.stringify(filters);\n\n // -----------------------------------------------------------------------\n // Render\n // -----------------------------------------------------------------------\n return (\n <DynamicSearchSelect\n key={updateKey}\n options={[]}\n addType={props?.addType || apiType}\n enable_footer={enable_footer}\n disabled={isFieldDisabled}\n {...(props as any)}\n customeFilter={customeFilter}\n formControl={control}\n />\n );\n};\n\nexport default DynamicDependentField;\n"],"names":["useFormContext","jsx","DynamicSearchSelect","useMemo","useRef","useEffect"],"mappings":"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"}
@@ -3,11 +3,11 @@ import React__default, { useContext, createContext } from "react";
3
3
  import { Provider } from "react-redux";
4
4
  import { SnackbarProvider } from "notistack";
5
5
  import { BrowserRouter } from "react-router-dom";
6
- import { c as createLibraryStore } from "./store-BL5VFPie.esm.js";
6
+ import { c as createLibraryStore } from "./store-DJh8C3Vv.esm.js";
7
7
  import { M as MUIThemeWrapper, c as createDarkTheme, a as createLightTheme } from "./theme-impl-icduoRoN.esm.js";
8
8
  import { PermissionsProvider, LanguageProvider, AuthProvider } from "@erpsquad/common/runtime";
9
9
  import { initializeApiConfig } from "../utils/api-config/index.esm.js";
10
- import { aD as initializeApiBaseUrls, q as extendApiConfigurations } from "./api-BIVCMSwW.esm.js";
10
+ import { aD as initializeApiBaseUrls, q as extendApiConfigurations } from "./api-8jutPLh0.esm.js";
11
11
  import { setModuleRoutes } from "../utils/module-routes-config/index.esm.js";
12
12
  import { u as useSnackbarRef } from "./apiHelper-DDX_eiu9.esm.js";
13
13
  const SnackbarRefTracker = () => {
@@ -127,4 +127,4 @@ export {
127
127
  ERPUIProvider as E,
128
128
  useERPUI as u
129
129
  };
130
- //# sourceMappingURL=ERPUIProvider-I4j_X_SD.esm.js.map
130
+ //# sourceMappingURL=ERPUIProvider-Dz0s77BR.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ERPUIProvider-I4j_X_SD.esm.js","sources":["../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material';\nimport { CssBaseline } from '@mui/material';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '@erpsquad/common/runtime';\nimport { LanguageProvider } from '@erpsquad/common/runtime';\nimport { PageProvider } from '@erpsquad/common/runtime';\nimport { PermissionsProvider } from '@erpsquad/common/runtime';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\nimport { setModuleRoutes } from '../../utils/module-routes-config';\nimport { useSnackbarRef } from '../../hooks/apiHelper';\n\nconst SnackbarRefTracker: React.FC = () => {\n useSnackbarRef();\n return null;\n};\n\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\nexport interface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Additional API configurations to extend the shared apiConfigurations map\n additionalApiConfigurations?: Record<string, any>;\n\n // Module routes override — allows MFE apps to inject their own full route set\n // so the header module dropdown can match routes correctly.\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\n moduleRoutes?: Record<string, string[]>;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\n\n // Maps module names (e.g. 'accounting') to the currency_data field used for\n // fraction precision in that module. Example: { accounting: 'accounting_fraction_unit' }\n moduleToFractionFieldMap?: Record<string, string>;\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n additionalApiConfigurations,\n moduleRoutes,\n routeToColumnsMap,\n routeToResourceMap,\n publicRoutes = [], // Default empty array for public routes in AuthProvider\n moduleToFractionFieldMap,\n}) => {\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n if (additionalApiConfigurations) {\n extendApiConfigurations(additionalApiConfigurations);\n }\n // Inject MFE-provided module routes so the header can resolve modules\n if (moduleRoutes) {\n setModuleRoutes(moduleRoutes);\n }\n // Store module-to-fraction-field mapping so utility functions can resolve\n // the correct currency fraction field per module (e.g. accounting_fraction_unit).\n if (moduleToFractionFieldMap) {\n localStorage.setItem('_module_fraction_map', JSON.stringify(moduleToFractionFieldMap));\n }\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n <SnackbarRefTracker />\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n // if (enablePages) {\n // content = (\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n // {content}\n // </PageProvider>\n // );\n // }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider publicRoutes={publicRoutes}>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;"],"names":["React","ReduxProvider"],"mappings":"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"}
1
+ {"version":3,"file":"ERPUIProvider-Dz0s77BR.esm.js","sources":["../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material';\nimport { CssBaseline } from '@mui/material';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '@erpsquad/common/runtime';\nimport { LanguageProvider } from '@erpsquad/common/runtime';\nimport { PageProvider } from '@erpsquad/common/runtime';\nimport { PermissionsProvider } from '@erpsquad/common/runtime';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\nimport { setModuleRoutes } from '../../utils/module-routes-config';\nimport { useSnackbarRef } from '../../hooks/apiHelper';\n\nconst SnackbarRefTracker: React.FC = () => {\n useSnackbarRef();\n return null;\n};\n\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\nexport interface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Additional API configurations to extend the shared apiConfigurations map\n additionalApiConfigurations?: Record<string, any>;\n\n // Module routes override — allows MFE apps to inject their own full route set\n // so the header module dropdown can match routes correctly.\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\n moduleRoutes?: Record<string, string[]>;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\n\n // Maps module names (e.g. 'accounting') to the currency_data field used for\n // fraction precision in that module. Example: { accounting: 'accounting_fraction_unit' }\n moduleToFractionFieldMap?: Record<string, string>;\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n additionalApiConfigurations,\n moduleRoutes,\n routeToColumnsMap,\n routeToResourceMap,\n publicRoutes = [], // Default empty array for public routes in AuthProvider\n moduleToFractionFieldMap,\n}) => {\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n if (additionalApiConfigurations) {\n extendApiConfigurations(additionalApiConfigurations);\n }\n // Inject MFE-provided module routes so the header can resolve modules\n if (moduleRoutes) {\n setModuleRoutes(moduleRoutes);\n }\n // Store module-to-fraction-field mapping so utility functions can resolve\n // the correct currency fraction field per module (e.g. accounting_fraction_unit).\n if (moduleToFractionFieldMap) {\n localStorage.setItem('_module_fraction_map', JSON.stringify(moduleToFractionFieldMap));\n }\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n <SnackbarRefTracker />\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n // if (enablePages) {\n // content = (\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n // {content}\n // </PageProvider>\n // );\n // }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider publicRoutes={publicRoutes}>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;"],"names":["React","ReduxProvider"],"mappings":";;;;;;;;;;;;AAqBA,MAAM,qBAA+B,MAAM;AACzC,iBAAA;AACA,SAAO;AACT;AAaA,MAAM,eAAe,cAAiC;AAAA,EACpD,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AACb,CAAC;AAEM,MAAM,WAAW,MAAM,WAAW,YAAY;AA0D9C,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA;AAAA,EAGA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,qBAAqB,CAAA;AAAA;AAAA,EAGrB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA;AAAA,EAGZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,eAAe;AAAA;AAAA,EACf,iBAAiB;AAAA;AAAA,EAGjB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,cAAc,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,IAC7C,kBAAkB;AAAA,EAAA;AAAA;AAAA,EAIpB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAA;AAAA;AAAA,EACf;AACF,MAAM;AAIJ,QAAM,gBAAgBA,eAAM,OAAO,KAAK;AAExC,MAAI,qBAAqB,CAAC,cAAc,SAAS;AAC/C,QAAI;AACF,0BAAoB,iBAAiB;AACrC,4BAAA;AACA,UAAI,6BAA6B;AAC/B,gCAAwB,2BAA2B;AAAA,MACrD;AAEA,UAAI,cAAc;AAChB,wBAAgB,YAAY;AAAA,MAC9B;AAGA,UAAI,0BAA0B;AAC5B,qBAAa,QAAQ,wBAAwB,KAAK,UAAU,wBAAwB,CAAC;AAAA,MACvF;AACA,oBAAc,UAAU;AAAA,IAC1B,SAAS,OAAO;AACd,cAAQ,MAAM,2CAA2C,KAAK;AAAA,IAChE;AAAA,EACF;AAMA,QAAM,QAAQA,eAAM,QAAQ,MAAM;AAChC,QAAI,CAAC,SAAU,QAAO;AAEtB,QAAI,YAAY;AACd,aAAO;AAAA,IACT;AAEA,WAAO,mBAAmB,oBAAoB,SAAS;AAAA,EACzD,GAAG,CAAC,UAAU,YAAY,oBAAoB,SAAS,CAAC;AAGxD,QAAM,QAAQA,eAAM,QAAQ,MAAM;AAChC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,cAAc,SAAS,kBAAkB;AAC9D,UAAM,EAAE,OAAO,eAAA,IAAmB,aAAa,cAAc,SAAS;AACtE,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,WAAW,cAAc,SAAS,CAAC;AAGpD,QAAM,eAAkC;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIF,MAAI,UACF,oBAAC,aAAa,UAAb,EAAsB,OAAO,cAI5B,UAAA,oBAAC,iBAAA,EAAgB,OAAc,mBAC5B,SAAA,CACH,GAGF;AAIF,MAAI,gBAAgB;AAClB,cACE,qBAAC,kBAAA,EAAkB,GAAG,gBACpB,UAAA;AAAA,MAAA,oBAAC,oBAAA,EAAmB;AAAA,MACnB;AAAA,IAAA,GACH;AAAA,EAEJ;AAYA,MAAI,mBAAmB;AACrB,cACE,oBAAC,uBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAGA,MAAI,gBAAgB;AAClB,cACE,oBAAC,oBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAIA,MAAI,YAAY,OAAO;AACrB,cACE,oBAACC,UAAA,EAAc,OACZ,UAAA,SACH;AAAA,EAEJ;AAGA,MAAI,YAAY;AACd,cACE,oBAAC,cAAA,EAAa,cACX,UAAA,SACH;AAAA,EAEJ;AAGA,MAAI,cAAc;AAChB,cACE,oBAAC,iBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAEA,SAAO;AACT;"}