@erpsquad/common 1.11.8 → 1.11.9
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.
- package/dist/api-client/index.esm.js +1 -1
- package/dist/api-client/index.js +1 -1
- package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js → DynamicDependentField-CzEJwzIq.esm.js} +2 -2
- package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js.map → DynamicDependentField-CzEJwzIq.esm.js.map} +1 -1
- package/dist/chunks/{DynamicDependentField-CQIfDDqc.js → DynamicDependentField-D8K1QyqC.js} +2 -2
- package/dist/chunks/{DynamicDependentField-CQIfDDqc.js.map → DynamicDependentField-D8K1QyqC.js.map} +1 -1
- package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js → ERPUIProvider-CqbIIC8j.esm.js} +3 -3
- package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js.map → ERPUIProvider-CqbIIC8j.esm.js.map} +1 -1
- package/dist/chunks/{ERPUIProvider-CcSTcdEo.js → ERPUIProvider-TOq-GnAq.js} +3 -3
- package/dist/chunks/{ERPUIProvider-CcSTcdEo.js.map → ERPUIProvider-TOq-GnAq.js.map} +1 -1
- package/dist/chunks/{FORMS-pxf6g6xE.esm.js → FORMS-C1qQnoDd.esm.js} +7 -7
- package/dist/chunks/{FORMS-pxf6g6xE.esm.js.map → FORMS-C1qQnoDd.esm.js.map} +1 -1
- package/dist/chunks/{FORMS-CUx32b_4.js → FORMS-qlTftaaD.js} +7 -7
- package/dist/chunks/{FORMS-CUx32b_4.js.map → FORMS-qlTftaaD.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample--GtoEJhc.js → FlexibleReduxExample-BEK1732S.js} +4 -4
- package/dist/chunks/{FlexibleReduxExample--GtoEJhc.js.map → FlexibleReduxExample-BEK1732S.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-C-2qOGIw.esm.js → FlexibleReduxExample-CfMjfKUf.esm.js} +4 -4
- package/dist/chunks/{FlexibleReduxExample-C-2qOGIw.esm.js.map → FlexibleReduxExample-CfMjfKUf.esm.js.map} +1 -1
- package/dist/chunks/{SectionFlowEditor-sKsZ3oQo.js → SectionFlowEditor-Bo7czbNc.js} +5 -5
- package/dist/chunks/{SectionFlowEditor-sKsZ3oQo.js.map → SectionFlowEditor-Bo7czbNc.js.map} +1 -1
- package/dist/chunks/{SectionFlowEditor-CFfJBYKx.esm.js → SectionFlowEditor-Ch24-oHf.esm.js} +5 -5
- package/dist/chunks/{SectionFlowEditor-CFfJBYKx.esm.js.map → SectionFlowEditor-Ch24-oHf.esm.js.map} +1 -1
- package/dist/chunks/{action-bar-C7Alva4T.esm.js → action-bar-BQ3DcZpw.esm.js} +4 -4
- package/dist/chunks/{action-bar-C7Alva4T.esm.js.map → action-bar-BQ3DcZpw.esm.js.map} +1 -1
- package/dist/chunks/{action-bar-DdtpxWNk.js → action-bar-CiYO9X02.js} +4 -4
- package/dist/chunks/{action-bar-DdtpxWNk.js.map → action-bar-CiYO9X02.js.map} +1 -1
- package/dist/chunks/{actionCreator-o4ecxFME.js → actionCreator-BdAKTPvT.js} +3 -3
- package/dist/chunks/{actionCreator-o4ecxFME.js.map → actionCreator-BdAKTPvT.js.map} +1 -1
- package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js → actionCreator-C5C0Rg3P.esm.js} +2 -2
- package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js.map → actionCreator-C5C0Rg3P.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Cb3NxILP.esm.js → actionCreator-C6VISpYt.esm.js} +3 -3
- package/dist/chunks/{actionCreator-Cb3NxILP.esm.js.map → actionCreator-C6VISpYt.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js → actionCreator-C7fR-FtF.esm.js} +2 -2
- package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js.map → actionCreator-C7fR-FtF.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-CMigYdax.js → actionCreator-CPRDrGDt.js} +3 -3
- package/dist/chunks/{actionCreator-CMigYdax.js.map → actionCreator-CPRDrGDt.js.map} +1 -1
- package/dist/chunks/{actionCreator-CXmvL3vl.js → actionCreator-D1M0-Fq1.js} +2 -2
- package/dist/chunks/{actionCreator-CXmvL3vl.js.map → actionCreator-D1M0-Fq1.js.map} +1 -1
- package/dist/chunks/{actionCreator-Bas2FW_X.js → actionCreator-Dds_g-Bu.js} +2 -2
- package/dist/chunks/{actionCreator-Bas2FW_X.js.map → actionCreator-Dds_g-Bu.js.map} +1 -1
- package/dist/chunks/{actionCreator-CpePNxQM.esm.js → actionCreator-EaDmUCRb.esm.js} +2 -2
- package/dist/chunks/{actionCreator-CpePNxQM.esm.js.map → actionCreator-EaDmUCRb.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js → actionCreator-Jk4efZIf.esm.js} +3 -3
- package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js.map → actionCreator-Jk4efZIf.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Dl5gTT9c.js → actionCreator-cbPvURIw.js} +2 -2
- package/dist/chunks/{actionCreator-Dl5gTT9c.js.map → actionCreator-cbPvURIw.js.map} +1 -1
- package/dist/chunks/{add-template-DVvbD9a4.esm.js → add-template-CMJffU6X.esm.js} +2 -2
- package/dist/chunks/{add-template-DVvbD9a4.esm.js.map → add-template-CMJffU6X.esm.js.map} +1 -1
- package/dist/chunks/{add-template-Dohg2bHJ.js → add-template-xJNMepo_.js} +2 -2
- package/dist/chunks/{add-template-Dohg2bHJ.js.map → add-template-xJNMepo_.js.map} +1 -1
- package/dist/chunks/{address-modal-CYhiC7ui.js → address-modal-D-FwM2i_.js} +2 -2
- package/dist/chunks/{address-modal-CYhiC7ui.js.map → address-modal-D-FwM2i_.js.map} +1 -1
- package/dist/chunks/{address-modal-CkDBjnye.esm.js → address-modal-DuLY8PAg.esm.js} +2 -2
- package/dist/chunks/{address-modal-CkDBjnye.esm.js.map → address-modal-DuLY8PAg.esm.js.map} +1 -1
- package/dist/chunks/{ai-summary-BxcrnNNM.js → ai-summary-CzLIVEbV.js} +3 -3
- package/dist/chunks/{ai-summary-BxcrnNNM.js.map → ai-summary-CzLIVEbV.js.map} +1 -1
- package/dist/chunks/{ai-summary-SKK5KN2s.esm.js → ai-summary-DGQyEhsD.esm.js} +3 -3
- package/dist/chunks/{ai-summary-SKK5KN2s.esm.js.map → ai-summary-DGQyEhsD.esm.js.map} +1 -1
- package/dist/chunks/{api-DBhNDBh9.js → api-CMF1LApB.js} +57 -1
- package/dist/chunks/{api-DBhNDBh9.js.map → api-CMF1LApB.js.map} +1 -1
- package/dist/chunks/{api-BIVCMSwW.esm.js → api-COFUx2RW.esm.js} +2 -2
- package/dist/chunks/{api-BIVCMSwW.esm.js.map → api-COFUx2RW.esm.js.map} +1 -1
- package/dist/chunks/{api-Bl6wVi9D.esm.js → api-D4FV2rsK.esm.js} +69 -13
- package/dist/chunks/{api-Bl6wVi9D.esm.js.map → api-D4FV2rsK.esm.js.map} +1 -1
- package/dist/chunks/{api-EomXz8pk.js → api-DuBJvpDR.js} +2 -2
- package/dist/chunks/{api-EomXz8pk.js.map → api-DuBJvpDR.js.map} +1 -1
- package/dist/chunks/{appbar-rqqjZ99v.js → appbar-DzkTUvFH.js} +2 -2
- package/dist/chunks/{appbar-rqqjZ99v.js.map → appbar-DzkTUvFH.js.map} +1 -1
- package/dist/chunks/{appbar-BRbO--as.esm.js → appbar-NK7cEVYo.esm.js} +2 -2
- package/dist/chunks/{appbar-BRbO--as.esm.js.map → appbar-NK7cEVYo.esm.js.map} +1 -1
- package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js → approval-wrapper-Dkc8WEg5.esm.js} +2 -2
- package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js.map → approval-wrapper-Dkc8WEg5.esm.js.map} +1 -1
- package/dist/chunks/{approval-wrapper-BM5NxbtT.js → approval-wrapper-Nh3CVait.js} +2 -2
- package/dist/chunks/{approval-wrapper-BM5NxbtT.js.map → approval-wrapper-Nh3CVait.js.map} +1 -1
- package/dist/chunks/{chat-bot-BpNtrZEL.esm.js → chat-bot-3MwduUlf.esm.js} +245 -68
- package/dist/chunks/chat-bot-3MwduUlf.esm.js.map +1 -0
- package/dist/chunks/{chat-bot-osiGMG3g.js → chat-bot-sjkDRlr3.js} +244 -67
- package/dist/chunks/chat-bot-sjkDRlr3.js.map +1 -0
- package/dist/chunks/{common-utility-DGpbsf7S.esm.js → common-utility-GjUrjpEf.esm.js} +2 -2
- package/dist/chunks/{common-utility-DGpbsf7S.esm.js.map → common-utility-GjUrjpEf.esm.js.map} +1 -1
- package/dist/chunks/{common-utility-CA_Upser.js → common-utility-TLpddkaa.js} +2 -2
- package/dist/chunks/{common-utility-CA_Upser.js.map → common-utility-TLpddkaa.js.map} +1 -1
- package/dist/chunks/{custom-editor-6-xqhKz6.esm.js → custom-editor-BjUUIs4F.esm.js} +2 -2
- package/dist/chunks/{custom-editor-6-xqhKz6.esm.js.map → custom-editor-BjUUIs4F.esm.js.map} +1 -1
- package/dist/chunks/{custom-editor-BeLYFfpv.js → custom-editor-ByC55Z4G.js} +2 -2
- package/dist/chunks/{custom-editor-BeLYFfpv.js.map → custom-editor-ByC55Z4G.js.map} +1 -1
- package/dist/chunks/{custom-form-CFU7NEVb.js → custom-form-DEzUMeYP.js} +6 -6
- package/dist/chunks/{custom-form-CFU7NEVb.js.map → custom-form-DEzUMeYP.js.map} +1 -1
- package/dist/chunks/{custom-form-DD7YOHMF.esm.js → custom-form-RvoE2OQr.esm.js} +6 -6
- package/dist/chunks/{custom-form-DD7YOHMF.esm.js.map → custom-form-RvoE2OQr.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-DL83yYRR.esm.js → dashboard-C-HlBEpm.esm.js} +3 -3
- package/dist/chunks/{dashboard-DL83yYRR.esm.js.map → dashboard-C-HlBEpm.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-BcWVkWZt.js → dashboard-CSms9RGu.js} +3 -3
- package/dist/chunks/{dashboard-BcWVkWZt.js.map → dashboard-CSms9RGu.js.map} +1 -1
- package/dist/chunks/{dynamic-report-Z7TQNhUq.js → dynamic-report-2BfQqTlE.js} +4 -4
- package/dist/chunks/{dynamic-report-Z7TQNhUq.js.map → dynamic-report-2BfQqTlE.js.map} +1 -1
- package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js → dynamic-report-6NS0z5pW.esm.js} +4 -4
- package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js.map → dynamic-report-6NS0z5pW.esm.js.map} +1 -1
- package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js → dynamic-rows-CZ1dmLX-.esm.js} +2 -2
- package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js.map → dynamic-rows-CZ1dmLX-.esm.js.map} +1 -1
- package/dist/chunks/{dynamic-rows-CNd_zBwf.js → dynamic-rows-DXy4dtIP.js} +2 -2
- package/dist/chunks/{dynamic-rows-CNd_zBwf.js.map → dynamic-rows-DXy4dtIP.js.map} +1 -1
- package/dist/chunks/{dynamic-text-editor-BBIYTdKZ.js → dynamic-text-editor-BsS7d6iX.js} +2 -2
- package/dist/chunks/{dynamic-text-editor-BBIYTdKZ.js.map → dynamic-text-editor-BsS7d6iX.js.map} +1 -1
- package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js → dynamic-text-editor-CLrhRiKM.esm.js} +2 -2
- package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js.map → dynamic-text-editor-CLrhRiKM.esm.js.map} +1 -1
- package/dist/chunks/{edit-section-modal-BW-aZmUv.esm.js → edit-section-modal-BVH6gzyy.esm.js} +2 -2
- package/dist/chunks/{edit-section-modal-BW-aZmUv.esm.js.map → edit-section-modal-BVH6gzyy.esm.js.map} +1 -1
- package/dist/chunks/{edit-section-modal-Br2ITvLk.js → edit-section-modal-CB6-TNxs.js} +2 -2
- package/dist/chunks/{edit-section-modal-Br2ITvLk.js.map → edit-section-modal-CB6-TNxs.js.map} +1 -1
- package/dist/chunks/{filter-Cr_OSIpb.js → filter-Chgp8Ga-.js} +3 -3
- package/dist/chunks/{filter-Cr_OSIpb.js.map → filter-Chgp8Ga-.js.map} +1 -1
- package/dist/chunks/{filter-COXKBEER.esm.js → filter-DgzeYnXU.esm.js} +3 -3
- package/dist/chunks/{filter-COXKBEER.esm.js.map → filter-DgzeYnXU.esm.js.map} +1 -1
- package/dist/chunks/{footer-CD3kMRdS.js → footer-CTDZ2Qkg.js} +2 -2
- package/dist/chunks/{footer-CD3kMRdS.js.map → footer-CTDZ2Qkg.js.map} +1 -1
- package/dist/chunks/{footer-m3_dlNl8.esm.js → footer-Db5CEUun.esm.js} +2 -2
- package/dist/chunks/{footer-m3_dlNl8.esm.js.map → footer-Db5CEUun.esm.js.map} +1 -1
- package/dist/chunks/{form-fields-yE9kwjvb.js → form-fields-BrEECDh1.js} +2 -2
- package/dist/chunks/{form-fields-yE9kwjvb.js.map → form-fields-BrEECDh1.js.map} +1 -1
- package/dist/chunks/{form-fields-hMMnB_wE.esm.js → form-fields-CpOWIV5e.esm.js} +2 -2
- package/dist/chunks/{form-fields-hMMnB_wE.esm.js.map → form-fields-CpOWIV5e.esm.js.map} +1 -1
- package/dist/chunks/{form-parser-DbnSn5eY.esm.js → form-parser-BOBQohRY.esm.js} +2 -2
- package/dist/chunks/{form-parser-DbnSn5eY.esm.js.map → form-parser-BOBQohRY.esm.js.map} +1 -1
- package/dist/chunks/{form-parser-m4fnw38a.js → form-parser-Bo_xCoz5.js} +2 -2
- package/dist/chunks/{form-parser-m4fnw38a.js.map → form-parser-Bo_xCoz5.js.map} +1 -1
- package/dist/chunks/{form-section-CPIyMdk2.js → form-section-CQkrOcT4.js} +5 -5
- package/dist/chunks/{form-section-CPIyMdk2.js.map → form-section-CQkrOcT4.js.map} +1 -1
- package/dist/chunks/{form-section-TMjdOVeW.esm.js → form-section-CuA5Rmec.esm.js} +5 -5
- package/dist/chunks/{form-section-TMjdOVeW.esm.js.map → form-section-CuA5Rmec.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-BLLa9ogA.js → fullScreen-CKsAPzW8.js} +3 -3
- package/dist/chunks/{fullScreen-BLLa9ogA.js.map → fullScreen-CKsAPzW8.js.map} +1 -1
- package/dist/chunks/{fullScreen-DFgzE41_.esm.js → fullScreen-Dq0rkDY2.esm.js} +3 -3
- package/dist/chunks/{fullScreen-DFgzE41_.esm.js.map → fullScreen-Dq0rkDY2.esm.js.map} +1 -1
- package/dist/chunks/{global-search-BOkxXiZ0.esm.js → global-search-CzTd58hv.esm.js} +3 -3
- package/dist/chunks/{global-search-BOkxXiZ0.esm.js.map → global-search-CzTd58hv.esm.js.map} +1 -1
- package/dist/chunks/{global-search-BjKPmzsQ.js → global-search-mE46QvyY.js} +3 -3
- package/dist/chunks/{global-search-BjKPmzsQ.js.map → global-search-mE46QvyY.js.map} +1 -1
- package/dist/chunks/{grid-view-Bo86x7YL.esm.js → grid-view-Ccl3P7WG.esm.js} +2 -2
- package/dist/chunks/{grid-view-Bo86x7YL.esm.js.map → grid-view-Ccl3P7WG.esm.js.map} +1 -1
- package/dist/chunks/{grid-view-B1u_x5yr.js → grid-view-CcmdZI39.js} +2 -2
- package/dist/chunks/{grid-view-B1u_x5yr.js.map → grid-view-CcmdZI39.js.map} +1 -1
- package/dist/chunks/{header-BHsex2As.js → header-BLQberkS.js} +3 -3
- package/dist/chunks/{header-BHsex2As.js.map → header-BLQberkS.js.map} +1 -1
- package/dist/chunks/{header-B-HaoeK7.esm.js → header-DJXi29Ed.esm.js} +3 -3
- package/dist/chunks/{header-B-HaoeK7.esm.js.map → header-DJXi29Ed.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-BjfqyQ1a.esm.js → header-enhanced-BXn_RBUl.esm.js} +2 -2
- package/dist/chunks/{header-enhanced-BjfqyQ1a.esm.js.map → header-enhanced-BXn_RBUl.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-gJl4iC4m.js → header-enhanced-GQeFu_BL.js} +2 -2
- package/dist/chunks/{header-enhanced-gJl4iC4m.js.map → header-enhanced-GQeFu_BL.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js → inline-edit-fields-D68s-Ll-.esm.js} +2 -2
- package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js.map → inline-edit-fields-D68s-Ll-.esm.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-atDP84QL.js → inline-edit-fields-vGyiNTyf.js} +2 -2
- package/dist/chunks/{inline-edit-fields-atDP84QL.js.map → inline-edit-fields-vGyiNTyf.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js → inventory-reports-title-bar-CT7SIGlT.js} +3 -3
- package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js.map → inventory-reports-title-bar-CT7SIGlT.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js → inventory-reports-title-bar-Ddh26t2X.esm.js} +3 -3
- package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js.map → inventory-reports-title-bar-Ddh26t2X.esm.js.map} +1 -1
- package/dist/chunks/{item-response-details-DsGQ7Dlc.js → item-response-details-BGtHtJ76.js} +4 -4
- package/dist/chunks/{item-response-details-DsGQ7Dlc.js.map → item-response-details-BGtHtJ76.js.map} +1 -1
- package/dist/chunks/{item-response-details-SHSD-nBh.esm.js → item-response-details-DSCdVRmu.esm.js} +4 -4
- package/dist/chunks/{item-response-details-SHSD-nBh.esm.js.map → item-response-details-DSCdVRmu.esm.js.map} +1 -1
- package/dist/chunks/{listing-DIuzQrzb.js → listing-CTIuYwFQ.js} +4 -4
- package/dist/chunks/{listing-DIuzQrzb.js.map → listing-CTIuYwFQ.js.map} +1 -1
- package/dist/chunks/{listing-C0Yb6MVq.esm.js → listing-Dy2Rksst.esm.js} +4 -4
- package/dist/chunks/{listing-C0Yb6MVq.esm.js.map → listing-Dy2Rksst.esm.js.map} +1 -1
- package/dist/chunks/{location-select-g5uczAUF.js → location-select-Dij5uwHV.js} +2 -2
- package/dist/chunks/{location-select-g5uczAUF.js.map → location-select-Dij5uwHV.js.map} +1 -1
- package/dist/chunks/{location-select-CFa00fy4.esm.js → location-select-N7YryMzR.esm.js} +2 -2
- package/dist/chunks/{location-select-CFa00fy4.esm.js.map → location-select-N7YryMzR.esm.js.map} +1 -1
- package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js → material-editable-table-DH-mHUyW.esm.js} +3 -3
- package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js.map → material-editable-table-DH-mHUyW.esm.js.map} +1 -1
- package/dist/chunks/{material-editable-table-BGLjrTzT.js → material-editable-table-flZ7dwOO.js} +3 -3
- package/dist/chunks/{material-editable-table-BGLjrTzT.js.map → material-editable-table-flZ7dwOO.js.map} +1 -1
- package/dist/chunks/{module-reducer-DMxxForv.esm.js → module-reducer-BOqAXAJs.esm.js} +2 -2
- package/dist/chunks/{module-reducer-DMxxForv.esm.js.map → module-reducer-BOqAXAJs.esm.js.map} +1 -1
- package/dist/chunks/{module-reducer-Ck36ZEmZ.js → module-reducer-khxO3m2l.js} +2 -2
- package/dist/chunks/{module-reducer-Ck36ZEmZ.js.map → module-reducer-khxO3m2l.js.map} +1 -1
- package/dist/chunks/{notification-menu-D7ASm-K1.js → notification-menu-DhXt9aJ6.js} +2 -2
- package/dist/chunks/{notification-menu-D7ASm-K1.js.map → notification-menu-DhXt9aJ6.js.map} +1 -1
- package/dist/chunks/{notification-menu-XAadkn-e.esm.js → notification-menu-INKsWdja.esm.js} +2 -2
- package/dist/chunks/{notification-menu-XAadkn-e.esm.js.map → notification-menu-INKsWdja.esm.js.map} +1 -1
- package/dist/chunks/{page-action-BPzaL2KJ.js → page-action-8XNeWxvS.js} +4 -4
- package/dist/chunks/{page-action-BPzaL2KJ.js.map → page-action-8XNeWxvS.js.map} +1 -1
- package/dist/chunks/{page-action-C07iGjvN.esm.js → page-action-BhSpPGBy.esm.js} +4 -4
- package/dist/chunks/{page-action-C07iGjvN.esm.js.map → page-action-BhSpPGBy.esm.js.map} +1 -1
- package/dist/chunks/{page-navigator-Cgbh3tTG.js → page-navigator-DSmNN1Eb.js} +2 -2
- package/dist/chunks/{page-navigator-Cgbh3tTG.js.map → page-navigator-DSmNN1Eb.js.map} +1 -1
- package/dist/chunks/{page-navigator-8gZpp9_P.esm.js → page-navigator-DjG5btI1.esm.js} +2 -2
- package/dist/chunks/{page-navigator-8gZpp9_P.esm.js.map → page-navigator-DjG5btI1.esm.js.map} +1 -1
- package/dist/chunks/{page-view-DJ6HS_dV.js → page-view-Dbf_t78X.js} +3 -3
- package/dist/chunks/{page-view-DJ6HS_dV.js.map → page-view-Dbf_t78X.js.map} +1 -1
- package/dist/chunks/{page-view-CokUNMBn.esm.js → page-view-DknSUnFR.esm.js} +3 -3
- package/dist/chunks/{page-view-CokUNMBn.esm.js.map → page-view-DknSUnFR.esm.js.map} +1 -1
- package/dist/chunks/{quick-approval-modal-BwYjIbO5.js → quick-approval-modal-BQcjEC5r.js} +2 -2
- package/dist/chunks/{quick-approval-modal-BwYjIbO5.js.map → quick-approval-modal-BQcjEC5r.js.map} +1 -1
- package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js → quick-approval-modal-DcZGFHAN.esm.js} +2 -2
- package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js.map → quick-approval-modal-DcZGFHAN.esm.js.map} +1 -1
- package/dist/chunks/{reducer-IsgN83rP.esm.js → reducer-C3tNAbZa.esm.js} +2 -2
- package/dist/chunks/{reducer-IsgN83rP.esm.js.map → reducer-C3tNAbZa.esm.js.map} +1 -1
- package/dist/chunks/{reducer-CdJ6znKF.esm.js → reducer-CACnVYCu.esm.js} +2 -2
- package/dist/chunks/{reducer-CdJ6znKF.esm.js.map → reducer-CACnVYCu.esm.js.map} +1 -1
- package/dist/chunks/{reducer-Qab0amzE.js → reducer-Ca4A9Z08.js} +3 -3
- package/dist/chunks/{reducer-Qab0amzE.js.map → reducer-Ca4A9Z08.js.map} +1 -1
- package/dist/chunks/{reducer-BRD8W9sK.js → reducer-CqXx-nCW.js} +2 -2
- package/dist/chunks/{reducer-BRD8W9sK.js.map → reducer-CqXx-nCW.js.map} +1 -1
- package/dist/chunks/{reducer-3tSO6RW6.esm.js → reducer-D5uYbcnW.esm.js} +3 -3
- package/dist/chunks/{reducer-3tSO6RW6.esm.js.map → reducer-D5uYbcnW.esm.js.map} +1 -1
- package/dist/chunks/{reducer-CpOEECi1.js → reducer-D9YsCrPV.js} +2 -2
- package/dist/chunks/{reducer-CpOEECi1.js.map → reducer-D9YsCrPV.js.map} +1 -1
- package/dist/chunks/{reducer-sgaK2vfW.esm.js → reducer-DgqigQMj.esm.js} +2 -2
- package/dist/chunks/{reducer-sgaK2vfW.esm.js.map → reducer-DgqigQMj.esm.js.map} +1 -1
- package/dist/chunks/{reducer-CPisqqqN.js → reducer-LZj3gYJv.js} +2 -2
- package/dist/chunks/{reducer-CPisqqqN.js.map → reducer-LZj3gYJv.js.map} +1 -1
- package/dist/chunks/{reducer-yyZtsg1A.esm.js → reducer-TleDUmAC.esm.js} +2 -2
- package/dist/chunks/{reducer-yyZtsg1A.esm.js.map → reducer-TleDUmAC.esm.js.map} +1 -1
- package/dist/chunks/{reducer-Bmr6fvcs.js → reducer-zvGfUKoI.js} +2 -2
- package/dist/chunks/{reducer-Bmr6fvcs.js.map → reducer-zvGfUKoI.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-Kz6JjqsY.js → reports-title-bar-D-1LT4fp.js} +4 -4
- package/dist/chunks/{reports-title-bar-Kz6JjqsY.js.map → reports-title-bar-D-1LT4fp.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js → reports-title-bar-QUF0UaA5.esm.js} +4 -4
- package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js.map → reports-title-bar-QUF0UaA5.esm.js.map} +1 -1
- package/dist/chunks/{routes-CfqLAYgR.js → routes--Iz18uA1.js} +3 -3
- package/dist/chunks/{routes-CfqLAYgR.js.map → routes--Iz18uA1.js.map} +1 -1
- package/dist/chunks/{routes-CAc76Zan.esm.js → routes-JUv69qeO.esm.js} +3 -3
- package/dist/chunks/{routes-CAc76Zan.esm.js.map → routes-JUv69qeO.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-B4ZfEuiU.js → schedule-report-Br9G5M-o.js} +6 -6
- package/dist/chunks/{schedule-report-B4ZfEuiU.js.map → schedule-report-Br9G5M-o.js.map} +1 -1
- package/dist/chunks/{schedule-report-CLXjjfjc.esm.js → schedule-report-Ce2EEmZX.esm.js} +6 -6
- package/dist/chunks/{schedule-report-CLXjjfjc.esm.js.map → schedule-report-Ce2EEmZX.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js → schedule-report-modal-C5CAD-AQ.esm.js} +3 -3
- package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js.map → schedule-report-modal-C5CAD-AQ.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-iwoDI-sg.js → schedule-report-modal-CraO2R9I.js} +3 -3
- package/dist/chunks/{schedule-report-modal-iwoDI-sg.js.map → schedule-report-modal-CraO2R9I.js.map} +1 -1
- package/dist/chunks/{searchable-select-_DCkITfk.js → searchable-select-BdR8A-uG.js} +6 -6
- package/dist/chunks/{searchable-select-_DCkITfk.js.map → searchable-select-BdR8A-uG.js.map} +1 -1
- package/dist/chunks/{searchable-select-0F6E4XAr.esm.js → searchable-select-DSxOplyJ.esm.js} +6 -6
- package/dist/chunks/{searchable-select-0F6E4XAr.esm.js.map → searchable-select-DSxOplyJ.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-BaEyZs2h.esm.js → share-modal-0Xrxwpxh.esm.js} +3 -3
- package/dist/chunks/{share-modal-BaEyZs2h.esm.js.map → share-modal-0Xrxwpxh.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-DrXvh-fV.js → share-modal-CP_CC8wR.js} +3 -3
- package/dist/chunks/{share-modal-DrXvh-fV.js.map → share-modal-CP_CC8wR.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js → share-modal-enhanced-BFmwba0h.esm.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js.map → share-modal-enhanced-BFmwba0h.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js → share-modal-enhanced-BajRayrK.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js.map → share-modal-enhanced-BajRayrK.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-DpYj_wlK.js → sidebarScreen-CaNfS0JJ.js} +5 -5
- package/dist/chunks/{sidebarScreen-DpYj_wlK.js.map → sidebarScreen-CaNfS0JJ.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-DiOAiXeU.esm.js → sidebarScreen-CmnTAXY7.esm.js} +5 -5
- package/dist/chunks/{sidebarScreen-DiOAiXeU.esm.js.map → sidebarScreen-CmnTAXY7.esm.js.map} +1 -1
- package/dist/chunks/{store-BSJc1kCM.js → store-CqIuLzOS.js} +6 -6
- package/dist/chunks/{store-BSJc1kCM.js.map → store-CqIuLzOS.js.map} +1 -1
- package/dist/chunks/{store-BL5VFPie.esm.js → store-DH8pCqim.esm.js} +6 -6
- package/dist/chunks/{store-BL5VFPie.esm.js.map → store-DH8pCqim.esm.js.map} +1 -1
- package/dist/chunks/{table-gxAlAeTq.esm.js → table-ClKu8f94.esm.js} +3 -3
- package/dist/chunks/{table-gxAlAeTq.esm.js.map → table-ClKu8f94.esm.js.map} +1 -1
- package/dist/chunks/{table-DWx7x8zw.js → table-DgWNw_5R.js} +3 -3
- package/dist/chunks/{table-DWx7x8zw.js.map → table-DgWNw_5R.js.map} +1 -1
- package/dist/chunks/{table-form-DsTwCUcs.esm.js → table-form-BonoJoe4.esm.js} +2 -2
- package/dist/chunks/{table-form-DsTwCUcs.esm.js.map → table-form-BonoJoe4.esm.js.map} +1 -1
- package/dist/chunks/{table-form-DQ-pp0A_.js → table-form-DlMHRtLK.js} +2 -2
- package/dist/chunks/{table-form-DQ-pp0A_.js.map → table-form-DlMHRtLK.js.map} +1 -1
- package/dist/chunks/{template-editor-router-D4NIwVws.js → template-editor-router-BsD0ydNM.js} +2 -2
- package/dist/chunks/{template-editor-router-D4NIwVws.js.map → template-editor-router-BsD0ydNM.js.map} +1 -1
- package/dist/chunks/{template-editor-router-BXLUTvsk.esm.js → template-editor-router-DoOt_Usq.esm.js} +2 -2
- package/dist/chunks/{template-editor-router-BXLUTvsk.esm.js.map → template-editor-router-DoOt_Usq.esm.js.map} +1 -1
- package/dist/chunks/{template-modal-X-iSmlki.js → template-modal-BXZblB-i.js} +2 -2
- package/dist/chunks/{template-modal-X-iSmlki.js.map → template-modal-BXZblB-i.js.map} +1 -1
- package/dist/chunks/{template-modal-B2VgotrF.esm.js → template-modal-Cyj0AUks.esm.js} +2 -2
- package/dist/chunks/{template-modal-B2VgotrF.esm.js.map → template-modal-Cyj0AUks.esm.js.map} +1 -1
- package/dist/chunks/{templates-CCy1eG6A.esm.js → templates-BK_pcPtR.esm.js} +7 -7
- package/dist/chunks/{templates-CCy1eG6A.esm.js.map → templates-BK_pcPtR.esm.js.map} +1 -1
- package/dist/chunks/{templates-CUREMwYo.js → templates-C5whh_WJ.js} +7 -7
- package/dist/chunks/{templates-CUREMwYo.js.map → templates-C5whh_WJ.js.map} +1 -1
- package/dist/chunks/{text-measurement-BRaY2UMX.js → text-measurement-C5RUDcy3.js} +2 -2
- package/dist/chunks/{text-measurement-BRaY2UMX.js.map → text-measurement-C5RUDcy3.js.map} +1 -1
- package/dist/chunks/{text-measurement-BCjauPbB.esm.js → text-measurement-DvKHzZhR.esm.js} +2 -2
- package/dist/chunks/{text-measurement-BCjauPbB.esm.js.map → text-measurement-DvKHzZhR.esm.js.map} +1 -1
- package/dist/chunks/{translations-BrwQcVN3.esm.js → translations-BLrQX9my.esm.js} +2 -2
- package/dist/chunks/{translations-BrwQcVN3.esm.js.map → translations-BLrQX9my.esm.js.map} +1 -1
- package/dist/chunks/{translations-DoVrWLog.js → translations-CaEkNqOX.js} +2 -2
- package/dist/chunks/{translations-DoVrWLog.js.map → translations-CaEkNqOX.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js → uom-field-wrapper-By-UFGEf.esm.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js.map → uom-field-wrapper-By-UFGEf.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js → uom-field-wrapper-CPbf2ESo.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js.map → uom-field-wrapper-CPbf2ESo.js.map} +1 -1
- package/dist/chunks/{upload-excel-BZPP13tP.esm.js → upload-excel-Bv2QulNF.esm.js} +2 -2
- package/dist/chunks/{upload-excel-BZPP13tP.esm.js.map → upload-excel-Bv2QulNF.esm.js.map} +1 -1
- package/dist/chunks/{upload-excel-rzyINtLp.js → upload-excel-Dki_3fi7.js} +2 -2
- package/dist/chunks/{upload-excel-rzyINtLp.js.map → upload-excel-Dki_3fi7.js.map} +1 -1
- package/dist/chunks/{use-translations-5wUQBxMm.js → use-translations-CiaeAhQ7.js} +2 -2
- package/dist/chunks/{use-translations-5wUQBxMm.js.map → use-translations-CiaeAhQ7.js.map} +1 -1
- package/dist/chunks/{use-translations-CcjSFA3F.esm.js → use-translations-Cplg_xvQ.esm.js} +2 -2
- package/dist/chunks/{use-translations-CcjSFA3F.esm.js.map → use-translations-Cplg_xvQ.esm.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js → useAccountSetting-D2zH-h5F.esm.js} +3 -3
- package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js.map → useAccountSetting-D2zH-h5F.esm.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-9XBALMnW.js → useAccountSetting-Dvyv7WUv.js} +3 -3
- package/dist/chunks/{useAccountSetting-9XBALMnW.js.map → useAccountSetting-Dvyv7WUv.js.map} +1 -1
- package/dist/chunks/{useCheckSkuAndName-CqSLFlhD.js → useCheckSkuAndName-3SCc5HGN.js} +2 -2
- package/dist/chunks/{useCheckSkuAndName-CqSLFlhD.js.map → useCheckSkuAndName-3SCc5HGN.js.map} +1 -1
- package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js → useCheckSkuAndName-BuHzZ_fJ.esm.js} +2 -2
- package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js.map → useCheckSkuAndName-BuHzZ_fJ.esm.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js → useReduxIntegration-B0bZ0VOc.esm.js} +2 -2
- package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js.map → useReduxIntegration-B0bZ0VOc.esm.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-Ct1UN9fB.js → useReduxIntegration-GG8n-C3E.js} +2 -2
- package/dist/chunks/{useReduxIntegration-Ct1UN9fB.js.map → useReduxIntegration-GG8n-C3E.js.map} +1 -1
- package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js → useUniquenessCheck-B_KNcS14.esm.js} +2 -2
- package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js.map → useUniquenessCheck-B_KNcS14.esm.js.map} +1 -1
- package/dist/chunks/{useUniquenessCheck-By5zlovX.js → useUniquenessCheck-SyibUppM.js} +2 -2
- package/dist/chunks/{useUniquenessCheck-By5zlovX.js.map → useUniquenessCheck-SyibUppM.js.map} +1 -1
- package/dist/chunks/{useVendorAICompare-BAkWpJbe.js → useVendorAICompare-Br8Zaj9n.js} +3 -3
- package/dist/chunks/{useVendorAICompare-BAkWpJbe.js.map → useVendorAICompare-Br8Zaj9n.js.map} +1 -1
- package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js → useVendorAICompare-MAhIaPcK.esm.js} +3 -3
- package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js.map → useVendorAICompare-MAhIaPcK.esm.js.map} +1 -1
- package/dist/chunks/{value-editor-BSS9Ns2T.js → value-editor-CjBbeBcy.js} +3 -3
- package/dist/chunks/{value-editor-BSS9Ns2T.js.map → value-editor-CjBbeBcy.js.map} +1 -1
- package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js → value-editor-Du1_lUxK.esm.js} +3 -3
- package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js.map → value-editor-Du1_lUxK.esm.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js → vendor-ai-summary-ChCg_E_J.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js.map → vendor-ai-summary-ChCg_E_J.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js → vendor-ai-summary-DICDiSMd.esm.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js.map → vendor-ai-summary-DICDiSMd.esm.js.map} +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.js +1 -1
- package/dist/components/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/index.js +1 -1
- package/dist/components/address-modal/index.esm.js +1 -1
- package/dist/components/address-modal/index.js +1 -1
- package/dist/components/ai-summary/ai-summary/index.esm.js +1 -1
- package/dist/components/ai-summary/ai-summary/index.js +1 -1
- package/dist/components/ai-summary/index.esm.js +1 -1
- package/dist/components/ai-summary/index.js +1 -1
- package/dist/components/appbar/appbar/index.esm.js +1 -1
- package/dist/components/appbar/appbar/index.js +1 -1
- package/dist/components/appbar/index.esm.js +1 -1
- package/dist/components/appbar/index.js +1 -1
- package/dist/components/approval-wrapper/approval-wrapper/index.esm.js +1 -1
- package/dist/components/approval-wrapper/approval-wrapper/index.js +1 -1
- package/dist/components/approval-wrapper/index.esm.js +1 -1
- package/dist/components/approval-wrapper/index.js +1 -1
- package/dist/components/chat-bot/index.esm.js +1 -1
- package/dist/components/chat-bot/index.js +1 -1
- package/dist/components/custom-forms/FORMS/index.esm.js +1 -1
- package/dist/components/custom-forms/FORMS/index.js +1 -1
- package/dist/components/custom-forms/grid-view/grid-view/index.esm.js +1 -1
- package/dist/components/custom-forms/grid-view/grid-view/index.js +1 -1
- package/dist/components/custom-forms/grid-view/index.esm.js +1 -1
- package/dist/components/custom-forms/grid-view/index.js +1 -1
- package/dist/components/custom-forms/index.esm.js +2 -2
- package/dist/components/custom-forms/index.js +2 -2
- package/dist/components/department-add-modal/index.esm.js +1 -1
- package/dist/components/department-add-modal/index.js +1 -1
- package/dist/components/designation-add-modal/index.esm.js +1 -1
- package/dist/components/designation-add-modal/index.js +1 -1
- package/dist/components/editor/custom-editor/index.esm.js +1 -1
- package/dist/components/editor/custom-editor/index.js +1 -1
- package/dist/components/editor/index.esm.js +1 -1
- package/dist/components/editor/index.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.esm.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.js +1 -1
- package/dist/components/examples/index.esm.js +1 -1
- package/dist/components/examples/index.js +1 -1
- package/dist/components/filter/components/index.esm.js +1 -1
- package/dist/components/filter/components/index.js +1 -1
- package/dist/components/filter/components/value-editor/index.esm.js +1 -1
- package/dist/components/filter/components/value-editor/index.js +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.js +1 -1
- package/dist/components/filter/index.esm.js +2 -2
- package/dist/components/filter/index.js +2 -2
- package/dist/components/footer/footer/index.esm.js +1 -1
- package/dist/components/footer/footer/index.js +1 -1
- package/dist/components/footer/index.esm.js +1 -1
- package/dist/components/footer/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-text-editor/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-text-editor/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/index.esm.js +4 -4
- package/dist/components/form-control/form-builder/form-builder-element/index.js +4 -4
- package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/table/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/table/index.js +1 -1
- package/dist/components/form-control/form-builder/index.esm.js +4 -4
- package/dist/components/form-control/form-builder/index.js +4 -4
- package/dist/components/form-control/form-parser/form-parser/index.esm.js +1 -1
- package/dist/components/form-control/form-parser/form-parser/index.js +1 -1
- package/dist/components/form-control/form-parser/form-section/index.esm.js +1 -1
- package/dist/components/form-control/form-parser/form-section/index.js +1 -1
- package/dist/components/form-control/form-parser/index.esm.js +2 -2
- package/dist/components/form-control/form-parser/index.js +2 -2
- package/dist/components/form-control/index.esm.js +6 -6
- package/dist/components/form-control/index.js +6 -6
- package/dist/components/header/components/global-search/index.esm.js +1 -1
- package/dist/components/header/components/global-search/index.js +1 -1
- package/dist/components/header/components/index.esm.js +1 -1
- package/dist/components/header/components/index.js +1 -1
- package/dist/components/header/components/notification-menu/index.esm.js +1 -1
- package/dist/components/header/components/notification-menu/index.js +1 -1
- package/dist/components/header/components/notification-menu/notification-menu/index.esm.js +1 -1
- package/dist/components/header/components/notification-menu/notification-menu/index.js +1 -1
- package/dist/components/header/header/index.esm.js +1 -1
- package/dist/components/header/header/index.js +1 -1
- package/dist/components/header/header-enhanced/index.esm.js +1 -1
- package/dist/components/header/header-enhanced/index.js +1 -1
- package/dist/components/header/index.esm.js +5 -5
- package/dist/components/header/index.js +5 -5
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/index.esm.js +2 -2
- package/dist/components/header/redux/index.js +2 -2
- package/dist/components/header/redux/reducer/index.esm.js +1 -1
- package/dist/components/header/redux/reducer/index.js +1 -1
- package/dist/components/index.esm.js +36 -36
- package/dist/components/index.js +36 -36
- package/dist/components/inventory-reports-title-bar/index.esm.js +3 -3
- package/dist/components/inventory-reports-title-bar/index.js +3 -3
- package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/index.esm.js +2 -2
- package/dist/components/inventory-reports-title-bar/redux/index.js +2 -2
- package/dist/components/inventory-reports-title-bar/redux/reducer/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/reducer/index.js +1 -1
- package/dist/components/listing/index.esm.js +1 -1
- package/dist/components/listing/index.js +1 -1
- package/dist/components/listing/listing/index.esm.js +1 -1
- package/dist/components/listing/listing/index.js +1 -1
- package/dist/components/location-select/index.esm.js +1 -1
- package/dist/components/location-select/index.js +1 -1
- package/dist/components/material-editable-table/components/index.esm.js +1 -1
- package/dist/components/material-editable-table/components/index.js +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js +1 -1
- package/dist/components/material-editable-table/index.esm.js +2 -2
- package/dist/components/material-editable-table/index.js +2 -2
- package/dist/components/material-editable-table/material-editable-table/index.esm.js +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.js +1 -1
- package/dist/components/material-table/components/index.esm.js +1 -1
- package/dist/components/material-table/components/index.js +1 -1
- package/dist/components/material-table/components/inline-edit-fields/index.esm.js +1 -1
- package/dist/components/material-table/components/inline-edit-fields/index.js +1 -1
- package/dist/components/material-table/index.esm.js +1 -1
- package/dist/components/material-table/index.js +1 -1
- package/dist/components/material-table/material-table/index.esm.js +1 -1
- package/dist/components/material-table/material-table/index.js +1 -1
- package/dist/components/page-navigator/components/index.esm.js +1 -1
- package/dist/components/page-navigator/components/index.js +1 -1
- package/dist/components/page-navigator/components/page-action/index.esm.js +1 -1
- package/dist/components/page-navigator/components/page-action/index.js +1 -1
- package/dist/components/page-navigator/index.esm.js +2 -2
- package/dist/components/page-navigator/index.js +2 -2
- package/dist/components/page-navigator/page-navigator/index.esm.js +1 -1
- package/dist/components/page-navigator/page-navigator/index.js +1 -1
- package/dist/components/parties-modal/index.esm.js +1 -1
- package/dist/components/parties-modal/index.js +1 -1
- package/dist/components/parties-modal/parties-modal/index.esm.js +1 -1
- package/dist/components/parties-modal/parties-modal/index.js +1 -1
- package/dist/components/providers/ERPUIProvider/index.esm.js +1 -1
- package/dist/components/providers/ERPUIProvider/index.js +1 -1
- package/dist/components/providers/index.esm.js +1 -1
- package/dist/components/providers/index.js +1 -1
- package/dist/components/quick-approval-modal/index.esm.js +1 -1
- package/dist/components/quick-approval-modal/index.js +1 -1
- package/dist/components/quick-approval-modal/quick-approval-modal/index.esm.js +1 -1
- package/dist/components/quick-approval-modal/quick-approval-modal/index.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-report/index.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-rows/index.js +1 -1
- package/dist/components/reports/dynamic-report/index.esm.js +2 -2
- package/dist/components/reports/dynamic-report/index.js +2 -2
- package/dist/components/reports/index.esm.js +2 -2
- package/dist/components/reports/index.js +2 -2
- package/dist/components/reports-title-bar/index.esm.js +3 -3
- package/dist/components/reports-title-bar/index.js +3 -3
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/index.esm.js +2 -2
- package/dist/components/reports-title-bar/redux/index.js +2 -2
- package/dist/components/reports-title-bar/redux/reducer/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/reducer/index.js +1 -1
- package/dist/components/reports-title-bar/reports-title-bar/index.esm.js +1 -1
- package/dist/components/reports-title-bar/reports-title-bar/index.js +1 -1
- package/dist/components/rfq-response/index.esm.js +1 -1
- package/dist/components/rfq-response/index.js +1 -1
- package/dist/components/rfq-response/item-response-details/index.esm.js +1 -1
- package/dist/components/rfq-response/item-response-details/index.js +1 -1
- package/dist/components/schedule-report/index.esm.js +2 -2
- package/dist/components/schedule-report/index.js +2 -2
- package/dist/components/schedule-report/schedule-report/index.esm.js +1 -1
- package/dist/components/schedule-report/schedule-report/index.js +1 -1
- package/dist/components/schedule-report/schedule-report-modal/index.esm.js +1 -1
- package/dist/components/schedule-report/schedule-report-modal/index.js +1 -1
- package/dist/components/searchable-select/index.esm.js +1 -1
- package/dist/components/searchable-select/index.js +1 -1
- package/dist/components/share-modal/index.esm.js +4 -4
- package/dist/components/share-modal/index.js +4 -4
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/index.esm.js +2 -2
- package/dist/components/share-modal/redux/index.js +2 -2
- package/dist/components/share-modal/redux/reducer/index.esm.js +1 -1
- package/dist/components/share-modal/redux/reducer/index.js +1 -1
- package/dist/components/share-modal/share-modal/index.esm.js +1 -1
- package/dist/components/share-modal/share-modal/index.js +1 -1
- package/dist/components/share-modal/share-modal-enhanced/index.esm.js +1 -1
- package/dist/components/share-modal/share-modal-enhanced/index.js +1 -1
- package/dist/components/team-add-modal/index.esm.js +1 -1
- package/dist/components/team-add-modal/index.js +1 -1
- package/dist/components/uom-field-wrapper/index.esm.js +1 -1
- package/dist/components/uom-field-wrapper/index.js +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js +1 -1
- package/dist/components/upload-excel/index.esm.js +1 -1
- package/dist/components/upload-excel/index.js +1 -1
- package/dist/components/upload-excel/upload-excel/index.esm.js +1 -1
- package/dist/components/upload-excel/upload-excel/index.js +1 -1
- package/dist/components/vendor-ai-summary/index.esm.js +1 -1
- package/dist/components/vendor-ai-summary/index.js +1 -1
- package/dist/hooks/index.esm.js +6 -6
- package/dist/hooks/index.js +6 -6
- package/dist/hooks/use-translations/index.esm.js +1 -1
- package/dist/hooks/use-translations/index.js +1 -1
- package/dist/hooks/useAccountSetting/index.esm.js +1 -1
- package/dist/hooks/useAccountSetting/index.js +1 -1
- package/dist/hooks/useCheckSkuAndName/index.esm.js +1 -1
- package/dist/hooks/useCheckSkuAndName/index.js +1 -1
- package/dist/hooks/useReduxIntegration/index.esm.js +1 -1
- package/dist/hooks/useReduxIntegration/index.js +1 -1
- package/dist/hooks/useUniquenessCheck/index.esm.js +1 -1
- package/dist/hooks/useUniquenessCheck/index.js +1 -1
- package/dist/index.esm.js +64 -64
- package/dist/index.js +64 -64
- package/dist/layout/fullScreen/index.esm.js +1 -1
- package/dist/layout/fullScreen/index.js +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/layout/sidebarScreen/index.esm.js +1 -1
- package/dist/layout/sidebarScreen/index.js +1 -1
- package/dist/redux/index.esm.js +3 -3
- package/dist/redux/index.js +3 -3
- package/dist/runtime/index.esm.js +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/src/api-client/api.ai-feature/api.d.ts +15 -0
- package/dist/src/components/chat-bot/types.d.ts +1 -1
- package/dist/utils/api/index.esm.js +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/common/index.esm.js +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common-utility/index.esm.js +1 -1
- package/dist/utils/common-utility/index.js +1 -1
- package/dist/utils/index.esm.js +5 -5
- package/dist/utils/index.js +4 -4
- package/dist/utils/text-measurement/index.esm.js +1 -1
- package/dist/utils/text-measurement/index.js +1 -1
- package/dist/views/afterAuth/dashboard/index.esm.js +1 -1
- package/dist/views/afterAuth/dashboard/index.js +1 -1
- package/dist/views/afterAuth/index.esm.js +2 -2
- package/dist/views/afterAuth/index.js +2 -2
- package/dist/views/afterAuth/page-view/index.esm.js +1 -1
- package/dist/views/afterAuth/page-view/index.js +1 -1
- package/dist/views/form-builder/custom-form/index.esm.js +1 -1
- package/dist/views/form-builder/custom-form/index.js +1 -1
- package/dist/views/form-builder/element-edit-forms/index.esm.js +1 -1
- package/dist/views/form-builder/element-edit-forms/index.js +1 -1
- package/dist/views/form-builder/form-fields/index.esm.js +1 -1
- package/dist/views/form-builder/form-fields/index.js +1 -1
- package/dist/views/form-builder/index.esm.js +4 -4
- package/dist/views/form-builder/index.js +4 -4
- package/dist/views/form-builder/redux/index.esm.js +1 -1
- package/dist/views/form-builder/redux/index.js +1 -1
- package/dist/views/index.esm.js +13 -13
- package/dist/views/index.js +13 -13
- package/dist/views/template-editor/add-template/index.esm.js +1 -1
- package/dist/views/template-editor/add-template/index.js +1 -1
- package/dist/views/template-editor/components/index.esm.js +1 -1
- package/dist/views/template-editor/components/index.js +1 -1
- package/dist/views/template-editor/edit-section-modal/index.esm.js +1 -1
- package/dist/views/template-editor/edit-section-modal/index.js +1 -1
- package/dist/views/template-editor/index.esm.js +7 -7
- package/dist/views/template-editor/index.js +7 -7
- package/dist/views/template-editor/routes/index.esm.js +1 -1
- package/dist/views/template-editor/routes/index.js +1 -1
- package/dist/views/template-editor/template-modal/index.esm.js +1 -1
- package/dist/views/template-editor/template-modal/index.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/chat-bot-BpNtrZEL.esm.js.map +0 -1
- package/dist/chunks/chat-bot-osiGMG3g.js.map +0 -1
|
@@ -4,7 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const iconsMaterial = require("@mui/icons-material");
|
|
6
6
|
const material = require("@mui/material");
|
|
7
|
-
const api = require("./api-
|
|
7
|
+
const api = require("./api-DuBJvpDR.js");
|
|
8
8
|
const utils_server = require("./index-B8EHBVkT.js");
|
|
9
9
|
const utils_apiConfig = require("../utils/api-config/index.js");
|
|
10
10
|
const components_editor_utils = require("../components/editor/utils/index.js");
|
|
@@ -1254,4 +1254,4 @@ const CustomEditor = React.forwardRef((props, ref) => {
|
|
|
1254
1254
|
CustomEditor.displayName = "CustomEditor";
|
|
1255
1255
|
exports.CustomEditor = CustomEditor;
|
|
1256
1256
|
exports.default = CustomEditor;
|
|
1257
|
-
//# sourceMappingURL=custom-editor-
|
|
1257
|
+
//# sourceMappingURL=custom-editor-ByC55Z4G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-editor-BeLYFfpv.js","sources":["../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/**\n * Custom Rich Text Editor (CKEditor-like)\n * \n * Features:\n * - CKEditor-style menu bar and toolbar\n * - Full formatting toolbar (bold, italic, underline, etc.)\n * - Font family, size, color, background color\n * - Alignment, lists, links\n * - Image upload with resize handles\n * - Table insertion and editing\n * - Selection handles for images and elements\n * - Preserves exact HTML structure (no normalization)\n * - Maintains all attributes, styles, and scoped CSS\n * \n * Fix: Source View no longer clears content on toggle.\n * Root cause was sourceCodeRef being shared between visual-mode (handleInput)\n * and source-mode (textarea). Introduced sourceViewContentRef to exclusively\n * own source-mode textarea content so handleInput never corrupts it.\n */\nimport React, { useState, useEffect, useRef, useImperativeHandle, forwardRef, useCallback } from 'react';\nimport { \n\tFormatBold, \n\tFormatItalic, \n\tFormatUnderlined, \n\tFormatStrikethrough,\n\tFormatAlignLeft,\n\tFormatAlignCenter,\n\tFormatAlignRight,\n\tFormatAlignJustify,\n\tFormatListBulleted,\n\tFormatListNumbered,\n\tLink as LinkIcon,\n\tImage as ImageIcon,\n\tTableChart,\n\tCode,\n\tUndo,\n\tRedo,\n\tSubscript,\n\tSuperscript,\n\tClose,\n\tSwapHoriz,\n\tAddCircleOutline,\n\tRemoveCircleOutline,\n} from '@mui/icons-material';\nimport { IconButton, Divider, Select, MenuItem, Tooltip, Box, Button, Popover } from '@mui/material';\nimport { uploadFiles } from '../../utils/common';\nimport { getToken } from '../../utils/common';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getApiConfig } from '../../utils/api-config';\nimport { CellProperties } from './table/types';\nimport { prepareForEditing, prepareForSaving } from './utils/handlebars-protection';\nimport './custom-editor.css';\n\nexport interface CustomEditorProps {\n\teditorRef?: React.RefObject<any>;\n\tdata: string;\n\thandleEditorReady: (editor: any) => void;\n\tonError?: (error: Error) => void;\n\tconfig?: any;\n\t[key: string]: any;\n}\n\nconst FONT_FAMILIES = [\n\t'Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Trebuchet MS', 'Verdana'\n];\n\nconst FONT_SIZES = ['10px', '12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px'];\n\nconst HEADING_FORMATS = [\n\t{ value: 'p', label: 'Paragraph' },\n\t{ value: 'h1', label: 'Heading 1' },\n\t{ value: 'h2', label: 'Heading 2' },\n\t{ value: 'h3', label: 'Heading 3' },\n\t{ value: 'h4', label: 'Heading 4' },\n\t{ value: 'h5', label: 'Heading 5' },\n\t{ value: 'h6', label: 'Heading 6' }\n];\n\nconst PRESET_COLORS = [\n\t'#000000', '#434343', '#666666', '#999999', '#b7b7b7', '#cccccc', '#d9d9d9', '#ffffff',\n\t'#ff0000', '#ff9900', '#ffff00', '#00ff00', '#00ffff', '#4a86e8', '#9900ff', '#ff00ff',\n\t'#ea9999', '#f9cb9c', '#ffe599', '#b6d7a8', '#a2c4c9', '#9fc5e8', '#b4a7d6', '#d5a6bd',\n\t'#e06666', '#f6b26b', '#ffd966', '#93c47d', '#76a5af', '#6fa8dc', '#8e7cc3', '#c27ba0',\n\t'#cc0000', '#e69138', '#f1c232', '#6aa84f', '#45818e', '#3d85c8', '#674ea7', '#85200c',\n];\n\nexport const CustomEditor = forwardRef<any, CustomEditorProps>((props, ref) => {\n\tconst {\n\t\teditorRef: editorRefProp,\n\t\tdata = '',\n\t\thandleEditorReady,\n\t\tonError,\n\t\tconfig = {},\n\t\t...rest\n\t} = props;\n\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst [fontFamily, setFontFamily] = useState('Arial');\n\tconst [fontSize, setFontSize] = useState('14px');\n\tconst [headingFormat, setHeadingFormat] = useState('p');\n\tconst [showSourceMode, setShowSourceMode] = useState(false);\n\tconst [sourceCode, setSourceCode] = useState(data);\n\tconst [history, setHistory] = useState<string[]>([data]);\n\tconst [historyIndex, setHistoryIndex] = useState(0);\n\tconst [selectedElement, setSelectedElement] = useState<HTMLElement | null>(null);\n\tconst [resizeHandles, setResizeHandles] = useState<{ x: number; y: number; width: number; height: number } | null>(null);\n\tconst [showTablePicker, setShowTablePicker] = useState(false);\n\tconst [tablePickerAnchor, setTablePickerAnchor] = useState<HTMLElement | null>(null);\n\tconst [textSelectionAnchor, setTextSelectionAnchor] = useState<{ x: number; y: number } | null>(null);\n\tconst [showTextToolbar, setShowTextToolbar] = useState(false);\n\tconst [colorPickerState, setColorPickerState] = useState<{ anchor: HTMLElement; type: 'text' | 'bg' } | null>(null);\n\t\n\t// Table editing state\n\tconst [selectedCell, setSelectedCell] = useState<HTMLTableCellElement | null>(null);\n\tconst [showTableToolbar, setShowTableToolbar] = useState(false);\n\tconst [tableToolbarPosition, setTableToolbarPosition] = useState<{ x: number; y: number } | null>(null);\n\tconst [cellProperties, setCellProperties] = useState<CellProperties>({\n\t\tborderStyle: 'solid',\n\t\tborderColor: '#ddd',\n\t\tborderWidth: '1px',\n\t\tbackgroundColor: 'transparent',\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tpadding: '8px',\n\t\ttextAlign: 'left',\n\t\tverticalAlign: 'middle'\n\t});\n\t\n\tconst contentEditableRef = useRef<HTMLDivElement>(null);\n\tconst sourceCodeRef = useRef<string>(data);\n\tconst onEditorChangeRef = useRef(props.onEditorChange);\n\tconst handleEditorReadyRef = useRef(handleEditorReady);\n\tuseEffect(() => { onEditorChangeRef.current = props.onEditorChange; });\n\tuseEffect(() => { handleEditorReadyRef.current = handleEditorReady; });\n\n\t// FIX: Dedicated ref for source-mode textarea content.\n\t// sourceCodeRef is shared with visual-mode (handleInput overwrites it on every\n\t// keystroke). sourceViewContentRef is ONLY written by source-mode handlers\n\t// (handleSourceCodeChange, handleHtmlFileUpload, handleToggleSource entering\n\t// source mode) so it is never corrupted by visual-mode activity.\n\tconst sourceViewContentRef = useRef<string>(data);\n\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst htmlFileInputRef = useRef<HTMLInputElement>(null);\n\tconst replaceImageInputRef = useRef<HTMLInputElement>(null);\n\tconst resizeStartRef = useRef<{ x: number; y: number; width: number; height: number; handle: string } | null>(null);\n\tconst handlebarsMapRef = useRef<{ [key: string]: string }>({});\n\tconst apiConfig = getApiConfig();\n\n\t// Update source code when data prop changes\n\tuseEffect(() => {\n\t\tif(!data)return\n\t\tconst { html: protectedHtml, map } = prepareForEditing(data);\n\t\thandlebarsMapRef.current = map;\n\t\tsourceCodeRef.current = data; // Store original with Handlebars\n\t\t\n\t\tif (contentEditableRef.current && contentEditableRef.current.innerHTML !== protectedHtml) {\n\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t}\n\t}, [data]);\n\n\t// Initialize editor\n\tuseEffect(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\ttry {\n\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(data || '');\n\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\tconst adapter = {\n\t\t\t\t\tgetData: () => {\n\t\t\t\t\t\t// Restore Handlebars syntax before returning\n\t\t\t\t\t\treturn prepareForSaving(sourceCodeRef.current, handlebarsMapRef.current);\n\t\t\t\t\t},\n\t\t\t\t\tsetData: (newData: string) => {\n\t\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(newData);\n\t\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\t\tsourceCodeRef.current = newData;\n\t\t\t\t\t\tif (contentEditableRef.current) {\n\t\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tinsertContent: (fragment: string) => {\n\t\t\t\t\t\t\texecCommand('insertHTML', fragment);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tprocessor: {\n\t\t\t\t\t\t\ttoView: (html: string) => html\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttoModel: (html: string) => html\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\thandleEditorReadyRef.current?.(adapter);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('[CustomEditor] init effect error:', e);\n\t\t\t}\n\t\t}\n\t}, []);\n\n\t// Execute formatting command\n\tconst execCommand = useCallback((command: string, value?: string) => {\n\t\tdocument.execCommand(command, false, value);\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t}, []);\n\n\t// Save to history for undo/redo\n\tconst saveToHistory = useCallback(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\tconst newHistory = history.slice(0, historyIndex + 1);\n\t\t\tnewHistory.push(contentEditableRef.current.innerHTML);\n\t\t\tsetHistory(newHistory.slice(-50)); // Keep last 50 states\n\t\t\tsetHistoryIndex(newHistory.length - 1);\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Undo\n\tconst handleUndo = useCallback(() => {\n\t\tif (historyIndex > 0) {\n\t\t\tconst newIndex = historyIndex - 1;\n\t\t\tsetHistoryIndex(newIndex);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = history[newIndex];\n\t\t\t\tsourceCodeRef.current = history[newIndex];\n\t\t\t}\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Redo\n\tconst handleRedo = useCallback(() => {\n\t\tif (historyIndex < history.length - 1) {\n\t\t\tconst newIndex = historyIndex + 1;\n\t\t\tsetHistoryIndex(newIndex);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = history[newIndex];\n\t\t\t\tsourceCodeRef.current = history[newIndex];\n\t\t\t}\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Handle content changes in visual mode.\n\t// IMPORTANT: only updates sourceCodeRef (visual-mode ref).\n\t// Must NOT touch sourceViewContentRef — that ref belongs exclusively to source mode.\n\tconst handleInput = useCallback(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\tconst visualHtml = contentEditableRef.current.innerHTML;\n\t\t\t// Restore Handlebars before saving to sourceCodeRef\n\t\t\tsourceCodeRef.current = prepareForSaving(visualHtml, handlebarsMapRef.current);\n\t\t\tonEditorChangeRef.current?.(sourceCodeRef.current);\n\t\t}\n\t}, []);\n\n\t// Strip external formatting from pasted HTML.\n\tconst sanitizePastedHtml = useCallback((html: string): string => {\n\t\tconst doc = new DOMParser().parseFromString(html, 'text/html');\n\n\t\t// Unwrap <span> elements — they carry font/color styles from external sources\n\t\tdoc.querySelectorAll('span').forEach(span => {\n\t\t\tconst frag = document.createDocumentFragment();\n\t\t\twhile (span.firstChild) frag.appendChild(span.firstChild);\n\t\t\tspan.parentNode?.replaceChild(frag, span);\n\t\t});\n\n\t\t// Convert <a> links to plain text\n\t\tdoc.querySelectorAll('a').forEach(a => {\n\t\t\tconst text = document.createTextNode(a.textContent || '');\n\t\t\ta.parentNode?.replaceChild(text, a);\n\t\t});\n\n\t\t// Strip style and class from every remaining element\n\t\tdoc.querySelectorAll('[style], [class], [color], [bgcolor], [face]').forEach(el => {\n\t\t\tel.removeAttribute('style');\n\t\t\tel.removeAttribute('class');\n\t\t\tel.removeAttribute('color');\n\t\t\tel.removeAttribute('bgcolor');\n\t\t\tel.removeAttribute('face');\n\t\t});\n\n\t\treturn doc.body.innerHTML;\n\t}, []);\n\n\t// Handle paste — sanitize external HTML before inserting\n\tconst handlePaste = useCallback((e: React.ClipboardEvent) => {\n\t\te.preventDefault();\n\t\tconst html = e.clipboardData.getData('text/html');\n\t\tconst text = e.clipboardData.getData('text/plain');\n\n\t\tif (html) {\n\t\t\texecCommand('insertHTML', sanitizePastedHtml(html));\n\t\t} else {\n\t\t\texecCommand('insertText', text);\n\t\t}\n\t}, [execCommand, sanitizePastedHtml]);\n\n\t// Handle image upload\n\tconst handleImageUpload = useCallback(async (file: File) => {\n\t\ttry {\n\t\t\tconst uFiles = await uploadFiles([file], 'document');\n\t\t\tconst token = getToken();\n\t\t\tconst payload = {\n\t\t\t\t...token,\n\t\t\t\t'x-timezone': token['x-timezone']?.toString() || '',\n\t\t\t\ttitle: file?.name.split('.')[0],\n\t\t\t\tpath: '/',\n\t\t\t\tis_private: true,\n\t\t\t\tis_directory: false,\n\t\t\t\tfile_size: file.size,\n\t\t\t\tis_child: false,\n\t\t\t\tfile_extension: file?.name.split('.')[1],\n\t\t\t\ttype: 'image',\n\t\t\t\tmime_type: file.type,\n\t\t\t\turl: `${apiConfig?.s3BucketUrl}${uFiles[0]}`\n\t\t\t};\n\t\t\t\n\t\t\tawait postV1Drive(payload);\n\t\t\texecCommand('insertHTML', `<img src=\"${payload.url}\" alt=\"${file.name}\" style=\"max-width: 100%;\" />`);\n\t\t} catch (error) {\n\t\t\tconsole.error('Image upload failed:', error);\n\t\t\tonError?.(error as Error);\n\t\t}\n\t}, [apiConfig, execCommand, onError]);\n\n\t// Handle file input change\n\tconst handleFileChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (file) {\n\t\t\thandleImageUpload(file);\n\t\t}\n\t}, [handleImageUpload]);\n\n\t// Insert link\n\tconst handleInsertLink = useCallback(() => {\n\t\tconst url = prompt('Enter URL:');\n\t\tif (url) {\n\t\t\texecCommand('createLink', url);\n\t\t}\n\t}, [execCommand]);\n\n\t// Insert table\n\tconst handleInsertTable = useCallback(() => {\n\t\tconst rows = prompt('Number of rows:', '3');\n\t\tconst cols = prompt('Number of columns:', '3');\n\t\t\n\t\tif (rows && cols) {\n\t\t\tlet tableHTML = '<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\">';\n\t\t\ttableHTML += '<thead><tr>';\n\t\t\tfor (let i = 0; i < parseInt(cols); i++) {\n\t\t\t\ttableHTML += '<th style=\"border: 1px solid #ddd; padding: 8px;\">Header</th>';\n\t\t\t}\n\t\t\ttableHTML += '</tr></thead><tbody>';\n\t\t\tfor (let i = 0; i < parseInt(rows); i++) {\n\t\t\t\ttableHTML += '<tr>';\n\t\t\t\tfor (let j = 0; j < parseInt(cols); j++) {\n\t\t\t\t\ttableHTML += '<td style=\"border: 1px solid #ddd; padding: 8px;\"></td>';\n\t\t\t\t}\n\t\t\t\ttableHTML += '</tr>';\n\t\t\t}\n\t\t\ttableHTML += '</tbody></table>';\n\t\t\t\n\t\t\texecCommand('insertHTML', tableHTML);\n\t\t}\n\t}, [execCommand]);\n\n\t// Table picker component\n\tconst TablePicker = () => {\n\t\tconst [hoverCell, setHoverCell] = useState<{ row: number; col: number } | null>(null);\n\t\tconst maxRows = 10;\n\t\tconst maxCols = 10;\n\t\t\n\t\t// Calculate position relative to button\n\t\tconst buttonRect = tablePickerAnchor?.getBoundingClientRect();\n\t\tconst editorContainer = document.querySelector('.custom-editor-container');\n\t\tconst containerRect = editorContainer?.getBoundingClientRect();\n\t\t\n\t\tlet top = 0;\n\t\tlet left = 0;\n\t\t\n\t\tif (buttonRect && containerRect) {\n\t\t\ttop = buttonRect.bottom - containerRect.top + 5;\n\t\t\tleft = buttonRect.left - containerRect.left;\n\t\t}\n\t\t\n\t\treturn (\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: `${top}px`,\n\t\t\t\t\tleft: `${left}px`,\n\t\t\t\t\tbgcolor: 'white',\n\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\tp: 2,\n\t\t\t\t\tboxShadow: 3,\n\t\t\t\t\tzIndex: 9999\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Box sx={{ display: 'grid', gridTemplateColumns: `repeat(${maxCols}, 20px)`, gap: '2px', mb: 1 }}>\n\t\t\t\t\t{Array.from({ length: maxRows }).map((_, rowIndex) =>\n\t\t\t\t\t\tArray.from({ length: maxCols }).map((_, colIndex) => (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tkey={`${rowIndex}-${colIndex}`}\n\t\t\t\t\t\t\t\tonMouseEnter={() => setHoverCell({ row: rowIndex + 1, col: colIndex + 1 })}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\thandleInsertTableFromPicker(rowIndex + 1, colIndex + 1);\n\t\t\t\t\t\t\t\t\tsetHoverCell(null);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\theight: 20,\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\t\t\tbgcolor: hoverCell && rowIndex < hoverCell.row && colIndex < hoverCell.col ? '#1976d2' : 'white',\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\t\t\tbgcolor: '#1976d2'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t\t<Box sx={{ textAlign: 'center', fontSize: '12px', color: '#666' }}>\n\t\t\t\t\t{hoverCell ? `${hoverCell.row} × ${hoverCell.col}` : '1 × 1'}\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t);\n\t};\n\n\t// Font family change\n\tconst handleFontFamilyChange = useCallback((e: any) => {\n\t\tconst family = e.target.value;\n\t\tsetFontFamily(family);\n\t\texecCommand('fontName', family);\n\t}, [execCommand]);\n\n\t// Font size change\n\tconst handleFontSizeChange = useCallback((e: any) => {\n\t\tconst size = e.target.value;\n\t\tsetFontSize(size);\n\t\tdocument.execCommand('fontSize', false, '7');\n\t\tif (contentEditableRef.current) {\n\t\t\tconst fontTags = Array.from(\n\t\t\t\tcontentEditableRef.current.querySelectorAll('font[size=\"7\"]')\n\t\t\t);\n\t\t\tfontTags.forEach(tag => {\n\t\t\t\tconst span = document.createElement('span');\n\t\t\t\tspan.style.fontSize = size;\n\t\t\t\twhile (tag.firstChild) span.appendChild(tag.firstChild);\n\t\t\t\ttag.parentNode?.replaceChild(span, tag);\n\t\t\t});\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t\tonEditorChangeRef.current?.(sourceCodeRef.current);\n\t\t}\n\t}, [saveToHistory]);\n\n\t// Heading format change\n\tconst handleHeadingFormatChange = useCallback((e: any) => {\n\t\tconst format = e.target.value;\n\t\tsetHeadingFormat(format);\n\t\texecCommand('formatBlock', `<${format}>`);\n\t}, [execCommand]);\n\n\t// Toggle source mode\n\t// FIX: Use sourceViewContentRef (not sourceCodeRef) as the single source of\n\t// truth for the textarea. This prevents handleInput (visual mode) from ever\n\t// overwriting content the user typed/pasted into the source textarea.\n\tconst handleToggleSource = useCallback(() => {\n\t\tif (!showSourceMode) {\n\t\t\t// Entering source mode: MUST capture content BEFORE state change\n\t\t\t// because contentEditableRef.current becomes null after re-render\n\t\t\tconst visualHtml = contentEditableRef.current?.innerHTML || sourceCodeRef.current || data;\n\t\t\tconst restoredHtml = prepareForSaving(visualHtml, handlebarsMapRef.current);\n\t\t\t\n\t\t\t// Update all refs and state\n\t\t\tsetSourceCode(restoredHtml);\n\t\t\tsourceViewContentRef.current = restoredHtml;\n\t\t\tsourceCodeRef.current = restoredHtml;\n\t\t\t\n\t\t\t// Now switch mode (this will unmount contentEditable and mount textarea)\n\t\t\tsetShowSourceMode(true);\n\t\t} else {\n\t\t\t// Leaving source mode: read from sourceViewContentRef\n\t\t\t// State change will mount contentEditable, then we update it in useEffect\n\t\t\tconst currentSource = sourceViewContentRef.current.trim();\n\t\t\t\n\t\t\tif (!currentSource) {\n\t\t\t\t// Empty source — use default\n\t\t\t\tconst defaultHtml = '<p><br></p>';\n\t\t\t\tsourceCodeRef.current = defaultHtml;\n\t\t\t\tsourceViewContentRef.current = defaultHtml;\n\t\t\t\tsetSourceCode(defaultHtml);\n\t\t\t} else {\n\t\t\t\tsourceCodeRef.current = currentSource;\n\t\t\t}\n\t\t\t\n\t\t\t// Switch mode first\n\t\t\tsetShowSourceMode(false);\n\t\t}\n\t}, [showSourceMode, data]);\n\n\t// Effect to update contentEditable when switching from source to visual mode\n\t// Use a ref to track if we've already processed this mode switch\n\tconst hasProcessedModeSwitch = useRef(false);\n\t\n\tuseEffect(() => {\n\t\t// Only run when switching TO visual mode (showSourceMode becomes false)\n\t\t// and we haven't already processed this switch\n\t\tif (!showSourceMode && contentEditableRef.current && !hasProcessedModeSwitch.current) {\n\t\t\thasProcessedModeSwitch.current = true;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tconst currentSource = sourceCodeRef.current.trim();\n\t\t\t\t\n\t\t\t\tif (!currentSource) {\n\t\t\t\t\tconst defaultHtml = '<p><br></p>';\n\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(defaultHtml);\n\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t} else {\n\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(currentSource);\n\t\t\t\t\thandlebarsMapRef.current = map;\n\n\t\t\t\t\tif (!protectedHtml || protectedHtml.trim() === '') {\n\t\t\t\t\t\tconsole.warn('Protected HTML is empty, using original source');\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = currentSource;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Save to history without triggering re-render loop\n\t\t\t\tconst newHistory = history.slice(0, historyIndex + 1);\n\t\t\t\tnewHistory.push(contentEditableRef.current.innerHTML);\n\t\t\t\tsetHistory(newHistory.slice(-50));\n\t\t\t\tsetHistoryIndex(newHistory.length - 1);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error updating visual mode:', error);\n\t\t\t\t// Fallback: use raw HTML\n\t\t\t\tif (contentEditableRef.current && sourceCodeRef.current) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = sourceCodeRef.current;\n\t\t\t\t\t} catch (innerError) {\n\t\t\t\t\t\tconsole.error('Failed to render HTML:', innerError);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Reset the flag when entering source mode\n\t\tif (showSourceMode) {\n\t\t\thasProcessedModeSwitch.current = false;\n\t\t}\n\t}, [showSourceMode, history, historyIndex]);\n\n\t// Handle HTML file upload\n\t// FIX: also write to sourceViewContentRef so the uploaded content is not\n\t// lost when the user toggles to visual mode.\n\tconst handleHtmlFileUpload = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (!file) return;\n\n\t\tconst reader = new FileReader();\n\t\t\n\t\treader.onload = (event) => {\n\t\t\tconst htmlContent = event.target?.result as string;\n\t\t\tif (htmlContent) {\n\t\t\t\t// Update both textarea state and the dedicated source-mode ref\n\t\t\t\tsetSourceCode(htmlContent);\n\t\t\t\tsourceViewContentRef.current = htmlContent; // FIX: was sourceCodeRef.current\n\t\t\t\tsourceCodeRef.current = htmlContent;\n\t\t\t\t\n\t\t\t\t// If in visual mode, update the visual editor immediately\n\t\t\t\tif (!showSourceMode && contentEditableRef.current) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(htmlContent);\n\t\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t\tsaveToHistory();\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error processing uploaded HTML:', error);\n\t\t\t\t\t\talert('There was an error processing the HTML file. Please check the file and try again.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treader.onerror = () => {\n\t\t\talert('Failed to read HTML file. Please try again.');\n\t\t};\n\n\t\treader.readAsText(file);\n\t\t\n\t\t// Reset input so the same file can be uploaded again\n\t\te.target.value = '';\n\t}, [showSourceMode, saveToHistory]);\n\n\t// Handle source code textarea change.\n\t// FIX: write to sourceViewContentRef (not sourceCodeRef) so visual-mode\n\t// handleInput can never overwrite what the user is typing in the textarea.\n\tconst handleSourceCodeChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\tconst newCode = e.target.value;\n\t\tsetSourceCode(newCode);\n\t\tsourceViewContentRef.current = newCode; // FIX: was sourceCodeRef.current\n\t}, []);\n\n\t// Handle click on images/elements for selection\n\tconst handleContentClick = useCallback((e: React.MouseEvent) => {\n\t\tconst target = e.target as HTMLElement;\n\t\t\n\t\t// Check if clicked on image or table\n\t\tlet elementToSelect: HTMLElement | null = null;\n\t\t\n\t\tif (target.tagName === 'IMG') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target;\n\t\t} else if (target.tagName === 'TABLE') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target;\n\t\t} else if (target.tagName === 'TD' || target.tagName === 'TH' || target.tagName === 'TR' || target.tagName === 'TBODY' || target.tagName === 'THEAD') {\n\t\t\t// If clicked inside table, find the parent table\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target.closest('table');\n\t\t}\n\t\t\n\t\tif (elementToSelect) {\n\t\t\tsetSelectedElement(elementToSelect);\n\t\t\t\n\t\t\tconst rect = elementToSelect.getBoundingClientRect();\n\t\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\t\n\t\t\tif (containerRect) {\n\t\t\t\tsetResizeHandles({\n\t\t\t\t\tx: rect.left - containerRect.left,\n\t\t\t\t\ty: rect.top - containerRect.top,\n\t\t\t\t\twidth: rect.width,\n\t\t\t\t\theight: rect.height\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tsetSelectedElement(null);\n\t\t\tsetResizeHandles(null);\n\t\t}\n\t}, []);\n\n\t// Delete selected element\n\tconst handleDeleteSelected = useCallback(() => {\n\t\tif (selectedElement) {\n\t\t\tselectedElement.remove();\n\t\t\tsetSelectedElement(null);\n\t\t\tsetResizeHandles(null);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\tsaveToHistory();\n\t\t\t}\n\t\t}\n\t}, [selectedElement, saveToHistory]);\n\n\t// Replace image\n\tconst handleReplaceImage = useCallback(async (file: File) => {\n\t\tif (!selectedElement || selectedElement.tagName !== 'IMG') return;\n\t\t\n\t\ttry {\n\t\t\tconst uFiles = await uploadFiles([file], 'document');\n\t\t\tconst token = getToken();\n\t\t\tconst payload = {\n\t\t\t\t...token,\n\t\t\t\t'x-timezone': token['x-timezone']?.toString() || '',\n\t\t\t\ttitle: file?.name.split('.')[0],\n\t\t\t\tpath: '/',\n\t\t\t\tis_private: true,\n\t\t\t\tis_directory: false,\n\t\t\t\tfile_size: file.size,\n\t\t\t\tis_child: false,\n\t\t\t\tfile_extension: file?.name.split('.')[1],\n\t\t\t\ttype: 'image',\n\t\t\t\tmime_type: file.type,\n\t\t\t\turl: `${apiConfig?.s3BucketUrl}${uFiles[0]}`\n\t\t\t};\n\t\t\t\n\t\t\tawait postV1Drive(payload);\n\t\t\t(selectedElement as HTMLImageElement).src = payload.url;\n\t\t\t\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\tsaveToHistory();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Image upload failed:', error);\n\t\t\tonError?.(error as Error);\n\t\t}\n\t}, [selectedElement, apiConfig, onError, saveToHistory]);\n\n\t// Handle replace image file input\n\tconst handleReplaceImageChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (file) {\n\t\t\thandleReplaceImage(file);\n\t\t}\n\t}, [handleReplaceImage]);\n\n\t// Handle text selection\n\tconst handleTextSelection = useCallback(() => {\n\t\tconst selection = window.getSelection();\n\t\tif (selection && !selection.isCollapsed && selection.rangeCount > 0) {\n\t\t\tconst range = selection.getRangeAt(0);\n\t\t\tconst rect = range.getBoundingClientRect();\n\t\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\t\n\t\t\tif (containerRect && rect.width > 0) {\n\t\t\t\tsetTextSelectionAnchor({\n\t\t\t\t\tx: rect.left + rect.width / 2,\n\t\t\t\t\ty: rect.top - 10\n\t\t\t\t});\n\t\t\t\tsetShowTextToolbar(true);\n\t\t\t}\n\n\t\t\t// Sync font size dropdown to the selected text's actual font size.\n\t\t\t// Walk up from the anchor node looking for an explicit inline font-size.\n\t\t\tlet node: Node | null = selection.anchorNode;\n\t\t\tif (node?.nodeType === Node.TEXT_NODE) node = node.parentElement;\n\t\t\tlet detectedSize: string | null = null;\n\t\t\tlet current = node instanceof HTMLElement ? node : null;\n\t\t\twhile (current && current !== contentEditableRef.current) {\n\t\t\t\tif (current.style.fontSize) {\n\t\t\t\t\tdetectedSize = current.style.fontSize;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrent = current.parentElement;\n\t\t\t}\n\t\t\tsetFontSize(detectedSize ?? '14px');\n\t\t} else {\n\t\t\tsetShowTextToolbar(false);\n\t\t\tsetTextSelectionAnchor(null);\n\t\t}\n\t}, []);\n\n\t// Handle resize start\n\tconst handleResizeStart = useCallback((e: React.MouseEvent, handle: string) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\t\n\t\tif (selectedElement && resizeHandles) {\n\t\t\tresizeStartRef.current = {\n\t\t\t\tx: e.clientX,\n\t\t\t\ty: e.clientY,\n\t\t\t\twidth: resizeHandles.width,\n\t\t\t\theight: resizeHandles.height,\n\t\t\t\thandle\n\t\t\t};\n\t\t\t\n\t\t\t// Add event listeners\n\t\t\tdocument.addEventListener('mousemove', handleResizeMove as any);\n\t\t\tdocument.addEventListener('mouseup', handleResizeEnd);\n\t\t}\n\t}, [selectedElement, resizeHandles]);\n\n\t// Handle resize move\n\tconst handleResizeMove = useCallback((e: MouseEvent) => {\n\t\tif (!resizeStartRef.current || !selectedElement || !resizeHandles) return;\n\t\t\n\t\tconst { x, y, width, height, handle } = resizeStartRef.current;\n\t\tconst deltaX = e.clientX - x;\n\t\tconst deltaY = e.clientY - y;\n\t\t\n\t\tlet newWidth = width;\n\t\tlet newHeight = height;\n\t\t\n\t\tif (handle.includes('e')) {\n\t\t\tnewWidth = Math.max(50, width + deltaX);\n\t\t}\n\t\tif (handle.includes('w')) {\n\t\t\t// West handle: shrink/grow from the left — invert delta\n\t\t\tnewWidth = Math.max(50, width - deltaX);\n\t\t}\n\t\tif (handle.includes('s')) {\n\t\t\tnewHeight = Math.max(50, height + deltaY);\n\t\t}\n\t\tif (handle.includes('n')) {\n\t\t\tnewHeight = Math.max(50, height - deltaY);\n\t\t}\n\t\t\n\t\t// Maintain aspect ratio for corner handles on images\n\t\tif (handle.length === 2 && selectedElement.tagName === 'IMG') {\n\t\t\tconst aspectRatio = width / height;\n\t\t\tnewHeight = newWidth / aspectRatio;\n\t\t}\n\t\t\n\t\tselectedElement.style.width = `${newWidth}px`;\n\t\tif (selectedElement.tagName === 'IMG' || selectedElement.tagName === 'TABLE') {\n\t\t\tselectedElement.style.height = `${newHeight}px`;\n\t\t}\n\t\t\n\t\t// Update resize handles position\n\t\tconst rect = selectedElement.getBoundingClientRect();\n\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\n\t\tif (containerRect) {\n\t\t\tsetResizeHandles({\n\t\t\t\tx: rect.left - containerRect.left,\n\t\t\t\ty: rect.top - containerRect.top,\n\t\t\t\twidth: rect.width,\n\t\t\t\theight: rect.height\n\t\t\t});\n\t\t}\n\t}, [selectedElement, resizeHandles]);\n\n\t// Handle resize end\n\tconst handleResizeEnd = useCallback(() => {\n\t\tdocument.removeEventListener('mousemove', handleResizeMove as any);\n\t\tdocument.removeEventListener('mouseup', handleResizeEnd);\n\t\t\n\t\tresizeStartRef.current = null;\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t}, [handleResizeMove, saveToHistory]);\n\n\t// Show table picker\n\tconst handleShowTablePicker = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n\t\tsetTablePickerAnchor(e.currentTarget);\n\t\tsetShowTablePicker(true);\n\t}, []);\n\n\t// Insert table with visual picker\n\tconst handleInsertTableFromPicker = useCallback((rows: number, cols: number) => {\n\t\t// Focus the editor first\n\t\tif (contentEditableRef.current) {\n\t\t\tcontentEditableRef.current.focus();\n\t\t}\n\t\t\n\t\t// Create table HTML\n\t\tlet tableHTML = '<table border=\"1\" style=\"border-collapse: collapse; width: 100%; margin: 10px 0;\">';\n\t\ttableHTML += '<tbody>';\n\t\tfor (let i = 0; i < rows; i++) {\n\t\t\ttableHTML += '<tr>';\n\t\t\tfor (let j = 0; j < cols; j++) {\n\t\t\t\ttableHTML += '<td style=\"border: 1px solid #ddd; padding: 8px; min-width: 50px;\"></td>';\n\t\t\t}\n\t\t\ttableHTML += '</tr>';\n\t\t}\n\t\ttableHTML += '</tbody></table><p><br></p>';\n\t\t\n\t\t// Insert using execCommand\n\t\tdocument.execCommand('insertHTML', false, tableHTML);\n\t\t\n\t\t// Update refs and history\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t\t\n\t\t// Close picker\n\t\tsetShowTablePicker(false);\n\t\tsetTablePickerAnchor(null);\n\t}, [saveToHistory]);\n\n\t// Create adapter object for ref\n\tconst adapter = {\n\t\tgetData: () => {\n\t\t\t// Always restore Handlebars syntax when getting data\n\t\t\treturn prepareForSaving(sourceCodeRef.current, handlebarsMapRef.current);\n\t\t},\n\t\tsetData: (newData: string) => {\n\t\t\tconst { html: protectedHtml, map } = prepareForEditing(newData);\n\t\t\thandlebarsMapRef.current = map;\n\t\t\tsourceCodeRef.current = newData;\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t}\n\t\t},\n\t\tmodel: {\n\t\t\tinsertContent: (fragment: string) => {\n\t\t\t\texecCommand('insertHTML', fragment);\n\t\t\t}\n\t\t},\n\t\tdata: {\n\t\t\tprocessor: {\n\t\t\t\ttoView: (html: string) => html\n\t\t\t},\n\t\t\ttoModel: (html: string) => html\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => adapter, []);\n\t\n\tuseEffect(() => {\n\t\tif (editorRefProp) {\n\t\t\t(editorRefProp as any).current = adapter;\n\t\t}\n\t}, [editorRefProp]);\n\n\t// Prevents focus loss when toolbar buttons are pressed, keeping the editor\n\tconst toolbarCmd = (command: string, value?: string) => (e: React.MouseEvent) => {\n\t\te.preventDefault();\n\t\texecCommand(command, value);\n\t};\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div className=\"editor-error-container\">\n\t\t\t\t<div className=\"editor-error-message\">Editor Error: {error.message}</div>\n\t\t\t\t<button onClick={() => setError(null)} className=\"editor-retry-button\">\n\t\t\t\t\tRetry\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className='custom-editor-container'>\n\t\t\t{/* Menu Bar */}\n\t\t\t<Box sx={{ \n\t\t\t\tdisplay: 'flex', \n\t\t\t\talignItems: 'center',\n\t\t\t\tgap: 2,\n\t\t\t\tpx: 2,\n\t\t\t\tpy: 0.5,\n\t\t\t\tborderBottom: '1px solid #ddd',\n\t\t\t\tbgcolor: '#f8f9fa',\n\t\t\t\tfontSize: '13px'\n\t\t\t}}>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Edit</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>View</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Insert</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Format</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Help</span>\n\t\t\t</Box>\n\n\t\t\t{/* Toolbar */}\n\t\t\t<Box sx={{ \n\t\t\t\tdisplay: 'flex', \n\t\t\t\tflexWrap: 'wrap', \n\t\t\t\tgap: 0.5, \n\t\t\t\tp: 1, \n\t\t\t\tborderBottom: '1px solid #ddd',\n\t\t\t\tbgcolor: '#f5f5f5',\n\t\t\t\talignItems: 'center'\n\t\t\t}}>\n\t\t\t\t{/* Source Button - icon + label style matching the design */}\n\t\t\t\t<Tooltip title={showSourceMode ? 'Switch to Visual' : 'Switch to Source'}>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tonClick={handleToggleSource}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\t\tborderColor: showSourceMode ? 'primary.main' : 'transparent',\n\t\t\t\t\t\t\tbgcolor: showSourceMode ? 'primary.50' : 'transparent',\n\t\t\t\t\t\t\tcolor: showSourceMode ? 'primary.main' : 'text.secondary',\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbgcolor: showSourceMode ? 'primary.100' : 'grey.200',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransition: 'all 0.15s ease',\n\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* Code-file-with-edit icon, matching the screenshot */}\n\t\t\t\t\t\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2Z\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\"/>\n\t\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\"/>\n\t\t\t\t\t\t\t<path d=\"M9 13L7 15L9 17\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n\t\t\t\t\t\t\t<path d=\"M15 13L17 15L15 17\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n\t\t\t\t\t\t\t<line x1=\"13\" y1=\"12\" x2=\"11\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span style={{ fontSize: '13px', fontWeight: 500 }}>Source</span>\n\t\t\t\t\t</Box>\n\t\t\t\t</Tooltip>\n\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Undo/Redo */}\n\t\t\t\t<Tooltip title=\"Undo\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleUndo} disabled={historyIndex === 0}>\n\t\t\t\t\t\t<Undo fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Redo\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleRedo} disabled={historyIndex === history.length - 1}>\n\t\t\t\t\t\t<Redo fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Heading Format */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={headingFormat}\n\t\t\t\t\tonChange={handleHeadingFormatChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 100, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{HEADING_FORMATS.map(format => (\n\t\t\t\t\t\t<MenuItem key={format.value} value={format.value}>\n\t\t\t\t\t\t\t{format.label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t{/* Font Family */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={fontFamily}\n\t\t\t\t\tonChange={handleFontFamilyChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 120, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{FONT_FAMILIES.map(font => (\n\t\t\t\t\t\t<MenuItem key={font} value={font} style={{ fontFamily: font }}>\n\t\t\t\t\t\t\t{font}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t{/* Font Size */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={fontSize}\n\t\t\t\t\tonChange={handleFontSizeChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 70, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{FONT_SIZES.map(size => (\n\t\t\t\t\t\t<MenuItem key={size} value={size}>{size}</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Text Formatting */}\n\t\t\t\t<Tooltip title=\"Bold\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('bold')}>\n\t\t\t\t\t\t<FormatBold fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Italic\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('italic')}>\n\t\t\t\t\t\t<FormatItalic fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Underline\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('underline')}>\n\t\t\t\t\t\t<FormatUnderlined fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Strikethrough\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('strikeThrough')}>\n\t\t\t\t\t\t<FormatStrikethrough fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Subscript\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('subscript')}>\n\t\t\t\t\t\t<Subscript fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Superscript\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('superscript')}>\n\t\t\t\t\t\t<Superscript fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Colors */}\n\t\t\t\t<Tooltip title=\"Text Color\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'text' });\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={{ width: 32, height: 28, border: '1px solid #ddd', borderRadius: '4px', backgroundColor: 'white' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span style={{ fontSize: '16px', fontWeight: 'bold', color: '#000' }}>A</span>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Background Color\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'bg' });\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={{ width: 32, height: 28, border: '1px solid #ddd', borderRadius: '4px', backgroundColor: '#fffde7' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span style={{ fontSize: '16px', fontWeight: 'bold', color: '#000' }}>A</span>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Alignment */}\n\t\t\t\t<Tooltip title=\"Align Left\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyLeft')}>\n\t\t\t\t\t\t<FormatAlignLeft fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Align Center\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyCenter')}>\n\t\t\t\t\t\t<FormatAlignCenter fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Align Right\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyRight')}>\n\t\t\t\t\t\t<FormatAlignRight fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Justify\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyFull')}>\n\t\t\t\t\t\t<FormatAlignJustify fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Lists */}\n\t\t\t\t<Tooltip title=\"Bullet List\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('insertUnorderedList')}>\n\t\t\t\t\t\t<FormatListBulleted fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Numbered List\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('insertOrderedList')}>\n\t\t\t\t\t\t<FormatListNumbered fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Insert */}\n\t\t\t\t<Tooltip title=\"Insert Link\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleInsertLink}>\n\t\t\t\t\t\t<LinkIcon fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Insert Image\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={() => fileInputRef.current?.click()}>\n\t\t\t\t\t\t<ImageIcon fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Insert Table\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleShowTablePicker}>\n\t\t\t\t\t\t<TableChart fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Code\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('formatBlock', '<pre>')}>\n\t\t\t\t\t\t<Code fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Box>\n\t\t\t\n\t\t\t{/* Hidden file input */}\n\t\t\t<input\n\t\t\t\tref={fileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleFileChange}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Hidden HTML file input */}\n\t\t\t<input\n\t\t\t\tref={htmlFileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".html,.htm,text/html\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleHtmlFileUpload}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Hidden file input for replace image */}\n\t\t\t<input\n\t\t\t\tref={replaceImageInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleReplaceImageChange}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Content Area */}\n\t\t\t{showSourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\tvalue={sourceCode}\n\t\t\t\t\tonChange={handleSourceCodeChange}\n\t\t\t\t\tclassName=\"custom-editor-source\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tminHeight: '300px',\n\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\tfontFamily: 'Courier New, monospace',\n\t\t\t\t\t\tfontSize: '13px',\n\t\t\t\t\t\tlineHeight: '1.5',\n\t\t\t\t\t\tresize: 'vertical'\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={contentEditableRef}\n\t\t\t\t\t\tcontentEditable\n\t\t\t\t\t\tclassName=\"editor-content\"\n\t\t\t\t\t\tonInput={handleInput}\n\t\t\t\t\t\tonPaste={handlePaste}\n\t\t\t\t\t\tonClick={handleContentClick}\n\t\t\t\t\t\tonMouseUp={handleTextSelection}\n\t\t\t\t\t\tonKeyUp={handleTextSelection}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tminHeight: '300px',\n\t\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\tborderTop: 'none',\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t\tfontFamily: 'inherit',\n\t\t\t\t\t\t\tfontSize: 'inherit',\n\t\t\t\t\t\t\tlineHeight: '1.6',\n\t\t\t\t\t\t\tbackgroundColor: 'white'\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{/* Resize Handles */}\n\t\t\t\t\t{selectedElement && resizeHandles && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\tleft: resizeHandles.x,\n\t\t\t\t\t\t\t\ttop: resizeHandles.y,\n\t\t\t\t\t\t\t\twidth: resizeHandles.width,\n\t\t\t\t\t\t\t\theight: resizeHandles.height,\n\t\t\t\t\t\t\t\tborder: '2px solid #1976d2',\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\tzIndex: 1000\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* Toolbar for selected element */}\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\ttop: -36,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\t\tbgcolor: 'white',\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\t\tp: 0.25,\n\t\t\t\t\t\t\t\t\tboxShadow: 2,\n\t\t\t\t\t\t\t\t\tpointerEvents: 'auto'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{selectedElement.tagName === 'IMG' && (\n\t\t\t\t\t\t\t\t\t<Tooltip title=\"Replace Image\">\n\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => replaceImageInputRef.current?.click()}\n\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SwapHoriz sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{selectedElement.tagName === 'TABLE' && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Add Row\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst tbody = selectedElement.querySelector('tbody');\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (tbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst colCount = selectedElement.querySelectorAll('tr:first-child td, tr:first-child th').length || 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst tr = document.createElement('tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let i = 0; i < colCount; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst td = document.createElement('td');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttd.style.cssText = 'border: 1px solid #ddd; padding: 8px; min-width: 50px;';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttr.appendChild(td);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttbody.appendChild(tr);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<AddCircleOutline sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Delete Row\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst rows = selectedElement.querySelectorAll('tbody tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (rows.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trows[rows.length - 1].remove();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<RemoveCircleOutline sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Add Column\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedElement.querySelectorAll('tr').forEach(tr => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isHeader = tr.closest('thead') !== null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst cell = document.createElement(isHeader ? 'th' : 'td');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcell.style.cssText = 'border: 1px solid #ddd; padding: 8px; min-width: 50px;';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttr.appendChild(cell);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<AddCircleOutline sx={{ fontSize: 14, transform: 'rotate(90deg)' }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Delete Column\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst allRows = selectedElement.querySelectorAll('tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst colCount = allRows[0]?.children.length || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (colCount > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tallRows.forEach(tr => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (tr.lastElementChild) tr.removeChild(tr.lastElementChild);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<RemoveCircleOutline sx={{ fontSize: 14, transform: 'rotate(90deg)' }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Tooltip title=\"Delete\">\n\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tonClick={handleDeleteSelected}\n\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\twidth: 22,\n\t\t\t\t\t\t\t\t\t\t\theight: 22,\n\t\t\t\t\t\t\t\t\t\t\tcolor: '#f44336',\n\t\t\t\t\t\t\t\t\t\t\t'&:hover': { bgcolor: '#ffebee' }\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Close sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/* Corner and edge handles */}\n\t\t\t\t\t\t\t{['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'].map(handle => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={handle}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => handleResizeStart(e, handle)}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\twidth: 8,\n\t\t\t\t\t\t\t\t\t\theight: 8,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: '#1976d2',\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid white',\n\t\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\t\tcursor: `${handle}-resize`,\n\t\t\t\t\t\t\t\t\t\t...(handle === 'nw' && { top: -4, left: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'n' && { top: -4, left: '50%', transform: 'translateX(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'ne' && { top: -4, right: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'e' && { top: '50%', right: -4, transform: 'translateY(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'se' && { bottom: -4, right: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 's' && { bottom: -4, left: '50%', transform: 'translateX(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'sw' && { bottom: -4, left: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'w' && { top: '50%', left: -4, transform: 'translateY(-50%)' })\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t{/* Text Selection Toolbar */}\n\t\t\t\t\t{showTextToolbar && textSelectionAnchor && (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\t\tleft: textSelectionAnchor.x,\n\t\t\t\t\t\t\t\ttop: textSelectionAnchor.y,\n\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -100%)',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\tbgcolor: '#333',\n\t\t\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\tp: 0.5,\n\t\t\t\t\t\t\t\tboxShadow: 3,\n\t\t\t\t\t\t\t\tzIndex: 10000\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip title=\"Bold\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('bold')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatBold fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Italic\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('italic')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatItalic fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Underline\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('underline')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatUnderlined fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ bgcolor: 'rgba(255,255,255,0.2)', mx: 0.5 }} />\n\t\t\t\t\t\t\t<Tooltip title=\"Text Color\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'text' });\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span style={{ fontSize: '14px', fontWeight: 'bold' }}>A</span>\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Font Size\">\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tdefaultValue=\"14px\"\n\t\t\t\t\t\t\t\t\tonChange={handleFontSizeChange}\n\t\t\t\t\t\t\t\t\tsx={{ \n\t\t\t\t\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\t\t\t\t\theight: 28,\n\t\t\t\t\t\t\t\t\t\tminWidth: 70,\n\t\t\t\t\t\t\t\t\t\t'& .MuiOutlinedInput-notchedOutline': { border: 'none' },\n\t\t\t\t\t\t\t\t\t\t'& .MuiSvgIcon-root': { color: 'white' }\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{FONT_SIZES.map(size => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem key={size} value={size}>{size}</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t\n\t\t\t{/* Color Picker Popover */}\n\t\t\t{colorPickerState && (\n\t\t\t\t<Popover\n\t\t\t\t\topen\n\t\t\t\t\tanchorEl={colorPickerState.anchor}\n\t\t\t\t\tonClose={() => setColorPickerState(null)}\n\t\t\t\t\tdisableAutoFocus\n\t\t\t\t\tdisableEnforceFocus\n\t\t\t\t\tanchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n\t\t\t\t\ttransformOrigin={{ vertical: 'top', horizontal: 'left' }}\n\t\t\t\t>\n\t\t\t\t\t<Box sx={{ p: 1 }}>\n\t\t\t\t\t\t<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(8, 20px)', gap: '3px' }}>\n\t\t\t\t\t\t\t{PRESET_COLORS.map((color) => (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={color}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tif (colorPickerState.type === 'text') {\n\t\t\t\t\t\t\t\t\t\t\texecCommand('foreColor', color);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\texecCommand('hiliteColor', color);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsetColorPickerState(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\t\theight: 20,\n\t\t\t\t\t\t\t\t\t\tbgcolor: color,\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid rgba(0,0,0,0.15)',\n\t\t\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t\t\t\t'&:hover': { transform: 'scale(1.3)', zIndex: 1, position: 'relative' },\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Box>\n\t\t\t\t</Popover>\n\t\t\t)}\n\n\t\t\t{/* Table Picker Popover */}\n\t\t\t{showTablePicker && tablePickerAnchor && (\n\t\t\t\t<>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsetShowTablePicker(false);\n\t\t\t\t\t\t\tsetTablePickerAnchor(null);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\tzIndex: 9998\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<TablePicker />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n\nCustomEditor.displayName = 'CustomEditor';\nexport default CustomEditor;"],"names":["forwardRef","useState","useRef","useEffect","getApiConfig","prepareForEditing","adapter","prepareForSaving","protectedHtml","map","useCallback","uploadFiles","getToken","postV1Drive","error","jsxs","Box","jsx","_","_a","useImperativeHandle","Tooltip","Divider","IconButton","Undo","Redo","Select","MenuItem","FormatBold","FormatItalic","FormatUnderlined","FormatStrikethrough","Subscript","Superscript","FormatAlignLeft","FormatAlignCenter","FormatAlignRight","FormatAlignJustify","FormatListBulleted","FormatListNumbered","LinkIcon","ImageIcon","TableChart","Code","SwapHoriz","Fragment","AddCircleOutline","RemoveCircleOutline","Close","Popover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custom-editor-ByC55Z4G.js","sources":["../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/**\n * Custom Rich Text Editor (CKEditor-like)\n * \n * Features:\n * - CKEditor-style menu bar and toolbar\n * - Full formatting toolbar (bold, italic, underline, etc.)\n * - Font family, size, color, background color\n * - Alignment, lists, links\n * - Image upload with resize handles\n * - Table insertion and editing\n * - Selection handles for images and elements\n * - Preserves exact HTML structure (no normalization)\n * - Maintains all attributes, styles, and scoped CSS\n * \n * Fix: Source View no longer clears content on toggle.\n * Root cause was sourceCodeRef being shared between visual-mode (handleInput)\n * and source-mode (textarea). Introduced sourceViewContentRef to exclusively\n * own source-mode textarea content so handleInput never corrupts it.\n */\nimport React, { useState, useEffect, useRef, useImperativeHandle, forwardRef, useCallback } from 'react';\nimport { \n\tFormatBold, \n\tFormatItalic, \n\tFormatUnderlined, \n\tFormatStrikethrough,\n\tFormatAlignLeft,\n\tFormatAlignCenter,\n\tFormatAlignRight,\n\tFormatAlignJustify,\n\tFormatListBulleted,\n\tFormatListNumbered,\n\tLink as LinkIcon,\n\tImage as ImageIcon,\n\tTableChart,\n\tCode,\n\tUndo,\n\tRedo,\n\tSubscript,\n\tSuperscript,\n\tClose,\n\tSwapHoriz,\n\tAddCircleOutline,\n\tRemoveCircleOutline,\n} from '@mui/icons-material';\nimport { IconButton, Divider, Select, MenuItem, Tooltip, Box, Button, Popover } from '@mui/material';\nimport { uploadFiles } from '../../utils/common';\nimport { getToken } from '../../utils/common';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getApiConfig } from '../../utils/api-config';\nimport { CellProperties } from './table/types';\nimport { prepareForEditing, prepareForSaving } from './utils/handlebars-protection';\nimport './custom-editor.css';\n\nexport interface CustomEditorProps {\n\teditorRef?: React.RefObject<any>;\n\tdata: string;\n\thandleEditorReady: (editor: any) => void;\n\tonError?: (error: Error) => void;\n\tconfig?: any;\n\t[key: string]: any;\n}\n\nconst FONT_FAMILIES = [\n\t'Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Trebuchet MS', 'Verdana'\n];\n\nconst FONT_SIZES = ['10px', '12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px'];\n\nconst HEADING_FORMATS = [\n\t{ value: 'p', label: 'Paragraph' },\n\t{ value: 'h1', label: 'Heading 1' },\n\t{ value: 'h2', label: 'Heading 2' },\n\t{ value: 'h3', label: 'Heading 3' },\n\t{ value: 'h4', label: 'Heading 4' },\n\t{ value: 'h5', label: 'Heading 5' },\n\t{ value: 'h6', label: 'Heading 6' }\n];\n\nconst PRESET_COLORS = [\n\t'#000000', '#434343', '#666666', '#999999', '#b7b7b7', '#cccccc', '#d9d9d9', '#ffffff',\n\t'#ff0000', '#ff9900', '#ffff00', '#00ff00', '#00ffff', '#4a86e8', '#9900ff', '#ff00ff',\n\t'#ea9999', '#f9cb9c', '#ffe599', '#b6d7a8', '#a2c4c9', '#9fc5e8', '#b4a7d6', '#d5a6bd',\n\t'#e06666', '#f6b26b', '#ffd966', '#93c47d', '#76a5af', '#6fa8dc', '#8e7cc3', '#c27ba0',\n\t'#cc0000', '#e69138', '#f1c232', '#6aa84f', '#45818e', '#3d85c8', '#674ea7', '#85200c',\n];\n\nexport const CustomEditor = forwardRef<any, CustomEditorProps>((props, ref) => {\n\tconst {\n\t\teditorRef: editorRefProp,\n\t\tdata = '',\n\t\thandleEditorReady,\n\t\tonError,\n\t\tconfig = {},\n\t\t...rest\n\t} = props;\n\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst [fontFamily, setFontFamily] = useState('Arial');\n\tconst [fontSize, setFontSize] = useState('14px');\n\tconst [headingFormat, setHeadingFormat] = useState('p');\n\tconst [showSourceMode, setShowSourceMode] = useState(false);\n\tconst [sourceCode, setSourceCode] = useState(data);\n\tconst [history, setHistory] = useState<string[]>([data]);\n\tconst [historyIndex, setHistoryIndex] = useState(0);\n\tconst [selectedElement, setSelectedElement] = useState<HTMLElement | null>(null);\n\tconst [resizeHandles, setResizeHandles] = useState<{ x: number; y: number; width: number; height: number } | null>(null);\n\tconst [showTablePicker, setShowTablePicker] = useState(false);\n\tconst [tablePickerAnchor, setTablePickerAnchor] = useState<HTMLElement | null>(null);\n\tconst [textSelectionAnchor, setTextSelectionAnchor] = useState<{ x: number; y: number } | null>(null);\n\tconst [showTextToolbar, setShowTextToolbar] = useState(false);\n\tconst [colorPickerState, setColorPickerState] = useState<{ anchor: HTMLElement; type: 'text' | 'bg' } | null>(null);\n\t\n\t// Table editing state\n\tconst [selectedCell, setSelectedCell] = useState<HTMLTableCellElement | null>(null);\n\tconst [showTableToolbar, setShowTableToolbar] = useState(false);\n\tconst [tableToolbarPosition, setTableToolbarPosition] = useState<{ x: number; y: number } | null>(null);\n\tconst [cellProperties, setCellProperties] = useState<CellProperties>({\n\t\tborderStyle: 'solid',\n\t\tborderColor: '#ddd',\n\t\tborderWidth: '1px',\n\t\tbackgroundColor: 'transparent',\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tpadding: '8px',\n\t\ttextAlign: 'left',\n\t\tverticalAlign: 'middle'\n\t});\n\t\n\tconst contentEditableRef = useRef<HTMLDivElement>(null);\n\tconst sourceCodeRef = useRef<string>(data);\n\tconst onEditorChangeRef = useRef(props.onEditorChange);\n\tconst handleEditorReadyRef = useRef(handleEditorReady);\n\tuseEffect(() => { onEditorChangeRef.current = props.onEditorChange; });\n\tuseEffect(() => { handleEditorReadyRef.current = handleEditorReady; });\n\n\t// FIX: Dedicated ref for source-mode textarea content.\n\t// sourceCodeRef is shared with visual-mode (handleInput overwrites it on every\n\t// keystroke). sourceViewContentRef is ONLY written by source-mode handlers\n\t// (handleSourceCodeChange, handleHtmlFileUpload, handleToggleSource entering\n\t// source mode) so it is never corrupted by visual-mode activity.\n\tconst sourceViewContentRef = useRef<string>(data);\n\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst htmlFileInputRef = useRef<HTMLInputElement>(null);\n\tconst replaceImageInputRef = useRef<HTMLInputElement>(null);\n\tconst resizeStartRef = useRef<{ x: number; y: number; width: number; height: number; handle: string } | null>(null);\n\tconst handlebarsMapRef = useRef<{ [key: string]: string }>({});\n\tconst apiConfig = getApiConfig();\n\n\t// Update source code when data prop changes\n\tuseEffect(() => {\n\t\tif(!data)return\n\t\tconst { html: protectedHtml, map } = prepareForEditing(data);\n\t\thandlebarsMapRef.current = map;\n\t\tsourceCodeRef.current = data; // Store original with Handlebars\n\t\t\n\t\tif (contentEditableRef.current && contentEditableRef.current.innerHTML !== protectedHtml) {\n\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t}\n\t}, [data]);\n\n\t// Initialize editor\n\tuseEffect(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\ttry {\n\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(data || '');\n\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\tconst adapter = {\n\t\t\t\t\tgetData: () => {\n\t\t\t\t\t\t// Restore Handlebars syntax before returning\n\t\t\t\t\t\treturn prepareForSaving(sourceCodeRef.current, handlebarsMapRef.current);\n\t\t\t\t\t},\n\t\t\t\t\tsetData: (newData: string) => {\n\t\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(newData);\n\t\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\t\tsourceCodeRef.current = newData;\n\t\t\t\t\t\tif (contentEditableRef.current) {\n\t\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tinsertContent: (fragment: string) => {\n\t\t\t\t\t\t\texecCommand('insertHTML', fragment);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tprocessor: {\n\t\t\t\t\t\t\ttoView: (html: string) => html\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttoModel: (html: string) => html\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\thandleEditorReadyRef.current?.(adapter);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('[CustomEditor] init effect error:', e);\n\t\t\t}\n\t\t}\n\t}, []);\n\n\t// Execute formatting command\n\tconst execCommand = useCallback((command: string, value?: string) => {\n\t\tdocument.execCommand(command, false, value);\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t}, []);\n\n\t// Save to history for undo/redo\n\tconst saveToHistory = useCallback(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\tconst newHistory = history.slice(0, historyIndex + 1);\n\t\t\tnewHistory.push(contentEditableRef.current.innerHTML);\n\t\t\tsetHistory(newHistory.slice(-50)); // Keep last 50 states\n\t\t\tsetHistoryIndex(newHistory.length - 1);\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Undo\n\tconst handleUndo = useCallback(() => {\n\t\tif (historyIndex > 0) {\n\t\t\tconst newIndex = historyIndex - 1;\n\t\t\tsetHistoryIndex(newIndex);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = history[newIndex];\n\t\t\t\tsourceCodeRef.current = history[newIndex];\n\t\t\t}\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Redo\n\tconst handleRedo = useCallback(() => {\n\t\tif (historyIndex < history.length - 1) {\n\t\t\tconst newIndex = historyIndex + 1;\n\t\t\tsetHistoryIndex(newIndex);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = history[newIndex];\n\t\t\t\tsourceCodeRef.current = history[newIndex];\n\t\t\t}\n\t\t}\n\t}, [history, historyIndex]);\n\n\t// Handle content changes in visual mode.\n\t// IMPORTANT: only updates sourceCodeRef (visual-mode ref).\n\t// Must NOT touch sourceViewContentRef — that ref belongs exclusively to source mode.\n\tconst handleInput = useCallback(() => {\n\t\tif (contentEditableRef.current) {\n\t\t\tconst visualHtml = contentEditableRef.current.innerHTML;\n\t\t\t// Restore Handlebars before saving to sourceCodeRef\n\t\t\tsourceCodeRef.current = prepareForSaving(visualHtml, handlebarsMapRef.current);\n\t\t\tonEditorChangeRef.current?.(sourceCodeRef.current);\n\t\t}\n\t}, []);\n\n\t// Strip external formatting from pasted HTML.\n\tconst sanitizePastedHtml = useCallback((html: string): string => {\n\t\tconst doc = new DOMParser().parseFromString(html, 'text/html');\n\n\t\t// Unwrap <span> elements — they carry font/color styles from external sources\n\t\tdoc.querySelectorAll('span').forEach(span => {\n\t\t\tconst frag = document.createDocumentFragment();\n\t\t\twhile (span.firstChild) frag.appendChild(span.firstChild);\n\t\t\tspan.parentNode?.replaceChild(frag, span);\n\t\t});\n\n\t\t// Convert <a> links to plain text\n\t\tdoc.querySelectorAll('a').forEach(a => {\n\t\t\tconst text = document.createTextNode(a.textContent || '');\n\t\t\ta.parentNode?.replaceChild(text, a);\n\t\t});\n\n\t\t// Strip style and class from every remaining element\n\t\tdoc.querySelectorAll('[style], [class], [color], [bgcolor], [face]').forEach(el => {\n\t\t\tel.removeAttribute('style');\n\t\t\tel.removeAttribute('class');\n\t\t\tel.removeAttribute('color');\n\t\t\tel.removeAttribute('bgcolor');\n\t\t\tel.removeAttribute('face');\n\t\t});\n\n\t\treturn doc.body.innerHTML;\n\t}, []);\n\n\t// Handle paste — sanitize external HTML before inserting\n\tconst handlePaste = useCallback((e: React.ClipboardEvent) => {\n\t\te.preventDefault();\n\t\tconst html = e.clipboardData.getData('text/html');\n\t\tconst text = e.clipboardData.getData('text/plain');\n\n\t\tif (html) {\n\t\t\texecCommand('insertHTML', sanitizePastedHtml(html));\n\t\t} else {\n\t\t\texecCommand('insertText', text);\n\t\t}\n\t}, [execCommand, sanitizePastedHtml]);\n\n\t// Handle image upload\n\tconst handleImageUpload = useCallback(async (file: File) => {\n\t\ttry {\n\t\t\tconst uFiles = await uploadFiles([file], 'document');\n\t\t\tconst token = getToken();\n\t\t\tconst payload = {\n\t\t\t\t...token,\n\t\t\t\t'x-timezone': token['x-timezone']?.toString() || '',\n\t\t\t\ttitle: file?.name.split('.')[0],\n\t\t\t\tpath: '/',\n\t\t\t\tis_private: true,\n\t\t\t\tis_directory: false,\n\t\t\t\tfile_size: file.size,\n\t\t\t\tis_child: false,\n\t\t\t\tfile_extension: file?.name.split('.')[1],\n\t\t\t\ttype: 'image',\n\t\t\t\tmime_type: file.type,\n\t\t\t\turl: `${apiConfig?.s3BucketUrl}${uFiles[0]}`\n\t\t\t};\n\t\t\t\n\t\t\tawait postV1Drive(payload);\n\t\t\texecCommand('insertHTML', `<img src=\"${payload.url}\" alt=\"${file.name}\" style=\"max-width: 100%;\" />`);\n\t\t} catch (error) {\n\t\t\tconsole.error('Image upload failed:', error);\n\t\t\tonError?.(error as Error);\n\t\t}\n\t}, [apiConfig, execCommand, onError]);\n\n\t// Handle file input change\n\tconst handleFileChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (file) {\n\t\t\thandleImageUpload(file);\n\t\t}\n\t}, [handleImageUpload]);\n\n\t// Insert link\n\tconst handleInsertLink = useCallback(() => {\n\t\tconst url = prompt('Enter URL:');\n\t\tif (url) {\n\t\t\texecCommand('createLink', url);\n\t\t}\n\t}, [execCommand]);\n\n\t// Insert table\n\tconst handleInsertTable = useCallback(() => {\n\t\tconst rows = prompt('Number of rows:', '3');\n\t\tconst cols = prompt('Number of columns:', '3');\n\t\t\n\t\tif (rows && cols) {\n\t\t\tlet tableHTML = '<table border=\"1\" style=\"border-collapse: collapse; width: 100%;\">';\n\t\t\ttableHTML += '<thead><tr>';\n\t\t\tfor (let i = 0; i < parseInt(cols); i++) {\n\t\t\t\ttableHTML += '<th style=\"border: 1px solid #ddd; padding: 8px;\">Header</th>';\n\t\t\t}\n\t\t\ttableHTML += '</tr></thead><tbody>';\n\t\t\tfor (let i = 0; i < parseInt(rows); i++) {\n\t\t\t\ttableHTML += '<tr>';\n\t\t\t\tfor (let j = 0; j < parseInt(cols); j++) {\n\t\t\t\t\ttableHTML += '<td style=\"border: 1px solid #ddd; padding: 8px;\"></td>';\n\t\t\t\t}\n\t\t\t\ttableHTML += '</tr>';\n\t\t\t}\n\t\t\ttableHTML += '</tbody></table>';\n\t\t\t\n\t\t\texecCommand('insertHTML', tableHTML);\n\t\t}\n\t}, [execCommand]);\n\n\t// Table picker component\n\tconst TablePicker = () => {\n\t\tconst [hoverCell, setHoverCell] = useState<{ row: number; col: number } | null>(null);\n\t\tconst maxRows = 10;\n\t\tconst maxCols = 10;\n\t\t\n\t\t// Calculate position relative to button\n\t\tconst buttonRect = tablePickerAnchor?.getBoundingClientRect();\n\t\tconst editorContainer = document.querySelector('.custom-editor-container');\n\t\tconst containerRect = editorContainer?.getBoundingClientRect();\n\t\t\n\t\tlet top = 0;\n\t\tlet left = 0;\n\t\t\n\t\tif (buttonRect && containerRect) {\n\t\t\ttop = buttonRect.bottom - containerRect.top + 5;\n\t\t\tleft = buttonRect.left - containerRect.left;\n\t\t}\n\t\t\n\t\treturn (\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: `${top}px`,\n\t\t\t\t\tleft: `${left}px`,\n\t\t\t\t\tbgcolor: 'white',\n\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\tp: 2,\n\t\t\t\t\tboxShadow: 3,\n\t\t\t\t\tzIndex: 9999\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Box sx={{ display: 'grid', gridTemplateColumns: `repeat(${maxCols}, 20px)`, gap: '2px', mb: 1 }}>\n\t\t\t\t\t{Array.from({ length: maxRows }).map((_, rowIndex) =>\n\t\t\t\t\t\tArray.from({ length: maxCols }).map((_, colIndex) => (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tkey={`${rowIndex}-${colIndex}`}\n\t\t\t\t\t\t\t\tonMouseEnter={() => setHoverCell({ row: rowIndex + 1, col: colIndex + 1 })}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\thandleInsertTableFromPicker(rowIndex + 1, colIndex + 1);\n\t\t\t\t\t\t\t\t\tsetHoverCell(null);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\theight: 20,\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\t\t\tbgcolor: hoverCell && rowIndex < hoverCell.row && colIndex < hoverCell.col ? '#1976d2' : 'white',\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\t\t\tbgcolor: '#1976d2'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t\t<Box sx={{ textAlign: 'center', fontSize: '12px', color: '#666' }}>\n\t\t\t\t\t{hoverCell ? `${hoverCell.row} × ${hoverCell.col}` : '1 × 1'}\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t);\n\t};\n\n\t// Font family change\n\tconst handleFontFamilyChange = useCallback((e: any) => {\n\t\tconst family = e.target.value;\n\t\tsetFontFamily(family);\n\t\texecCommand('fontName', family);\n\t}, [execCommand]);\n\n\t// Font size change\n\tconst handleFontSizeChange = useCallback((e: any) => {\n\t\tconst size = e.target.value;\n\t\tsetFontSize(size);\n\t\tdocument.execCommand('fontSize', false, '7');\n\t\tif (contentEditableRef.current) {\n\t\t\tconst fontTags = Array.from(\n\t\t\t\tcontentEditableRef.current.querySelectorAll('font[size=\"7\"]')\n\t\t\t);\n\t\t\tfontTags.forEach(tag => {\n\t\t\t\tconst span = document.createElement('span');\n\t\t\t\tspan.style.fontSize = size;\n\t\t\t\twhile (tag.firstChild) span.appendChild(tag.firstChild);\n\t\t\t\ttag.parentNode?.replaceChild(span, tag);\n\t\t\t});\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t\tonEditorChangeRef.current?.(sourceCodeRef.current);\n\t\t}\n\t}, [saveToHistory]);\n\n\t// Heading format change\n\tconst handleHeadingFormatChange = useCallback((e: any) => {\n\t\tconst format = e.target.value;\n\t\tsetHeadingFormat(format);\n\t\texecCommand('formatBlock', `<${format}>`);\n\t}, [execCommand]);\n\n\t// Toggle source mode\n\t// FIX: Use sourceViewContentRef (not sourceCodeRef) as the single source of\n\t// truth for the textarea. This prevents handleInput (visual mode) from ever\n\t// overwriting content the user typed/pasted into the source textarea.\n\tconst handleToggleSource = useCallback(() => {\n\t\tif (!showSourceMode) {\n\t\t\t// Entering source mode: MUST capture content BEFORE state change\n\t\t\t// because contentEditableRef.current becomes null after re-render\n\t\t\tconst visualHtml = contentEditableRef.current?.innerHTML || sourceCodeRef.current || data;\n\t\t\tconst restoredHtml = prepareForSaving(visualHtml, handlebarsMapRef.current);\n\t\t\t\n\t\t\t// Update all refs and state\n\t\t\tsetSourceCode(restoredHtml);\n\t\t\tsourceViewContentRef.current = restoredHtml;\n\t\t\tsourceCodeRef.current = restoredHtml;\n\t\t\t\n\t\t\t// Now switch mode (this will unmount contentEditable and mount textarea)\n\t\t\tsetShowSourceMode(true);\n\t\t} else {\n\t\t\t// Leaving source mode: read from sourceViewContentRef\n\t\t\t// State change will mount contentEditable, then we update it in useEffect\n\t\t\tconst currentSource = sourceViewContentRef.current.trim();\n\t\t\t\n\t\t\tif (!currentSource) {\n\t\t\t\t// Empty source — use default\n\t\t\t\tconst defaultHtml = '<p><br></p>';\n\t\t\t\tsourceCodeRef.current = defaultHtml;\n\t\t\t\tsourceViewContentRef.current = defaultHtml;\n\t\t\t\tsetSourceCode(defaultHtml);\n\t\t\t} else {\n\t\t\t\tsourceCodeRef.current = currentSource;\n\t\t\t}\n\t\t\t\n\t\t\t// Switch mode first\n\t\t\tsetShowSourceMode(false);\n\t\t}\n\t}, [showSourceMode, data]);\n\n\t// Effect to update contentEditable when switching from source to visual mode\n\t// Use a ref to track if we've already processed this mode switch\n\tconst hasProcessedModeSwitch = useRef(false);\n\t\n\tuseEffect(() => {\n\t\t// Only run when switching TO visual mode (showSourceMode becomes false)\n\t\t// and we haven't already processed this switch\n\t\tif (!showSourceMode && contentEditableRef.current && !hasProcessedModeSwitch.current) {\n\t\t\thasProcessedModeSwitch.current = true;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tconst currentSource = sourceCodeRef.current.trim();\n\t\t\t\t\n\t\t\t\tif (!currentSource) {\n\t\t\t\t\tconst defaultHtml = '<p><br></p>';\n\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(defaultHtml);\n\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t} else {\n\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(currentSource);\n\t\t\t\t\thandlebarsMapRef.current = map;\n\n\t\t\t\t\tif (!protectedHtml || protectedHtml.trim() === '') {\n\t\t\t\t\t\tconsole.warn('Protected HTML is empty, using original source');\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = currentSource;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Save to history without triggering re-render loop\n\t\t\t\tconst newHistory = history.slice(0, historyIndex + 1);\n\t\t\t\tnewHistory.push(contentEditableRef.current.innerHTML);\n\t\t\t\tsetHistory(newHistory.slice(-50));\n\t\t\t\tsetHistoryIndex(newHistory.length - 1);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error updating visual mode:', error);\n\t\t\t\t// Fallback: use raw HTML\n\t\t\t\tif (contentEditableRef.current && sourceCodeRef.current) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = sourceCodeRef.current;\n\t\t\t\t\t} catch (innerError) {\n\t\t\t\t\t\tconsole.error('Failed to render HTML:', innerError);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Reset the flag when entering source mode\n\t\tif (showSourceMode) {\n\t\t\thasProcessedModeSwitch.current = false;\n\t\t}\n\t}, [showSourceMode, history, historyIndex]);\n\n\t// Handle HTML file upload\n\t// FIX: also write to sourceViewContentRef so the uploaded content is not\n\t// lost when the user toggles to visual mode.\n\tconst handleHtmlFileUpload = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (!file) return;\n\n\t\tconst reader = new FileReader();\n\t\t\n\t\treader.onload = (event) => {\n\t\t\tconst htmlContent = event.target?.result as string;\n\t\t\tif (htmlContent) {\n\t\t\t\t// Update both textarea state and the dedicated source-mode ref\n\t\t\t\tsetSourceCode(htmlContent);\n\t\t\t\tsourceViewContentRef.current = htmlContent; // FIX: was sourceCodeRef.current\n\t\t\t\tsourceCodeRef.current = htmlContent;\n\t\t\t\t\n\t\t\t\t// If in visual mode, update the visual editor immediately\n\t\t\t\tif (!showSourceMode && contentEditableRef.current) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { html: protectedHtml, map } = prepareForEditing(htmlContent);\n\t\t\t\t\t\thandlebarsMapRef.current = map;\n\t\t\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t\t\t\tsaveToHistory();\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error processing uploaded HTML:', error);\n\t\t\t\t\t\talert('There was an error processing the HTML file. Please check the file and try again.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treader.onerror = () => {\n\t\t\talert('Failed to read HTML file. Please try again.');\n\t\t};\n\n\t\treader.readAsText(file);\n\t\t\n\t\t// Reset input so the same file can be uploaded again\n\t\te.target.value = '';\n\t}, [showSourceMode, saveToHistory]);\n\n\t// Handle source code textarea change.\n\t// FIX: write to sourceViewContentRef (not sourceCodeRef) so visual-mode\n\t// handleInput can never overwrite what the user is typing in the textarea.\n\tconst handleSourceCodeChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\tconst newCode = e.target.value;\n\t\tsetSourceCode(newCode);\n\t\tsourceViewContentRef.current = newCode; // FIX: was sourceCodeRef.current\n\t}, []);\n\n\t// Handle click on images/elements for selection\n\tconst handleContentClick = useCallback((e: React.MouseEvent) => {\n\t\tconst target = e.target as HTMLElement;\n\t\t\n\t\t// Check if clicked on image or table\n\t\tlet elementToSelect: HTMLElement | null = null;\n\t\t\n\t\tif (target.tagName === 'IMG') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target;\n\t\t} else if (target.tagName === 'TABLE') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target;\n\t\t} else if (target.tagName === 'TD' || target.tagName === 'TH' || target.tagName === 'TR' || target.tagName === 'TBODY' || target.tagName === 'THEAD') {\n\t\t\t// If clicked inside table, find the parent table\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\telementToSelect = target.closest('table');\n\t\t}\n\t\t\n\t\tif (elementToSelect) {\n\t\t\tsetSelectedElement(elementToSelect);\n\t\t\t\n\t\t\tconst rect = elementToSelect.getBoundingClientRect();\n\t\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\t\n\t\t\tif (containerRect) {\n\t\t\t\tsetResizeHandles({\n\t\t\t\t\tx: rect.left - containerRect.left,\n\t\t\t\t\ty: rect.top - containerRect.top,\n\t\t\t\t\twidth: rect.width,\n\t\t\t\t\theight: rect.height\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tsetSelectedElement(null);\n\t\t\tsetResizeHandles(null);\n\t\t}\n\t}, []);\n\n\t// Delete selected element\n\tconst handleDeleteSelected = useCallback(() => {\n\t\tif (selectedElement) {\n\t\t\tselectedElement.remove();\n\t\t\tsetSelectedElement(null);\n\t\t\tsetResizeHandles(null);\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\tsaveToHistory();\n\t\t\t}\n\t\t}\n\t}, [selectedElement, saveToHistory]);\n\n\t// Replace image\n\tconst handleReplaceImage = useCallback(async (file: File) => {\n\t\tif (!selectedElement || selectedElement.tagName !== 'IMG') return;\n\t\t\n\t\ttry {\n\t\t\tconst uFiles = await uploadFiles([file], 'document');\n\t\t\tconst token = getToken();\n\t\t\tconst payload = {\n\t\t\t\t...token,\n\t\t\t\t'x-timezone': token['x-timezone']?.toString() || '',\n\t\t\t\ttitle: file?.name.split('.')[0],\n\t\t\t\tpath: '/',\n\t\t\t\tis_private: true,\n\t\t\t\tis_directory: false,\n\t\t\t\tfile_size: file.size,\n\t\t\t\tis_child: false,\n\t\t\t\tfile_extension: file?.name.split('.')[1],\n\t\t\t\ttype: 'image',\n\t\t\t\tmime_type: file.type,\n\t\t\t\turl: `${apiConfig?.s3BucketUrl}${uFiles[0]}`\n\t\t\t};\n\t\t\t\n\t\t\tawait postV1Drive(payload);\n\t\t\t(selectedElement as HTMLImageElement).src = payload.url;\n\t\t\t\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\tsaveToHistory();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Image upload failed:', error);\n\t\t\tonError?.(error as Error);\n\t\t}\n\t}, [selectedElement, apiConfig, onError, saveToHistory]);\n\n\t// Handle replace image file input\n\tconst handleReplaceImageChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst file = e.target.files?.[0];\n\t\tif (file) {\n\t\t\thandleReplaceImage(file);\n\t\t}\n\t}, [handleReplaceImage]);\n\n\t// Handle text selection\n\tconst handleTextSelection = useCallback(() => {\n\t\tconst selection = window.getSelection();\n\t\tif (selection && !selection.isCollapsed && selection.rangeCount > 0) {\n\t\t\tconst range = selection.getRangeAt(0);\n\t\t\tconst rect = range.getBoundingClientRect();\n\t\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\t\n\t\t\tif (containerRect && rect.width > 0) {\n\t\t\t\tsetTextSelectionAnchor({\n\t\t\t\t\tx: rect.left + rect.width / 2,\n\t\t\t\t\ty: rect.top - 10\n\t\t\t\t});\n\t\t\t\tsetShowTextToolbar(true);\n\t\t\t}\n\n\t\t\t// Sync font size dropdown to the selected text's actual font size.\n\t\t\t// Walk up from the anchor node looking for an explicit inline font-size.\n\t\t\tlet node: Node | null = selection.anchorNode;\n\t\t\tif (node?.nodeType === Node.TEXT_NODE) node = node.parentElement;\n\t\t\tlet detectedSize: string | null = null;\n\t\t\tlet current = node instanceof HTMLElement ? node : null;\n\t\t\twhile (current && current !== contentEditableRef.current) {\n\t\t\t\tif (current.style.fontSize) {\n\t\t\t\t\tdetectedSize = current.style.fontSize;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrent = current.parentElement;\n\t\t\t}\n\t\t\tsetFontSize(detectedSize ?? '14px');\n\t\t} else {\n\t\t\tsetShowTextToolbar(false);\n\t\t\tsetTextSelectionAnchor(null);\n\t\t}\n\t}, []);\n\n\t// Handle resize start\n\tconst handleResizeStart = useCallback((e: React.MouseEvent, handle: string) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\t\n\t\tif (selectedElement && resizeHandles) {\n\t\t\tresizeStartRef.current = {\n\t\t\t\tx: e.clientX,\n\t\t\t\ty: e.clientY,\n\t\t\t\twidth: resizeHandles.width,\n\t\t\t\theight: resizeHandles.height,\n\t\t\t\thandle\n\t\t\t};\n\t\t\t\n\t\t\t// Add event listeners\n\t\t\tdocument.addEventListener('mousemove', handleResizeMove as any);\n\t\t\tdocument.addEventListener('mouseup', handleResizeEnd);\n\t\t}\n\t}, [selectedElement, resizeHandles]);\n\n\t// Handle resize move\n\tconst handleResizeMove = useCallback((e: MouseEvent) => {\n\t\tif (!resizeStartRef.current || !selectedElement || !resizeHandles) return;\n\t\t\n\t\tconst { x, y, width, height, handle } = resizeStartRef.current;\n\t\tconst deltaX = e.clientX - x;\n\t\tconst deltaY = e.clientY - y;\n\t\t\n\t\tlet newWidth = width;\n\t\tlet newHeight = height;\n\t\t\n\t\tif (handle.includes('e')) {\n\t\t\tnewWidth = Math.max(50, width + deltaX);\n\t\t}\n\t\tif (handle.includes('w')) {\n\t\t\t// West handle: shrink/grow from the left — invert delta\n\t\t\tnewWidth = Math.max(50, width - deltaX);\n\t\t}\n\t\tif (handle.includes('s')) {\n\t\t\tnewHeight = Math.max(50, height + deltaY);\n\t\t}\n\t\tif (handle.includes('n')) {\n\t\t\tnewHeight = Math.max(50, height - deltaY);\n\t\t}\n\t\t\n\t\t// Maintain aspect ratio for corner handles on images\n\t\tif (handle.length === 2 && selectedElement.tagName === 'IMG') {\n\t\t\tconst aspectRatio = width / height;\n\t\t\tnewHeight = newWidth / aspectRatio;\n\t\t}\n\t\t\n\t\tselectedElement.style.width = `${newWidth}px`;\n\t\tif (selectedElement.tagName === 'IMG' || selectedElement.tagName === 'TABLE') {\n\t\t\tselectedElement.style.height = `${newHeight}px`;\n\t\t}\n\t\t\n\t\t// Update resize handles position\n\t\tconst rect = selectedElement.getBoundingClientRect();\n\t\tconst containerRect = contentEditableRef.current?.getBoundingClientRect();\n\t\t\n\t\tif (containerRect) {\n\t\t\tsetResizeHandles({\n\t\t\t\tx: rect.left - containerRect.left,\n\t\t\t\ty: rect.top - containerRect.top,\n\t\t\t\twidth: rect.width,\n\t\t\t\theight: rect.height\n\t\t\t});\n\t\t}\n\t}, [selectedElement, resizeHandles]);\n\n\t// Handle resize end\n\tconst handleResizeEnd = useCallback(() => {\n\t\tdocument.removeEventListener('mousemove', handleResizeMove as any);\n\t\tdocument.removeEventListener('mouseup', handleResizeEnd);\n\t\t\n\t\tresizeStartRef.current = null;\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t}, [handleResizeMove, saveToHistory]);\n\n\t// Show table picker\n\tconst handleShowTablePicker = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n\t\tsetTablePickerAnchor(e.currentTarget);\n\t\tsetShowTablePicker(true);\n\t}, []);\n\n\t// Insert table with visual picker\n\tconst handleInsertTableFromPicker = useCallback((rows: number, cols: number) => {\n\t\t// Focus the editor first\n\t\tif (contentEditableRef.current) {\n\t\t\tcontentEditableRef.current.focus();\n\t\t}\n\t\t\n\t\t// Create table HTML\n\t\tlet tableHTML = '<table border=\"1\" style=\"border-collapse: collapse; width: 100%; margin: 10px 0;\">';\n\t\ttableHTML += '<tbody>';\n\t\tfor (let i = 0; i < rows; i++) {\n\t\t\ttableHTML += '<tr>';\n\t\t\tfor (let j = 0; j < cols; j++) {\n\t\t\t\ttableHTML += '<td style=\"border: 1px solid #ddd; padding: 8px; min-width: 50px;\"></td>';\n\t\t\t}\n\t\t\ttableHTML += '</tr>';\n\t\t}\n\t\ttableHTML += '</tbody></table><p><br></p>';\n\t\t\n\t\t// Insert using execCommand\n\t\tdocument.execCommand('insertHTML', false, tableHTML);\n\t\t\n\t\t// Update refs and history\n\t\tif (contentEditableRef.current) {\n\t\t\tsourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\tsaveToHistory();\n\t\t}\n\t\t\n\t\t// Close picker\n\t\tsetShowTablePicker(false);\n\t\tsetTablePickerAnchor(null);\n\t}, [saveToHistory]);\n\n\t// Create adapter object for ref\n\tconst adapter = {\n\t\tgetData: () => {\n\t\t\t// Always restore Handlebars syntax when getting data\n\t\t\treturn prepareForSaving(sourceCodeRef.current, handlebarsMapRef.current);\n\t\t},\n\t\tsetData: (newData: string) => {\n\t\t\tconst { html: protectedHtml, map } = prepareForEditing(newData);\n\t\t\thandlebarsMapRef.current = map;\n\t\t\tsourceCodeRef.current = newData;\n\t\t\tif (contentEditableRef.current) {\n\t\t\t\tcontentEditableRef.current.innerHTML = protectedHtml;\n\t\t\t}\n\t\t},\n\t\tmodel: {\n\t\t\tinsertContent: (fragment: string) => {\n\t\t\t\texecCommand('insertHTML', fragment);\n\t\t\t}\n\t\t},\n\t\tdata: {\n\t\t\tprocessor: {\n\t\t\t\ttoView: (html: string) => html\n\t\t\t},\n\t\t\ttoModel: (html: string) => html\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => adapter, []);\n\t\n\tuseEffect(() => {\n\t\tif (editorRefProp) {\n\t\t\t(editorRefProp as any).current = adapter;\n\t\t}\n\t}, [editorRefProp]);\n\n\t// Prevents focus loss when toolbar buttons are pressed, keeping the editor\n\tconst toolbarCmd = (command: string, value?: string) => (e: React.MouseEvent) => {\n\t\te.preventDefault();\n\t\texecCommand(command, value);\n\t};\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div className=\"editor-error-container\">\n\t\t\t\t<div className=\"editor-error-message\">Editor Error: {error.message}</div>\n\t\t\t\t<button onClick={() => setError(null)} className=\"editor-retry-button\">\n\t\t\t\t\tRetry\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className='custom-editor-container'>\n\t\t\t{/* Menu Bar */}\n\t\t\t<Box sx={{ \n\t\t\t\tdisplay: 'flex', \n\t\t\t\talignItems: 'center',\n\t\t\t\tgap: 2,\n\t\t\t\tpx: 2,\n\t\t\t\tpy: 0.5,\n\t\t\t\tborderBottom: '1px solid #ddd',\n\t\t\t\tbgcolor: '#f8f9fa',\n\t\t\t\tfontSize: '13px'\n\t\t\t}}>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Edit</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>View</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Insert</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Format</span>\n\t\t\t\t<span style={{ cursor: 'pointer', color: '#333' }}>Help</span>\n\t\t\t</Box>\n\n\t\t\t{/* Toolbar */}\n\t\t\t<Box sx={{ \n\t\t\t\tdisplay: 'flex', \n\t\t\t\tflexWrap: 'wrap', \n\t\t\t\tgap: 0.5, \n\t\t\t\tp: 1, \n\t\t\t\tborderBottom: '1px solid #ddd',\n\t\t\t\tbgcolor: '#f5f5f5',\n\t\t\t\talignItems: 'center'\n\t\t\t}}>\n\t\t\t\t{/* Source Button - icon + label style matching the design */}\n\t\t\t\t<Tooltip title={showSourceMode ? 'Switch to Visual' : 'Switch to Source'}>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tonClick={handleToggleSource}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\tpx: 1,\n\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\t\tborderColor: showSourceMode ? 'primary.main' : 'transparent',\n\t\t\t\t\t\t\tbgcolor: showSourceMode ? 'primary.50' : 'transparent',\n\t\t\t\t\t\t\tcolor: showSourceMode ? 'primary.main' : 'text.secondary',\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbgcolor: showSourceMode ? 'primary.100' : 'grey.200',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransition: 'all 0.15s ease',\n\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* Code-file-with-edit icon, matching the screenshot */}\n\t\t\t\t\t\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2Z\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\"/>\n\t\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\"/>\n\t\t\t\t\t\t\t<path d=\"M9 13L7 15L9 17\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n\t\t\t\t\t\t\t<path d=\"M15 13L17 15L15 17\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n\t\t\t\t\t\t\t<line x1=\"13\" y1=\"12\" x2=\"11\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span style={{ fontSize: '13px', fontWeight: 500 }}>Source</span>\n\t\t\t\t\t</Box>\n\t\t\t\t</Tooltip>\n\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Undo/Redo */}\n\t\t\t\t<Tooltip title=\"Undo\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleUndo} disabled={historyIndex === 0}>\n\t\t\t\t\t\t<Undo fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Redo\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleRedo} disabled={historyIndex === history.length - 1}>\n\t\t\t\t\t\t<Redo fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Heading Format */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={headingFormat}\n\t\t\t\t\tonChange={handleHeadingFormatChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 100, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{HEADING_FORMATS.map(format => (\n\t\t\t\t\t\t<MenuItem key={format.value} value={format.value}>\n\t\t\t\t\t\t\t{format.label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t{/* Font Family */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={fontFamily}\n\t\t\t\t\tonChange={handleFontFamilyChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 120, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{FONT_FAMILIES.map(font => (\n\t\t\t\t\t\t<MenuItem key={font} value={font} style={{ fontFamily: font }}>\n\t\t\t\t\t\t\t{font}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t{/* Font Size */}\n\t\t\t\t<Select\n\t\t\t\t\tvalue={fontSize}\n\t\t\t\t\tonChange={handleFontSizeChange}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={{ minWidth: 70, height: 28, fontSize: '12px' }}\n\t\t\t\t>\n\t\t\t\t\t{FONT_SIZES.map(size => (\n\t\t\t\t\t\t<MenuItem key={size} value={size}>{size}</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Select>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Text Formatting */}\n\t\t\t\t<Tooltip title=\"Bold\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('bold')}>\n\t\t\t\t\t\t<FormatBold fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Italic\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('italic')}>\n\t\t\t\t\t\t<FormatItalic fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Underline\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('underline')}>\n\t\t\t\t\t\t<FormatUnderlined fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Strikethrough\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('strikeThrough')}>\n\t\t\t\t\t\t<FormatStrikethrough fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Subscript\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('subscript')}>\n\t\t\t\t\t\t<Subscript fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Superscript\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('superscript')}>\n\t\t\t\t\t\t<Superscript fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Colors */}\n\t\t\t\t<Tooltip title=\"Text Color\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'text' });\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={{ width: 32, height: 28, border: '1px solid #ddd', borderRadius: '4px', backgroundColor: 'white' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span style={{ fontSize: '16px', fontWeight: 'bold', color: '#000' }}>A</span>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Background Color\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'bg' });\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={{ width: 32, height: 28, border: '1px solid #ddd', borderRadius: '4px', backgroundColor: '#fffde7' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span style={{ fontSize: '16px', fontWeight: 'bold', color: '#000' }}>A</span>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Alignment */}\n\t\t\t\t<Tooltip title=\"Align Left\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyLeft')}>\n\t\t\t\t\t\t<FormatAlignLeft fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Align Center\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyCenter')}>\n\t\t\t\t\t\t<FormatAlignCenter fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Align Right\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyRight')}>\n\t\t\t\t\t\t<FormatAlignRight fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Justify\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('justifyFull')}>\n\t\t\t\t\t\t<FormatAlignJustify fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Lists */}\n\t\t\t\t<Tooltip title=\"Bullet List\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('insertUnorderedList')}>\n\t\t\t\t\t\t<FormatListBulleted fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Numbered List\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('insertOrderedList')}>\n\t\t\t\t\t\t<FormatListNumbered fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t\n\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\t\t\t\t\n\t\t\t\t{/* Insert */}\n\t\t\t\t<Tooltip title=\"Insert Link\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleInsertLink}>\n\t\t\t\t\t\t<LinkIcon fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Insert Image\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={() => fileInputRef.current?.click()}>\n\t\t\t\t\t\t<ImageIcon fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Insert Table\">\n\t\t\t\t\t<IconButton size=\"small\" onClick={handleShowTablePicker}>\n\t\t\t\t\t\t<TableChart fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t\t<Tooltip title=\"Code\">\n\t\t\t\t\t<IconButton size=\"small\" onMouseDown={toolbarCmd('formatBlock', '<pre>')}>\n\t\t\t\t\t\t<Code fontSize=\"small\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Box>\n\t\t\t\n\t\t\t{/* Hidden file input */}\n\t\t\t<input\n\t\t\t\tref={fileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleFileChange}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Hidden HTML file input */}\n\t\t\t<input\n\t\t\t\tref={htmlFileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".html,.htm,text/html\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleHtmlFileUpload}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Hidden file input for replace image */}\n\t\t\t<input\n\t\t\t\tref={replaceImageInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t\tonChange={handleReplaceImageChange}\n\t\t\t/>\n\t\t\t\n\t\t\t{/* Content Area */}\n\t\t\t{showSourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\tvalue={sourceCode}\n\t\t\t\t\tonChange={handleSourceCodeChange}\n\t\t\t\t\tclassName=\"custom-editor-source\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tminHeight: '300px',\n\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\tfontFamily: 'Courier New, monospace',\n\t\t\t\t\t\tfontSize: '13px',\n\t\t\t\t\t\tlineHeight: '1.5',\n\t\t\t\t\t\tresize: 'vertical'\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={contentEditableRef}\n\t\t\t\t\t\tcontentEditable\n\t\t\t\t\t\tclassName=\"editor-content\"\n\t\t\t\t\t\tonInput={handleInput}\n\t\t\t\t\t\tonPaste={handlePaste}\n\t\t\t\t\t\tonClick={handleContentClick}\n\t\t\t\t\t\tonMouseUp={handleTextSelection}\n\t\t\t\t\t\tonKeyUp={handleTextSelection}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tminHeight: '300px',\n\t\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\tborderTop: 'none',\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t\tfontFamily: 'inherit',\n\t\t\t\t\t\t\tfontSize: 'inherit',\n\t\t\t\t\t\t\tlineHeight: '1.6',\n\t\t\t\t\t\t\tbackgroundColor: 'white'\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{/* Resize Handles */}\n\t\t\t\t\t{selectedElement && resizeHandles && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\tleft: resizeHandles.x,\n\t\t\t\t\t\t\t\ttop: resizeHandles.y,\n\t\t\t\t\t\t\t\twidth: resizeHandles.width,\n\t\t\t\t\t\t\t\theight: resizeHandles.height,\n\t\t\t\t\t\t\t\tborder: '2px solid #1976d2',\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\tzIndex: 1000\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* Toolbar for selected element */}\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\ttop: -36,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\t\tbgcolor: 'white',\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\t\tp: 0.25,\n\t\t\t\t\t\t\t\t\tboxShadow: 2,\n\t\t\t\t\t\t\t\t\tpointerEvents: 'auto'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{selectedElement.tagName === 'IMG' && (\n\t\t\t\t\t\t\t\t\t<Tooltip title=\"Replace Image\">\n\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => replaceImageInputRef.current?.click()}\n\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SwapHoriz sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{selectedElement.tagName === 'TABLE' && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Add Row\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst tbody = selectedElement.querySelector('tbody');\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (tbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst colCount = selectedElement.querySelectorAll('tr:first-child td, tr:first-child th').length || 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst tr = document.createElement('tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let i = 0; i < colCount; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst td = document.createElement('td');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttd.style.cssText = 'border: 1px solid #ddd; padding: 8px; min-width: 50px;';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttr.appendChild(td);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttbody.appendChild(tr);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<AddCircleOutline sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Delete Row\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst rows = selectedElement.querySelectorAll('tbody tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (rows.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trows[rows.length - 1].remove();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<RemoveCircleOutline sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Add Column\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedElement.querySelectorAll('tr').forEach(tr => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isHeader = tr.closest('thead') !== null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst cell = document.createElement(isHeader ? 'th' : 'td');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcell.style.cssText = 'border: 1px solid #ddd; padding: 8px; min-width: 50px;';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttr.appendChild(cell);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<AddCircleOutline sx={{ fontSize: 14, transform: 'rotate(90deg)' }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Delete Column\">\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst allRows = selectedElement.querySelectorAll('tr');\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst colCount = allRows[0]?.children.length || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (colCount > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tallRows.forEach(tr => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (tr.lastElementChild) tr.removeChild(tr.lastElementChild);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (contentEditableRef.current) sourceCodeRef.current = contentEditableRef.current.innerHTML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ width: 22, height: 22 }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<RemoveCircleOutline sx={{ fontSize: 14, transform: 'rotate(90deg)' }} />\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Tooltip title=\"Delete\">\n\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tonClick={handleDeleteSelected}\n\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\twidth: 22,\n\t\t\t\t\t\t\t\t\t\t\theight: 22,\n\t\t\t\t\t\t\t\t\t\t\tcolor: '#f44336',\n\t\t\t\t\t\t\t\t\t\t\t'&:hover': { bgcolor: '#ffebee' }\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Close sx={{ fontSize: 14 }} />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/* Corner and edge handles */}\n\t\t\t\t\t\t\t{['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'].map(handle => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={handle}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => handleResizeStart(e, handle)}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\twidth: 8,\n\t\t\t\t\t\t\t\t\t\theight: 8,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: '#1976d2',\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid white',\n\t\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\t\tcursor: `${handle}-resize`,\n\t\t\t\t\t\t\t\t\t\t...(handle === 'nw' && { top: -4, left: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'n' && { top: -4, left: '50%', transform: 'translateX(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'ne' && { top: -4, right: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'e' && { top: '50%', right: -4, transform: 'translateY(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'se' && { bottom: -4, right: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 's' && { bottom: -4, left: '50%', transform: 'translateX(-50%)' }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'sw' && { bottom: -4, left: -4 }),\n\t\t\t\t\t\t\t\t\t\t...(handle === 'w' && { top: '50%', left: -4, transform: 'translateY(-50%)' })\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t{/* Text Selection Toolbar */}\n\t\t\t\t\t{showTextToolbar && textSelectionAnchor && (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\t\tleft: textSelectionAnchor.x,\n\t\t\t\t\t\t\t\ttop: textSelectionAnchor.y,\n\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -100%)',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\tbgcolor: '#333',\n\t\t\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\t\t\tborderRadius: 1,\n\t\t\t\t\t\t\t\tp: 0.5,\n\t\t\t\t\t\t\t\tboxShadow: 3,\n\t\t\t\t\t\t\t\tzIndex: 10000\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip title=\"Bold\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('bold')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatBold fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Italic\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('italic')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatItalic fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Underline\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonMouseDown={toolbarCmd('underline')}\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FormatUnderlined fontSize=\"small\" />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Divider orientation=\"vertical\" flexItem sx={{ bgcolor: 'rgba(255,255,255,0.2)', mx: 0.5 }} />\n\t\t\t\t\t\t\t<Tooltip title=\"Text Color\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tsx={{ color: 'white', width: 28, height: 28 }}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetColorPickerState({ anchor: e.currentTarget, type: 'text' });\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span style={{ fontSize: '14px', fontWeight: 'bold' }}>A</span>\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t<Tooltip title=\"Font Size\">\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tdefaultValue=\"14px\"\n\t\t\t\t\t\t\t\t\tonChange={handleFontSizeChange}\n\t\t\t\t\t\t\t\t\tsx={{ \n\t\t\t\t\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\t\t\t\t\theight: 28,\n\t\t\t\t\t\t\t\t\t\tminWidth: 70,\n\t\t\t\t\t\t\t\t\t\t'& .MuiOutlinedInput-notchedOutline': { border: 'none' },\n\t\t\t\t\t\t\t\t\t\t'& .MuiSvgIcon-root': { color: 'white' }\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{FONT_SIZES.map(size => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem key={size} value={size}>{size}</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t\n\t\t\t{/* Color Picker Popover */}\n\t\t\t{colorPickerState && (\n\t\t\t\t<Popover\n\t\t\t\t\topen\n\t\t\t\t\tanchorEl={colorPickerState.anchor}\n\t\t\t\t\tonClose={() => setColorPickerState(null)}\n\t\t\t\t\tdisableAutoFocus\n\t\t\t\t\tdisableEnforceFocus\n\t\t\t\t\tanchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n\t\t\t\t\ttransformOrigin={{ vertical: 'top', horizontal: 'left' }}\n\t\t\t\t>\n\t\t\t\t\t<Box sx={{ p: 1 }}>\n\t\t\t\t\t\t<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(8, 20px)', gap: '3px' }}>\n\t\t\t\t\t\t\t{PRESET_COLORS.map((color) => (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={color}\n\t\t\t\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tif (colorPickerState.type === 'text') {\n\t\t\t\t\t\t\t\t\t\t\texecCommand('foreColor', color);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\texecCommand('hiliteColor', color);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsetColorPickerState(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\t\theight: 20,\n\t\t\t\t\t\t\t\t\t\tbgcolor: color,\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid rgba(0,0,0,0.15)',\n\t\t\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t\t\t\t'&:hover': { transform: 'scale(1.3)', zIndex: 1, position: 'relative' },\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Box>\n\t\t\t\t</Popover>\n\t\t\t)}\n\n\t\t\t{/* Table Picker Popover */}\n\t\t\t{showTablePicker && tablePickerAnchor && (\n\t\t\t\t<>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsetShowTablePicker(false);\n\t\t\t\t\t\t\tsetTablePickerAnchor(null);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\tzIndex: 9998\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<TablePicker />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n\nCustomEditor.displayName = 'CustomEditor';\nexport default CustomEditor;"],"names":["forwardRef","useState","useRef","useEffect","getApiConfig","prepareForEditing","adapter","prepareForSaving","protectedHtml","map","useCallback","uploadFiles","getToken","postV1Drive","error","jsxs","Box","jsx","_","_a","useImperativeHandle","Tooltip","Divider","IconButton","Undo","Redo","Select","MenuItem","FormatBold","FormatItalic","FormatUnderlined","FormatStrikethrough","Subscript","Superscript","FormatAlignLeft","FormatAlignCenter","FormatAlignRight","FormatAlignJustify","FormatListBulleted","FormatListNumbered","LinkIcon","ImageIcon","TableChart","Code","SwapHoriz","Fragment","AddCircleOutline","RemoveCircleOutline","Close","Popover"],"mappings":"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"}
|
|
@@ -22,14 +22,14 @@ const toast = require("./toast-D6pKuNek.js");
|
|
|
22
22
|
const radio = require("./radio-B4q7PaRy.js");
|
|
23
23
|
const utils_constant = require("../utils/constant/index.js");
|
|
24
24
|
const erpLoader = require("./erp-loader-Ca8C6S9x.js");
|
|
25
|
-
const api = require("./api-
|
|
26
|
-
const formParser = require("./form-parser-
|
|
25
|
+
const api = require("./api-DuBJvpDR.js");
|
|
26
|
+
const formParser = require("./form-parser-Bo_xCoz5.js");
|
|
27
27
|
const eyeOff = require("./eye-off-DVPrzJt8.js");
|
|
28
28
|
const eye = require("./eye-BM7Zd78y.js");
|
|
29
|
-
const reducer = require("./reducer-
|
|
29
|
+
const reducer = require("./reducer-D9YsCrPV.js");
|
|
30
30
|
const views_formBuilder_field_properties = require("../views/form-builder/field_properties/index.js");
|
|
31
|
-
const tableForm = require("./table-form-
|
|
32
|
-
const formFields = require("./form-fields-
|
|
31
|
+
const tableForm = require("./table-form-DlMHRtLK.js");
|
|
32
|
+
const formFields = require("./form-fields-BrEECDh1.js");
|
|
33
33
|
const common = require("./common-CS5L0Ld_.js");
|
|
34
34
|
const DEFAULT_GRID_COLUMNS = 12;
|
|
35
35
|
const DEFAULT_COLUMN_WIDTH = 2;
|
|
@@ -1142,4 +1142,4 @@ function CustomForm({ redirectionPath }) {
|
|
|
1142
1142
|
);
|
|
1143
1143
|
}
|
|
1144
1144
|
exports.CustomForm = CustomForm;
|
|
1145
|
-
//# sourceMappingURL=custom-form-
|
|
1145
|
+
//# sourceMappingURL=custom-form-DEzUMeYP.js.map
|