@erpsquad/common 1.8.81 → 1.8.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +253 -253
- package/README.md +979 -979
- package/dist/_virtual/index/index.esm10.js +3 -3
- package/dist/_virtual/index/index.esm11.js +3 -3
- package/dist/_virtual/index/index.esm4.js +1 -1
- package/dist/_virtual/index/index.esm5.js +3 -3
- package/dist/_virtual/index/index.esm6.js +3 -3
- package/dist/_virtual/index/index.esm7.js +3 -3
- package/dist/_virtual/index/index.esm8.js +3 -3
- package/dist/_virtual/index/index.esm9.js +3 -3
- package/dist/_virtual/index/index10.js +1 -1
- package/dist/_virtual/index/index11.js +1 -1
- package/dist/_virtual/index/index4.js +1 -1
- package/dist/_virtual/index/index5.js +1 -1
- package/dist/_virtual/index/index6.js +1 -1
- package/dist/_virtual/index/index7.js +1 -1
- package/dist/_virtual/index/index8.js +1 -1
- package/dist/_virtual/index/index9.js +1 -1
- package/dist/api-client/api.accounting/api/index.esm.js.map +1 -1
- package/dist/api-client/api.accounting/api/index.js.map +1 -1
- package/dist/api-client/api.accounting/api-types.d.ts +15883 -15883
- package/dist/api-client/api.drive/api/index.esm.js.map +1 -1
- package/dist/api-client/api.drive/api/index.js.map +1 -1
- package/dist/api-client/api.drive/api-types.d.ts +696 -696
- package/dist/api-client/api.hrms/api/index.esm.js.map +1 -1
- package/dist/api-client/api.hrms/api/index.js.map +1 -1
- package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
- package/dist/api-client/api.inventory/api/index.js.map +1 -1
- package/dist/api-client/api.inventory/api-types.d.ts +6110 -6110
- package/dist/api-client/api.manufacturing/api/index.esm.js.map +1 -1
- package/dist/api-client/api.manufacturing/api/index.js.map +1 -1
- package/dist/api-client/api.manufacturing/api-types.d.ts +10066 -10066
- package/dist/api-client/api.purchase/api/index.esm.js.map +1 -1
- package/dist/api-client/api.purchase/api/index.js.map +1 -1
- package/dist/api-client/api.purchase/api-types.d.ts +6715 -6715
- package/dist/api-client/api.rbac/api/index.esm.js.map +1 -1
- package/dist/api-client/api.rbac/api/index.esm2.js.map +1 -1
- package/dist/api-client/api.rbac/api/index.js.map +1 -1
- package/dist/api-client/api.rbac/api/index2.js.map +1 -1
- package/dist/api-client/api.rbac/api-types.d.ts +1753 -1753
- package/dist/api-client/api.rental/api/index.esm.js.map +1 -1
- package/dist/api-client/api.rental/api/index.js.map +1 -1
- package/dist/api-client/api.rental/api-types.d.ts +15666 -15666
- package/dist/api-client/api.sales/api/index.esm.js.map +1 -1
- package/dist/api-client/api.sales/api/index.js.map +1 -1
- package/dist/api-client/api.sales/api-types.d.ts +8258 -8258
- package/dist/api-client/api.system-feature/api/index.esm.js.map +1 -1
- package/dist/api-client/api.system-feature/api/index.js.map +1 -1
- package/dist/api-client/api.system-feature/api-types.d.ts +2875 -2875
- package/dist/api-client/api.user/api/index.esm.js.map +1 -1
- package/dist/api-client/api.user/api/index.js.map +1 -1
- package/dist/api-client/api.user/api-types.d.ts +95 -95
- package/dist/api-client/api.workflow-automation/api/index.esm.js.map +1 -1
- package/dist/api-client/api.workflow-automation/api/index.js.map +1 -1
- package/dist/api-client/index.d.ts +39 -39
- package/dist/components/accordion/accordion/index.esm.js.map +1 -1
- package/dist/components/accordion/accordion/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +5 -5
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/action-bar.d.ts +1 -1
- package/dist/components/activity-tag/activity-tag/index.esm.js.map +1 -1
- package/dist/components/activity-tag/activity-tag/index.js.map +1 -1
- package/dist/components/alert/alert/index.esm.js.map +1 -1
- package/dist/components/alert/alert/index.js.map +1 -1
- package/dist/components/button/button/index.esm.js.map +1 -1
- package/dist/components/button/button/index.js.map +1 -1
- package/dist/components/change-user-password-modal/change-user-password-modal/index.esm.js.map +1 -1
- package/dist/components/change-user-password-modal/change-user-password-modal/index.js.map +1 -1
- package/dist/components/checkbox/checkbox/index.esm.js.map +1 -1
- package/dist/components/checkbox/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/chip/chip/index.esm.js.map +1 -1
- package/dist/components/chip/chip/index.js.map +1 -1
- package/dist/components/chip-generator/chip-generator/index.esm.js.map +1 -1
- package/dist/components/chip-generator/chip-generator/index.js.map +1 -1
- package/dist/components/date-picker/date-picker/index.esm.js.map +1 -1
- package/dist/components/date-picker/date-picker/index.js.map +1 -1
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/date-time-picker/date-time-picker/index.esm.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker/index.js.map +1 -1
- package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
- package/dist/components/editor/custom-editor/index.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.esm.js +0 -1
- package/dist/components/filter/components/delete-group/index.esm.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.js +1 -1
- package/dist/components/filter/components/delete-group/index.js.map +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +7 -7
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/footer/footer.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/components/header/header/index.esm.js.map +1 -1
- package/dist/components/header/header/index.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js.map +1 -1
- package/dist/components/icons/action/index.esm.js.map +1 -1
- package/dist/components/icons/action/index.js.map +1 -1
- package/dist/components/icons/action-arrow.d.ts +3 -3
- package/dist/components/icons/add-circle.d.ts +3 -3
- package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/components/icons/arrow-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/components/icons/assignments.d.ts +3 -3
- package/dist/components/icons/blank-circle.d.ts +3 -3
- package/dist/components/icons/block-filled.d.ts +3 -3
- package/dist/components/icons/calendar-add.d.ts +3 -3
- package/dist/components/icons/calendar.d.ts +3 -3
- package/dist/components/icons/checkbox-square.d.ts +3 -3
- package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/components/icons/clock.d.ts +3 -3
- package/dist/components/icons/close.d.ts +3 -3
- package/dist/components/icons/coin-outline.d.ts +3 -3
- package/dist/components/icons/copy.d.ts +3 -3
- package/dist/components/icons/coupon.d.ts +3 -3
- package/dist/components/icons/criteria/index.esm.js.map +1 -1
- package/dist/components/icons/criteria/index.js.map +1 -1
- package/dist/components/icons/cross/index.esm.js.map +1 -1
- package/dist/components/icons/cross/index.js.map +1 -1
- package/dist/components/icons/cross-hire.d.ts +3 -3
- package/dist/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/components/icons/dashboard.d.ts +3 -3
- package/dist/components/icons/document-download.d.ts +3 -3
- package/dist/components/icons/document.d.ts +3 -3
- package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/components/icons/dollar-circle.d.ts +3 -3
- package/dist/components/icons/edit.d.ts +3 -3
- package/dist/components/icons/email.d.ts +3 -3
- package/dist/components/icons/export.d.ts +3 -3
- package/dist/components/icons/eye-off.d.ts +3 -3
- package/dist/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/components/icons/eye.d.ts +3 -3
- package/dist/components/icons/filled-circle.d.ts +3 -3
- package/dist/components/icons/filter-remove.d.ts +3 -3
- package/dist/components/icons/filter.d.ts +3 -3
- package/dist/components/icons/folder-save.d.ts +3 -3
- package/dist/components/icons/grid.d.ts +3 -3
- package/dist/components/icons/hashtag.d.ts +3 -3
- package/dist/components/icons/image.d.ts +3 -3
- package/dist/components/icons/import.d.ts +3 -3
- package/dist/components/icons/info-circle.d.ts +3 -3
- package/dist/components/icons/info.d.ts +3 -3
- package/dist/components/icons/link-horizontal.d.ts +3 -3
- package/dist/components/icons/link.d.ts +3 -3
- package/dist/components/icons/location.d.ts +3 -3
- package/dist/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/components/icons/lowest-price.d.ts +3 -3
- package/dist/components/icons/more.d.ts +3 -3
- package/dist/components/icons/notification.d.ts +3 -3
- package/dist/components/icons/paper-clip.d.ts +3 -3
- package/dist/components/icons/paragraph.d.ts +3 -3
- package/dist/components/icons/payment-request.d.ts +3 -3
- package/dist/components/icons/phone.d.ts +3 -3
- package/dist/components/icons/printer.d.ts +3 -3
- package/dist/components/icons/process-calendar.d.ts +3 -3
- package/dist/components/icons/promotion.d.ts +3 -3
- package/dist/components/icons/radio-button.d.ts +3 -3
- package/dist/components/icons/receipt-filled.d.ts +3 -3
- package/dist/components/icons/receipt-outline.d.ts +3 -3
- package/dist/components/icons/receipt.d.ts +3 -3
- package/dist/components/icons/refresh-icon.d.ts +3 -3
- package/dist/components/icons/replace.d.ts +3 -3
- package/dist/components/icons/save.d.ts +3 -3
- package/dist/components/icons/search-status.d.ts +3 -3
- package/dist/components/icons/search.d.ts +3 -3
- package/dist/components/icons/settings-fallback.d.ts +3 -3
- package/dist/components/icons/share/index.esm.js.map +1 -1
- package/dist/components/icons/share/index.js.map +1 -1
- package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/components/icons/stacked-layer.d.ts +3 -3
- package/dist/components/icons/start-filled.d.ts +3 -3
- package/dist/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/components/icons/tick-circle.d.ts +3 -3
- package/dist/components/icons/tick-octagon.d.ts +3 -3
- package/dist/components/icons/tick.d.ts +3 -3
- package/dist/components/icons/toggle-switch.d.ts +3 -3
- package/dist/components/icons/trash.d.ts +3 -3
- package/dist/components/icons/wave.d.ts +3 -3
- package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/components/icons/work-centre.d.ts +3 -3
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/label-value/label-value/index.esm.js.map +1 -1
- package/dist/components/label-value/label-value/index.js.map +1 -1
- package/dist/components/listing/listing/index.esm.js.map +1 -1
- package/dist/components/listing/listing/index.js.map +1 -1
- package/dist/components/loaders/erp-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/erp-loader/index.js.map +1 -1
- package/dist/components/loaders/form-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/form-loader/index.js.map +1 -1
- package/dist/components/loaders/modal-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/modal-loader/index.js.map +1 -1
- package/dist/components/loaders/page-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/page-loader/index.js.map +1 -1
- package/dist/components/location-select.d.ts +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js.map +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/components/material-table/material-table.d.ts +1 -1
- package/dist/components/menu/menu/index.esm.js.map +1 -1
- package/dist/components/menu/menu/index.js.map +1 -1
- package/dist/components/modal/modal/index.esm.js.map +1 -1
- package/dist/components/modal/modal/index.js.map +1 -1
- package/dist/components/page-navigator/page-navigator/index.esm.js.map +1 -1
- package/dist/components/page-navigator/page-navigator/index.js.map +1 -1
- package/dist/components/phone-input/phone-input.d.ts +1 -1
- package/dist/components/providers/ERPUIProvider/index.esm.js.map +1 -1
- package/dist/components/providers/ERPUIProvider/index.js.map +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/reset-password-modal/reset-password-modal/index.esm.js.map +1 -1
- package/dist/components/reset-password-modal/reset-password-modal/index.js.map +1 -1
- package/dist/components/search-bar/search-bar/index.esm.js.map +1 -1
- package/dist/components/search-bar/search-bar/index.js.map +1 -1
- package/dist/components/searchable-select/index.esm.js.map +1 -1
- package/dist/components/searchable-select/index.js.map +1 -1
- package/dist/components/select/controller/chip-or-placeholder/index.esm.js.map +1 -1
- package/dist/components/select/controller/chip-or-placeholder/index.js.map +1 -1
- package/dist/components/select/select/index.esm.js.map +1 -1
- package/dist/components/select/select/index.js.map +1 -1
- package/dist/components/select/select-search/index.esm.js.map +1 -1
- package/dist/components/select/select-search/index.js.map +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
- package/dist/components/sub-header-doc/sub-header-doc/index.esm.js.map +1 -1
- package/dist/components/sub-header-doc/sub-header-doc/index.js.map +1 -1
- package/dist/components/switches/android-12-switch/index.esm.js.map +1 -1
- package/dist/components/switches/android-12-switch/index.js.map +1 -1
- package/dist/components/switches/android-12-switch.d.ts +3 -1
- package/dist/components/text-area/text-area/index.esm.js.map +1 -1
- package/dist/components/text-area/text-area/index.js.map +1 -1
- package/dist/components/text-field/text-field/index.esm.js.map +1 -1
- package/dist/components/text-field/text-field/index.js.map +1 -1
- package/dist/components/text-field/text-field.d.ts +1 -1
- package/dist/components/time-picker/time-picker/index.esm.js.map +1 -1
- package/dist/components/time-picker/time-picker/index.js.map +1 -1
- package/dist/components/time-picker/time-picker.d.ts +1 -1
- package/dist/components/toast/toast/index.esm.js.map +1 -1
- package/dist/components/toast/toast/index.js.map +1 -1
- package/dist/components/toggle/toggle/index.esm.js.map +1 -1
- package/dist/components/toggle/toggle/index.js.map +1 -1
- package/dist/components/typography/typography/index.esm.js.map +1 -1
- package/dist/components/typography/typography/index.js.map +1 -1
- package/dist/components/upload/upload/index.esm.js +2 -2
- package/dist/components/upload/upload/index.esm.js.map +1 -1
- package/dist/components/upload/upload/index.js +11 -11
- package/dist/components/upload/upload/index.js.map +1 -1
- package/dist/components/upload-media/upload-media.d.ts +1 -1
- package/dist/constants/defaultColumns/index.esm.js.map +1 -1
- package/dist/constants/defaultColumns/index.js.map +1 -1
- package/dist/constants/modules/index.esm.js.map +1 -1
- package/dist/constants/modules/index.js.map +1 -1
- package/dist/constants/pathnames/pathname/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.accounting/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.accounting/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.crm/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.crm/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.document/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.document/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.hrms/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.hrms/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.inventory/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.inventory/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.manufacturing/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.manufacturing/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.office/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.office/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.procurement/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.procurement/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.project/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.project/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.quotes/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.quotes/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.rental/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.rental/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.user/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.user/index.js.map +1 -1
- package/dist/constants/route-page-map/index.esm.js.map +1 -1
- package/dist/constants/route-page-map/index.js.map +1 -1
- package/dist/constants/status/index.esm.js.map +1 -1
- package/dist/constants/status/index.js.map +1 -1
- package/dist/contexts/AuthContext/index.esm.js +1 -1
- package/dist/contexts/AuthContext/index.esm.js.map +1 -1
- package/dist/contexts/AuthContext/index.js +1 -1
- package/dist/contexts/AuthContext/index.js.map +1 -1
- package/dist/contexts/languageContext/index.esm.js +1 -1
- package/dist/contexts/languageContext/index.esm.js.map +1 -1
- package/dist/contexts/languageContext/index.js +1 -1
- package/dist/contexts/languageContext/index.js.map +1 -1
- package/dist/contexts/page-context/index.esm.js.map +1 -1
- package/dist/contexts/page-context/index.js.map +1 -1
- package/dist/hooks/use-translations/index.esm.js.map +1 -1
- package/dist/hooks/use-translations/index.js.map +1 -1
- package/dist/hooks/useApi/index.esm.js.map +1 -1
- package/dist/hooks/useApi/index.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.esm.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.js.map +1 -1
- package/dist/layout/fullScreen/fullScreen/index.esm.js.map +1 -1
- package/dist/layout/fullScreen/fullScreen/index.js.map +1 -1
- package/dist/layout/sidebarScreen/sidebarScreen/index.esm.js.map +1 -1
- package/dist/layout/sidebarScreen/sidebarScreen/index.js.map +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.esm.js +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js +2 -2
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js.map +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
- package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
- package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.js.map +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
- package/dist/node_modules/{material-react-table/node_modules/@tanstack → @tanstack}/react-virtual/dist/esm/index/index.esm.js +2 -2
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +1 -0
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +2 -0
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +1 -0
- package/dist/node_modules/{@glideapps/glide-data-grid-cells/node_modules/@toast-ui → @toast-ui}/react-editor/dist/esm/index/index.esm.js +2 -2
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +1 -0
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +2 -0
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +1 -0
- package/dist/node_modules/material-react-table/dist/index.esm/index.esm.js +1 -1
- package/dist/node_modules/material-react-table/dist/index.esm/index.js +1 -1
- package/dist/node_modules/material-react-table/dist/index.esm/index.js.map +1 -1
- package/dist/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/redux/actionCreator/index.js.map +1 -1
- package/dist/redux/module-reducer/index.esm.js.map +1 -1
- package/dist/redux/module-reducer/index.js.map +1 -1
- package/dist/redux/store/index.esm.js.map +1 -1
- package/dist/redux/store/index.js.map +1 -1
- package/dist/server/index.esm.js.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/src/components/accordion/accordion.d.ts +1 -1
- package/dist/src/components/action-bar/action-bar.d.ts +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +1 -1
- package/dist/src/components/date-picker/date-picker.d.ts +1 -1
- package/dist/src/components/footer/footer.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/src/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/src/components/icons/action-arrow.d.ts +3 -3
- package/dist/src/components/icons/add-circle.d.ts +3 -3
- package/dist/src/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/src/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/src/components/icons/arrow-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/src/components/icons/assignments.d.ts +3 -3
- package/dist/src/components/icons/blank-circle.d.ts +3 -3
- package/dist/src/components/icons/block-filled.d.ts +3 -3
- package/dist/src/components/icons/calendar-add.d.ts +3 -3
- package/dist/src/components/icons/calendar.d.ts +3 -3
- package/dist/src/components/icons/checkbox-square.d.ts +3 -3
- package/dist/src/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/src/components/icons/clock.d.ts +3 -3
- package/dist/src/components/icons/close.d.ts +3 -3
- package/dist/src/components/icons/coin-outline.d.ts +3 -3
- package/dist/src/components/icons/copy.d.ts +3 -3
- package/dist/src/components/icons/coupon.d.ts +3 -3
- package/dist/src/components/icons/cross-hire.d.ts +3 -3
- package/dist/src/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/src/components/icons/dashboard.d.ts +3 -3
- package/dist/src/components/icons/document-download.d.ts +3 -3
- package/dist/src/components/icons/document.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle.d.ts +3 -3
- package/dist/src/components/icons/edit.d.ts +3 -3
- package/dist/src/components/icons/email.d.ts +3 -3
- package/dist/src/components/icons/export.d.ts +3 -3
- package/dist/src/components/icons/eye-off.d.ts +3 -3
- package/dist/src/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/src/components/icons/eye.d.ts +3 -3
- package/dist/src/components/icons/filled-circle.d.ts +3 -3
- package/dist/src/components/icons/filter-remove.d.ts +3 -3
- package/dist/src/components/icons/filter.d.ts +3 -3
- package/dist/src/components/icons/folder-save.d.ts +3 -3
- package/dist/src/components/icons/grid.d.ts +3 -3
- package/dist/src/components/icons/hashtag.d.ts +3 -3
- package/dist/src/components/icons/image.d.ts +3 -3
- package/dist/src/components/icons/import.d.ts +3 -3
- package/dist/src/components/icons/info-circle.d.ts +3 -3
- package/dist/src/components/icons/info.d.ts +3 -3
- package/dist/src/components/icons/link-horizontal.d.ts +3 -3
- package/dist/src/components/icons/link.d.ts +3 -3
- package/dist/src/components/icons/location.d.ts +3 -3
- package/dist/src/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/src/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/src/components/icons/lowest-price.d.ts +3 -3
- package/dist/src/components/icons/more.d.ts +3 -3
- package/dist/src/components/icons/notification.d.ts +3 -3
- package/dist/src/components/icons/paper-clip.d.ts +3 -3
- package/dist/src/components/icons/paragraph.d.ts +3 -3
- package/dist/src/components/icons/payment-request.d.ts +3 -3
- package/dist/src/components/icons/phone.d.ts +3 -3
- package/dist/src/components/icons/printer.d.ts +3 -3
- package/dist/src/components/icons/process-calendar.d.ts +3 -3
- package/dist/src/components/icons/promotion.d.ts +3 -3
- package/dist/src/components/icons/radio-button.d.ts +3 -3
- package/dist/src/components/icons/receipt-filled.d.ts +3 -3
- package/dist/src/components/icons/receipt-outline.d.ts +3 -3
- package/dist/src/components/icons/receipt.d.ts +3 -3
- package/dist/src/components/icons/refresh-icon.d.ts +3 -3
- package/dist/src/components/icons/replace.d.ts +3 -3
- package/dist/src/components/icons/save.d.ts +3 -3
- package/dist/src/components/icons/search-status.d.ts +3 -3
- package/dist/src/components/icons/search.d.ts +3 -3
- package/dist/src/components/icons/settings-fallback.d.ts +3 -3
- package/dist/src/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/src/components/icons/stacked-layer.d.ts +3 -3
- package/dist/src/components/icons/start-filled.d.ts +3 -3
- package/dist/src/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/src/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/tick-circle.d.ts +3 -3
- package/dist/src/components/icons/tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/tick.d.ts +3 -3
- package/dist/src/components/icons/toggle-switch.d.ts +3 -3
- package/dist/src/components/icons/trash.d.ts +3 -3
- package/dist/src/components/icons/wave.d.ts +3 -3
- package/dist/src/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/work-centre.d.ts +3 -3
- package/dist/src/components/location-select.d.ts +1 -1
- package/dist/src/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/src/components/material-table/material-table.d.ts +1 -1
- package/dist/src/components/phone-input/phone-input.d.ts +1 -1
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/select/select.d.ts +1 -1
- package/dist/src/components/switches/android-12-switch.d.ts +3 -1
- package/dist/src/components/text-field/text-field.d.ts +1 -1
- package/dist/src/components/time-picker/time-picker.d.ts +1 -1
- package/dist/src/components/upload-media/upload-media.d.ts +1 -1
- package/dist/src/utils/common-utility.d.ts +1 -1
- package/dist/style.css +69 -69
- package/dist/styles/index.d.ts +1 -1
- package/dist/theme/theme-impl/index.esm.js.map +1 -1
- package/dist/theme/theme-impl/index.js.map +1 -1
- package/dist/utils/api/index.esm.js +6 -6
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/common/index.esm.js +6 -6
- package/dist/utils/common/index.esm.js.map +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common/index.js.map +1 -1
- package/dist/utils/common-utility.d.ts +1 -1
- package/dist/utils/date-range/index.esm.js.map +1 -1
- package/dist/utils/date-range/index.js.map +1 -1
- package/dist/utils/i18n/index.esm.js.map +1 -1
- package/dist/utils/i18n/index.js.map +1 -1
- package/dist/utils/menu-filter/index.esm.js.map +1 -1
- package/dist/utils/menu-filter/index.js.map +1 -1
- package/dist/views/404/index.esm.js.map +1 -1
- package/dist/views/404/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/dashboard/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/dashboard/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/actionCreator/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/reducer/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/state/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/state/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/page-view/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/page-view/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/actionCreator/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/reducer/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/state/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/state/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/default-data/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/default-data/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/local-data/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/local-data/index.js.map +1 -1
- package/dist/views/beforeAuth/change-password/change-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/change-password/change-password/index.js.map +1 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js.map +1 -1
- package/dist/views/beforeAuth/forgot-password/forgot-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/forgot-password/forgot-password/index.js.map +1 -1
- package/dist/views/beforeAuth/landing/landing/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/landing/landing/index.js.map +1 -1
- package/dist/views/beforeAuth/reset-password/reset-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/reset-password/reset-password/index.js.map +1 -1
- package/dist/views/form-builder/custom-form/index.esm.js.map +1 -1
- package/dist/views/form-builder/custom-form/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/checkbox/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/checkbox/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/column-width/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/column-width/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/field-select/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/field-select/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/section/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/section/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/select/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/select/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/table-form/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/table-form/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/text/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/text/index.js.map +1 -1
- package/dist/views/form-builder/field_properties/index.esm.js.map +1 -1
- package/dist/views/form-builder/field_properties/index.js.map +1 -1
- package/dist/views/form-builder/form-fields/index.esm.js.map +1 -1
- package/dist/views/form-builder/form-fields/index.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.js.map +1 -1
- package/dist/views/form-builder/redux/state/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/state/index.js.map +1 -1
- package/dist/views/form-builder/utils/common/index.esm.js.map +1 -1
- package/dist/views/form-builder/utils/common/index.js.map +1 -1
- package/dist/views/index.d.ts +8 -8
- package/dist/views/privateRoute/index.esm.js.map +1 -1
- package/dist/views/privateRoute/index.js.map +1 -1
- package/dist/views/template-editor/add-template/add-template/index.esm.js.map +1 -1
- package/dist/views/template-editor/add-template/add-template/index.js.map +1 -1
- package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorCanvas/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorCanvas/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorHeader/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorHeader/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorSection/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSection/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
- package/dist/views/template-editor/components/SectionFlowEditor/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/SectionFlowEditor/index.js.map +1 -1
- package/dist/views/template-editor/components/SectionFormatPanel/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/SectionFormatPanel/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/AlignmentControl/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/AlignmentControl/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ButtonControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ButtonControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/CodeControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/CodeControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/DividerControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/DividerControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ImageControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ImageControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/SignatureControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/SignatureControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TableControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TableControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TextControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TextControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/border-control/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/border-control/index.js.map +1 -1
- package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.js.map +1 -1
- package/dist/views/template-editor/routes/index.esm.js.map +1 -1
- package/dist/views/template-editor/routes/index.js.map +1 -1
- package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.js.map +1 -1
- package/dist/views/template-editor/template-modal/template-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-modal/template-modal/index.js.map +1 -1
- package/dist/views/template-editor/template-name-modal/template-name-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-name-modal/template-name-modal/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/dist/views/template-editor/utils/common/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/common/index.js.map +1 -1
- package/dist/views/template-editor/utils/constant/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/constant/index.js.map +1 -1
- package/dist/views/template-editor/utils/default-data/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/default-data/index.js.map +1 -1
- package/dist/views/template-editor/utils/style-extractor/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/style-extractor/index.js.map +1 -1
- package/dist/vite-env.d.ts +23 -23
- package/package.json +299 -299
- package/src/styles/README.md +287 -287
- package/src/styles/all.scss +7 -7
- package/src/styles/animations.scss +5 -5
- package/src/styles/css/reset.css +1 -1
- package/src/styles/index.d.ts +1 -1
- package/src/styles/index.ts +1 -1
- package/src/styles/mixins.scss +5 -5
- package/src/styles/sass/main.scss +11 -11
- package/src/styles/utils.scss +5 -5
- package/src/styles/variables.scss +4 -4
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +0 -1
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +0 -2
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +0 -1
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +0 -1
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +0 -2
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../../../src/views/template-editor/components/controllers/TableControls.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\nimport {\r\n Box,\r\n MenuItem,\r\n Accordion as MuiAccordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Grid,\r\n FormControlLabel,\r\n Tabs,\r\n Tab,\r\n AccordionProps,\r\n styled,\r\n Divider,\r\n IconButton,\r\n Chip,\r\n Alert,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n Table,\r\n TableHead,\r\n TableBody,\r\n TableRow,\r\n TableCell,\r\n} from '@mui/material';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport RefreshIcon from '@mui/icons-material/Refresh';\r\nimport MergeIcon from '@mui/icons-material/MergeType';\r\nimport SplitIcon from '@mui/icons-material/CallSplit';\r\nimport ColorPickerInput from '../../../../components/color-picker-input/color-picker-input';\r\nimport TextField from '../../../../components/text-field/text-field';\r\nimport Select from '../../../../components/select/select';\r\nimport formatText from '../../../../utils/format-text';\r\nimport Typography from '../../../../components/typography/typography';\r\nimport Android12Switch from '../../../../components/switches/android-12-switch';\r\nimport BorderControl from './border-control';\r\nimport Button from '../../../../components/button/button';\r\nimport Checkbox from '../../../../components/checkbox/checkbox';\r\nimport { Trash } from '../../../../components/icons';\r\nimport SearchableSelect from '../../../../components/searchable-select';\r\n\r\n// Type definitions\r\ninterface TableColumn {\r\n id: string;\r\n header: string;\r\n}\r\n\r\ninterface TableRow {\r\n [key: string]: string;\r\n}\r\n\r\ninterface CellMerge {\r\n section: 'thead' | 'tbody';\r\n rowStart: number;\r\n rowEnd: number;\r\n colStart: number;\r\n colEnd: number;\r\n value: string;\r\n}\r\n\r\ninterface TableData {\r\n columns: TableColumn[];\r\n rows: TableRow[];\r\n mergedCells?: CellMerge[];\r\n}\r\n\r\nconst Accordion = styled(\r\n (props: AccordionProps) => (\r\n <MuiAccordion disableGutters elevation={0} square {...props} />\r\n )\r\n)(({ theme }) => ({\r\n border: `1px solid ${theme.palette.divider}`,\r\n borderRadius: 0,\r\n '&:not(:last-child)': {\r\n borderBottom: 0,\r\n },\r\n '&::before': {\r\n display: 'none',\r\n },\r\n}));\r\n\r\ninterface TableControlsProps {\r\n tableData: TableData;\r\n setTableData: (value: TableData) => void;\r\n attrs: any;\r\n updateAttrs: (value: any) => void;\r\n placeholders: Record<string, any>[];\r\n handleSave?: () => void;\r\n setParentRowLevel?: (value: boolean) => void;\r\n levelType?: boolean;\r\n relation_table?: any;\r\n}\r\n\r\nconst textAlignOptions = ['left', 'center', 'right', 'justify'];\r\nconst fontWeightOptions = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\r\nconst fontFamilyOptions = [\r\n 'Arial, sans-serif',\r\n 'Helvetica, sans-serif',\r\n 'Times New Roman, serif',\r\n 'Georgia, serif',\r\n 'Courier New, monospace',\r\n 'Verdana, sans-serif',\r\n 'Tahoma, sans-serif',\r\n 'Trebuchet MS, sans-serif'\r\n];\r\n\r\nconst TableControls: React.FC<TableControlsProps> = ({\r\n tableData,\r\n setTableData,\r\n attrs,\r\n updateAttrs,\r\n placeholders,\r\n handleSave,\r\n setParentRowLevel,\r\n levelType,\r\n relation_table\r\n}) => {\r\n\r\n const [tabValue, setTabValue] = useState(0);\r\n const [expanded, setExpanded] = useState('tableBasic');\r\n const [autoPopulateEnabled, setAutoPopulateEnabled] = useState(true);\r\n const [mergeDialogOpen, setMergeDialogOpen] = useState(false);\r\n const [selectedCells, setSelectedCells] = useState<{section: 'thead' | 'tbody', row: number, col: number}[]>([]);\r\n const [mergeValue, setMergeValue] = useState('');\r\n const [rowLevel, setRowLevel] = useState(false);\r\n const { placeholders: tPlaceholders } = attrs;\r\n const [selectedTable, setSelectedTable] = useState<string | null>(null);\r\n // Fix: Change customText to an object type\r\n const [customText, setCustomText] = useState<{ [rowIndex: number]: { [columnId: string]: string } }>({});\r\n // New state to track row-level placeholder assignments\r\n const [rowPlaceholders, setRowPlaceholders] = useState<{ [rowIndex: number]: { [columnId: string]: string } }>({});\r\n // Initialize merged cells from attrs\r\n const mergedCells = tableData.mergedCells || [];\r\nconst [isUpdating, setIsUpdating] = useState(false);\r\n\r\nconst getAttributes = (tableId: string) => {\r\n\r\n if (!relation_table || !Array.isArray(relation_table)) {\r\n return [];\r\n }\r\n \r\n const table = relation_table.find((table: any) => {\r\n return table?.dataKey == tableId\r\n })\r\n if (!table || !table.fields || !Array.isArray(table.fields)) {\r\n return [];\r\n }\r\n\r\n return table.fields\r\n // .map(field => {\r\n // const fieldName = field.key;\r\n // return {\r\n // label: fieldName?.replace(/_id$/, '') || '', \r\n // value: field?.select,\r\n // };\r\n // });\r\n};\r\n\r\nconst tableAttributes = useMemo(() => \r\n selectedTable ? getAttributes(selectedTable) : placeholders,\r\n [placeholders, selectedTable, relation_table] \r\n)\r\n // Initialize styles from attrs or use default styles\r\n const [tableStyles, setTableStyles] = useState(attrs?.styles || {\r\n is_bordered: true,\r\n border: 1,\r\n borderStyle: 'solid',\r\n borderColor: '#e0e0e0',\r\n borderCollapse: 'collapse',\r\n width: '100%',\r\n thCells: {\r\n padding: 8\r\n },\r\n tbCells: {\r\n padding: 8\r\n },\r\n tHead: {\r\n backgroundColor: '#f5f5f5',\r\n color: '#333333',\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n fontFamily: 'Arial, sans-serif',\r\n textAlign: 'left',\r\n margin: '0.5em 0',\r\n },\r\n tBody: {\r\n backgroundColor: '#ffffff',\r\n color: '#333333',\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n fontFamily: 'Arial, sans-serif',\r\n textAlign: 'left',\r\n }\r\n });\r\n\r\n // Apply styles to attrs when tableStyles change\r\n useEffect(() => {\r\n updateAttrs({ styles: tableStyles });\r\n }, [JSON.stringify(tableStyles)]);\r\n\r\n // Auto-populate rows when placeholders change\r\n useEffect(() => {\r\n if (autoPopulateEnabled && (tPlaceholders || rowLevel)) {\r\n populateRowsWithPlaceholders();\r\n }\r\n }, [tPlaceholders, autoPopulateEnabled, rowLevel, rowPlaceholders]);\r\n\r\n // Generate unique column ID\r\n const generateColumnId = () => {\r\n const existingIds = tableData.columns.map(col => col.id);\r\n let counter = 1;\r\n while (existingIds.includes(`col${counter}`)) {\r\n counter++;\r\n }\r\n return `col${counter}`;\r\n };\r\n\r\n // Get placeholder value by key\r\n const getPlaceholderValue = (placeholderKey: string): string => {\r\n const placeholder = tableAttributes.find(p => p.value === placeholderKey);\r\n if (!placeholder) return '';\r\n \r\n // Return the placeholder syntax for row-level mode\r\n if (rowLevel) {\r\n return `{{${placeholder.value}}}`;\r\n }\r\n \r\n // Return the actual value or a sample value if it's dynamic\r\n if (typeof placeholder.actualValue !== 'undefined') {\r\n return String(placeholder.actualValue);\r\n }\r\n \r\n // For dynamic placeholders, return a sample/preview value\r\n switch (placeholder.type) {\r\n case 'date':\r\n return new Date().toLocaleDateString();\r\n case 'datetime':\r\n return new Date().toLocaleString();\r\n case 'number':\r\n return '123';\r\n case 'currency':\r\n return '$1,234.56';\r\n case 'email':\r\n return 'example@domain.com';\r\n case 'phone':\r\n return '+1 (555) 123-4567';\r\n case 'url':\r\n return 'https://example.com';\r\n default:\r\n return `{{${placeholder.value}}}` || placeholder.label;\r\n }\r\n };\r\n\r\n // Modified: Populate rows with placeholder values for both column and row level\r\n const populateRowsWithPlaceholders = () => {\r\n if (!tPlaceholders && !rowLevel) return;\r\n\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.map((row, rowIndex) => {\r\n const updatedRow = { ...row };\r\n \r\n prev.columns.forEach(column => {\r\n let placeholderKey: string | undefined;\r\n \r\n // Priority: Row-level placeholders take precedence when rowLevel is true\r\n if (rowLevel && rowPlaceholders[rowIndex]?.[column.id]) {\r\n placeholderKey = rowPlaceholders[rowIndex][column.id];\r\n } else if (tPlaceholders?.[column.id]) {\r\n placeholderKey = tPlaceholders[column.id];\r\n }\r\n\r\n if (placeholderKey) {\r\n updatedRow[column.id] = getPlaceholderValue(placeholderKey);\r\n // Preserve static text in the _static field\r\n const staticText = customText[rowIndex]?.[column.id] || '';\r\n if (staticText) {\r\n updatedRow[`${column.id}_static`] = `${staticText} ${updatedRow[column.id]}`;\r\n }\r\n }\r\n });\r\n \r\n return updatedRow;\r\n })\r\n }));\r\n setIsUpdating(false);\r\n };\r\n\r\n // Check if a cell is merged or covered by a merge\r\n const getCellMergeInfo = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\r\n const merge = mergedCells?.find(m => \r\n m.section === section &&\r\n rowIndex >= m.rowStart && rowIndex <= m.rowEnd &&\r\n colIndex >= m.colStart && colIndex <= m.colEnd\r\n );\r\n \r\n if (!merge) return null;\r\n \r\n return {\r\n merge,\r\n isTopLeft: rowIndex === merge.rowStart && colIndex === merge.colStart,\r\n isCovered: !(rowIndex === merge.rowStart && colIndex === merge.colStart)\r\n };\r\n };\r\n\r\n // Check if cell is selected for merging\r\n const isCellSelected = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\r\n return selectedCells.some(cell => \r\n cell.section === section && cell.row === rowIndex && cell.col === colIndex\r\n );\r\n };\r\n\r\n // Toggle cell selection for merging\r\n const toggleCellSelection = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\r\n const cellKey = { section, row: rowIndex, col: colIndex };\r\n const isSelected = isCellSelected(section, rowIndex, colIndex);\r\n \r\n if (isSelected) {\r\n setSelectedCells(prev => prev.filter(cell => \r\n !(cell.section === section && cell.row === rowIndex && cell.col === colIndex)\r\n ));\r\n } else {\r\n // Prevent mixing header and body cells in the same merge\r\n const hasDifferentSection = selectedCells.some(cell => cell.section !== section);\r\n if (hasDifferentSection) {\r\n alert('Cannot select cells from both header and body for the same merge');\r\n return;\r\n }\r\n setSelectedCells(prev => [...prev, cellKey]);\r\n }\r\n };\r\n\r\n // Open merge dialog\r\n const openMergeDialog = () => {\r\n if (selectedCells.length < 2) {\r\n alert('Please select at least 2 cells to merge');\r\n return;\r\n }\r\n \r\n // Get value from first selected cell\r\n const firstCell = selectedCells[0];\r\n let firstCellValue = '';\r\n let customTextValue = '';\r\n\r\n if (firstCell.section === 'tbody') {\r\n const columnId = tableData.columns[firstCell.col]?.id;\r\n firstCellValue = tableData.rows[firstCell.row]?.[columnId] || '';\r\n if (rowLevel) {\r\n customTextValue = customText[firstCell.row]?.[columnId] || '';\r\n }\r\n } else {\r\n firstCellValue = tableData.columns[firstCell.col]?.header || '';\r\n }\r\n\r\n // Combine customText with cell value only in row-level mode\r\n const initialMergeValue = rowLevel && customTextValue \r\n ? `${customTextValue} ${firstCellValue}`.trim() \r\n : firstCellValue;\r\n\r\n setMergeValue(initialMergeValue);\r\n setMergeDialogOpen(true);\r\n};\r\n\r\n // Perform cell merge\r\n const mergeCells = () => {\r\n if (selectedCells.length < 2) return;\r\n\r\n const section = selectedCells[0].section;\r\n const rowIndices = selectedCells.map(cell => cell.row);\r\n const colIndices = selectedCells.map(cell => cell.col);\r\n \r\n const rowStart = Math.min(...rowIndices);\r\n const rowEnd = Math.max(...rowIndices);\r\n const colStart = Math.min(...colIndices);\r\n const colEnd = Math.max(...colIndices);\r\n\r\n // Check if selection forms a rectangle\r\n const expectedCells = (rowEnd - rowStart + 1) * (colEnd - colStart + 1);\r\n if (selectedCells.length !== expectedCells) {\r\n alert('Please select a rectangular area of cells to merge');\r\n return;\r\n }\r\n\r\n // Check for overlapping merges\r\n const hasOverlap = mergedCells.some(existing => \r\n existing.section === section &&\r\n !(rowEnd < existing.rowStart || rowStart > existing.rowEnd ||\r\n colEnd < existing.colStart || colStart > existing.colEnd)\r\n );\r\n\r\n if (hasOverlap) {\r\n alert('Cannot merge cells that overlap with existing merged cells');\r\n return;\r\n }\r\n\r\n const newMerge: CellMerge = {\r\n section,\r\n rowStart,\r\n rowEnd,\r\n colStart,\r\n colEnd,\r\n value: mergeValue\r\n };\r\n\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n mergedCells: [...(prev.mergedCells || []), newMerge],\r\n columns: section === 'thead' ? prev.columns.map((col, index) => \r\n index === colStart ? { ...col, header: mergeValue } : col\r\n ) : prev.columns\r\n }));\r\n\r\n setSelectedCells([]);\r\n setMergeValue('');\r\n setMergeDialogOpen(false);\r\n };\r\n\r\n // Split merged cell\r\n const splitMergedCell = (mergeIndex: number) => {\r\n const merge = mergedCells[mergeIndex];\r\n \r\n setTableData(prev => {\r\n const updatedRows = [...prev.rows];\r\n const updatedColumns = [...prev.columns];\r\n \r\n if (merge.section === 'tbody') {\r\n for (let row = merge.rowStart; row <= merge.rowEnd; row++) {\r\n for (let col = merge.colStart; col <= merge.colEnd; col++) {\r\n const columnId = prev.columns[col]?.id;\r\n if (columnId && updatedRows[row]) {\r\n updatedRows[row][columnId] = merge.value;\r\n }\r\n }\r\n }\r\n } else {\r\n if (updatedColumns[merge.colStart]) {\r\n updatedColumns[merge.colStart].header = merge.value;\r\n }\r\n }\r\n \r\n return {\r\n ...prev,\r\n rows: updatedRows,\r\n name:selectedTable||'',\r\n columns: updatedColumns,\r\n mergedCells: prev.mergedCells?.filter((_, index) => index !== mergeIndex) || []\r\n };\r\n });\r\n };\r\n\r\n // Add new column\r\n const addColumn = () => {\r\n const newColumnId = generateColumnId();\r\n const newColumn: TableColumn = {\r\n id: newColumnId,\r\n header: `Column ${tableData.columns.length + 1}`\r\n };\r\n\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n columns: [...prev.columns, newColumn],\r\n rows: prev.rows.map(row => ({\r\n ...row,\r\n [newColumnId]: ''\r\n })),\r\n mergedCells: prev.mergedCells?.map(merge => ({\r\n ...merge\r\n })) || []\r\n }));\r\n };\r\n\r\n // Remove column\r\n const removeColumn = (columnId: string) => {\r\n const columnIndex = tableData.columns.findIndex(col => col.id === columnId);\r\n \r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n columns: prev.columns.filter(col => col.id !== columnId),\r\n rows: prev.rows.map(row => {\r\n const { [columnId]: removed, ...rest } = row;\r\n return rest;\r\n }),\r\n mergedCells: prev.mergedCells\r\n ?.filter(merge => !(merge.colStart <= columnIndex && merge.colEnd >= columnIndex))\r\n .map(merge => ({\r\n ...merge,\r\n colStart: merge.colStart > columnIndex ? merge.colStart - 1 : merge.colStart,\r\n colEnd: merge.colEnd > columnIndex ? merge.colEnd - 1 : merge.colEnd\r\n })) || []\r\n }));\r\n\r\n if (tPlaceholders && tPlaceholders[columnId]) {\r\n const updatedPlaceholders = { ...tPlaceholders };\r\n delete updatedPlaceholders[columnId];\r\n updateAttrs({ placeholders: updatedPlaceholders });\r\n }\r\n };\r\n\r\n // Update column header\r\n const updateColumnHeader = (columnId: string, newHeader: string) => {\r\n setTableData(prev => ({\r\n ...prev,\r\n columns: prev.columns.map(col =>\r\n col.id === columnId ? { ...col, header: newHeader } : col\r\n )\r\n }));\r\n };\r\n\r\n // Add new row\r\nconst addRow = () => {\r\n const newRow: TableRow = {};\r\n\r\n tableData.columns.forEach(col => {\r\n if (tPlaceholders?.[col.id]) {\r\n const placeholderKey = tPlaceholders[col.id];\r\n newRow[col.id] = `{{${placeholderKey}}}`;\r\n if(rowLevel){\r\n newRow[`${col.id}_static`] = newRow[col.id];\r\n }\r\n \r\n } else if (tableData.rows.length > 0) {\r\n // Copy first row's data if no placeholder\r\n newRow[col.id] = tableData.rows[0][col.id] || '';\r\n if(rowLevel){\r\n newRow[`${col.id}_static`] = tableData.rows[0][`${col.id}_static`] || ''\r\n }\r\n } else {\r\n // Default to empty\r\n if(rowLevel){\r\n newRow[`${col.id}_static`] = '';\r\n }\r\n newRow[col.id] = '';\r\n }\r\n });\r\n\r\n setTableData(prev => {\r\n const updatedRows = [...prev.rows, newRow];\r\n return {\r\n ...prev,\r\n rows: updatedRows,\r\n name:selectedTable||'',\r\n mergedCells: prev.mergedCells?.map(merge => ({ ...merge })) || []\r\n };\r\n });\r\n handleSave()\r\n};\r\n\r\n // Remove row\r\n const removeRow = (rowIndex: number) => {\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.filter((_, index) => index !== rowIndex),\r\n mergedCells: prev.mergedCells\r\n ?.filter(merge => !(merge.section === 'tbody' && merge.rowStart <= rowIndex && merge.rowEnd >= rowIndex))\r\n .map(merge => ({\r\n ...merge,\r\n rowStart: merge.section === 'tbody' && merge.rowStart > rowIndex ? merge.rowStart - 1 : merge.rowStart,\r\n rowEnd: merge.section === 'tbody' && merge.rowEnd > rowIndex ? merge.rowEnd - 1 : merge.rowEnd\r\n })) || []\r\n }));\r\n\r\n // Clean up rowPlaceholders and customText for the removed row\r\n setRowPlaceholders(prev => {\r\n const updated = { ...prev };\r\n delete updated[rowIndex];\r\n return updated;\r\n });\r\n setCustomText(prev => {\r\n const updated = { ...prev };\r\n delete updated[rowIndex];\r\n return updated;\r\n });\r\n };\r\n\r\n // Modified: Update cell value and trigger placeholder population\r\nconst updateRowCellValue = (rowIndex: number, columnId: string, value: string) => {\r\n setIsUpdating(true);\r\n const colIndex = tableData.columns.findIndex(col => col.id === columnId);\r\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\r\n const staticText = rowLevel ? (customText[rowIndex]?.[columnId] || '') : '';\r\n\r\n if (mergeInfo) {\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n mergedCells: prev.mergedCells?.map(merge => \r\n merge === mergeInfo.merge ? { ...merge, value } : merge\r\n ) || []\r\n }));\r\n } else {\r\n if (rowLevel && value) {\r\n setRowPlaceholders(prev => {\r\n const updated = { ...prev };\r\n if (!updated[rowIndex]) {\r\n updated[rowIndex] = {};\r\n }\r\n updated[rowIndex][columnId] = value;\r\n return updated;\r\n });\r\n } else if (rowLevel && !value) {\r\n setRowPlaceholders(prev => {\r\n const updated = { ...prev };\r\n if (updated[rowIndex]?.[columnId]) {\r\n delete updated[rowIndex][columnId];\r\n if (Object.keys(updated[rowIndex]).length === 0) {\r\n delete updated[rowIndex];\r\n }\r\n }\r\n return updated;\r\n });\r\n }\r\n\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.map((row, idx) =>\r\n idx === rowIndex ? { \r\n ...row, \r\n [columnId]: rowLevel ? (value ? `{{${value}}}` : '') : (value ? getPlaceholderValue(value) : ''),\r\n [`${columnId}_static`]: staticText ? `${staticText} ${value ? getPlaceholderValue(value) : ''}`.trim() : (value ? getPlaceholderValue(value) : '')\r\n } : row\r\n )\r\n }));\r\n\r\n populateRowsWithPlaceholders();\r\n }\r\n };\r\nconst updateCellValue = (rowIndex: number, columnId: string, value: string) => {\r\n setIsUpdating(true);\r\n const colIndex = tableData.columns.findIndex(col => col.id === columnId);\r\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\r\n const staticText = customText[rowIndex]?.[columnId] || '';\r\n\r\n if (mergeInfo) {\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n mergedCells: prev.mergedCells?.map(merge => \r\n merge === mergeInfo.merge ? { ...merge, value } : merge\r\n ) || []\r\n }));\r\n } else {\r\n if (rowLevel) {\r\n setRowPlaceholders(prev => {\r\n const updated = { ...prev };\r\n if (!updated[rowIndex]) {\r\n updated[rowIndex] = {};\r\n }\r\n if (value) {\r\n updated[rowIndex][columnId] = value;\r\n } else {\r\n delete updated[rowIndex][columnId];\r\n if (Object.keys(updated[rowIndex]).length === 0) {\r\n delete updated[rowIndex];\r\n }\r\n }\r\n return updated;\r\n });\r\n }\r\n\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.map((row, idx) =>\r\n idx === rowIndex ? { \r\n ...row, \r\n [columnId]: rowLevel ? (value ? `{{${value}}}` : '') : value,\r\n [`${columnId}_static`]: staticText ? `${staticText} ${value || ''}`.trim() : (value || '')\r\n } : row\r\n )\r\n }));\r\n\r\n if (rowLevel || (autoPopulateEnabled && tPlaceholders?.[columnId])) {\r\n populateRowsWithPlaceholders();\r\n }\r\n setIsUpdating(false);\r\n }\r\n };\r\n\r\n // Modified: Update column placeholder\r\n const updateColumnPlaceholder = (columnId: string, placeholderValue: string) => {\r\n setIsUpdating(true);\r\n const updatedPlaceholders = {\r\n ...tPlaceholders,\r\n [columnId]: placeholderValue\r\n };\r\n \r\n if (!placeholderValue) {\r\n delete updatedPlaceholders[columnId];\r\n }\r\n \r\n updateAttrs({ placeholders: updatedPlaceholders });\r\n\r\n if (autoPopulateEnabled) {\r\n const newCellValue = placeholderValue ? getPlaceholderValue(placeholderValue) : '';\r\n setTableData(prev => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.map(row => ({\r\n ...row,\r\n [columnId]: newCellValue\r\n }))\r\n }));\r\n }\r\n setIsUpdating(false);\r\n };\r\n\r\n // Refresh all rows with current placeholder values\r\n const refreshPlaceholderData = () => {\r\n populateRowsWithPlaceholders();\r\n };\r\n\r\n // Get placeholder info for display\r\n const getPlaceholderInfo = (placeholderKey: string) => {\r\n const placeholder = placeholders.find(p => p.value === placeholderKey);\r\n return placeholder ? {\r\n label: placeholder.label,\r\n type: placeholder.type || 'text',\r\n description: placeholder.description || ''\r\n } : null;\r\n };\r\n\r\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\r\n setTabValue(newValue);\r\n };\r\n\r\n const handleAccordionChange = (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => {\r\n setExpanded(isExpanded ? panel : '');\r\n };\r\n\r\n const updateTableStyle = (key: string, value: any) => {\r\n setTableStyles(prev => ({\r\n ...prev,\r\n [key]: value\r\n }));\r\n };\r\n\r\n const updateHeaderStyle = (key: string, value: any) => {\r\n setTableStyles(prev => ({\r\n ...prev,\r\n tHead: {\r\n ...prev.tHead,\r\n [key]: value\r\n }\r\n }));\r\n };\r\n\r\n const updateHeaderCellStyle = (key: string, value: any) => {\r\n setTableStyles(prev => ({\r\n ...prev,\r\n thCells: {\r\n ...prev.thCells,\r\n [key]: value\r\n }\r\n }));\r\n };\r\n\r\n const updateBodyStyle = (key: string, value: any) => {\r\n setTableStyles(prev => ({\r\n ...prev,\r\n tBody: {\r\n ...prev.tBody,\r\n [key]: value\r\n }\r\n }));\r\n };\r\n\r\n const updateBodyCellStyle = (key: string, value: any) => {\r\n setTableStyles(prev => ({\r\n ...prev,\r\n tbCells: {\r\n ...prev.tbCells,\r\n [key]: value\r\n }\r\n }));\r\n };\r\n\r\n const resetTable=()=>{\r\n setTableData((prev: TableData) => ({\r\n ...prev,\r\n name:selectedTable||'',\r\n rows: prev.rows.map((row: TableRow) => {\r\n return {...Object.fromEntries(prev.columns.map((col: TableColumn) => [col?.id, '']))\r\n \t}\r\n })\r\n }));\r\n }\r\n // Count columns with placeholders\r\n const columnsWithPlaceholders = tPlaceholders ? Object.keys(tPlaceholders).length : 0;\r\nuseEffect(() => {\r\n // Determine if rowLevel should be enabled\r\n setRowLevel(levelType);\r\n setSelectedTable(tableData?.name || null); // Set default table if available\r\n // Update custom text by extracting values from _static fields\r\n setCustomText((prev: { [rowIndex: number]: { [columnId: string]: string } }) => {\r\n const updated: { [rowIndex: number]: { [columnId: string]: string } } = {}; // Fixed missing bracket here\r\n \r\n tableData.rows.forEach((row, rowIndex) => {\r\n Object.keys(row).forEach(columnId => {\r\n if (columnId.endsWith('_static')) {\r\n const originalColumnId = columnId.replace('_static', '');\r\n if (!updated[rowIndex]) {\r\n updated[rowIndex] = {};\r\n }\r\n\r\n // Get the original column value (without _static suffix)\r\n const columnValue = row[originalColumnId] || '';\r\n \r\n // Get the static value and remove the original column value if it appears\r\n let staticValue = row[columnId] || '';\r\n if (columnValue && staticValue.includes(columnValue)) {\r\n staticValue = staticValue.replace(columnValue, '').trim();\r\n }\r\n \r\n // Also remove any {{value}} placeholders\r\n staticValue = staticValue.replace(/\\{\\{\\s*value\\s*\\}\\}/g, '').trim();\r\n \r\n updated[rowIndex][originalColumnId] = staticValue;\r\n }\r\n });\r\n });\r\n \r\n return updated;\r\n });\r\n\r\n}, [tableData]);\r\n\r\nuseEffect(()=>{\r\n if(!selectedTable) {\r\n resetTable()\r\n }\r\n\r\n},[selectedTable]);\r\n return (\r\n <>\r\n <Box sx={{ mb: 2, borderBottom: 1,paddingBottom: 5, borderColor: 'divider' }}>\r\n <Tabs value={tabValue} onChange={handleTabChange} variant=\"fullWidth\" sx={(theme) => ({\r\n '& .MuiTabs-indicator': {\r\n backgroundColor: theme.palette.theme?.primary[700]\r\n },\r\n '& .MuiTab-root.Mui-selected': {\r\n color: theme.palette.theme?.primary[700],\r\n },\r\n '& .MuiTab-root': {\r\n textTransform: 'none'\r\n },\r\n })}>\r\n <Tab label=\"Content\" />\r\n <Tab label=\"Styles\" />\r\n <Tab label=\"Cell Merging\" />\r\n </Tabs>\r\n </Box>\r\n\r\n {tabValue === 0 && (\r\n <>\r\n <Box sx={{ mb: 2, p: 2, bgcolor: 'grey.50', borderRadius: 1, border: '1px solid', borderColor: 'divider' }}>\r\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.primary.700\">\r\n Dynamic Data Settings\r\n </Typography>\r\n <Chip \r\n label={`${columnsWithPlaceholders} columns linked`} \r\n size=\"small\" \r\n color=\"primary\" \r\n variant=\"outlined\"\r\n sx={theme => ({\r\n color: theme.palette.theme?.primary[700],\r\n borderColor: theme.palette.theme?.primary[700]\r\n })}\r\n />\r\n </Box>\r\n \r\n <FormControlLabel\r\n control={\r\n <Android12Switch\r\n checked={autoPopulateEnabled}\r\n onChange={(e) => setAutoPopulateEnabled(e.target.checked)}\r\n />\r\n }\r\n label={\r\n <Typography type=\"s5\" color=\"theme.secondary.800\">\r\n Auto-populate rows with placeholder data\r\n </Typography>\r\n }\r\n />\r\n <FormControlLabel\r\n control={\r\n <Android12Switch\r\n checked={rowLevel}\r\n onChange={(e) => {\r\n setRowLevel(e.target.checked);\r\n setSelectedTable(null); // Reset selected table when toggling row level\r\n setParentRowLevel(e.target.checked);\r\n resetTable();\r\n }}\r\n />\r\n }\r\n label={\r\n <Typography type=\"s5\" color=\"theme.secondary.800\">\r\n Row Level Management\r\n </Typography>\r\n }\r\n />\r\n \r\n {autoPopulateEnabled && (\r\n <Box sx={{ mt: 1 }}>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={refreshPlaceholderData}\r\n startIcon={<RefreshIcon />}\r\n className='black-outlined-btn'\r\n >\r\n Refresh Data\r\n </Button>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box sx={{ mb: 2 }}>\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 1 }}>\r\n Columns\r\n </Typography>\r\n {tableData.columns?.map((column, index) => (\r\n <Box key={column.id} sx={{ mb: 1, display: 'flex', alignItems: 'center', gap: 1 }}>\r\n <TextField\r\n label={`Column ${index + 1} Header`}\r\n value={column.header}\r\n onChange={(e) => updateColumnHeader(column.id, e.target.value)}\r\n size=\"small\"\r\n sx={{ flex: 1 }}\r\n />\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => removeColumn(column.id)}\r\n disabled={tableData.columns.length <= 1}\r\n color=\"error\"\r\n >\r\n <Trash />\r\n </IconButton>\r\n </Box>\r\n ))}\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={addColumn}\r\n startIcon={<AddIcon />}\r\n sx={{ mt: 1 }}\r\n className='black-outlined-btn'\r\n >\r\n Add Column\r\n </Button>\r\n </Box>\r\n\r\n <Divider sx={{ my: 2 }} />\r\n\r\n <Box sx={{ mb: 2 }}>\r\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n Rows ({tableData.rows.length})\r\n </Typography>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n disabled={selectedTable}\r\n onClick={() => addRow()}\r\n startIcon={<AddIcon />}\r\n className='black-outlined-btn'\r\n >\r\n Add Row\r\n </Button>\r\n </Box>\r\n {!rowLevel &&\r\n <Box sx={{ mb: 2 }}>\r\n <SearchableSelect\r\n value={selectedTable || ''}\r\n label={'Select Table'}\r\n options={relation_table?.map(table=>(\r\n { value: table?.dataKey, label: (table.name.charAt(0).toUpperCase() + table.name.slice(1)).replaceAll('_', ' ') }\r\n )) || []}\r\n onChange={(e) => {\r\n setSelectedTable(e.target.value);\r\n }}\r\n />\r\n </Box>\r\n\r\n }\r\n {tableData.rows.map((row, rowIndex) => (\r\n <Box key={rowIndex} sx={{ mb: 2, p: 2, border: 1, borderColor: 'divider', borderRadius: 1 }}>\r\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.800\">\r\n Row {rowIndex + 1}\r\n </Typography>\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => removeRow(rowIndex)}\r\n disabled={tableData.rows.length <= 1}\r\n color=\"error\"\r\n >\r\n <Trash />\r\n </IconButton>\r\n </Box>\r\n <Grid container spacing={1}>\r\n \r\n {tableData.columns.map((column, colIndex) => {\r\n const hasPlaceholder = rowLevel ? rowPlaceholders[rowIndex]?.[column.id] : tPlaceholders?.[column.id];\r\n const placeholderInfo = hasPlaceholder ? getPlaceholderInfo(tPlaceholders?.[column.id] || rowPlaceholders[rowIndex]?.[column.id]) : null;\r\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\r\n\r\n return (\r\n <Grid item xs={12} key={column.id}>\r\n \r\n {rowLevel ? (\r\n <>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.800\"> {column.header} </Typography>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: 1,\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }}\r\n >\r\n <TextField\r\n value={customText[rowIndex]?.[column.id] || ''}\r\n onChange={(e) => {\r\n const newValue = e.target.value;\r\n setCustomText(prev => {\r\n const updated = { ...prev };\r\n if (!updated[rowIndex]) {\r\n updated[rowIndex] = {};\r\n }\r\n updated[rowIndex][column.id] = newValue;\r\n return updated;\r\n });\r\n\r\n // Update table data on custom text change\r\n setTableData(prev => ({\r\n ...prev,\r\n rows: prev.rows.map((row, idx) =>\r\n idx === rowIndex\r\n ? {\r\n ...row,\r\n [`${column.id}_static`]: newValue\r\n ? `${newValue} ${row[column.id] || ''}`.trim()\r\n : '',\r\n }\r\n : row\r\n ),\r\n }));\r\n }}\r\n size=\"small\"\r\n placeholder=\"Enter custom text...\"\r\n sx={{ flex: 1, minWidth: 150 }}\r\n />\r\n <Box sx={{ flex: 1, minWidth: 150 }}>\r\n <SearchableSelect\r\n value={mergeInfo ? mergeInfo.merge.value : (rowPlaceholders[rowIndex]?.[column.id] ||row[column.id]|| '')}\r\n onChange={(e) => updateRowCellValue(rowIndex, column.id, e.target.value)}\r\n size=\"small\"\r\n options={placeholders || []}\r\n // disabled={isUpdating}\r\n sx={{\r\n flex: 1,\r\n maxWidth: 150,\r\n minWidth: 150,\r\n '& .MuiInputBase-input': {\r\n bgcolor:\r\n hasPlaceholder && autoPopulateEnabled\r\n ? 'grey.100'\r\n : mergeInfo\r\n ? 'blue.50'\r\n : 'transparent',\r\n width: 150,\r\n \r\n },\r\n }}\r\n />\r\n </Box>\r\n </Box>\r\n </>\r\n ) : (\r\n <TextField\r\n label={column.header}\r\n value={mergeInfo ? mergeInfo.merge.value : (row[column.id] || '')}\r\n onChange={(e) => updateCellValue(rowIndex, column.id, e.target.value)}\r\n size=\"small\"\r\n fullWidth\r\n disabled={autoPopulateEnabled || hasPlaceholder}\r\n helperText={\r\n mergeInfo\r\n ? `Merged cell (${mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1}×${mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1})`\r\n : hasPlaceholder && placeholderInfo\r\n ? `Linked to: ${placeholderInfo.label}`\r\n : undefined\r\n }\r\n sx={{\r\n '& .MuiInputBase-input': {\r\n bgcolor:\r\n hasPlaceholder && autoPopulateEnabled\r\n ? 'grey.100'\r\n : mergeInfo\r\n ? 'blue.50'\r\n : 'transparent',\r\n },\r\n }}\r\n />\r\n )}\r\n </Grid>\r\n );\r\n })}\r\n </Grid>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n <Divider sx={{ my: 2 }} />\r\n\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 1 }}>\r\n Column Data Sources\r\n </Typography>\r\n \r\n {placeholders.length === 0 && (\r\n <Alert severity=\"info\" sx={{ mb: 2 }}>\r\n No placeholders available. Add placeholders to dynamically populate table data.\r\n </Alert>\r\n )}\r\n \r\n <Grid container spacing={1} alignItems='center'>\r\n {tableData.columns.map((column) => {\r\n const currentPlaceholder =tPlaceholders?.[column.id]|| tableData.rows?.[0]?.[column.id];\r\n\r\n const placeholderInfo = currentPlaceholder ? getPlaceholderInfo(currentPlaceholder) : null;\r\n \r\n return (\r\n <React.Fragment key={column.id}>\r\n <Grid item xs={4}>\r\n <Typography type=\"s5\" weight=\"medium\" color=\"theme.secondary.800\">\r\n {column.header}\r\n </Typography>\r\n {placeholderInfo && (\r\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\r\n {placeholderInfo.type}\r\n </Typography>\r\n )}\r\n </Grid>\r\n <Grid item xs={8}>\r\n <SearchableSelect\r\n value={rowLevel ? '' : (currentPlaceholder || '')}\r\n onChange={(e) => {\r\n updateColumnPlaceholder(column.id, e.target.value as string)\r\n }}\r\n size=\"small\"\r\n options={tableAttributes.map(attr => ({\r\n value: attr.value,\r\n label: attr.label,\r\n // Include description if available in your tableAttributes\r\n description: attr.description \r\n }))}\r\n disabled={isUpdating || rowLevel}\r\n sx={{\r\n flex: 1,\r\n maxWidth: 150,\r\n minWidth: 150,\r\n '& .MuiInputBase-input': {\r\n bgcolor: 'transparent',\r\n width: 150,\r\n },\r\n }}\r\n renderOption={(props, option) => (\r\n <MenuItem {...props} key={option.value}>\r\n <Box>\r\n <Typography type=\"s5\" color=\"theme.secondary.1000\">\r\n {option.label}\r\n </Typography>\r\n {option.description && (\r\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\r\n {option.description}\r\n </Typography>\r\n )}\r\n </Box>\r\n </MenuItem>\r\n )}\r\n noOptionsText={\r\n <MenuItem disabled>\r\n <Typography type=\"s5\" color=\"theme.secondary.600\">\r\n No Data Source\r\n </Typography>\r\n </MenuItem>\r\n }\r\n />\r\n {/* <Select\r\n value={rowLevel ? '' : (currentPlaceholder || '')}\r\n onChange={(e) => updateColumnPlaceholder(column.id, e.target.value as string)}\r\n renderValue={(value) => {\r\n if (!value) return 'Select Data Source';\r\n const placeholder = placeholders.find(p => p.value === value);\r\n return placeholder?.label||currentPlaceholder || 'Unknown Placeholder';\r\n }}\r\n fullWidth\r\n disabled={isUpdating}\r\n size=\"small\"\r\n displayEmpty\r\n disabled={rowLevel}\r\n >\r\n <MenuItem value=\"\">\r\n <Typography type=\"s5\" color=\"theme.secondary.600\">No Data Source</Typography>\r\n </MenuItem>\r\n {tableAttributes.map((placeholder) => (\r\n <MenuItem key={placeholder.value} value={placeholder.value}>\r\n <Box>\r\n <Typography type=\"s5\" color=\"theme.secondary.1000\">\r\n {placeholder.label}\r\n </Typography>\r\n {placeholder.description && (\r\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\r\n {placeholder.description}\r\n </Typography>\r\n )}\r\n </Box>\r\n </MenuItem>\r\n ))}\r\n </Select> */}\r\n </Grid>\r\n </React.Fragment>\r\n );\r\n })}\r\n </Grid>\r\n </>\r\n )}\r\n\r\n {tabValue === 1 && (\r\n <Box sx={{\r\n '& >:first-child': { borderTopLeftRadius: 8, borderTopRightRadius: 8 },\r\n '& >:last-child': { borderBottomLeftRadius: 8, borderBottomRightRadius: 8 }\r\n }}>\r\n <Accordion \r\n expanded={expanded === 'tableBasic'} \r\n onChange={handleAccordionChange('tableBasic')}\r\n disableGutters\r\n >\r\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\r\n <Typography type='s3' color='theme.secondary.1000'>Table Basic Properties</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <BorderControl\r\n styles={tableStyles}\r\n onChange={(key, value) => updateTableStyle(key, value)}\r\n isBordered={tableStyles.is_bordered}\r\n disableRadius\r\n />\r\n </AccordionDetails>\r\n </Accordion>\r\n\r\n <Accordion \r\n expanded={expanded === 'tableHeader'} \r\n onChange={handleAccordionChange('tableHeader')}\r\n disableGutters\r\n >\r\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\r\n <Typography type='s3' color='theme.secondary.1000'>Table Header Styles</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Grid container spacing={2}>\r\n <Grid item xs={12}>\r\n <ColorPickerInput\r\n value={tableStyles.tHead?.backgroundColor || '#f5f5f5'}\r\n onChange={(color) => updateHeaderStyle('backgroundColor', color)}\r\n fullWidth\r\n label='Background Color'\r\n />\r\n </Grid>\r\n \r\n <Grid item xs={12}>\r\n <ColorPickerInput\r\n value={tableStyles.tHead?.color || '#333333'}\r\n onChange={(color) => updateHeaderStyle('color', color)}\r\n fullWidth\r\n label='Text Color'\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <TextField\r\n label='Font Size'\r\n type='number'\r\n value={tableStyles.tHead?.fontSize || 14}\r\n onChange={(e) => updateHeaderStyle('fontSize', parseInt(e.target.value) || 14)}\r\n size='small'\r\n fullWidth\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <Select\r\n value={tableStyles.tHead?.fontWeight || 'bold'}\r\n onChange={(e) => updateHeaderStyle('fontWeight', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Font Weight'\r\n >\r\n {fontWeightOptions.map(weight => (\r\n <MenuItem key={weight} value={weight}>\r\n {formatText(weight)}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={12}>\r\n <Select\r\n value={tableStyles.tHead?.fontFamily || 'Arial, sans-serif'}\r\n onChange={(e) => updateHeaderStyle('fontFamily', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Font Family'\r\n >\r\n {fontFamilyOptions.map(font => (\r\n <MenuItem key={font} value={font}>\r\n {font.split(',')[0]}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <Select\r\n value={tableStyles.tHead?.textAlign || 'left'}\r\n onChange={(e) => updateHeaderStyle('textAlign', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Text Align'\r\n >\r\n {textAlignOptions.map(align => (\r\n <MenuItem key={align} value={align}>\r\n {formatText(align)}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <TextField\r\n label='Cell Padding'\r\n type='number'\r\n value={tableStyles.thCells?.padding || 8}\r\n onChange={(e) => updateHeaderCellStyle('padding', parseInt(e.target.value) || 8)}\r\n size='small'\r\n fullWidth\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12}>\r\n <FormControlLabel\r\n control={\r\n <Android12Switch\r\n checked={!!tableStyles.tBody?.zebraStriping}\r\n onChange={(e) => updateBodyStyle('zebraStriping', e.target.checked)}\r\n />\r\n }\r\n label=\"Zebra Striping\"\r\n />\r\n </Grid>\r\n\r\n {tableStyles.tBody?.zebraStriping && (\r\n <Grid item xs={12}>\r\n <Typography type='s5' weight='medium' color='theme.secondary.1000' variant=\"caption\">Alternating Row Color</Typography>\r\n <ColorPickerInput\r\n value={tableStyles.tBody?.alternateRowColor || '#f9f9f9'}\r\n onChange={(color) => updateBodyStyle('alternateRowColor', color)}\r\n fullWidth\r\n />\r\n </Grid>\r\n )}\r\n </Grid>\r\n </AccordionDetails>\r\n </Accordion>\r\n\r\n <Accordion \r\n expanded={expanded === 'tableBody'} \r\n onChange={handleAccordionChange('tableBody')}\r\n disableGutters\r\n >\r\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\r\n <Typography type='s3' color='theme.secondary.1000'>Table Body Styles</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Grid container spacing={2}>\r\n <Grid item xs={12}>\r\n <ColorPickerInput\r\n value={tableStyles.tBody?.backgroundColor || '#ffffff'}\r\n onChange={(color) => updateBodyStyle('backgroundColor', color)}\r\n fullWidth\r\n label='Background Color'\r\n />\r\n </Grid>\r\n \r\n <Grid item xs={12}>\r\n <ColorPickerInput\r\n value={tableStyles.tBody?.color || '#333333'}\r\n onChange={(color) => updateBodyStyle('color', color)}\r\n fullWidth\r\n label='Text Color'\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <TextField\r\n label='Font Size'\r\n type='number'\r\n value={tableStyles.tBody?.fontSize || 14}\r\n onChange={(e) => updateBodyStyle('fontSize', parseInt(e.target.value) || 14)}\r\n size='small'\r\n fullWidth\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <Select\r\n value={tableStyles.tBody?.fontWeight || 'normal'}\r\n onChange={(e) => updateBodyStyle('fontWeight', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Font Weight'\r\n >\r\n {fontWeightOptions.map(weight => (\r\n <MenuItem key={weight} value={weight}>\r\n {formatText(weight)}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={12}>\r\n <Select\r\n value={tableStyles.tBody?.fontFamily || 'Arial, sans-serif'}\r\n onChange={(e) => updateBodyStyle('fontFamily', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Font Family'\r\n >\r\n {fontFamilyOptions.map(font => (\r\n <MenuItem key={font} value={font}>\r\n {font.split(',')[0]}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <Select\r\n value={tableStyles.tBody?.textAlign || 'left'}\r\n onChange={(e) => updateBodyStyle('textAlign', e.target.value)}\r\n fullWidth\r\n size='small'\r\n label='Text Align'\r\n >\r\n {textAlignOptions.map(align => (\r\n <MenuItem key={align} value={align}>\r\n {formatText(align)}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <TextField\r\n label='Cell Padding'\r\n type='number'\r\n value={tableStyles.tbCells?.padding || 8}\r\n onChange={(e) => updateBodyCellStyle('padding', parseInt(e.target.value) || 8)}\r\n size='small'\r\n fullWidth\r\n />\r\n </Grid>\r\n </Grid>\r\n </AccordionDetails>\r\n </Accordion>\r\n </Box>\r\n )}\r\n\r\n {tabValue === 2 && (\r\n <Box>\r\n <Box sx={{ mb: 3 }}>\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 2 }}>\r\n Cell Selection & Merging\r\n </Typography>\r\n \r\n <Alert severity=\"info\" sx={{ mb: 2 }}>\r\n Click on cells in the table below to select them for merging. Selected cells will be highlighted. You can merge cells within the header or body, but not across both.\r\n </Alert>\r\n\r\n <Box sx={{ display: 'flex', gap: 1, mb: 2, flexWrap: 'wrap' }}>\r\n <Button\r\n variant=\"contained\"\r\n size=\"small\"\r\n onClick={openMergeDialog}\r\n startIcon={<MergeIcon />}\r\n disabled={selectedCells.length < 2}\r\n color=\"primary\"\r\n >\r\n Merge Selected ({selectedCells.length})\r\n </Button>\r\n \r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => setSelectedCells([])}\r\n disabled={selectedCells.length === 0}\r\n className='black-outlined-btn'\r\n >\r\n Clear Selection\r\n </Button>\r\n </Box>\r\n\r\n <Box sx={{ \r\n border: 1, \r\n borderColor: 'divider', \r\n borderRadius: 1, \r\n overflow: 'auto',\r\n maxHeight: 400\r\n }}>\r\n <Table size=\"small\" sx={{ minWidth: 300 }}>\r\n <TableHead>\r\n <TableRow>\r\n {tableData.columns.map((column, colIndex) => {\r\n const mergeInfo = getCellMergeInfo('thead', 0, colIndex);\r\n const isSelected = isCellSelected('thead', 0, colIndex);\r\n \r\n if (mergeInfo?.isCovered) {\r\n return null;\r\n }\r\n\r\n const cellContent = mergeInfo ? mergeInfo.merge.value : column.header;\r\n const rowSpan = mergeInfo ? mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1 : 1;\r\n const colSpan = mergeInfo ? mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1 : 1;\r\n\r\n return (\r\n <TableCell \r\n key={column.id}\r\n rowSpan={rowSpan}\r\n colSpan={colSpan}\r\n onClick={() => !mergeInfo && toggleCellSelection('thead', 0, colIndex)}\r\n sx={(theme) => ({ \r\n fontWeight: 'bold',\r\n bgcolor: mergeInfo ? 'blue.50' : \r\n isSelected ? 'primary.100' : 'grey.100',\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n cursor: mergeInfo ? 'default' : 'pointer',\r\n border: isSelected ? 2 : 1,\r\n borderColor: isSelected ? theme.palette.theme.primary[800] : 'divider',\r\n '&:hover': mergeInfo ? {} : {\r\n bgcolor: isSelected ? 'primary.200' : 'grey.50'\r\n }\r\n })}\r\n >\r\n {cellContent}\r\n {mergeInfo && (\r\n <Chip\r\n label={`${rowSpan}×${colSpan}`}\r\n size=\"small\"\r\n color=\"primary\"\r\n variant=\"outlined\"\r\n sx={(theme) => ({\r\n position: 'absolute',\r\n top: 2,\r\n right: 2,\r\n fontSize: '0.6rem',\r\n height: 16,\r\n color: theme.palette.theme.primary[800],\r\n borderColor: theme.palette.theme.primary[800]\r\n })}\r\n />\r\n )}\r\n {isSelected && (\r\n <Checkbox\r\n checked={true}\r\n size=\"small\"\r\n sx={{\r\n position: 'absolute',\r\n top: 2,\r\n left: 2,\r\n padding: 0\r\n }}\r\n />\r\n )}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {tableData.rows.map((row, rowIndex) => (\r\n <TableRow key={rowIndex}>\r\n {tableData.columns.map((column, colIndex) => {\r\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\r\n const isSelected = isCellSelected('tbody', rowIndex, colIndex);\r\n \r\n if (mergeInfo?.isCovered) {\r\n return null;\r\n }\r\n\r\n // Get customText for the cell\r\n const customTextValue = customText[rowIndex]?.[column.id] || '';\r\n // Combine customText with cell value or merge value\r\n const cellContent = mergeInfo \r\n ? mergeInfo.merge.value // Already includes customText from mergeCells\r\n : customTextValue \r\n ? `${customTextValue} ${row[column.id] || ''}`.trim() \r\n : row[column.id] || '';\r\n\r\n const rowSpan = mergeInfo ? mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1 : 1;\r\n const colSpan = mergeInfo ? mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1 : 1;\r\n\r\n return (\r\n <TableCell\r\n key={column.id}\r\n rowSpan={rowSpan}\r\n colSpan={colSpan}\r\n onClick={() => !mergeInfo && toggleCellSelection('tbody', rowIndex, colIndex)}\r\n sx={(theme) => ({ \r\n cursor: mergeInfo ? 'default' : 'pointer',\r\n bgcolor: mergeInfo ? 'blue.50' : \r\n isSelected ? 'primary.100' : \r\n 'transparent',\r\n border: isSelected ? 2 : 1,\r\n borderColor: isSelected ? theme.palette.theme?.primary[800] : 'divider',\r\n '&:hover': mergeInfo ? {} : {\r\n bgcolor: isSelected ? 'primary.200' : 'grey.50'\r\n },\r\n position: 'relative'\r\n })}\r\n >\r\n {cellContent}\r\n {mergeInfo && (\r\n <Chip\r\n label={`${rowSpan}×${colSpan}`}\r\n size=\"small\"\r\n color=\"primary\"\r\n variant=\"outlined\"\r\n sx={(theme) => ({\r\n position: 'absolute',\r\n top: 2,\r\n right: 2,\r\n fontSize: '0.6rem',\r\n height: 16,\r\n color: theme.palette.theme?.primary[800],\r\n borderColor: theme.palette.theme?.primary[800]\r\n })}\r\n />\r\n )}\r\n {isSelected && (\r\n <Checkbox\r\n checked={true}\r\n size=\"small\"\r\n sx={{\r\n position: 'absolute',\r\n top: 2,\r\n left: 2,\r\n padding: 0\r\n }}\r\n />\r\n )}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n ))}\r\n</TableBody>\r\n </Table>\r\n </Box>\r\n </Box>\r\n\r\n {mergedCells.length > 0 && (\r\n <Box sx={{ mt: 3 }}>\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 2 }}>\r\n Merged Cells ({mergedCells.length})\r\n </Typography>\r\n \r\n {mergedCells.map((merge, index) => (\r\n <Box \r\n key={index}\r\n sx={{ \r\n p: 2, \r\n mb: 1, \r\n border: 1, \r\n borderColor: 'divider', \r\n borderRadius: 1,\r\n bgcolor: 'blue.25'\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', mb: 1 }}>\r\n <Box>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.900\">\r\n Merge {index + 1}: {merge.rowEnd - merge.rowStart + 1}×{merge.colEnd - merge.colStart + 1} cells ({merge.section})\r\n </Typography>\r\n <Typography type=\"s5\" color=\"theme.secondary.700\">\r\n Rows {merge.rowStart + 1}-{merge.rowEnd + 1}, Columns {merge.colStart + 1}-{merge.colEnd + 1}\r\n </Typography>\r\n </Box>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => splitMergedCell(index)}\r\n startIcon={<SplitIcon />}\r\n className='black-outlined-btn'\r\n >\r\n Split\r\n </Button>\r\n </Box>\r\n \r\n <TextField\r\n label=\"Merged Cell Value\"\r\n value={merge.value}\r\n onChange={(e) => {\r\n setTableData(prev => ({\r\n ...prev,\r\n mergedCells: prev.mergedCells?.map((m, i) => \r\n i === index ? { ...m, value: e.target.value } : m\r\n ) || []\r\n }));\r\n }}\r\n size=\"small\"\r\n fullWidth\r\n multiline\r\n rows={2}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Dialog\r\n open={mergeDialogOpen}\r\n onClose={() => setMergeDialogOpen(false)}\r\n maxWidth=\"sm\"\r\n fullWidth\r\n >\r\n <DialogTitle>\r\n <Typography type=\"s2\" weight=\"medium\">\r\n Merge Selected Cells\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent>\r\n <Typography type=\"s4\" color=\"theme.secondary.700\" sx={{ mb: 2 }}>\r\n You are about to merge {selectedCells.length} selected cells in {selectedCells[0]?.section}. \r\n Enter the value for the merged cell:\r\n </Typography>\r\n \r\n <TextField\r\n label=\"Merged Cell Value\"\r\n value={mergeValue}\r\n onChange={(e) => setMergeValue(e.target.value)}\r\n fullWidth\r\n multiline\r\n rows={3}\r\n sx={{ mt: 1 }}\r\n />\r\n \r\n <Alert severity=\"info\" sx={{ mt: 2 }}>\r\n The merged cell will span from row {Math.min(...selectedCells.map(c => c.row)) + 1} to {Math.max(...selectedCells.map(c => c.row)) + 1} \r\n and column {Math.min(...selectedCells.map(c => c.col)) + 1} to {Math.max(...selectedCells.map(c => c.col)) + 1} in {selectedCells[0]?.section}.\r\n </Alert>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => setMergeDialogOpen(false)}>\r\n Cancel\r\n </Button>\r\n <Button \r\n onClick={mergeCells}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Merge Cells\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default TableControls;"],"names":["MuiAccordion","table","_a","_b","_c","_d","RefreshIcon","AddIcon","row","React","ExpandMoreIcon","MergeIcon","SplitIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../../src/views/template-editor/components/controllers/TableControls.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable no-mixed-spaces-and-tabs */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n Box,\n MenuItem,\n Accordion as MuiAccordion,\n AccordionSummary,\n AccordionDetails,\n Grid,\n FormControlLabel,\n Tabs,\n Tab,\n AccordionProps,\n styled,\n Divider,\n IconButton,\n Chip,\n Alert,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport MergeIcon from '@mui/icons-material/MergeType';\nimport SplitIcon from '@mui/icons-material/CallSplit';\nimport ColorPickerInput from '../../../../components/color-picker-input/color-picker-input';\nimport TextField from '../../../../components/text-field/text-field';\nimport Select from '../../../../components/select/select';\nimport formatText from '../../../../utils/format-text';\nimport Typography from '../../../../components/typography/typography';\nimport Android12Switch from '../../../../components/switches/android-12-switch';\nimport BorderControl from './border-control';\nimport Button from '../../../../components/button/button';\nimport Checkbox from '../../../../components/checkbox/checkbox';\nimport { Trash } from '../../../../components/icons';\nimport SearchableSelect from '../../../../components/searchable-select';\n\n// Type definitions\ninterface TableColumn {\n id: string;\n header: string;\n}\n\ninterface TableRow {\n [key: string]: string;\n}\n\ninterface CellMerge {\n section: 'thead' | 'tbody';\n rowStart: number;\n rowEnd: number;\n colStart: number;\n colEnd: number;\n value: string;\n}\n\ninterface TableData {\n columns: TableColumn[];\n rows: TableRow[];\n mergedCells?: CellMerge[];\n}\n\nconst Accordion = styled(\n (props: AccordionProps) => (\n <MuiAccordion disableGutters elevation={0} square {...props} />\n )\n)(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 0,\n '&:not(:last-child)': {\n borderBottom: 0,\n },\n '&::before': {\n display: 'none',\n },\n}));\n\ninterface TableControlsProps {\n tableData: TableData;\n setTableData: (value: TableData) => void;\n attrs: any;\n updateAttrs: (value: any) => void;\n placeholders: Record<string, any>[];\n handleSave?: () => void;\n setParentRowLevel?: (value: boolean) => void;\n levelType?: boolean;\n relation_table?: any;\n}\n\nconst textAlignOptions = ['left', 'center', 'right', 'justify'];\nconst fontWeightOptions = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\nconst fontFamilyOptions = [\n 'Arial, sans-serif',\n 'Helvetica, sans-serif',\n 'Times New Roman, serif',\n 'Georgia, serif',\n 'Courier New, monospace',\n 'Verdana, sans-serif',\n 'Tahoma, sans-serif',\n 'Trebuchet MS, sans-serif'\n];\n\nconst TableControls: React.FC<TableControlsProps> = ({\n tableData,\n setTableData,\n attrs,\n updateAttrs,\n placeholders,\n handleSave,\n setParentRowLevel,\n levelType,\n relation_table\n}) => {\n\n const [tabValue, setTabValue] = useState(0);\n const [expanded, setExpanded] = useState('tableBasic');\n const [autoPopulateEnabled, setAutoPopulateEnabled] = useState(true);\n const [mergeDialogOpen, setMergeDialogOpen] = useState(false);\n const [selectedCells, setSelectedCells] = useState<{section: 'thead' | 'tbody', row: number, col: number}[]>([]);\n const [mergeValue, setMergeValue] = useState('');\n const [rowLevel, setRowLevel] = useState(false);\n const { placeholders: tPlaceholders } = attrs;\n const [selectedTable, setSelectedTable] = useState<string | null>(null);\n // Fix: Change customText to an object type\n const [customText, setCustomText] = useState<{ [rowIndex: number]: { [columnId: string]: string } }>({});\n // New state to track row-level placeholder assignments\n const [rowPlaceholders, setRowPlaceholders] = useState<{ [rowIndex: number]: { [columnId: string]: string } }>({});\n // Initialize merged cells from attrs\n const mergedCells = tableData.mergedCells || [];\nconst [isUpdating, setIsUpdating] = useState(false);\n\nconst getAttributes = (tableId: string) => {\n\n if (!relation_table || !Array.isArray(relation_table)) {\n return [];\n }\n \n const table = relation_table.find((table: any) => {\n return table?.dataKey == tableId\n })\n if (!table || !table.fields || !Array.isArray(table.fields)) {\n return [];\n }\n\n return table.fields\n // .map(field => {\n // const fieldName = field.key;\n // return {\n // label: fieldName?.replace(/_id$/, '') || '', \n // value: field?.select,\n // };\n // });\n};\n\nconst tableAttributes = useMemo(() => \n selectedTable ? getAttributes(selectedTable) : placeholders,\n [placeholders, selectedTable, relation_table] \n)\n // Initialize styles from attrs or use default styles\n const [tableStyles, setTableStyles] = useState(attrs?.styles || {\n is_bordered: true,\n border: 1,\n borderStyle: 'solid',\n borderColor: '#e0e0e0',\n borderCollapse: 'collapse',\n width: '100%',\n thCells: {\n padding: 8\n },\n tbCells: {\n padding: 8\n },\n tHead: {\n backgroundColor: '#f5f5f5',\n color: '#333333',\n fontSize: 14,\n fontWeight: 'bold',\n fontFamily: 'Arial, sans-serif',\n textAlign: 'left',\n margin: '0.5em 0',\n },\n tBody: {\n backgroundColor: '#ffffff',\n color: '#333333',\n fontSize: 14,\n fontWeight: 'normal',\n fontFamily: 'Arial, sans-serif',\n textAlign: 'left',\n }\n });\n\n // Apply styles to attrs when tableStyles change\n useEffect(() => {\n updateAttrs({ styles: tableStyles });\n }, [JSON.stringify(tableStyles)]);\n\n // Auto-populate rows when placeholders change\n useEffect(() => {\n if (autoPopulateEnabled && (tPlaceholders || rowLevel)) {\n populateRowsWithPlaceholders();\n }\n }, [tPlaceholders, autoPopulateEnabled, rowLevel, rowPlaceholders]);\n\n // Generate unique column ID\n const generateColumnId = () => {\n const existingIds = tableData.columns.map(col => col.id);\n let counter = 1;\n while (existingIds.includes(`col${counter}`)) {\n counter++;\n }\n return `col${counter}`;\n };\n\n // Get placeholder value by key\n const getPlaceholderValue = (placeholderKey: string): string => {\n const placeholder = tableAttributes.find(p => p.value === placeholderKey);\n if (!placeholder) return '';\n \n // Return the placeholder syntax for row-level mode\n if (rowLevel) {\n return `{{${placeholder.value}}}`;\n }\n \n // Return the actual value or a sample value if it's dynamic\n if (typeof placeholder.actualValue !== 'undefined') {\n return String(placeholder.actualValue);\n }\n \n // For dynamic placeholders, return a sample/preview value\n switch (placeholder.type) {\n case 'date':\n return new Date().toLocaleDateString();\n case 'datetime':\n return new Date().toLocaleString();\n case 'number':\n return '123';\n case 'currency':\n return '$1,234.56';\n case 'email':\n return 'example@domain.com';\n case 'phone':\n return '+1 (555) 123-4567';\n case 'url':\n return 'https://example.com';\n default:\n return `{{${placeholder.value}}}` || placeholder.label;\n }\n };\n\n // Modified: Populate rows with placeholder values for both column and row level\n const populateRowsWithPlaceholders = () => {\n if (!tPlaceholders && !rowLevel) return;\n\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.map((row, rowIndex) => {\n const updatedRow = { ...row };\n \n prev.columns.forEach(column => {\n let placeholderKey: string | undefined;\n \n // Priority: Row-level placeholders take precedence when rowLevel is true\n if (rowLevel && rowPlaceholders[rowIndex]?.[column.id]) {\n placeholderKey = rowPlaceholders[rowIndex][column.id];\n } else if (tPlaceholders?.[column.id]) {\n placeholderKey = tPlaceholders[column.id];\n }\n\n if (placeholderKey) {\n updatedRow[column.id] = getPlaceholderValue(placeholderKey);\n // Preserve static text in the _static field\n const staticText = customText[rowIndex]?.[column.id] || '';\n if (staticText) {\n updatedRow[`${column.id}_static`] = `${staticText} ${updatedRow[column.id]}`;\n }\n }\n });\n \n return updatedRow;\n })\n }));\n setIsUpdating(false);\n };\n\n // Check if a cell is merged or covered by a merge\n const getCellMergeInfo = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\n const merge = mergedCells?.find(m => \n m.section === section &&\n rowIndex >= m.rowStart && rowIndex <= m.rowEnd &&\n colIndex >= m.colStart && colIndex <= m.colEnd\n );\n \n if (!merge) return null;\n \n return {\n merge,\n isTopLeft: rowIndex === merge.rowStart && colIndex === merge.colStart,\n isCovered: !(rowIndex === merge.rowStart && colIndex === merge.colStart)\n };\n };\n\n // Check if cell is selected for merging\n const isCellSelected = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\n return selectedCells.some(cell => \n cell.section === section && cell.row === rowIndex && cell.col === colIndex\n );\n };\n\n // Toggle cell selection for merging\n const toggleCellSelection = (section: 'thead' | 'tbody', rowIndex: number, colIndex: number) => {\n const cellKey = { section, row: rowIndex, col: colIndex };\n const isSelected = isCellSelected(section, rowIndex, colIndex);\n \n if (isSelected) {\n setSelectedCells(prev => prev.filter(cell => \n !(cell.section === section && cell.row === rowIndex && cell.col === colIndex)\n ));\n } else {\n // Prevent mixing header and body cells in the same merge\n const hasDifferentSection = selectedCells.some(cell => cell.section !== section);\n if (hasDifferentSection) {\n alert('Cannot select cells from both header and body for the same merge');\n return;\n }\n setSelectedCells(prev => [...prev, cellKey]);\n }\n };\n\n // Open merge dialog\n const openMergeDialog = () => {\n if (selectedCells.length < 2) {\n alert('Please select at least 2 cells to merge');\n return;\n }\n \n // Get value from first selected cell\n const firstCell = selectedCells[0];\n let firstCellValue = '';\n let customTextValue = '';\n\n if (firstCell.section === 'tbody') {\n const columnId = tableData.columns[firstCell.col]?.id;\n firstCellValue = tableData.rows[firstCell.row]?.[columnId] || '';\n if (rowLevel) {\n customTextValue = customText[firstCell.row]?.[columnId] || '';\n }\n } else {\n firstCellValue = tableData.columns[firstCell.col]?.header || '';\n }\n\n // Combine customText with cell value only in row-level mode\n const initialMergeValue = rowLevel && customTextValue \n ? `${customTextValue} ${firstCellValue}`.trim() \n : firstCellValue;\n\n setMergeValue(initialMergeValue);\n setMergeDialogOpen(true);\n};\n\n // Perform cell merge\n const mergeCells = () => {\n if (selectedCells.length < 2) return;\n\n const section = selectedCells[0].section;\n const rowIndices = selectedCells.map(cell => cell.row);\n const colIndices = selectedCells.map(cell => cell.col);\n \n const rowStart = Math.min(...rowIndices);\n const rowEnd = Math.max(...rowIndices);\n const colStart = Math.min(...colIndices);\n const colEnd = Math.max(...colIndices);\n\n // Check if selection forms a rectangle\n const expectedCells = (rowEnd - rowStart + 1) * (colEnd - colStart + 1);\n if (selectedCells.length !== expectedCells) {\n alert('Please select a rectangular area of cells to merge');\n return;\n }\n\n // Check for overlapping merges\n const hasOverlap = mergedCells.some(existing => \n existing.section === section &&\n !(rowEnd < existing.rowStart || rowStart > existing.rowEnd ||\n colEnd < existing.colStart || colStart > existing.colEnd)\n );\n\n if (hasOverlap) {\n alert('Cannot merge cells that overlap with existing merged cells');\n return;\n }\n\n const newMerge: CellMerge = {\n section,\n rowStart,\n rowEnd,\n colStart,\n colEnd,\n value: mergeValue\n };\n\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n mergedCells: [...(prev.mergedCells || []), newMerge],\n columns: section === 'thead' ? prev.columns.map((col, index) => \n index === colStart ? { ...col, header: mergeValue } : col\n ) : prev.columns\n }));\n\n setSelectedCells([]);\n setMergeValue('');\n setMergeDialogOpen(false);\n };\n\n // Split merged cell\n const splitMergedCell = (mergeIndex: number) => {\n const merge = mergedCells[mergeIndex];\n \n setTableData(prev => {\n const updatedRows = [...prev.rows];\n const updatedColumns = [...prev.columns];\n \n if (merge.section === 'tbody') {\n for (let row = merge.rowStart; row <= merge.rowEnd; row++) {\n for (let col = merge.colStart; col <= merge.colEnd; col++) {\n const columnId = prev.columns[col]?.id;\n if (columnId && updatedRows[row]) {\n updatedRows[row][columnId] = merge.value;\n }\n }\n }\n } else {\n if (updatedColumns[merge.colStart]) {\n updatedColumns[merge.colStart].header = merge.value;\n }\n }\n \n return {\n ...prev,\n rows: updatedRows,\n name:selectedTable||'',\n columns: updatedColumns,\n mergedCells: prev.mergedCells?.filter((_, index) => index !== mergeIndex) || []\n };\n });\n };\n\n // Add new column\n const addColumn = () => {\n const newColumnId = generateColumnId();\n const newColumn: TableColumn = {\n id: newColumnId,\n header: `Column ${tableData.columns.length + 1}`\n };\n\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n columns: [...prev.columns, newColumn],\n rows: prev.rows.map(row => ({\n ...row,\n [newColumnId]: ''\n })),\n mergedCells: prev.mergedCells?.map(merge => ({\n ...merge\n })) || []\n }));\n };\n\n // Remove column\n const removeColumn = (columnId: string) => {\n const columnIndex = tableData.columns.findIndex(col => col.id === columnId);\n \n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n columns: prev.columns.filter(col => col.id !== columnId),\n rows: prev.rows.map(row => {\n const { [columnId]: removed, ...rest } = row;\n return rest;\n }),\n mergedCells: prev.mergedCells\n ?.filter(merge => !(merge.colStart <= columnIndex && merge.colEnd >= columnIndex))\n .map(merge => ({\n ...merge,\n colStart: merge.colStart > columnIndex ? merge.colStart - 1 : merge.colStart,\n colEnd: merge.colEnd > columnIndex ? merge.colEnd - 1 : merge.colEnd\n })) || []\n }));\n\n if (tPlaceholders && tPlaceholders[columnId]) {\n const updatedPlaceholders = { ...tPlaceholders };\n delete updatedPlaceholders[columnId];\n updateAttrs({ placeholders: updatedPlaceholders });\n }\n };\n\n // Update column header\n const updateColumnHeader = (columnId: string, newHeader: string) => {\n setTableData(prev => ({\n ...prev,\n columns: prev.columns.map(col =>\n col.id === columnId ? { ...col, header: newHeader } : col\n )\n }));\n };\n\n // Add new row\nconst addRow = () => {\n const newRow: TableRow = {};\n\n tableData.columns.forEach(col => {\n if (tPlaceholders?.[col.id]) {\n const placeholderKey = tPlaceholders[col.id];\n newRow[col.id] = `{{${placeholderKey}}}`;\n if(rowLevel){\n newRow[`${col.id}_static`] = newRow[col.id];\n }\n \n } else if (tableData.rows.length > 0) {\n // Copy first row's data if no placeholder\n newRow[col.id] = tableData.rows[0][col.id] || '';\n if(rowLevel){\n newRow[`${col.id}_static`] = tableData.rows[0][`${col.id}_static`] || ''\n }\n } else {\n // Default to empty\n if(rowLevel){\n newRow[`${col.id}_static`] = '';\n }\n newRow[col.id] = '';\n }\n });\n\n setTableData(prev => {\n const updatedRows = [...prev.rows, newRow];\n return {\n ...prev,\n rows: updatedRows,\n name:selectedTable||'',\n mergedCells: prev.mergedCells?.map(merge => ({ ...merge })) || []\n };\n });\n handleSave()\n};\n\n // Remove row\n const removeRow = (rowIndex: number) => {\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.filter((_, index) => index !== rowIndex),\n mergedCells: prev.mergedCells\n ?.filter(merge => !(merge.section === 'tbody' && merge.rowStart <= rowIndex && merge.rowEnd >= rowIndex))\n .map(merge => ({\n ...merge,\n rowStart: merge.section === 'tbody' && merge.rowStart > rowIndex ? merge.rowStart - 1 : merge.rowStart,\n rowEnd: merge.section === 'tbody' && merge.rowEnd > rowIndex ? merge.rowEnd - 1 : merge.rowEnd\n })) || []\n }));\n\n // Clean up rowPlaceholders and customText for the removed row\n setRowPlaceholders(prev => {\n const updated = { ...prev };\n delete updated[rowIndex];\n return updated;\n });\n setCustomText(prev => {\n const updated = { ...prev };\n delete updated[rowIndex];\n return updated;\n });\n };\n\n // Modified: Update cell value and trigger placeholder population\nconst updateRowCellValue = (rowIndex: number, columnId: string, value: string) => {\n setIsUpdating(true);\n const colIndex = tableData.columns.findIndex(col => col.id === columnId);\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\n const staticText = rowLevel ? (customText[rowIndex]?.[columnId] || '') : '';\n\n if (mergeInfo) {\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n mergedCells: prev.mergedCells?.map(merge => \n merge === mergeInfo.merge ? { ...merge, value } : merge\n ) || []\n }));\n } else {\n if (rowLevel && value) {\n setRowPlaceholders(prev => {\n const updated = { ...prev };\n if (!updated[rowIndex]) {\n updated[rowIndex] = {};\n }\n updated[rowIndex][columnId] = value;\n return updated;\n });\n } else if (rowLevel && !value) {\n setRowPlaceholders(prev => {\n const updated = { ...prev };\n if (updated[rowIndex]?.[columnId]) {\n delete updated[rowIndex][columnId];\n if (Object.keys(updated[rowIndex]).length === 0) {\n delete updated[rowIndex];\n }\n }\n return updated;\n });\n }\n\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.map((row, idx) =>\n idx === rowIndex ? { \n ...row, \n [columnId]: rowLevel ? (value ? `{{${value}}}` : '') : (value ? getPlaceholderValue(value) : ''),\n [`${columnId}_static`]: staticText ? `${staticText} ${value ? getPlaceholderValue(value) : ''}`.trim() : (value ? getPlaceholderValue(value) : '')\n } : row\n )\n }));\n\n populateRowsWithPlaceholders();\n }\n };\nconst updateCellValue = (rowIndex: number, columnId: string, value: string) => {\n setIsUpdating(true);\n const colIndex = tableData.columns.findIndex(col => col.id === columnId);\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\n const staticText = customText[rowIndex]?.[columnId] || '';\n\n if (mergeInfo) {\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n mergedCells: prev.mergedCells?.map(merge => \n merge === mergeInfo.merge ? { ...merge, value } : merge\n ) || []\n }));\n } else {\n if (rowLevel) {\n setRowPlaceholders(prev => {\n const updated = { ...prev };\n if (!updated[rowIndex]) {\n updated[rowIndex] = {};\n }\n if (value) {\n updated[rowIndex][columnId] = value;\n } else {\n delete updated[rowIndex][columnId];\n if (Object.keys(updated[rowIndex]).length === 0) {\n delete updated[rowIndex];\n }\n }\n return updated;\n });\n }\n\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.map((row, idx) =>\n idx === rowIndex ? { \n ...row, \n [columnId]: rowLevel ? (value ? `{{${value}}}` : '') : value,\n [`${columnId}_static`]: staticText ? `${staticText} ${value || ''}`.trim() : (value || '')\n } : row\n )\n }));\n\n if (rowLevel || (autoPopulateEnabled && tPlaceholders?.[columnId])) {\n populateRowsWithPlaceholders();\n }\n setIsUpdating(false);\n }\n };\n\n // Modified: Update column placeholder\n const updateColumnPlaceholder = (columnId: string, placeholderValue: string) => {\n setIsUpdating(true);\n const updatedPlaceholders = {\n ...tPlaceholders,\n [columnId]: placeholderValue\n };\n \n if (!placeholderValue) {\n delete updatedPlaceholders[columnId];\n }\n \n updateAttrs({ placeholders: updatedPlaceholders });\n\n if (autoPopulateEnabled) {\n const newCellValue = placeholderValue ? getPlaceholderValue(placeholderValue) : '';\n setTableData(prev => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.map(row => ({\n ...row,\n [columnId]: newCellValue\n }))\n }));\n }\n setIsUpdating(false);\n };\n\n // Refresh all rows with current placeholder values\n const refreshPlaceholderData = () => {\n populateRowsWithPlaceholders();\n };\n\n // Get placeholder info for display\n const getPlaceholderInfo = (placeholderKey: string) => {\n const placeholder = placeholders.find(p => p.value === placeholderKey);\n return placeholder ? {\n label: placeholder.label,\n type: placeholder.type || 'text',\n description: placeholder.description || ''\n } : null;\n };\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n setTabValue(newValue);\n };\n\n const handleAccordionChange = (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : '');\n };\n\n const updateTableStyle = (key: string, value: any) => {\n setTableStyles(prev => ({\n ...prev,\n [key]: value\n }));\n };\n\n const updateHeaderStyle = (key: string, value: any) => {\n setTableStyles(prev => ({\n ...prev,\n tHead: {\n ...prev.tHead,\n [key]: value\n }\n }));\n };\n\n const updateHeaderCellStyle = (key: string, value: any) => {\n setTableStyles(prev => ({\n ...prev,\n thCells: {\n ...prev.thCells,\n [key]: value\n }\n }));\n };\n\n const updateBodyStyle = (key: string, value: any) => {\n setTableStyles(prev => ({\n ...prev,\n tBody: {\n ...prev.tBody,\n [key]: value\n }\n }));\n };\n\n const updateBodyCellStyle = (key: string, value: any) => {\n setTableStyles(prev => ({\n ...prev,\n tbCells: {\n ...prev.tbCells,\n [key]: value\n }\n }));\n };\n\n const resetTable=()=>{\n setTableData((prev: TableData) => ({\n ...prev,\n name:selectedTable||'',\n rows: prev.rows.map((row: TableRow) => {\n return {...Object.fromEntries(prev.columns.map((col: TableColumn) => [col?.id, '']))\n \t}\n })\n }));\n }\n // Count columns with placeholders\n const columnsWithPlaceholders = tPlaceholders ? Object.keys(tPlaceholders).length : 0;\nuseEffect(() => {\n // Determine if rowLevel should be enabled\n setRowLevel(levelType);\n setSelectedTable(tableData?.name || null); // Set default table if available\n // Update custom text by extracting values from _static fields\n setCustomText((prev: { [rowIndex: number]: { [columnId: string]: string } }) => {\n const updated: { [rowIndex: number]: { [columnId: string]: string } } = {}; // Fixed missing bracket here\n \n tableData.rows.forEach((row, rowIndex) => {\n Object.keys(row).forEach(columnId => {\n if (columnId.endsWith('_static')) {\n const originalColumnId = columnId.replace('_static', '');\n if (!updated[rowIndex]) {\n updated[rowIndex] = {};\n }\n\n // Get the original column value (without _static suffix)\n const columnValue = row[originalColumnId] || '';\n \n // Get the static value and remove the original column value if it appears\n let staticValue = row[columnId] || '';\n if (columnValue && staticValue.includes(columnValue)) {\n staticValue = staticValue.replace(columnValue, '').trim();\n }\n \n // Also remove any {{value}} placeholders\n staticValue = staticValue.replace(/\\{\\{\\s*value\\s*\\}\\}/g, '').trim();\n \n updated[rowIndex][originalColumnId] = staticValue;\n }\n });\n });\n \n return updated;\n });\n\n}, [tableData]);\n\nuseEffect(()=>{\n if(!selectedTable) {\n resetTable()\n }\n\n},[selectedTable]);\n return (\n <>\n <Box sx={{ mb: 2, borderBottom: 1,paddingBottom: 5, borderColor: 'divider' }}>\n <Tabs value={tabValue} onChange={handleTabChange} variant=\"fullWidth\" sx={(theme) => ({\n '& .MuiTabs-indicator': {\n backgroundColor: theme.palette.theme?.primary[700]\n },\n '& .MuiTab-root.Mui-selected': {\n color: theme.palette.theme?.primary[700],\n },\n '& .MuiTab-root': {\n textTransform: 'none'\n },\n })}>\n <Tab label=\"Content\" />\n <Tab label=\"Styles\" />\n <Tab label=\"Cell Merging\" />\n </Tabs>\n </Box>\n\n {tabValue === 0 && (\n <>\n <Box sx={{ mb: 2, p: 2, bgcolor: 'grey.50', borderRadius: 1, border: '1px solid', borderColor: 'divider' }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.primary.700\">\n Dynamic Data Settings\n </Typography>\n <Chip \n label={`${columnsWithPlaceholders} columns linked`} \n size=\"small\" \n color=\"primary\" \n variant=\"outlined\"\n sx={theme => ({\n color: theme.palette.theme?.primary[700],\n borderColor: theme.palette.theme?.primary[700]\n })}\n />\n </Box>\n \n <FormControlLabel\n control={\n <Android12Switch\n checked={autoPopulateEnabled}\n onChange={(e) => setAutoPopulateEnabled(e.target.checked)}\n />\n }\n label={\n <Typography type=\"s5\" color=\"theme.secondary.800\">\n Auto-populate rows with placeholder data\n </Typography>\n }\n />\n <FormControlLabel\n control={\n <Android12Switch\n checked={rowLevel}\n onChange={(e) => {\n setRowLevel(e.target.checked);\n setSelectedTable(null); // Reset selected table when toggling row level\n setParentRowLevel(e.target.checked);\n resetTable();\n }}\n />\n }\n label={\n <Typography type=\"s5\" color=\"theme.secondary.800\">\n Row Level Management\n </Typography>\n }\n />\n \n {autoPopulateEnabled && (\n <Box sx={{ mt: 1 }}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={refreshPlaceholderData}\n startIcon={<RefreshIcon />}\n className='black-outlined-btn'\n >\n Refresh Data\n </Button>\n </Box>\n )}\n </Box>\n\n <Box sx={{ mb: 2 }}>\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 1 }}>\n Columns\n </Typography>\n {tableData.columns?.map((column, index) => (\n <Box key={column.id} sx={{ mb: 1, display: 'flex', alignItems: 'center', gap: 1 }}>\n <TextField\n label={`Column ${index + 1} Header`}\n value={column.header}\n onChange={(e) => updateColumnHeader(column.id, e.target.value)}\n size=\"small\"\n sx={{ flex: 1 }}\n />\n <IconButton\n size=\"small\"\n onClick={() => removeColumn(column.id)}\n disabled={tableData.columns.length <= 1}\n color=\"error\"\n >\n <Trash />\n </IconButton>\n </Box>\n ))}\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={addColumn}\n startIcon={<AddIcon />}\n sx={{ mt: 1 }}\n className='black-outlined-btn'\n >\n Add Column\n </Button>\n </Box>\n\n <Divider sx={{ my: 2 }} />\n\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Rows ({tableData.rows.length})\n </Typography>\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={selectedTable}\n onClick={() => addRow()}\n startIcon={<AddIcon />}\n className='black-outlined-btn'\n >\n Add Row\n </Button>\n </Box>\n {!rowLevel &&\n <Box sx={{ mb: 2 }}>\n <SearchableSelect\n value={selectedTable || ''}\n label={'Select Table'}\n options={relation_table?.map(table=>(\n { value: table?.dataKey, label: (table.name.charAt(0).toUpperCase() + table.name.slice(1)).replaceAll('_', ' ') }\n )) || []}\n onChange={(e) => {\n setSelectedTable(e.target.value);\n }}\n />\n </Box>\n\n }\n {tableData.rows.map((row, rowIndex) => (\n <Box key={rowIndex} sx={{ mb: 2, p: 2, border: 1, borderColor: 'divider', borderRadius: 1 }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.800\">\n Row {rowIndex + 1}\n </Typography>\n <IconButton\n size=\"small\"\n onClick={() => removeRow(rowIndex)}\n disabled={tableData.rows.length <= 1}\n color=\"error\"\n >\n <Trash />\n </IconButton>\n </Box>\n <Grid container spacing={1}>\n \n {tableData.columns.map((column, colIndex) => {\n const hasPlaceholder = rowLevel ? rowPlaceholders[rowIndex]?.[column.id] : tPlaceholders?.[column.id];\n const placeholderInfo = hasPlaceholder ? getPlaceholderInfo(tPlaceholders?.[column.id] || rowPlaceholders[rowIndex]?.[column.id]) : null;\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\n\n return (\n <Grid item xs={12} key={column.id}>\n \n {rowLevel ? (\n <>\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.800\"> {column.header} </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <TextField\n value={customText[rowIndex]?.[column.id] || ''}\n onChange={(e) => {\n const newValue = e.target.value;\n setCustomText(prev => {\n const updated = { ...prev };\n if (!updated[rowIndex]) {\n updated[rowIndex] = {};\n }\n updated[rowIndex][column.id] = newValue;\n return updated;\n });\n\n // Update table data on custom text change\n setTableData(prev => ({\n ...prev,\n rows: prev.rows.map((row, idx) =>\n idx === rowIndex\n ? {\n ...row,\n [`${column.id}_static`]: newValue\n ? `${newValue} ${row[column.id] || ''}`.trim()\n : '',\n }\n : row\n ),\n }));\n }}\n size=\"small\"\n placeholder=\"Enter custom text...\"\n sx={{ flex: 1, minWidth: 150 }}\n />\n <Box sx={{ flex: 1, minWidth: 150 }}>\n <SearchableSelect\n value={mergeInfo ? mergeInfo.merge.value : (rowPlaceholders[rowIndex]?.[column.id] ||row[column.id]|| '')}\n onChange={(e) => updateRowCellValue(rowIndex, column.id, e.target.value)}\n size=\"small\"\n options={placeholders || []}\n // disabled={isUpdating}\n sx={{\n flex: 1,\n maxWidth: 150,\n minWidth: 150,\n '& .MuiInputBase-input': {\n bgcolor:\n hasPlaceholder && autoPopulateEnabled\n ? 'grey.100'\n : mergeInfo\n ? 'blue.50'\n : 'transparent',\n width: 150,\n \n },\n }}\n />\n </Box>\n </Box>\n </>\n ) : (\n <TextField\n label={column.header}\n value={mergeInfo ? mergeInfo.merge.value : (row[column.id] || '')}\n onChange={(e) => updateCellValue(rowIndex, column.id, e.target.value)}\n size=\"small\"\n fullWidth\n disabled={autoPopulateEnabled || hasPlaceholder}\n helperText={\n mergeInfo\n ? `Merged cell (${mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1}×${mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1})`\n : hasPlaceholder && placeholderInfo\n ? `Linked to: ${placeholderInfo.label}`\n : undefined\n }\n sx={{\n '& .MuiInputBase-input': {\n bgcolor:\n hasPlaceholder && autoPopulateEnabled\n ? 'grey.100'\n : mergeInfo\n ? 'blue.50'\n : 'transparent',\n },\n }}\n />\n )}\n </Grid>\n );\n })}\n </Grid>\n </Box>\n ))}\n </Box>\n\n <Divider sx={{ my: 2 }} />\n\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 1 }}>\n Column Data Sources\n </Typography>\n \n {placeholders.length === 0 && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n No placeholders available. Add placeholders to dynamically populate table data.\n </Alert>\n )}\n \n <Grid container spacing={1} alignItems='center'>\n {tableData.columns.map((column) => {\n const currentPlaceholder =tPlaceholders?.[column.id]|| tableData.rows?.[0]?.[column.id];\n\n const placeholderInfo = currentPlaceholder ? getPlaceholderInfo(currentPlaceholder) : null;\n \n return (\n <React.Fragment key={column.id}>\n <Grid item xs={4}>\n <Typography type=\"s5\" weight=\"medium\" color=\"theme.secondary.800\">\n {column.header}\n </Typography>\n {placeholderInfo && (\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\n {placeholderInfo.type}\n </Typography>\n )}\n </Grid>\n <Grid item xs={8}>\n <SearchableSelect\n value={rowLevel ? '' : (currentPlaceholder || '')}\n onChange={(e) => {\n updateColumnPlaceholder(column.id, e.target.value as string)\n }}\n size=\"small\"\n options={tableAttributes.map(attr => ({\n value: attr.value,\n label: attr.label,\n // Include description if available in your tableAttributes\n description: attr.description \n }))}\n disabled={isUpdating || rowLevel}\n sx={{\n flex: 1,\n maxWidth: 150,\n minWidth: 150,\n '& .MuiInputBase-input': {\n bgcolor: 'transparent',\n width: 150,\n },\n }}\n renderOption={(props, option) => (\n <MenuItem {...props} key={option.value}>\n <Box>\n <Typography type=\"s5\" color=\"theme.secondary.1000\">\n {option.label}\n </Typography>\n {option.description && (\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\n {option.description}\n </Typography>\n )}\n </Box>\n </MenuItem>\n )}\n noOptionsText={\n <MenuItem disabled>\n <Typography type=\"s5\" color=\"theme.secondary.600\">\n No Data Source\n </Typography>\n </MenuItem>\n }\n />\n {/* <Select\n value={rowLevel ? '' : (currentPlaceholder || '')}\n onChange={(e) => updateColumnPlaceholder(column.id, e.target.value as string)}\n renderValue={(value) => {\n if (!value) return 'Select Data Source';\n const placeholder = placeholders.find(p => p.value === value);\n return placeholder?.label||currentPlaceholder || 'Unknown Placeholder';\n }}\n fullWidth\n disabled={isUpdating}\n size=\"small\"\n displayEmpty\n disabled={rowLevel}\n >\n <MenuItem value=\"\">\n <Typography type=\"s5\" color=\"theme.secondary.600\">No Data Source</Typography>\n </MenuItem>\n {tableAttributes.map((placeholder) => (\n <MenuItem key={placeholder.value} value={placeholder.value}>\n <Box>\n <Typography type=\"s5\" color=\"theme.secondary.1000\">\n {placeholder.label}\n </Typography>\n {placeholder.description && (\n <Typography type=\"s6\" color=\"theme.secondary.600\" sx={{ fontStyle: 'italic' }}>\n {placeholder.description}\n </Typography>\n )}\n </Box>\n </MenuItem>\n ))}\n </Select> */}\n </Grid>\n </React.Fragment>\n );\n })}\n </Grid>\n </>\n )}\n\n {tabValue === 1 && (\n <Box sx={{\n '& >:first-child': { borderTopLeftRadius: 8, borderTopRightRadius: 8 },\n '& >:last-child': { borderBottomLeftRadius: 8, borderBottomRightRadius: 8 }\n }}>\n <Accordion \n expanded={expanded === 'tableBasic'} \n onChange={handleAccordionChange('tableBasic')}\n disableGutters\n >\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography type='s3' color='theme.secondary.1000'>Table Basic Properties</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <BorderControl\n styles={tableStyles}\n onChange={(key, value) => updateTableStyle(key, value)}\n isBordered={tableStyles.is_bordered}\n disableRadius\n />\n </AccordionDetails>\n </Accordion>\n\n <Accordion \n expanded={expanded === 'tableHeader'} \n onChange={handleAccordionChange('tableHeader')}\n disableGutters\n >\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography type='s3' color='theme.secondary.1000'>Table Header Styles</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <ColorPickerInput\n value={tableStyles.tHead?.backgroundColor || '#f5f5f5'}\n onChange={(color) => updateHeaderStyle('backgroundColor', color)}\n fullWidth\n label='Background Color'\n />\n </Grid>\n \n <Grid item xs={12}>\n <ColorPickerInput\n value={tableStyles.tHead?.color || '#333333'}\n onChange={(color) => updateHeaderStyle('color', color)}\n fullWidth\n label='Text Color'\n />\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n label='Font Size'\n type='number'\n value={tableStyles.tHead?.fontSize || 14}\n onChange={(e) => updateHeaderStyle('fontSize', parseInt(e.target.value) || 14)}\n size='small'\n fullWidth\n />\n </Grid>\n\n <Grid item xs={6}>\n <Select\n value={tableStyles.tHead?.fontWeight || 'bold'}\n onChange={(e) => updateHeaderStyle('fontWeight', e.target.value)}\n fullWidth\n size='small'\n label='Font Weight'\n >\n {fontWeightOptions.map(weight => (\n <MenuItem key={weight} value={weight}>\n {formatText(weight)}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={12}>\n <Select\n value={tableStyles.tHead?.fontFamily || 'Arial, sans-serif'}\n onChange={(e) => updateHeaderStyle('fontFamily', e.target.value)}\n fullWidth\n size='small'\n label='Font Family'\n >\n {fontFamilyOptions.map(font => (\n <MenuItem key={font} value={font}>\n {font.split(',')[0]}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={6}>\n <Select\n value={tableStyles.tHead?.textAlign || 'left'}\n onChange={(e) => updateHeaderStyle('textAlign', e.target.value)}\n fullWidth\n size='small'\n label='Text Align'\n >\n {textAlignOptions.map(align => (\n <MenuItem key={align} value={align}>\n {formatText(align)}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n label='Cell Padding'\n type='number'\n value={tableStyles.thCells?.padding || 8}\n onChange={(e) => updateHeaderCellStyle('padding', parseInt(e.target.value) || 8)}\n size='small'\n fullWidth\n />\n </Grid>\n\n <Grid item xs={12}>\n <FormControlLabel\n control={\n <Android12Switch\n checked={!!tableStyles.tBody?.zebraStriping}\n onChange={(e) => updateBodyStyle('zebraStriping', e.target.checked)}\n />\n }\n label=\"Zebra Striping\"\n />\n </Grid>\n\n {tableStyles.tBody?.zebraStriping && (\n <Grid item xs={12}>\n <Typography type='s5' weight='medium' color='theme.secondary.1000' variant=\"caption\">Alternating Row Color</Typography>\n <ColorPickerInput\n value={tableStyles.tBody?.alternateRowColor || '#f9f9f9'}\n onChange={(color) => updateBodyStyle('alternateRowColor', color)}\n fullWidth\n />\n </Grid>\n )}\n </Grid>\n </AccordionDetails>\n </Accordion>\n\n <Accordion \n expanded={expanded === 'tableBody'} \n onChange={handleAccordionChange('tableBody')}\n disableGutters\n >\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography type='s3' color='theme.secondary.1000'>Table Body Styles</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <ColorPickerInput\n value={tableStyles.tBody?.backgroundColor || '#ffffff'}\n onChange={(color) => updateBodyStyle('backgroundColor', color)}\n fullWidth\n label='Background Color'\n />\n </Grid>\n \n <Grid item xs={12}>\n <ColorPickerInput\n value={tableStyles.tBody?.color || '#333333'}\n onChange={(color) => updateBodyStyle('color', color)}\n fullWidth\n label='Text Color'\n />\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n label='Font Size'\n type='number'\n value={tableStyles.tBody?.fontSize || 14}\n onChange={(e) => updateBodyStyle('fontSize', parseInt(e.target.value) || 14)}\n size='small'\n fullWidth\n />\n </Grid>\n\n <Grid item xs={6}>\n <Select\n value={tableStyles.tBody?.fontWeight || 'normal'}\n onChange={(e) => updateBodyStyle('fontWeight', e.target.value)}\n fullWidth\n size='small'\n label='Font Weight'\n >\n {fontWeightOptions.map(weight => (\n <MenuItem key={weight} value={weight}>\n {formatText(weight)}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={12}>\n <Select\n value={tableStyles.tBody?.fontFamily || 'Arial, sans-serif'}\n onChange={(e) => updateBodyStyle('fontFamily', e.target.value)}\n fullWidth\n size='small'\n label='Font Family'\n >\n {fontFamilyOptions.map(font => (\n <MenuItem key={font} value={font}>\n {font.split(',')[0]}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={6}>\n <Select\n value={tableStyles.tBody?.textAlign || 'left'}\n onChange={(e) => updateBodyStyle('textAlign', e.target.value)}\n fullWidth\n size='small'\n label='Text Align'\n >\n {textAlignOptions.map(align => (\n <MenuItem key={align} value={align}>\n {formatText(align)}\n </MenuItem>\n ))}\n </Select>\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n label='Cell Padding'\n type='number'\n value={tableStyles.tbCells?.padding || 8}\n onChange={(e) => updateBodyCellStyle('padding', parseInt(e.target.value) || 8)}\n size='small'\n fullWidth\n />\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n </Box>\n )}\n\n {tabValue === 2 && (\n <Box>\n <Box sx={{ mb: 3 }}>\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 2 }}>\n Cell Selection & Merging\n </Typography>\n \n <Alert severity=\"info\" sx={{ mb: 2 }}>\n Click on cells in the table below to select them for merging. Selected cells will be highlighted. You can merge cells within the header or body, but not across both.\n </Alert>\n\n <Box sx={{ display: 'flex', gap: 1, mb: 2, flexWrap: 'wrap' }}>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={openMergeDialog}\n startIcon={<MergeIcon />}\n disabled={selectedCells.length < 2}\n color=\"primary\"\n >\n Merge Selected ({selectedCells.length})\n </Button>\n \n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setSelectedCells([])}\n disabled={selectedCells.length === 0}\n className='black-outlined-btn'\n >\n Clear Selection\n </Button>\n </Box>\n\n <Box sx={{ \n border: 1, \n borderColor: 'divider', \n borderRadius: 1, \n overflow: 'auto',\n maxHeight: 400\n }}>\n <Table size=\"small\" sx={{ minWidth: 300 }}>\n <TableHead>\n <TableRow>\n {tableData.columns.map((column, colIndex) => {\n const mergeInfo = getCellMergeInfo('thead', 0, colIndex);\n const isSelected = isCellSelected('thead', 0, colIndex);\n \n if (mergeInfo?.isCovered) {\n return null;\n }\n\n const cellContent = mergeInfo ? mergeInfo.merge.value : column.header;\n const rowSpan = mergeInfo ? mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1 : 1;\n const colSpan = mergeInfo ? mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1 : 1;\n\n return (\n <TableCell \n key={column.id}\n rowSpan={rowSpan}\n colSpan={colSpan}\n onClick={() => !mergeInfo && toggleCellSelection('thead', 0, colIndex)}\n sx={(theme) => ({ \n fontWeight: 'bold',\n bgcolor: mergeInfo ? 'blue.50' : \n isSelected ? 'primary.100' : 'grey.100',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n cursor: mergeInfo ? 'default' : 'pointer',\n border: isSelected ? 2 : 1,\n borderColor: isSelected ? theme.palette.theme.primary[800] : 'divider',\n '&:hover': mergeInfo ? {} : {\n bgcolor: isSelected ? 'primary.200' : 'grey.50'\n }\n })}\n >\n {cellContent}\n {mergeInfo && (\n <Chip\n label={`${rowSpan}×${colSpan}`}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={(theme) => ({\n position: 'absolute',\n top: 2,\n right: 2,\n fontSize: '0.6rem',\n height: 16,\n color: theme.palette.theme.primary[800],\n borderColor: theme.palette.theme.primary[800]\n })}\n />\n )}\n {isSelected && (\n <Checkbox\n checked={true}\n size=\"small\"\n sx={{\n position: 'absolute',\n top: 2,\n left: 2,\n padding: 0\n }}\n />\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableHead>\n <TableBody>\n {tableData.rows.map((row, rowIndex) => (\n <TableRow key={rowIndex}>\n {tableData.columns.map((column, colIndex) => {\n const mergeInfo = getCellMergeInfo('tbody', rowIndex, colIndex);\n const isSelected = isCellSelected('tbody', rowIndex, colIndex);\n \n if (mergeInfo?.isCovered) {\n return null;\n }\n\n // Get customText for the cell\n const customTextValue = customText[rowIndex]?.[column.id] || '';\n // Combine customText with cell value or merge value\n const cellContent = mergeInfo \n ? mergeInfo.merge.value // Already includes customText from mergeCells\n : customTextValue \n ? `${customTextValue} ${row[column.id] || ''}`.trim() \n : row[column.id] || '';\n\n const rowSpan = mergeInfo ? mergeInfo.merge.rowEnd - mergeInfo.merge.rowStart + 1 : 1;\n const colSpan = mergeInfo ? mergeInfo.merge.colEnd - mergeInfo.merge.colStart + 1 : 1;\n\n return (\n <TableCell\n key={column.id}\n rowSpan={rowSpan}\n colSpan={colSpan}\n onClick={() => !mergeInfo && toggleCellSelection('tbody', rowIndex, colIndex)}\n sx={(theme) => ({ \n cursor: mergeInfo ? 'default' : 'pointer',\n bgcolor: mergeInfo ? 'blue.50' : \n isSelected ? 'primary.100' : \n 'transparent',\n border: isSelected ? 2 : 1,\n borderColor: isSelected ? theme.palette.theme?.primary[800] : 'divider',\n '&:hover': mergeInfo ? {} : {\n bgcolor: isSelected ? 'primary.200' : 'grey.50'\n },\n position: 'relative'\n })}\n >\n {cellContent}\n {mergeInfo && (\n <Chip\n label={`${rowSpan}×${colSpan}`}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={(theme) => ({\n position: 'absolute',\n top: 2,\n right: 2,\n fontSize: '0.6rem',\n height: 16,\n color: theme.palette.theme?.primary[800],\n borderColor: theme.palette.theme?.primary[800]\n })}\n />\n )}\n {isSelected && (\n <Checkbox\n checked={true}\n size=\"small\"\n sx={{\n position: 'absolute',\n top: 2,\n left: 2,\n padding: 0\n }}\n />\n )}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n</TableBody>\n </Table>\n </Box>\n </Box>\n\n {mergedCells.length > 0 && (\n <Box sx={{ mt: 3 }}>\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\" sx={{ mb: 2 }}>\n Merged Cells ({mergedCells.length})\n </Typography>\n \n {mergedCells.map((merge, index) => (\n <Box \n key={index}\n sx={{ \n p: 2, \n mb: 1, \n border: 1, \n borderColor: 'divider', \n borderRadius: 1,\n bgcolor: 'blue.25'\n }}\n >\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', mb: 1 }}>\n <Box>\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.900\">\n Merge {index + 1}: {merge.rowEnd - merge.rowStart + 1}×{merge.colEnd - merge.colStart + 1} cells ({merge.section})\n </Typography>\n <Typography type=\"s5\" color=\"theme.secondary.700\">\n Rows {merge.rowStart + 1}-{merge.rowEnd + 1}, Columns {merge.colStart + 1}-{merge.colEnd + 1}\n </Typography>\n </Box>\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => splitMergedCell(index)}\n startIcon={<SplitIcon />}\n className='black-outlined-btn'\n >\n Split\n </Button>\n </Box>\n \n <TextField\n label=\"Merged Cell Value\"\n value={merge.value}\n onChange={(e) => {\n setTableData(prev => ({\n ...prev,\n mergedCells: prev.mergedCells?.map((m, i) => \n i === index ? { ...m, value: e.target.value } : m\n ) || []\n }));\n }}\n size=\"small\"\n fullWidth\n multiline\n rows={2}\n />\n </Box>\n ))}\n </Box>\n )}\n </Box>\n )}\n\n <Dialog\n open={mergeDialogOpen}\n onClose={() => setMergeDialogOpen(false)}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>\n <Typography type=\"s2\" weight=\"medium\">\n Merge Selected Cells\n </Typography>\n </DialogTitle>\n <DialogContent>\n <Typography type=\"s4\" color=\"theme.secondary.700\" sx={{ mb: 2 }}>\n You are about to merge {selectedCells.length} selected cells in {selectedCells[0]?.section}. \n Enter the value for the merged cell:\n </Typography>\n \n <TextField\n label=\"Merged Cell Value\"\n value={mergeValue}\n onChange={(e) => setMergeValue(e.target.value)}\n fullWidth\n multiline\n rows={3}\n sx={{ mt: 1 }}\n />\n \n <Alert severity=\"info\" sx={{ mt: 2 }}>\n The merged cell will span from row {Math.min(...selectedCells.map(c => c.row)) + 1} to {Math.max(...selectedCells.map(c => c.row)) + 1} \n and column {Math.min(...selectedCells.map(c => c.col)) + 1} to {Math.max(...selectedCells.map(c => c.col)) + 1} in {selectedCells[0]?.section}.\n </Alert>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => setMergeDialogOpen(false)}>\n Cancel\n </Button>\n <Button \n onClick={mergeCells}\n variant=\"contained\"\n color=\"primary\"\n >\n Merge Cells\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nexport default TableControls;"],"names":["MuiAccordion","table","_a","_b","_c","_d","RefreshIcon","AddIcon","row","React","ExpandMoreIcon","MergeIcon","SplitIcon"],"mappings":"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"}
|