@erpsquad/common 1.11.6 → 1.11.7
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 +2 -2
- package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js → DynamicDependentField-DOGY6cA_.esm.js} +2 -2
- package/dist/chunks/{DynamicDependentField-C0XXmMlG.esm.js.map → DynamicDependentField-DOGY6cA_.esm.js.map} +1 -1
- package/dist/chunks/{DynamicDependentField-CQIfDDqc.js → DynamicDependentField-GTIwrPfP.js} +2 -2
- package/dist/chunks/{DynamicDependentField-CQIfDDqc.js.map → DynamicDependentField-GTIwrPfP.js.map} +1 -1
- package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js → ERPUIProvider-Dz0s77BR.esm.js} +3 -3
- package/dist/chunks/{ERPUIProvider-I4j_X_SD.esm.js.map → ERPUIProvider-Dz0s77BR.esm.js.map} +1 -1
- package/dist/chunks/EditorSection-BLGcgQFm.esm.js +849 -0
- package/dist/chunks/EditorSection-BLGcgQFm.esm.js.map +1 -0
- package/dist/chunks/EditorSection-D6yaBfjP.js +848 -0
- package/dist/chunks/EditorSection-D6yaBfjP.js.map +1 -0
- package/dist/chunks/{FORMS-B40NtUdz.esm.js → FORMS-CR_DlD1m.esm.js} +8 -8
- package/dist/chunks/{FORMS-B40NtUdz.esm.js.map → FORMS-CR_DlD1m.esm.js.map} +1 -1
- package/dist/chunks/{FORMS-K5QYZYJc.js → FORMS-EouVYay1.js} +5 -5
- package/dist/chunks/{FORMS-K5QYZYJc.js.map → FORMS-EouVYay1.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-lJRAIjmS.esm.js → FlexibleReduxExample-B2e7Wa_S.esm.js} +4 -4
- package/dist/chunks/{FlexibleReduxExample-lJRAIjmS.esm.js.map → FlexibleReduxExample-B2e7Wa_S.esm.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-WGpR03V0.js → FlexibleReduxExample-CMUylyy1.js} +3 -3
- package/dist/chunks/{FlexibleReduxExample-WGpR03V0.js.map → FlexibleReduxExample-CMUylyy1.js.map} +1 -1
- package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js +12543 -0
- package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js.map +1 -0
- package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js +12542 -0
- package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js.map +1 -0
- package/dist/chunks/{action-bar-C7Alva4T.esm.js → action-bar-Ci6RlMBM.esm.js} +6 -6
- package/dist/chunks/{action-bar-C7Alva4T.esm.js.map → action-bar-Ci6RlMBM.esm.js.map} +1 -1
- package/dist/chunks/{action-bar-DdtpxWNk.js → action-bar-jLqQTqU7.js} +3 -3
- package/dist/chunks/{action-bar-DdtpxWNk.js.map → action-bar-jLqQTqU7.js.map} +1 -1
- package/dist/chunks/{actionCreator-CpePNxQM.esm.js → actionCreator-B6lXR_k1.esm.js} +2 -2
- package/dist/chunks/{actionCreator-CpePNxQM.esm.js.map → actionCreator-B6lXR_k1.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js → actionCreator-D3uwEAua.esm.js} +3 -3
- package/dist/chunks/{actionCreator-Cl8vPLVO.esm.js.map → actionCreator-D3uwEAua.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js → actionCreator-DIdMRO9L.esm.js} +2 -2
- package/dist/chunks/{actionCreator-CL5ICuqZ.esm.js.map → actionCreator-DIdMRO9L.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Cb3NxILP.esm.js → actionCreator-DKYufGAZ.esm.js} +2 -2
- package/dist/chunks/{actionCreator-Cb3NxILP.esm.js.map → actionCreator-DKYufGAZ.esm.js.map} +1 -1
- package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js → actionCreator-DcdyGsIX.esm.js} +3 -3
- package/dist/chunks/{actionCreator-Dar9Z8_d.esm.js.map → actionCreator-DcdyGsIX.esm.js.map} +1 -1
- package/dist/chunks/add-template-CUPbU0z7.js +10 -0
- package/dist/chunks/add-template-CUPbU0z7.js.map +1 -0
- package/dist/chunks/add-template-CxvhzFMF.esm.js +11 -0
- package/dist/chunks/add-template-CxvhzFMF.esm.js.map +1 -0
- package/dist/chunks/{address-modal-CYhiC7ui.js → address-modal-DFd5sQtR.js} +2 -2
- package/dist/chunks/{address-modal-CYhiC7ui.js.map → address-modal-DFd5sQtR.js.map} +1 -1
- package/dist/chunks/{address-modal-CkDBjnye.esm.js → address-modal-DYGLjrqd.esm.js} +2 -2
- package/dist/chunks/{address-modal-CkDBjnye.esm.js.map → address-modal-DYGLjrqd.esm.js.map} +1 -1
- package/dist/chunks/{ai-summary-SKK5KN2s.esm.js → ai-summary-x2t8BZCx.esm.js} +2 -2
- package/dist/chunks/{ai-summary-SKK5KN2s.esm.js.map → ai-summary-x2t8BZCx.esm.js.map} +1 -1
- package/dist/chunks/{api-BIVCMSwW.esm.js → api-8jutPLh0.esm.js} +3 -3
- package/dist/chunks/{api-BIVCMSwW.esm.js.map → api-8jutPLh0.esm.js.map} +1 -1
- package/dist/chunks/{api-DBmWILBN.esm.js → api-yLpQ3k5s.esm.js} +9 -9
- package/dist/chunks/{api-DBmWILBN.esm.js.map → api-yLpQ3k5s.esm.js.map} +1 -1
- package/dist/chunks/{app-switcher-D-Bvz9uO.esm.js → app-switcher-B6eapuGG.esm.js} +2 -2
- package/dist/chunks/{app-switcher-D-Bvz9uO.esm.js.map → app-switcher-B6eapuGG.esm.js.map} +1 -1
- package/dist/chunks/{app-switcher-CyEQmYAN.js → app-switcher-VhH9z0Rd.js} +2 -2
- package/dist/chunks/{app-switcher-CyEQmYAN.js.map → app-switcher-VhH9z0Rd.js.map} +1 -1
- package/dist/chunks/{appbar-BdTp1k68.esm.js → appbar-B8EgZsrn.esm.js} +2 -2
- package/dist/chunks/{appbar-BdTp1k68.esm.js.map → appbar-B8EgZsrn.esm.js.map} +1 -1
- package/dist/chunks/{appbar-DyIptRTa.js → appbar-Is_7kfVo.js} +2 -2
- package/dist/chunks/{appbar-DyIptRTa.js.map → appbar-Is_7kfVo.js.map} +1 -1
- package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js → approval-wrapper-_kYfACQp.esm.js} +2 -2
- package/dist/chunks/{approval-wrapper-BTtmXMlk.esm.js.map → approval-wrapper-_kYfACQp.esm.js.map} +1 -1
- package/dist/chunks/{chat-bot-Dz8cR_uw.esm.js → chat-bot-DO3vAGxA.esm.js} +2 -2
- package/dist/chunks/{chat-bot-Dz8cR_uw.esm.js.map → chat-bot-DO3vAGxA.esm.js.map} +1 -1
- package/dist/chunks/common-BgXEAs_y.esm.js +851 -0
- package/dist/chunks/common-BgXEAs_y.esm.js.map +1 -0
- package/dist/chunks/{common-yORBIVv-.esm.js → common-Cl5oGXmX.esm.js} +2 -2
- package/dist/chunks/{common-yORBIVv-.esm.js.map → common-Cl5oGXmX.esm.js.map} +1 -1
- package/dist/chunks/common-D6T6NGWY.js +850 -0
- package/dist/chunks/common-D6T6NGWY.js.map +1 -0
- package/dist/chunks/{common-CS5L0Ld_.js → common-PH2uWkqL.js} +2 -2
- package/dist/chunks/{common-CS5L0Ld_.js.map → common-PH2uWkqL.js.map} +1 -1
- package/dist/chunks/common-utility-CA_Upser.js.map +1 -1
- package/dist/chunks/{common-utility-DGpbsf7S.esm.js → common-utility-CS_sNoAC.esm.js} +2 -2
- package/dist/chunks/common-utility-CS_sNoAC.esm.js.map +1 -0
- package/dist/chunks/company-selection-modal-B7jFVWWs.js.map +1 -1
- package/dist/chunks/company-selection-modal-Dn2L_skh.esm.js.map +1 -1
- package/dist/chunks/{constant-Bwg2s_Sn.esm.js → constant-BXPcBhJN.esm.js} +35 -5
- package/dist/chunks/constant-BXPcBhJN.esm.js.map +1 -0
- package/dist/chunks/{constant-ZYAN_teD.js → constant-BXeJD4Af.js} +35 -5
- package/dist/chunks/constant-BXeJD4Af.js.map +1 -0
- package/dist/chunks/{constants-nmkxkzps.esm.js → constants-BrmMAwu2.esm.js} +2 -2
- package/dist/chunks/{constants-nmkxkzps.esm.js.map → constants-BrmMAwu2.esm.js.map} +1 -1
- package/dist/chunks/{constants-06kIVUBw.js → constants-D_xuLHSu.js} +2 -2
- package/dist/chunks/{constants-06kIVUBw.js.map → constants-D_xuLHSu.js.map} +1 -1
- package/dist/chunks/{custom-editor-6-xqhKz6.esm.js → custom-editor-C-B5BK-H.esm.js} +3 -3
- package/dist/chunks/{custom-editor-6-xqhKz6.esm.js.map → custom-editor-C-B5BK-H.esm.js.map} +1 -1
- package/dist/chunks/{custom-form-DD7YOHMF.esm.js → custom-form-DNUpk0nq.esm.js} +7 -7
- package/dist/chunks/{custom-form-DD7YOHMF.esm.js.map → custom-form-DNUpk0nq.esm.js.map} +1 -1
- package/dist/chunks/{custom-form-CFU7NEVb.js → custom-form-T4yc_sE_.js} +4 -4
- package/dist/chunks/{custom-form-CFU7NEVb.js.map → custom-form-T4yc_sE_.js.map} +1 -1
- package/dist/chunks/{dashboard-B5qcT2Dt.esm.js → dashboard-B4xzJ1Xc.esm.js} +4 -4
- package/dist/chunks/{dashboard-B5qcT2Dt.esm.js.map → dashboard-B4xzJ1Xc.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-Dzts5-X6.js → dashboard-eMHQayU_.js} +3 -3
- package/dist/chunks/{dashboard-Dzts5-X6.js.map → dashboard-eMHQayU_.js.map} +1 -1
- package/dist/chunks/default-data-6IxhqPTP.esm.js.map +1 -1
- package/dist/chunks/default-data-yreKVx_z.js.map +1 -1
- package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js → dynamic-report-CMguvXj2.esm.js} +4 -4
- package/dist/chunks/{dynamic-report-tKn-KqAd.esm.js.map → dynamic-report-CMguvXj2.esm.js.map} +1 -1
- package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js → dynamic-rows-CmAE9nbA.esm.js} +2 -2
- package/dist/chunks/{dynamic-rows-CTGETfcP.esm.js.map → dynamic-rows-CmAE9nbA.esm.js.map} +1 -1
- package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js → dynamic-text-editor-CSWdR1lK.esm.js} +2 -2
- package/dist/chunks/{dynamic-text-editor-CPvlGcLK.esm.js.map → dynamic-text-editor-CSWdR1lK.esm.js.map} +1 -1
- package/dist/chunks/edit-section-modal-Br2ITvLk.js.map +1 -1
- package/dist/chunks/{edit-section-modal-BW-aZmUv.esm.js → edit-section-modal-HihKbN6K.esm.js} +2 -2
- package/dist/chunks/edit-section-modal-HihKbN6K.esm.js.map +1 -0
- package/dist/chunks/{filter-COXKBEER.esm.js → filter-D9BHP_qc.esm.js} +5 -5
- package/dist/chunks/{filter-COXKBEER.esm.js.map → filter-D9BHP_qc.esm.js.map} +1 -1
- package/dist/chunks/{filter-Cr_OSIpb.js → filter-DtCrOG6W.js} +3 -3
- package/dist/chunks/{filter-Cr_OSIpb.js.map → filter-DtCrOG6W.js.map} +1 -1
- package/dist/chunks/{footer-m3_dlNl8.esm.js → footer-Bv5NOAf9.esm.js} +2 -2
- package/dist/chunks/{footer-m3_dlNl8.esm.js.map → footer-Bv5NOAf9.esm.js.map} +1 -1
- package/dist/chunks/{footer-CD3kMRdS.js → footer-DioOh69g.js} +2 -2
- package/dist/chunks/{footer-CD3kMRdS.js.map → footer-DioOh69g.js.map} +1 -1
- package/dist/chunks/{form-fields-yE9kwjvb.js → form-fields-BYDhbAgB.js} +2 -2
- package/dist/chunks/{form-fields-yE9kwjvb.js.map → form-fields-BYDhbAgB.js.map} +1 -1
- package/dist/chunks/{form-fields-hMMnB_wE.esm.js → form-fields-Di-p9XKG.esm.js} +2 -2
- package/dist/chunks/{form-fields-hMMnB_wE.esm.js.map → form-fields-Di-p9XKG.esm.js.map} +1 -1
- package/dist/chunks/{form-parser-m4fnw38a.js → form-parser-BnMdMDSb.js} +2 -2
- package/dist/chunks/{form-parser-m4fnw38a.js.map → form-parser-BnMdMDSb.js.map} +1 -1
- package/dist/chunks/{form-parser-DbnSn5eY.esm.js → form-parser-ZQpEVrzG.esm.js} +2 -2
- package/dist/chunks/{form-parser-DbnSn5eY.esm.js.map → form-parser-ZQpEVrzG.esm.js.map} +1 -1
- package/dist/chunks/{form-section-TMjdOVeW.esm.js → form-section-BJ7Iqb9R.esm.js} +5 -5
- package/dist/chunks/{form-section-TMjdOVeW.esm.js.map → form-section-BJ7Iqb9R.esm.js.map} +1 -1
- package/dist/chunks/{form-section-CPIyMdk2.js → form-section-CFeWD-tF.js} +5 -5
- package/dist/chunks/{form-section-CPIyMdk2.js.map → form-section-CFeWD-tF.js.map} +1 -1
- package/dist/chunks/{fullScreen-D-isf0wv.esm.js → fullScreen-Cz3FIdU4.esm.js} +3 -3
- package/dist/chunks/{fullScreen-D-isf0wv.esm.js.map → fullScreen-Cz3FIdU4.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-B5iqC1y0.js → fullScreen-h0JqBN4O.js} +2 -2
- package/dist/chunks/{fullScreen-B5iqC1y0.js.map → fullScreen-h0JqBN4O.js.map} +1 -1
- package/dist/chunks/{global-search-BjKPmzsQ.js → global-search-BTV5iL6-.js} +2 -2
- package/dist/chunks/{global-search-BjKPmzsQ.js.map → global-search-BTV5iL6-.js.map} +1 -1
- package/dist/chunks/{global-search-BOkxXiZ0.esm.js → global-search-CGmupYFQ.esm.js} +3 -3
- package/dist/chunks/{global-search-BOkxXiZ0.esm.js.map → global-search-CGmupYFQ.esm.js.map} +1 -1
- package/dist/chunks/{grid-view-Bo86x7YL.esm.js → grid-view-BMfleQMC.esm.js} +2 -2
- package/dist/chunks/{grid-view-Bo86x7YL.esm.js.map → grid-view-BMfleQMC.esm.js.map} +1 -1
- package/dist/chunks/{header-D_pPOjdz.esm.js → header-BnVzqpGs.esm.js} +6 -6
- package/dist/chunks/{header-D_pPOjdz.esm.js.map → header-BnVzqpGs.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-OiKzLG4i.esm.js → header-enhanced-CkROCaOF.esm.js} +3 -3
- package/dist/chunks/{header-enhanced-OiKzLG4i.esm.js.map → header-enhanced-CkROCaOF.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-DCDMljaN.js → header-enhanced-Dxdetx0I.js} +3 -3
- package/dist/chunks/{header-enhanced-DCDMljaN.js.map → header-enhanced-Dxdetx0I.js.map} +1 -1
- package/dist/chunks/{header-DQ_e75rt.js → header-jWPMgcy6.js} +6 -6
- package/dist/chunks/{header-DQ_e75rt.js.map → header-jWPMgcy6.js.map} +1 -1
- package/dist/chunks/{index-ALqg8b5U.esm.js → index-BCmGHdos.esm.js} +2 -2
- package/dist/chunks/{index-ALqg8b5U.esm.js.map → index-BCmGHdos.esm.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-atDP84QL.js → inline-edit-fields-Cd_qUOjU.js} +2 -2
- package/dist/chunks/{inline-edit-fields-atDP84QL.js.map → inline-edit-fields-Cd_qUOjU.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js → inline-edit-fields-VOIx3qmC.esm.js} +2 -2
- package/dist/chunks/{inline-edit-fields-BYhRpPcH.esm.js.map → inline-edit-fields-VOIx3qmC.esm.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js → inventory-reports-title-bar-BfUMM54c.js} +2 -2
- package/dist/chunks/{inventory-reports-title-bar-Bog2i0dr.js.map → inventory-reports-title-bar-BfUMM54c.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js → inventory-reports-title-bar-CZZFFqDc.esm.js} +3 -3
- package/dist/chunks/{inventory-reports-title-bar-CP8FzW6A.esm.js.map → inventory-reports-title-bar-CZZFFqDc.esm.js.map} +1 -1
- package/dist/chunks/{item-response-details-SHSD-nBh.esm.js → item-response-details-BTHf6ZvN.esm.js} +4 -4
- package/dist/chunks/{item-response-details-SHSD-nBh.esm.js.map → item-response-details-BTHf6ZvN.esm.js.map} +1 -1
- package/dist/chunks/{item-response-details-DsGQ7Dlc.js → item-response-details-BheThTTK.js} +2 -2
- package/dist/chunks/{item-response-details-DsGQ7Dlc.js.map → item-response-details-BheThTTK.js.map} +1 -1
- package/dist/chunks/{listing-DIuzQrzb.js → listing-Dr_1DDBr.js} +4 -4
- package/dist/chunks/{listing-DIuzQrzb.js.map → listing-Dr_1DDBr.js.map} +1 -1
- package/dist/chunks/{listing-C0Yb6MVq.esm.js → listing-ELQeM6S3.esm.js} +4 -4
- package/dist/chunks/{listing-C0Yb6MVq.esm.js.map → listing-ELQeM6S3.esm.js.map} +1 -1
- package/dist/chunks/{location-select-g5uczAUF.js → location-select-CLyRUilk.js} +2 -2
- package/dist/chunks/{location-select-g5uczAUF.js.map → location-select-CLyRUilk.js.map} +1 -1
- package/dist/chunks/{location-select-CFa00fy4.esm.js → location-select-z1C88kCy.esm.js} +2 -2
- package/dist/chunks/{location-select-CFa00fy4.esm.js.map → location-select-z1C88kCy.esm.js.map} +1 -1
- package/dist/chunks/{material-editable-table-BGLjrTzT.js → material-editable-table-DFGB0q-s.js} +3 -3
- package/dist/chunks/{material-editable-table-BGLjrTzT.js.map → material-editable-table-DFGB0q-s.js.map} +1 -1
- package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js → material-editable-table-DyGdqNkX.esm.js} +4 -4
- package/dist/chunks/{material-editable-table-pAyK7KYf.esm.js.map → material-editable-table-DyGdqNkX.esm.js.map} +1 -1
- package/dist/chunks/{module-reducer-DMxxForv.esm.js → module-reducer-CEv3LZCX.esm.js} +2 -2
- package/dist/chunks/{module-reducer-DMxxForv.esm.js.map → module-reducer-CEv3LZCX.esm.js.map} +1 -1
- package/dist/chunks/{modules-BZNWOWrz.js → modules-DTRr7zwt.js} +2 -2
- package/dist/chunks/{modules-BZNWOWrz.js.map → modules-DTRr7zwt.js.map} +1 -1
- package/dist/chunks/{modules-CWV4WSHs.esm.js → modules-enwLrpfQ.esm.js} +2 -2
- package/dist/chunks/{modules-CWV4WSHs.esm.js.map → modules-enwLrpfQ.esm.js.map} +1 -1
- package/dist/chunks/{notification-menu-D7ASm-K1.js → notification-menu-B00hDUbn.js} +2 -2
- package/dist/chunks/{notification-menu-D7ASm-K1.js.map → notification-menu-B00hDUbn.js.map} +1 -1
- package/dist/chunks/{notification-menu-XAadkn-e.esm.js → notification-menu-CehCt5fA.esm.js} +4 -4
- package/dist/chunks/{notification-menu-XAadkn-e.esm.js.map → notification-menu-CehCt5fA.esm.js.map} +1 -1
- package/dist/chunks/{page-action-C07iGjvN.esm.js → page-action-RqVevciV.esm.js} +4 -4
- package/dist/chunks/{page-action-C07iGjvN.esm.js.map → page-action-RqVevciV.esm.js.map} +1 -1
- package/dist/chunks/{page-action-BPzaL2KJ.js → page-action-TMFOytDw.js} +2 -2
- package/dist/chunks/{page-action-BPzaL2KJ.js.map → page-action-TMFOytDw.js.map} +1 -1
- package/dist/chunks/{page-navigator-8gZpp9_P.esm.js → page-navigator-CuIJ0KGf.esm.js} +2 -2
- package/dist/chunks/{page-navigator-8gZpp9_P.esm.js.map → page-navigator-CuIJ0KGf.esm.js.map} +1 -1
- package/dist/chunks/{page-navigator-Cgbh3tTG.js → page-navigator-DdRsmtLy.js} +2 -2
- package/dist/chunks/{page-navigator-Cgbh3tTG.js.map → page-navigator-DdRsmtLy.js.map} +1 -1
- package/dist/chunks/{page-view-DJ6HS_dV.js → page-view-CvfqzV03.js} +3 -3
- package/dist/chunks/{page-view-DJ6HS_dV.js.map → page-view-CvfqzV03.js.map} +1 -1
- package/dist/chunks/{page-view-CokUNMBn.esm.js → page-view-Daz-OKd_.esm.js} +3 -3
- package/dist/chunks/{page-view-CokUNMBn.esm.js.map → page-view-Daz-OKd_.esm.js.map} +1 -1
- package/dist/chunks/{pathname.rental-qsAe3XFd.esm.js → pathname.rental-CqHO_l_D.esm.js} +76 -81
- package/dist/chunks/{pathname.rental-qsAe3XFd.esm.js.map → pathname.rental-CqHO_l_D.esm.js.map} +1 -1
- package/dist/chunks/{pathname.rental-DgH4LoG7.js → pathname.rental-CwK6JuID.js} +2 -7
- package/dist/chunks/{pathname.rental-DgH4LoG7.js.map → pathname.rental-CwK6JuID.js.map} +1 -1
- package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js → quick-approval-modal-B-jvkgue.esm.js} +2 -2
- package/dist/chunks/{quick-approval-modal-CPWs8htH.esm.js.map → quick-approval-modal-B-jvkgue.esm.js.map} +1 -1
- package/dist/chunks/{reducer-CdJ6znKF.esm.js → reducer-BMkh_0Py.esm.js} +3 -3
- package/dist/chunks/{reducer-CdJ6znKF.esm.js.map → reducer-BMkh_0Py.esm.js.map} +1 -1
- package/dist/chunks/{reducer-3tSO6RW6.esm.js → reducer-BOwyP0QZ.esm.js} +3 -3
- package/dist/chunks/{reducer-3tSO6RW6.esm.js.map → reducer-BOwyP0QZ.esm.js.map} +1 -1
- package/dist/chunks/{reducer-IsgN83rP.esm.js → reducer-BTfG9J4W.esm.js} +2 -2
- package/dist/chunks/{reducer-IsgN83rP.esm.js.map → reducer-BTfG9J4W.esm.js.map} +1 -1
- package/dist/chunks/{reducer-yyZtsg1A.esm.js → reducer-BWiX5vxL.esm.js} +2 -2
- package/dist/chunks/{reducer-yyZtsg1A.esm.js.map → reducer-BWiX5vxL.esm.js.map} +1 -1
- package/dist/chunks/{reducer-sgaK2vfW.esm.js → reducer-CD1VDqeT.esm.js} +2 -2
- package/dist/chunks/{reducer-sgaK2vfW.esm.js.map → reducer-CD1VDqeT.esm.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-Kz6JjqsY.js → reports-title-bar-B1_IweEc.js} +2 -2
- package/dist/chunks/{reports-title-bar-Kz6JjqsY.js.map → reports-title-bar-B1_IweEc.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js → reports-title-bar-Kl8XQe-K.esm.js} +4 -4
- package/dist/chunks/{reports-title-bar-Cay4E8SQ.esm.js.map → reports-title-bar-Kl8XQe-K.esm.js.map} +1 -1
- package/dist/chunks/{route-page-map-Dn-SAbdf.js → route-page-map-CzFUh-SC.js} +3 -60
- package/dist/chunks/{route-page-map-Dn-SAbdf.js.map → route-page-map-CzFUh-SC.js.map} +1 -1
- package/dist/chunks/{route-page-map-DkWoisiB.esm.js → route-page-map-D6-7jBQT.esm.js} +76 -133
- package/dist/chunks/{route-page-map-DkWoisiB.esm.js.map → route-page-map-D6-7jBQT.esm.js.map} +1 -1
- package/dist/chunks/{routes-Be8qxaVS.esm.js → routes-D9y_XQRu.esm.js} +4 -4
- package/dist/chunks/{routes-Be8qxaVS.esm.js.map → routes-D9y_XQRu.esm.js.map} +1 -1
- package/dist/chunks/{routes-Bi8lChPT.js → routes-Dsumzjw0.js} +4 -4
- package/dist/chunks/{routes-Bi8lChPT.js.map → routes-Dsumzjw0.js.map} +1 -1
- package/dist/chunks/{schedule-report-B4ZfEuiU.js → schedule-report-BwmZ5jea.js} +4 -4
- package/dist/chunks/{schedule-report-B4ZfEuiU.js.map → schedule-report-BwmZ5jea.js.map} +1 -1
- package/dist/chunks/{schedule-report-CLXjjfjc.esm.js → schedule-report-CJXHVZ68.esm.js} +6 -6
- package/dist/chunks/{schedule-report-CLXjjfjc.esm.js.map → schedule-report-CJXHVZ68.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js → schedule-report-modal-D8Y-TZ4u.esm.js} +3 -3
- package/dist/chunks/{schedule-report-modal-CB3G9H7x.esm.js.map → schedule-report-modal-D8Y-TZ4u.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-iwoDI-sg.js → schedule-report-modal-iNnWP9s4.js} +2 -2
- package/dist/chunks/{schedule-report-modal-iwoDI-sg.js.map → schedule-report-modal-iNnWP9s4.js.map} +1 -1
- package/dist/chunks/{searchable-select-0F6E4XAr.esm.js → searchable-select-BQtcqBKV.esm.js} +6 -6
- package/dist/chunks/{searchable-select-0F6E4XAr.esm.js.map → searchable-select-BQtcqBKV.esm.js.map} +1 -1
- package/dist/chunks/{searchable-select-_DCkITfk.js → searchable-select-DVUCWWti.js} +2 -2
- package/dist/chunks/{searchable-select-_DCkITfk.js.map → searchable-select-DVUCWWti.js.map} +1 -1
- package/dist/chunks/{share-modal-BaEyZs2h.esm.js → share-modal-BOyLBawK.esm.js} +3 -3
- package/dist/chunks/{share-modal-BaEyZs2h.esm.js.map → share-modal-BOyLBawK.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-DrXvh-fV.js → share-modal-CobK7BN7.js} +2 -2
- package/dist/chunks/{share-modal-DrXvh-fV.js.map → share-modal-CobK7BN7.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js → share-modal-enhanced-CTp-tQw8.esm.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-DnEdDBmu.esm.js.map → share-modal-enhanced-CTp-tQw8.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js → share-modal-enhanced-DVarD-jt.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-BTr0zRhF.js.map → share-modal-enhanced-DVarD-jt.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-3iZYCAMn.js → sidebarScreen-K-dlM6NA.js} +2 -2
- package/dist/chunks/{sidebarScreen-3iZYCAMn.js.map → sidebarScreen-K-dlM6NA.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-CYUn8OsB.esm.js → sidebarScreen-lR6rw8bW.esm.js} +4 -4
- package/dist/chunks/{sidebarScreen-CYUn8OsB.esm.js.map → sidebarScreen-lR6rw8bW.esm.js.map} +1 -1
- package/dist/chunks/{store-BL5VFPie.esm.js → store-DJh8C3Vv.esm.js} +6 -6
- package/dist/chunks/{store-BL5VFPie.esm.js.map → store-DJh8C3Vv.esm.js.map} +1 -1
- package/dist/chunks/{table-DWx7x8zw.js → table-Bpt6ggr3.js} +2 -2
- package/dist/chunks/{table-DWx7x8zw.js.map → table-Bpt6ggr3.js.map} +1 -1
- package/dist/chunks/{table-gxAlAeTq.esm.js → table-DI3MyTNm.esm.js} +3 -3
- package/dist/chunks/{table-gxAlAeTq.esm.js.map → table-DI3MyTNm.esm.js.map} +1 -1
- package/dist/chunks/{table-form-DsTwCUcs.esm.js → table-form-8_f3FwhX.esm.js} +2 -2
- package/dist/chunks/{table-form-DsTwCUcs.esm.js.map → table-form-8_f3FwhX.esm.js.map} +1 -1
- package/dist/chunks/{template-editor-router-BRxF8Dj_.js → template-editor-router-DugWbCh0.js} +2 -2
- package/dist/chunks/{template-editor-router-BRxF8Dj_.js.map → template-editor-router-DugWbCh0.js.map} +1 -1
- package/dist/chunks/{template-editor-router-BV5FrwJm.esm.js → template-editor-router-uzghBOap.esm.js} +2 -2
- package/dist/chunks/{template-editor-router-BV5FrwJm.esm.js.map → template-editor-router-uzghBOap.esm.js.map} +1 -1
- package/dist/chunks/{template-modal-B2VgotrF.esm.js → template-modal-D7aLacan.esm.js} +7 -6
- package/dist/chunks/template-modal-D7aLacan.esm.js.map +1 -0
- package/dist/chunks/{template-modal-X-iSmlki.js → template-modal-Df7gF4QI.js} +5 -4
- package/dist/chunks/template-modal-Df7gF4QI.js.map +1 -0
- package/dist/chunks/{template-name-modal-CeqxIE2r.js → template-name-modal-ClreVUaz.js} +12 -5
- package/dist/chunks/template-name-modal-ClreVUaz.js.map +1 -0
- package/dist/chunks/{template-name-modal-Dctn8t3t.esm.js → template-name-modal-Dwe7U72p.esm.js} +12 -5
- package/dist/chunks/template-name-modal-Dwe7U72p.esm.js.map +1 -0
- package/dist/chunks/{templates-DxvU4PQY.esm.js → templates-9ZMHwRR6.esm.js} +9 -9
- package/dist/chunks/templates-9ZMHwRR6.esm.js.map +1 -0
- package/dist/chunks/{templates-BY9HF32G.js → templates-DCXbeOtH.js} +6 -6
- package/dist/chunks/templates-DCXbeOtH.js.map +1 -0
- package/dist/chunks/{text-measurement-BCjauPbB.esm.js → text-measurement-DMVkqP6b.esm.js} +2 -2
- package/dist/chunks/{text-measurement-BCjauPbB.esm.js.map → text-measurement-DMVkqP6b.esm.js.map} +1 -1
- package/dist/chunks/{translations-BrwQcVN3.esm.js → translations-JcE6qyDJ.esm.js} +3 -3
- package/dist/chunks/{translations-BrwQcVN3.esm.js.map → translations-JcE6qyDJ.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js → uom-field-wrapper-CSqeiVPY.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-DXZgzOYB.js.map → uom-field-wrapper-CSqeiVPY.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js → uom-field-wrapper-CWTsSsSi.esm.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-CTbEc-MB.esm.js.map → uom-field-wrapper-CWTsSsSi.esm.js.map} +1 -1
- package/dist/chunks/{upload-excel-BZPP13tP.esm.js → upload-excel-CkEQqZW2.esm.js} +2 -2
- package/dist/chunks/{upload-excel-BZPP13tP.esm.js.map → upload-excel-CkEQqZW2.esm.js.map} +1 -1
- package/dist/chunks/{use-translations-BzykVZOP.esm.js → use-translations-BqBPN1DM.esm.js} +3 -3
- package/dist/chunks/{use-translations-BzykVZOP.esm.js.map → use-translations-BqBPN1DM.esm.js.map} +1 -1
- package/dist/chunks/{use-translations-CNI_xsIo.js → use-translations-Cn3b4Kqh.js} +2 -2
- package/dist/chunks/{use-translations-CNI_xsIo.js.map → use-translations-Cn3b4Kqh.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js → useAccountSetting-DsU5zsjb.esm.js} +2 -2
- package/dist/chunks/{useAccountSetting-vAqgEiJB.esm.js.map → useAccountSetting-DsU5zsjb.esm.js.map} +1 -1
- package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js → useCheckSkuAndName-5ua30aZf.esm.js} +2 -2
- package/dist/chunks/{useCheckSkuAndName-Dl24wQO-.esm.js.map → useCheckSkuAndName-5ua30aZf.esm.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js → useReduxIntegration-BlLpfwk6.esm.js} +2 -2
- package/dist/chunks/{useReduxIntegration-DZBfKF7d.esm.js.map → useReduxIntegration-BlLpfwk6.esm.js.map} +1 -1
- package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js → useUniquenessCheck-CiR2q5bM.esm.js} +2 -2
- package/dist/chunks/{useUniquenessCheck-bYjnp_0P.esm.js.map → useUniquenessCheck-CiR2q5bM.esm.js.map} +1 -1
- package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js → useVendorAICompare-DMJvJJ3Y.esm.js} +2 -2
- package/dist/chunks/{useVendorAICompare-DZRFDk4i.esm.js.map → useVendorAICompare-DMJvJJ3Y.esm.js.map} +1 -1
- package/dist/chunks/{value-editor-BSS9Ns2T.js → value-editor-Br7X_wEB.js} +2 -2
- package/dist/chunks/{value-editor-BSS9Ns2T.js.map → value-editor-Br7X_wEB.js.map} +1 -1
- package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js → value-editor-BxFdnUyM.esm.js} +4 -4
- package/dist/chunks/{value-editor-DQ1qgZ2u.esm.js.map → value-editor-BxFdnUyM.esm.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js → vendor-ai-summary-Cpx90QOx.esm.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-BA6m2dH9.esm.js.map → vendor-ai-summary-Cpx90QOx.esm.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js → vendor-ai-summary-zranZkfk.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-DWmAaQ_N.js.map → vendor-ai-summary-zranZkfk.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/index.esm.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/index.esm.js +1 -1
- package/dist/components/chat-bot/index.esm.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/index.esm.js +1 -1
- package/dist/components/custom-forms/index.esm.js +2 -2
- package/dist/components/custom-forms/index.js +1 -1
- 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/index.esm.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/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 +3 -3
- 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 +3 -3
- 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 +5 -5
- package/dist/components/header/components/app-switcher/index.esm.js +1 -1
- package/dist/components/header/components/app-switcher/index.js +1 -1
- 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 +3 -3
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/index.esm.js +2 -2
- package/dist/components/header/redux/reducer/index.esm.js +1 -1
- package/dist/components/index.esm.js +36 -36
- package/dist/components/index.js +26 -26
- package/dist/components/inventory-reports-title-bar/index.esm.js +3 -3
- package/dist/components/inventory-reports-title-bar/index.js +1 -1
- 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/index.esm.js +2 -2
- package/dist/components/inventory-reports-title-bar/redux/reducer/index.esm.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/index.esm.js +1 -1
- package/dist/components/quick-approval-modal/index.esm.js +1 -1
- package/dist/components/quick-approval-modal/quick-approval-modal/index.esm.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js +1 -1
- package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js +1 -1
- package/dist/components/reports/dynamic-report/index.esm.js +2 -2
- package/dist/components/reports/index.esm.js +2 -2
- package/dist/components/reports-title-bar/index.esm.js +3 -3
- package/dist/components/reports-title-bar/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/index.esm.js +2 -2
- package/dist/components/reports-title-bar/redux/reducer/index.esm.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/schedule-report/utils/common/index.esm.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 +2 -2
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/index.esm.js +2 -2
- package/dist/components/share-modal/redux/reducer/index.esm.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/upload-excel/index.esm.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/constants/index.esm.js +143 -145
- package/dist/constants/index.js +3 -5
- package/dist/constants/index.js.map +1 -1
- package/dist/hooks/index.esm.js +6 -6
- package/dist/hooks/index.js +1 -1
- 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/useCheckSkuAndName/index.esm.js +1 -1
- package/dist/hooks/useReduxIntegration/index.esm.js +1 -1
- package/dist/hooks/useUniquenessCheck/index.esm.js +1 -1
- package/dist/index.esm.js +235 -232
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +66 -63
- package/dist/index.js.map +1 -1
- 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/runtime/index.esm.js +4 -4
- package/dist/runtime/index.js +2 -2
- package/dist/src/constants/defaultColumns.d.ts +0 -1
- package/dist/src/constants/pathnames/pathname.procurement.d.ts +0 -4
- package/dist/src/views/template-editor/components/EditorCanvas/FreeCanvas.d.ts +34 -0
- package/dist/src/views/template-editor/components/EditorCanvas/FreeElement.d.ts +30 -0
- package/dist/src/views/template-editor/components/EditorCanvas.d.ts +30 -12
- package/dist/src/views/template-editor/components/EditorHeader.d.ts +6 -0
- package/dist/src/views/template-editor/components/EditorSection.d.ts +1 -0
- package/dist/src/views/template-editor/components/SectionFlowEditor.d.ts +2 -3
- package/dist/src/views/template-editor/components/SectionFormatPanel.d.ts +2 -1
- package/dist/src/views/template-editor/components/controllers/TableControls.d.ts +23 -0
- package/dist/src/views/template-editor/components/controllers/TextControls.d.ts +3 -0
- package/dist/src/views/template-editor/components/stationery/StationeryPreview.d.ts +24 -0
- package/dist/src/views/template-editor/components/stationery/StationerySidebar.d.ts +9 -0
- package/dist/src/views/template-editor/engine/ai.d.ts +12 -0
- package/dist/src/views/template-editor/engine/app.d.ts +1 -0
- package/dist/src/views/template-editor/engine/controls.d.ts +4 -0
- package/dist/src/views/template-editor/engine/design-canvas.d.ts +24 -0
- package/dist/src/views/template-editor/engine/editor.d.ts +17 -0
- package/dist/src/views/template-editor/engine/engine.d.ts +18 -0
- package/dist/src/views/template-editor/engine/icons.d.ts +91 -0
- package/dist/src/views/template-editor/engine/letterpads.d.ts +1 -0
- package/dist/src/views/template-editor/engine/model.d.ts +20 -0
- package/dist/src/views/template-editor/engine/paginator.d.ts +30 -0
- package/dist/src/views/template-editor/engine/picker.d.ts +20 -0
- package/dist/src/views/template-editor/engine/schema.d.ts +647 -0
- package/dist/src/views/template-editor/engine/stationery-app.d.ts +10 -0
- package/dist/src/views/template-editor/engine/stationery-doc.d.ts +62 -0
- package/dist/src/views/template-editor/engine/stationery-free-element.d.ts +22 -0
- package/dist/src/views/template-editor/engine/stationery-store.d.ts +154 -0
- package/dist/src/views/template-editor/engine/templatebuilder.d.ts +51 -0
- package/dist/src/views/template-editor/engine/templates.d.ts +11 -0
- package/dist/src/views/template-editor/icons/custom-styled-icon.d.ts +7 -0
- package/dist/src/views/template-editor/icons/edit.d.ts +4 -0
- package/dist/src/views/template-editor/icons/trash.d.ts +4 -0
- package/dist/src/views/template-editor/types/editor.d.ts +20 -108
- package/dist/src/views/template-editor/types/stationery.d.ts +66 -0
- package/dist/src/views/template-editor/utils/common.d.ts +10 -1
- package/dist/src/views/template-editor/utils/compiler.d.ts +12 -0
- package/dist/src/views/template-editor/utils/constant.d.ts +4 -1
- package/dist/style.css +4619 -33
- package/dist/utils/api/index.esm.js +1 -1
- package/dist/utils/common/index.esm.js +1 -1
- package/dist/utils/common-utility/index.esm.js +1 -1
- package/dist/utils/export-filters/index.esm.js +0 -1
- package/dist/utils/export-filters/index.esm.js.map +1 -1
- package/dist/utils/export-filters/index.js +0 -1
- package/dist/utils/export-filters/index.js.map +1 -1
- package/dist/utils/index.esm.js +8 -8
- package/dist/utils/server/index.esm.js +2 -2
- package/dist/utils/text-measurement/index.esm.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/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 +5 -5
- package/dist/views/form-builder/index.js +3 -3
- package/dist/views/form-builder/redux/index.esm.js +1 -1
- package/dist/views/form-builder/utils/index.esm.js +1 -1
- package/dist/views/form-builder/utils/index.js +1 -1
- package/dist/views/index.esm.js +39 -34
- package/dist/views/index.esm.js.map +1 -1
- package/dist/views/index.js +36 -31
- package/dist/views/index.js.map +1 -1
- 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 +7 -6
- package/dist/views/template-editor/components/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/index.js +4 -3
- package/dist/views/template-editor/components/index.js.map +1 -1
- package/dist/views/template-editor/edit-section-modal/index.esm.js +1 -1
- package/dist/views/template-editor/index.esm.js +25 -20
- package/dist/views/template-editor/index.esm.js.map +1 -1
- package/dist/views/template-editor/index.js +16 -11
- package/dist/views/template-editor/index.js.map +1 -1
- 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/template-name-modal/index.esm.js +1 -1
- package/dist/views/template-editor/template-name-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/dist/views/template-editor/utils/index.esm.js +10 -6
- package/dist/views/template-editor/utils/index.js +6 -2
- package/dist/views/template-editor/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js +0 -5479
- package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js.map +0 -1
- package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js +0 -5478
- package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js.map +0 -1
- package/dist/chunks/add-template-DVvbD9a4.esm.js +0 -11
- package/dist/chunks/add-template-DVvbD9a4.esm.js.map +0 -1
- package/dist/chunks/add-template-Dohg2bHJ.js +0 -10
- package/dist/chunks/add-template-Dohg2bHJ.js.map +0 -1
- package/dist/chunks/common-C5AokA7z.js +0 -368
- package/dist/chunks/common-C5AokA7z.js.map +0 -1
- package/dist/chunks/common-CaomnEjX.esm.js +0 -369
- package/dist/chunks/common-CaomnEjX.esm.js.map +0 -1
- package/dist/chunks/common-utility-DGpbsf7S.esm.js.map +0 -1
- package/dist/chunks/constant-Bwg2s_Sn.esm.js.map +0 -1
- package/dist/chunks/constant-ZYAN_teD.js.map +0 -1
- package/dist/chunks/edit-section-modal-BW-aZmUv.esm.js.map +0 -1
- package/dist/chunks/template-modal-B2VgotrF.esm.js.map +0 -1
- package/dist/chunks/template-modal-X-iSmlki.js.map +0 -1
- package/dist/chunks/template-name-modal-CeqxIE2r.js.map +0 -1
- package/dist/chunks/template-name-modal-Dctn8t3t.esm.js.map +0 -1
- package/dist/chunks/templates-BY9HF32G.js.map +0 -1
- package/dist/chunks/templates-DxvU4PQY.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-editor-6-xqhKz6.esm.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":["adapter","protectedHtml","map","error","_","_a","LinkIcon","ImageIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custom-editor-C-B5BK-H.esm.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":["adapter","protectedHtml","map","error","_","_a","LinkIcon","ImageIcon"],"mappings":"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"}
|
|
@@ -21,15 +21,15 @@ import { T as Toast } from "./toast-P3z45nme.esm.js";
|
|
|
21
21
|
import { R as Radio } from "./radio-BIyDp0wj.esm.js";
|
|
22
22
|
import { SECTION_TYPES } from "../utils/constant/index.esm.js";
|
|
23
23
|
import { E as ErpLoader } from "./erp-loader-CFXstBcW.esm.js";
|
|
24
|
-
import { W as getErrorMessage } from "./api-
|
|
25
|
-
import { F as FormParser } from "./form-parser-
|
|
24
|
+
import { W as getErrorMessage } from "./api-8jutPLh0.esm.js";
|
|
25
|
+
import { F as FormParser } from "./form-parser-ZQpEVrzG.esm.js";
|
|
26
26
|
import { E as EyeOff } from "./eye-off-BkSROLwZ.esm.js";
|
|
27
27
|
import { E as Eye } from "./eye-CByHBTch.esm.js";
|
|
28
|
-
import { p as patchFormDataById, c as resetState, a as getFormDataById, g as getFieldsByFormId } from "./reducer-
|
|
28
|
+
import { p as patchFormDataById, c as resetState, a as getFormDataById, g as getFieldsByFormId } from "./reducer-BMkh_0Py.esm.js";
|
|
29
29
|
import { element } from "../views/form-builder/field_properties/index.esm.js";
|
|
30
|
-
import { b as TextEditForm, a as SelectEditForm, S as SectionEditForm, C as CheckboxEditForm, T as TableEditForm } from "./table-form-
|
|
31
|
-
import { a as FormFields } from "./form-fields-
|
|
32
|
-
import { a as generateModulePath, u as useFormDataEffect } from "./common-
|
|
30
|
+
import { b as TextEditForm, a as SelectEditForm, S as SectionEditForm, C as CheckboxEditForm, T as TableEditForm } from "./table-form-8_f3FwhX.esm.js";
|
|
31
|
+
import { a as FormFields } from "./form-fields-Di-p9XKG.esm.js";
|
|
32
|
+
import { a as generateModulePath, u as useFormDataEffect } from "./common-Cl5oGXmX.esm.js";
|
|
33
33
|
const DEFAULT_GRID_COLUMNS = 12;
|
|
34
34
|
const DEFAULT_COLUMN_WIDTH = 2;
|
|
35
35
|
const DEFAULT_TAB_TITLE = "data";
|
|
@@ -1143,4 +1143,4 @@ function CustomForm({ redirectionPath }) {
|
|
|
1143
1143
|
export {
|
|
1144
1144
|
CustomForm as C
|
|
1145
1145
|
};
|
|
1146
|
-
//# sourceMappingURL=custom-form-
|
|
1146
|
+
//# sourceMappingURL=custom-form-DNUpk0nq.esm.js.map
|