@erpsquad/common 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/CHANGELOG.md +253 -253
  2. package/CSS_SETUP.md +67 -0
  3. package/QUICK_START.md +34 -0
  4. package/dist/_virtual/index/index.esm10.js +2 -4
  5. package/dist/_virtual/index/index.esm10.js.map +1 -1
  6. package/dist/_virtual/index/index.esm11.js +3 -3
  7. package/dist/_virtual/index/index.esm2.js +4 -2
  8. package/dist/_virtual/index/index.esm2.js.map +1 -1
  9. package/dist/_virtual/index/index.esm3.js +3 -3
  10. package/dist/_virtual/index/index.esm4.js +3 -3
  11. package/dist/_virtual/index/index.esm5.js +3 -3
  12. package/dist/_virtual/index/index.esm6.js +3 -3
  13. package/dist/_virtual/index/index.esm7.js +3 -3
  14. package/dist/_virtual/index/index.esm8.js +3 -3
  15. package/dist/_virtual/index/index.esm9.js +3 -3
  16. package/dist/_virtual/index/index10.js +1 -1
  17. package/dist/_virtual/index/index11.js +1 -1
  18. package/dist/_virtual/index/index2.js +1 -1
  19. package/dist/_virtual/index/index3.js +1 -1
  20. package/dist/_virtual/index/index4.js +1 -1
  21. package/dist/_virtual/index/index5.js +1 -1
  22. package/dist/_virtual/index/index6.js +1 -1
  23. package/dist/_virtual/index/index7.js +1 -1
  24. package/dist/_virtual/index/index8.js +1 -1
  25. package/dist/_virtual/index/index9.js +1 -1
  26. package/dist/api-client/api.accounting/api/index.esm.js.map +1 -1
  27. package/dist/api-client/api.accounting/api/index.js.map +1 -1
  28. package/dist/api-client/api.drive/api/index.esm.js.map +1 -1
  29. package/dist/api-client/api.drive/api/index.js.map +1 -1
  30. package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
  31. package/dist/api-client/api.inventory/api/index.js.map +1 -1
  32. package/dist/api-client/api.manufacturing/api/index.esm.js.map +1 -1
  33. package/dist/api-client/api.manufacturing/api/index.js.map +1 -1
  34. package/dist/api-client/api.purchase/api/index.esm.js.map +1 -1
  35. package/dist/api-client/api.purchase/api/index.js.map +1 -1
  36. package/dist/api-client/api.rbac/api/index.esm.js.map +1 -1
  37. package/dist/api-client/api.rbac/api/index.js.map +1 -1
  38. package/dist/api-client/api.rental/api/index.esm.js.map +1 -1
  39. package/dist/api-client/api.rental/api/index.js.map +1 -1
  40. package/dist/api-client/api.sales/api/index.esm.js.map +1 -1
  41. package/dist/api-client/api.sales/api/index.js.map +1 -1
  42. package/dist/api-client/api.system-feature/api/index.esm.js.map +1 -1
  43. package/dist/api-client/api.system-feature/api/index.js.map +1 -1
  44. package/dist/api-client/api.user/api/index.esm.js.map +1 -1
  45. package/dist/api-client/api.user/api/index.js.map +1 -1
  46. package/dist/api-client/index.d.ts +39 -39
  47. package/dist/components/action-bar/action-bar/index.esm.js +56 -4
  48. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  49. package/dist/components/action-bar/action-bar/index.js +28 -18
  50. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  51. package/dist/components/change-user-password-modal/change-user-password-modal/index.esm.js.map +1 -1
  52. package/dist/components/change-user-password-modal/change-user-password-modal/index.js.map +1 -1
  53. package/dist/components/editor/custom-editor/index.esm.js +1 -1
  54. package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
  55. package/dist/components/editor/custom-editor/index.js +1 -1
  56. package/dist/components/editor/custom-editor/index.js.map +1 -1
  57. package/dist/components/filter/filter/index.esm.js +1 -1
  58. package/dist/components/filter/filter/index.esm.js.map +1 -1
  59. package/dist/components/filter/filter/index.js +1 -1
  60. package/dist/components/filter/filter/index.js.map +1 -1
  61. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
  62. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
  63. package/dist/components/header/header/index.esm.js +1 -1
  64. package/dist/components/header/header/index.esm.js.map +1 -1
  65. package/dist/components/header/header/index.js +1 -1
  66. package/dist/components/header/header/index.js.map +1 -1
  67. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  68. package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
  69. package/dist/components/header/redux/actionCreator/index.js +1 -1
  70. package/dist/components/header/redux/actionCreator/index.js.map +1 -1
  71. package/dist/components/index.d.ts +0 -2
  72. package/dist/components/index.esm.js +428 -432
  73. package/dist/components/index.esm.js.map +1 -1
  74. package/dist/components/index.js +1 -1
  75. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  76. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  77. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
  78. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
  79. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  80. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  81. package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
  82. package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
  83. package/dist/components/reset-password-modal/reset-password-modal/index.esm.js.map +1 -1
  84. package/dist/components/reset-password-modal/reset-password-modal/index.js.map +1 -1
  85. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  86. package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
  87. package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
  88. package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
  89. package/dist/components/sub-header-doc/sub-header-doc/index.esm.js.map +1 -1
  90. package/dist/components/sub-header-doc/sub-header-doc/index.js.map +1 -1
  91. package/dist/components/upload/upload/index.esm.js +2 -2
  92. package/dist/components/upload/upload/index.esm.js.map +1 -1
  93. package/dist/components/upload/upload/index.js +2 -2
  94. package/dist/components/upload/upload/index.js.map +1 -1
  95. package/dist/constants/modules/index.esm.js.map +1 -1
  96. package/dist/constants/modules/index.js.map +1 -1
  97. package/dist/constants/pathnames/pathname/index.esm.js.map +1 -1
  98. package/dist/constants/pathnames/pathname/index.js.map +1 -1
  99. package/dist/constants/pathnames/pathname.accounting/index.esm.js.map +1 -1
  100. package/dist/constants/pathnames/pathname.accounting/index.js.map +1 -1
  101. package/dist/constants/pathnames/pathname.crm/index.esm.js.map +1 -1
  102. package/dist/constants/pathnames/pathname.crm/index.js.map +1 -1
  103. package/dist/constants/pathnames/pathname.document/index.esm.js.map +1 -1
  104. package/dist/constants/pathnames/pathname.document/index.js.map +1 -1
  105. package/dist/constants/pathnames/pathname.hrms/index.esm.js.map +1 -1
  106. package/dist/constants/pathnames/pathname.hrms/index.js.map +1 -1
  107. package/dist/constants/pathnames/pathname.inventory/index.esm.js.map +1 -1
  108. package/dist/constants/pathnames/pathname.inventory/index.js.map +1 -1
  109. package/dist/constants/pathnames/pathname.manufacturing/index.esm.js.map +1 -1
  110. package/dist/constants/pathnames/pathname.manufacturing/index.js.map +1 -1
  111. package/dist/constants/pathnames/pathname.office/index.esm.js.map +1 -1
  112. package/dist/constants/pathnames/pathname.office/index.js.map +1 -1
  113. package/dist/constants/pathnames/pathname.procurement/index.esm.js.map +1 -1
  114. package/dist/constants/pathnames/pathname.procurement/index.js.map +1 -1
  115. package/dist/constants/pathnames/pathname.project/index.esm.js.map +1 -1
  116. package/dist/constants/pathnames/pathname.project/index.js.map +1 -1
  117. package/dist/constants/pathnames/pathname.quotes/index.esm.js.map +1 -1
  118. package/dist/constants/pathnames/pathname.quotes/index.js.map +1 -1
  119. package/dist/constants/pathnames/pathname.rental/index.esm.js.map +1 -1
  120. package/dist/constants/pathnames/pathname.rental/index.js.map +1 -1
  121. package/dist/constants/pathnames/pathname.user/index.esm.js.map +1 -1
  122. package/dist/constants/pathnames/pathname.user/index.js.map +1 -1
  123. package/dist/constants/route-page-map/index.esm.js.map +1 -1
  124. package/dist/constants/route-page-map/index.js.map +1 -1
  125. package/dist/contexts/AuthContext/index.esm.js +2 -2
  126. package/dist/contexts/AuthContext/index.esm.js.map +1 -1
  127. package/dist/contexts/AuthContext/index.js +1 -1
  128. package/dist/contexts/AuthContext/index.js.map +1 -1
  129. package/dist/contexts/languageContext/index.esm.js +1 -1
  130. package/dist/contexts/languageContext/index.esm.js.map +1 -1
  131. package/dist/contexts/languageContext/index.js +1 -1
  132. package/dist/contexts/languageContext/index.js.map +1 -1
  133. package/dist/contexts/page-context/index.esm.js +2 -3
  134. package/dist/contexts/page-context/index.esm.js.map +1 -1
  135. package/dist/contexts/page-context/index.js +1 -1
  136. package/dist/contexts/page-context/index.js.map +1 -1
  137. package/dist/hooks/use-material-calculations/index.esm.js +2 -2
  138. package/dist/hooks/use-material-calculations/index.esm.js.map +1 -1
  139. package/dist/hooks/use-material-calculations/index.js.map +1 -1
  140. package/dist/hooks/use-translations/index.esm.js.map +1 -1
  141. package/dist/hooks/use-translations/index.js.map +1 -1
  142. package/dist/hooks/useLanguageFallback/index.esm.js +2 -2
  143. package/dist/hooks/useLanguageFallback/index.esm.js.map +1 -1
  144. package/dist/hooks/useLanguageFallback/index.js.map +1 -1
  145. package/dist/hooks/useLocationFilter/index.esm.js +2 -2
  146. package/dist/hooks/useLocationFilter/index.esm.js.map +1 -1
  147. package/dist/hooks/useLocationFilter/index.js.map +1 -1
  148. package/dist/index.esm.js +512 -516
  149. package/dist/index.esm.js.map +1 -1
  150. package/dist/index.js +1 -1
  151. package/dist/layout/fullScreen/fullScreen/index.esm.js.map +1 -1
  152. package/dist/layout/fullScreen/fullScreen/index.js.map +1 -1
  153. package/dist/layout/index.d.ts +3 -3
  154. package/dist/layout/sidebarScreen/sidebarScreen/index.esm.js.map +1 -1
  155. package/dist/layout/sidebarScreen/sidebarScreen/index.js.map +1 -1
  156. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +2 -2
  157. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
  158. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js.map +1 -1
  159. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.esm.js +1 -1
  160. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js +2 -2
  161. package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js.map +1 -1
  162. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +4 -4
  163. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js.map +1 -1
  164. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
  165. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
  166. package/dist/node_modules/@mui/material/Hidden/HiddenJs/index.js.map +1 -1
  167. package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
  168. package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
  169. package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
  170. package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
  171. package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
  172. package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
  173. package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
  174. package/dist/node_modules/@mui/utils/esm/elementTypeAcceptingRef/elementTypeAcceptingRef/index.js.map +1 -1
  175. package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles/index.js.map +1 -1
  176. package/dist/node_modules/@popperjs/core/lib/modifiers/arrow/index.js.map +1 -1
  177. package/dist/node_modules/@popperjs/core/lib/modifiers/computeStyles/index.js.map +1 -1
  178. package/dist/node_modules/@popperjs/core/lib/modifiers/flip/index.js.map +1 -1
  179. package/dist/node_modules/@popperjs/core/lib/modifiers/hide/index.js.map +1 -1
  180. package/dist/node_modules/@popperjs/core/lib/modifiers/offset/index.js.map +1 -1
  181. package/dist/node_modules/@popperjs/core/lib/modifiers/popperOffsets/index.js.map +1 -1
  182. package/dist/node_modules/@popperjs/core/lib/modifiers/preventOverflow/index.js.map +1 -1
  183. package/dist/node_modules/@toast-ui/editor/dist/esm/index/index.esm.js +21 -21
  184. package/dist/node_modules/@toast-ui/editor/dist/esm/index/index.esm.js.map +1 -1
  185. package/dist/node_modules/@toast-ui/editor/dist/toastui-editor-viewer/index.esm.js +25 -25
  186. package/dist/node_modules/@toast-ui/editor/dist/toastui-editor-viewer/index.esm.js.map +1 -1
  187. 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
  188. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +1 -0
  189. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +2 -0
  190. package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +1 -0
  191. package/dist/redux/actionCreator/index.esm.js.map +1 -1
  192. package/dist/redux/actionCreator/index.js.map +1 -1
  193. package/dist/redux/slices/headerSlice/index.esm.js +2 -2
  194. package/dist/redux/slices/headerSlice/index.esm.js.map +1 -1
  195. package/dist/redux/slices/headerSlice/index.js.map +1 -1
  196. package/dist/redux/slices/inventoryReportsTitleBarSlice/index.esm.js +2 -2
  197. package/dist/redux/slices/inventoryReportsTitleBarSlice/index.esm.js.map +1 -1
  198. package/dist/redux/slices/inventoryReportsTitleBarSlice/index.js.map +1 -1
  199. package/dist/redux/slices/reportsTitleBarSlice/index.esm.js +2 -2
  200. package/dist/redux/slices/reportsTitleBarSlice/index.esm.js.map +1 -1
  201. package/dist/redux/slices/reportsTitleBarSlice/index.js.map +1 -1
  202. package/dist/redux/slices/shareSlice/index.esm.js +2 -2
  203. package/dist/redux/slices/shareSlice/index.esm.js.map +1 -1
  204. package/dist/redux/slices/shareSlice/index.js.map +1 -1
  205. package/dist/server/index.esm.js.map +1 -1
  206. package/dist/server/index.js.map +1 -1
  207. package/dist/style.css +2 -2
  208. package/dist/utils/api/index.esm.js +4 -4
  209. package/dist/utils/api/index.esm.js.map +1 -1
  210. package/dist/utils/api/index.js +1 -1
  211. package/dist/utils/api/index.js.map +1 -1
  212. package/dist/utils/common/index.esm.js +8 -8
  213. package/dist/utils/common/index.esm.js.map +1 -1
  214. package/dist/utils/common/index.js +1 -1
  215. package/dist/utils/common/index.js.map +1 -1
  216. package/dist/utils/date-range/index.esm.js.map +1 -1
  217. package/dist/utils/date-range/index.js.map +1 -1
  218. package/dist/utils/menu-filter/index.esm.js.map +1 -1
  219. package/dist/utils/menu-filter/index.js.map +1 -1
  220. package/dist/views/afterAuth/dashboard/redux/actionCreator/index.esm.js.map +1 -1
  221. package/dist/views/afterAuth/dashboard/redux/actionCreator/index.js.map +1 -1
  222. package/dist/views/afterAuth/dashboard/redux/reducer/index.esm.js.map +1 -1
  223. package/dist/views/afterAuth/dashboard/redux/reducer/index.js.map +1 -1
  224. package/dist/views/afterAuth/dashboard/redux/state/index.esm.js.map +1 -1
  225. package/dist/views/afterAuth/dashboard/redux/state/index.js.map +1 -1
  226. package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.esm.js.map +1 -1
  227. package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.js.map +1 -1
  228. package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.esm.js.map +1 -1
  229. package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.js.map +1 -1
  230. package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.esm.js.map +1 -1
  231. package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.js.map +1 -1
  232. package/dist/views/template-editor/add-template/add-template/index.esm.js.map +1 -1
  233. package/dist/views/template-editor/add-template/add-template/index.js.map +1 -1
  234. package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.esm.js.map +1 -1
  235. package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.js.map +1 -1
  236. package/dist/views/template-editor/components/EditorCanvas/index.esm.js.map +1 -1
  237. package/dist/views/template-editor/components/EditorCanvas/index.js.map +1 -1
  238. package/dist/views/template-editor/components/EditorHeader/index.esm.js.map +1 -1
  239. package/dist/views/template-editor/components/EditorHeader/index.js.map +1 -1
  240. package/dist/views/template-editor/components/EditorSection/index.esm.js.map +1 -1
  241. package/dist/views/template-editor/components/EditorSection/index.js.map +1 -1
  242. package/dist/views/template-editor/components/EditorSidebar/index.esm.js +3 -3
  243. package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
  244. package/dist/views/template-editor/components/EditorSidebar/index.js +14 -14
  245. package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
  246. package/dist/views/template-editor/components/SectionFlowEditor/index.esm.js.map +1 -1
  247. package/dist/views/template-editor/components/SectionFlowEditor/index.js.map +1 -1
  248. package/dist/views/template-editor/components/SectionFormatPanel/index.esm.js.map +1 -1
  249. package/dist/views/template-editor/components/SectionFormatPanel/index.js.map +1 -1
  250. package/dist/views/template-editor/components/controllers/AlignmentControl/index.esm.js.map +1 -1
  251. package/dist/views/template-editor/components/controllers/AlignmentControl/index.js.map +1 -1
  252. package/dist/views/template-editor/components/controllers/ButtonControls/index.esm.js.map +1 -1
  253. package/dist/views/template-editor/components/controllers/ButtonControls/index.js.map +1 -1
  254. package/dist/views/template-editor/components/controllers/CodeControls/index.esm.js.map +1 -1
  255. package/dist/views/template-editor/components/controllers/CodeControls/index.js.map +1 -1
  256. package/dist/views/template-editor/components/controllers/DividerControls/index.esm.js.map +1 -1
  257. package/dist/views/template-editor/components/controllers/DividerControls/index.js.map +1 -1
  258. package/dist/views/template-editor/components/controllers/ImageControls/index.esm.js.map +1 -1
  259. package/dist/views/template-editor/components/controllers/ImageControls/index.js.map +1 -1
  260. package/dist/views/template-editor/components/controllers/SignatureControls/index.esm.js.map +1 -1
  261. package/dist/views/template-editor/components/controllers/SignatureControls/index.js.map +1 -1
  262. package/dist/views/template-editor/components/controllers/TableControls/index.esm.js.map +1 -1
  263. package/dist/views/template-editor/components/controllers/TableControls/index.js.map +1 -1
  264. package/dist/views/template-editor/components/controllers/TextControls/index.esm.js.map +1 -1
  265. package/dist/views/template-editor/components/controllers/TextControls/index.js.map +1 -1
  266. package/dist/views/template-editor/components/controllers/border-control/index.esm.js.map +1 -1
  267. package/dist/views/template-editor/components/controllers/border-control/index.js.map +1 -1
  268. package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.esm.js.map +1 -1
  269. package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.js.map +1 -1
  270. package/dist/views/template-editor/routes/index.esm.js.map +1 -1
  271. package/dist/views/template-editor/routes/index.js.map +1 -1
  272. package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.esm.js.map +1 -1
  273. package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.js.map +1 -1
  274. package/dist/views/template-editor/template-modal/template-modal/index.esm.js.map +1 -1
  275. package/dist/views/template-editor/template-modal/template-modal/index.js.map +1 -1
  276. package/dist/views/template-editor/template-name-modal/template-name-modal/index.esm.js.map +1 -1
  277. package/dist/views/template-editor/template-name-modal/template-name-modal/index.js.map +1 -1
  278. package/dist/views/template-editor/templates/index.esm.js +1 -1
  279. package/dist/views/template-editor/templates/index.esm.js.map +1 -1
  280. package/dist/views/template-editor/templates/index.js +1 -1
  281. package/dist/views/template-editor/templates/index.js.map +1 -1
  282. package/dist/views/template-editor/utils/common/index.esm.js.map +1 -1
  283. package/dist/views/template-editor/utils/common/index.js.map +1 -1
  284. package/dist/views/template-editor/utils/constant/index.esm.js.map +1 -1
  285. package/dist/views/template-editor/utils/constant/index.js.map +1 -1
  286. package/dist/views/template-editor/utils/style-extractor/index.esm.js.map +1 -1
  287. package/dist/views/template-editor/utils/style-extractor/index.js.map +1 -1
  288. package/package.json +4 -2
  289. package/src/styles/README.md +287 -287
  290. package/src/styles/all.scss +7 -7
  291. package/src/styles/animations.scss +5 -5
  292. package/src/styles/css/reset.css +1 -1
  293. package/src/styles/index.ts +146 -146
  294. package/src/styles/mixins.scss +5 -5
  295. package/src/styles/sass/main.scss +11 -11
  296. package/src/styles/utils.scss +5 -5
  297. package/src/styles/variables.scss +4 -4
  298. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +0 -1
  299. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +0 -2
  300. package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useCallback, useEffect } from 'react';\r\nimport { useDraggable } from '@dnd-kit/core';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport {\r\n Box,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Grid,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n CircularProgress,\r\n Alert,\r\n} from '@mui/material';\r\nimport {\r\n Heading,\r\n Text as TextIcon,\r\n Image as ImageIcon,\r\n Table as TableIcon,\r\n Blocks as SignatureIcon,\r\n QrCode as QrCodeIcon,\r\n Barcode as BarcodeIcon,\r\n} from 'lucide-react';\r\nimport { styled } from '@mui/material/styles';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\r\nimport SearchBar from '../../../components/search-bar/search-bar';\r\nimport { getToken, uploadFiles } from '../../../utils/common';\r\n\r\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\r\n\r\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n cursor: 'grab',\r\n borderRadius: theme.shape.borderRadius,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n '&.dragging': {\r\n opacity: 0.5,\r\n },\r\n}));\r\n\r\nconst DropzoneBox = styled(Box)(({ theme }) => ({\r\n border: `2px dashed ${theme.palette.grey[400]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n backgroundColor: theme.palette.grey[50],\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n}));\r\n\r\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\r\n // Extract the element type from the sidebar item id\r\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\r\n \r\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\r\n id,\r\n data: {\r\n // Pass the correct type based on the id\r\n type: imageUrl ? 'image' : elementType,\r\n imageUrl,\r\n label,\r\n },\r\n });\r\n \r\n return (\r\n <StyledListItem\r\n ref={setNodeRef}\r\n {...listeners}\r\n {...attributes}\r\n className={isDragging ? 'dragging' : ''}\r\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\r\n >\r\n {imageUrl ? (\r\n <img\r\n src={imageUrl}\r\n alt={label}\r\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\r\n />\r\n ) : (\r\n <>\r\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\r\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\r\n </>\r\n )}\r\n </StyledListItem>\r\n );\r\n};\r\n\r\nconst EditorSidebar = () => {\r\n const [expanded, setExpanded] = useState('text');\r\n const [uploadedImages, setUploadedImages] = useState([]);\r\n const [uploading, setUploading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const onDrop = useCallback(async (acceptedFiles) => {\r\n setUploading(true);\r\n setError(null);\r\n try {\r\n for (const file of acceptedFiles) {\r\n const uFiles = await uploadFiles([file], \"document\");\r\n const token = getToken();\r\n const payload = {\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n \"title\": file?.name.split(\".\")[0],\r\n \"path\": \"/\",\r\n \"is_private\": true,\r\n \"is_directory\": false,\r\n \"file_size\": file.size,\r\n \"is_child\": false,\r\n \"file_extension\": file?.name.split(\".\")[1],\r\n \"type\": \"image\",\r\n \"mime_type\": file.type,\r\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\r\n }\r\n // Replace with your actual API endpoint\r\n await postV1Drive(payload);\r\n\r\n setUploadedImages((prev) => [\r\n ...prev,\r\n {\r\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\r\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\r\n name: file.name,\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setError('Failed to upload image. Please try again.');\r\n } finally {\r\n setUploading(false);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\r\n multiple: true,\r\n });\r\n\r\n const sections = [\r\n {\r\n id: 'text',\r\n icon: <TextIcon size={18} />,\r\n label: 'Text',\r\n content: (\r\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\r\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\r\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\r\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\r\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\r\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\r\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'images',\r\n icon: <ImageIcon size={18} />,\r\n label: 'Images',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <Box sx={{ mt: 2 }}>\r\n <DropzoneBox {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drop the images here...\r\n </Typography>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drag and drop images here, or click to select\r\n </Typography>\r\n )}\r\n {uploading && (\r\n <Box sx={{ mt: 1 }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n )}\r\n </DropzoneBox>\r\n {error && (\r\n <Alert severity=\"error\" sx={{ mt: 2 }}>\r\n {error}\r\n </Alert>\r\n )}\r\n {uploadedImages.length > 0 && (\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\r\n Uploaded Images\r\n </Typography>\r\n <Grid container spacing={1}>\r\n {uploadedImages.map((image) => (\r\n <Grid item xs={6} key={image.id}>\r\n <SidebarItem\r\n id={image.id}\r\n label={image.name}\r\n imageUrl={image.url}\r\n />\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'buttons',\r\n icon: (\r\n <Box\r\n sx={{\r\n width: 16,\r\n height: 16,\r\n bgcolor: 'grey.400',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '8px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n ),\r\n label: 'Buttons',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem\r\n id=\"sidebar-buttons\"\r\n icon={\r\n <Box\r\n sx={{\r\n width: 20,\r\n height: 20,\r\n bgcolor: 'success.main',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '10px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n }\r\n label=\"Buttons\"\r\n />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'divider',\r\n icon: <Divider sx={{ width: 18 }} />,\r\n label: 'Divider',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'table',\r\n icon: <TableIcon size={18} />,\r\n label: 'Table',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'signature',\r\n icon: <SignatureIcon size={18} />,\r\n label: 'Signature',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'qr-code',\r\n icon: <QrCodeIcon size={18} />,\r\n label: 'QR Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'bar-code',\r\n icon: <BarcodeIcon size={18} />,\r\n label: 'Bar Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\r\n </Box>\r\n ),\r\n },\r\n ];\r\n\r\n const getDriveFiles = async () => {\r\n try {\r\n const token = getToken();\r\n const response = await getV1Drive({\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n skip: 0,\r\n limit: 10,\r\n filters: `(is_directory.eq=0)`\r\n });\r\n // Check if response is successful and has data\r\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\r\n const files = (response.data as any).drive || [];\r\n setUploadedImages(files);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getDriveFiles()\r\n }, [])\r\n\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: 'background.paper',\r\n borderRight: 1,\r\n borderColor: 'grey.200',\r\n width: 390,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 104px)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\r\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\r\n }}\r\n >\r\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\r\n <SearchBar \r\n handleSearch={(key) => console.log('Search:', key)}\r\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\r\n />\r\n </Box>\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\r\n {sections.map((section) => (\r\n <Accordion\r\n key={section.id}\r\n expanded={expanded === section.id}\r\n onChange={handleChange(section.id)}\r\n sx={{\r\n border: 'none',\r\n boxShadow: 'none',\r\n backgroundColor: 'transparent',\r\n '&:before': { display: 'none' },\r\n marginBottom: 1,\r\n }}\r\n >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\r\n sx={{\r\n borderRadius: '8px',\r\n padding: '0 12px',\r\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\r\n '&:hover': {\r\n backgroundColor: 'grey.50',\r\n },\r\n transition: 'background-color 0.2s ease',\r\n minHeight: 42,\r\n '& .MuiAccordionSummary-content': {\r\n alignItems: 'center',\r\n margin: '8px 0',\r\n },\r\n '&.Mui-expanded': {\r\n minHeight: 42,\r\n },\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {section.icon}\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ fontWeight: 500, color: 'text.primary' }}\r\n >\r\n {section.label}\r\n </Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ padding: '8px 16px' }}>\r\n {section.content}\r\n </AccordionDetails>\r\n </Accordion>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default EditorSidebar;"],"names":["setDriveUrl","StyledListItem","styled","ListItem","theme","padding","spacing","cursor","borderRadius","shape","backgroundColor","palette","grey","opacity","DropzoneBox","Box","border","textAlign","SidebarItem","id","icon","label","imageUrl","elementType","replace","attributes","listeners","setNodeRef","isDragging","useDraggable","data","type","jsx","ref","className","sx","borderColor","p","children","src","alt","style","width","height","objectFit","marginRight","jsxs","Fragment","ListItemIcon","minWidth","ListItemText","primary","primaryTypographyProps","variant","expanded","setExpanded","useState","uploadedImages","setUploadedImages","uploading","setUploading","error","setError","onDrop","useCallback","async","acceptedFiles","file","uFiles","uploadFiles","token","getToken","payload","String","title","name","split","path","is_private","is_directory","file_size","size","is_child","file_extension","mime_type","url","postV1Drive","prev","Date","now","Math","random","err","getRootProps","getInputProps","isDragActive","useDropzone","accept","multiple","sections","TextIcon","content","display","gridTemplateColumns","gap","Heading","ImageIcon","mt","Typography","color","CircularProgress","Alert","severity","length","mb","Grid","container","map","image","item","xs","bgcolor","alignItems","justifyContent","fontSize","Divider","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","useEffect","response","getV1Drive","skip","limit","filters","files","drive","getDriveFiles","borderRight","flexDirection","boxShadow","fontFamily","borderBottom","SearchBar","handleSearch","key","flexGrow","overflowY","section","Accordion","onChange","panel","event","isExpanded","marginBottom","AccordionSummary","expandIcon","ExpandMoreIcon","transition","minHeight","margin","fontWeight","AccordionDetails"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { useState, useCallback, useEffect } from 'react';\nimport { useDraggable } from '@dnd-kit/core';\nimport { useDropzone } from 'react-dropzone';\nimport {\n Box,\n Divider,\n ListItem,\n ListItemIcon,\n ListItemText,\n Grid,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Typography,\n CircularProgress,\n Alert,\n} from '@mui/material';\nimport {\n Heading,\n Text as TextIcon,\n Image as ImageIcon,\n Table as TableIcon,\n Blocks as SignatureIcon,\n QrCode as QrCodeIcon,\n Barcode as BarcodeIcon,\n} from 'lucide-react';\nimport { styled } from '@mui/material/styles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\nimport SearchBar from '../../../components/search-bar/search-bar';\nimport { getToken, uploadFiles } from '../../../utils/common';\n\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\n\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\n padding: theme.spacing(1.5),\n cursor: 'grab',\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n '&.dragging': {\n opacity: 0.5,\n },\n}));\n\nconst DropzoneBox = styled(Box)(({ theme }) => ({\n border: `2px dashed ${theme.palette.grey[400]}`,\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n textAlign: 'center',\n backgroundColor: theme.palette.grey[50],\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n}));\n\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\n // Extract the element type from the sidebar item id\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\n \n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id,\n data: {\n // Pass the correct type based on the id\n type: imageUrl ? 'image' : elementType,\n imageUrl,\n label,\n },\n });\n \n return (\n <StyledListItem\n ref={setNodeRef}\n {...listeners}\n {...attributes}\n className={isDragging ? 'dragging' : ''}\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\n >\n {imageUrl ? (\n <img\n src={imageUrl}\n alt={label}\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\n />\n ) : (\n <>\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\n </>\n )}\n </StyledListItem>\n );\n};\n\nconst EditorSidebar = () => {\n const [expanded, setExpanded] = useState('text');\n const [uploadedImages, setUploadedImages] = useState([]);\n const [uploading, setUploading] = useState(false);\n const [error, setError] = useState(null);\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const onDrop = useCallback(async (acceptedFiles) => {\n setUploading(true);\n setError(null);\n try {\n for (const file of acceptedFiles) {\n const uFiles = await uploadFiles([file], \"document\");\n const token = getToken();\n const payload = {\n ...token,\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\n \"title\": file?.name.split(\".\")[0],\n \"path\": \"/\",\n \"is_private\": true,\n \"is_directory\": false,\n \"file_size\": file.size,\n \"is_child\": false,\n \"file_extension\": file?.name.split(\".\")[1],\n \"type\": \"image\",\n \"mime_type\": file.type,\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\n }\n // Replace with your actual API endpoint\n await postV1Drive(payload);\n\n setUploadedImages((prev) => [\n ...prev,\n {\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\n name: file.name,\n },\n ]);\n }\n } catch (err) {\n setError('Failed to upload image. Please try again.');\n } finally {\n setUploading(false);\n }\n }, []);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\n multiple: true,\n });\n\n const sections = [\n {\n id: 'text',\n icon: <TextIcon size={18} />,\n label: 'Text',\n content: (\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\n </Box>\n ),\n },\n {\n id: 'images',\n icon: <ImageIcon size={18} />,\n label: 'Images',\n content: (\n <Box sx={{ mt: 2 }}>\n <Box sx={{ mt: 2 }}>\n <DropzoneBox {...getRootProps()}>\n <input {...getInputProps()} />\n {isDragActive ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Drop the images here...\n </Typography>\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Drag and drop images here, or click to select\n </Typography>\n )}\n {uploading && (\n <Box sx={{ mt: 1 }}>\n <CircularProgress size={20} />\n </Box>\n )}\n </DropzoneBox>\n {error && (\n <Alert severity=\"error\" sx={{ mt: 2 }}>\n {error}\n </Alert>\n )}\n {uploadedImages.length > 0 && (\n <Box sx={{ mt: 2 }}>\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\n Uploaded Images\n </Typography>\n <Grid container spacing={1}>\n {uploadedImages.map((image) => (\n <Grid item xs={6} key={image.id}>\n <SidebarItem\n id={image.id}\n label={image.name}\n imageUrl={image.url}\n />\n </Grid>\n ))}\n </Grid>\n </Box>\n )}\n </Box>\n </Box>\n ),\n },\n {\n id: 'buttons',\n icon: (\n <Box\n sx={{\n width: 16,\n height: 16,\n bgcolor: 'grey.400',\n borderRadius: 1,\n color: 'white',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '8px',\n }}\n >\n BTN\n </Box>\n ),\n label: 'Buttons',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem\n id=\"sidebar-buttons\"\n icon={\n <Box\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'success.main',\n borderRadius: 1,\n color: 'white',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '10px',\n }}\n >\n BTN\n </Box>\n }\n label=\"Buttons\"\n />\n </Box>\n ),\n },\n {\n id: 'divider',\n icon: <Divider sx={{ width: 18 }} />,\n label: 'Divider',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\n </Box>\n ),\n },\n {\n id: 'table',\n icon: <TableIcon size={18} />,\n label: 'Table',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\n </Box>\n ),\n },\n {\n id: 'signature',\n icon: <SignatureIcon size={18} />,\n label: 'Signature',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\n </Box>\n ),\n },\n {\n id: 'qr-code',\n icon: <QrCodeIcon size={18} />,\n label: 'QR Code',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\n </Box>\n ),\n },\n {\n id: 'bar-code',\n icon: <BarcodeIcon size={18} />,\n label: 'Bar Code',\n content: (\n <Box sx={{ mt: 2 }}>\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\n </Box>\n ),\n },\n ];\n\n const getDriveFiles = async () => {\n try {\n const token = getToken();\n const response = await getV1Drive({\n ...token,\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\n skip: 0,\n limit: 10,\n filters: `(is_directory.eq=0)`\n });\n // Check if response is successful and has data\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\n const files = (response.data as any).drive || [];\n setUploadedImages(files);\n }\n } catch (error) {\n console.log(error);\n }\n }\n\n useEffect(() => {\n getDriveFiles()\n }, [])\n\n return (\n <Box\n sx={{\n bgcolor: 'background.paper',\n borderRight: 1,\n borderColor: 'grey.200',\n width: 390,\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100vh - 104px)',\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\n }}\n >\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\n <SearchBar \n handleSearch={(key) => console.log('Search:', key)}\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\n />\n </Box>\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\n {sections.map((section) => (\n <Accordion\n key={section.id}\n expanded={expanded === section.id}\n onChange={handleChange(section.id)}\n sx={{\n border: 'none',\n boxShadow: 'none',\n backgroundColor: 'transparent',\n '&:before': { display: 'none' },\n marginBottom: 1,\n }}\n >\n <AccordionSummary\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\n sx={{\n borderRadius: '8px',\n padding: '0 12px',\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\n '&:hover': {\n backgroundColor: 'grey.50',\n },\n transition: 'background-color 0.2s ease',\n minHeight: 42,\n '& .MuiAccordionSummary-content': {\n alignItems: 'center',\n margin: '8px 0',\n },\n '&.Mui-expanded': {\n minHeight: 42,\n },\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n {section.icon}\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 500, color: 'text.primary' }}\n >\n {section.label}\n </Typography>\n </Box>\n </AccordionSummary>\n <AccordionDetails sx={{ padding: '8px 16px' }}>\n {section.content}\n </AccordionDetails>\n </Accordion>\n ))}\n </Box>\n </Box>\n );\n};\n\nexport default EditorSidebar;"],"names":["setDriveUrl","StyledListItem","styled","ListItem","theme","padding","spacing","cursor","borderRadius","shape","backgroundColor","palette","grey","opacity","DropzoneBox","Box","border","textAlign","SidebarItem","id","icon","label","imageUrl","elementType","replace","attributes","listeners","setNodeRef","isDragging","useDraggable","data","type","jsx","ref","className","sx","borderColor","p","children","src","alt","style","width","height","objectFit","marginRight","jsxs","Fragment","ListItemIcon","minWidth","ListItemText","primary","primaryTypographyProps","variant","expanded","setExpanded","useState","uploadedImages","setUploadedImages","uploading","setUploading","error","setError","onDrop","useCallback","async","acceptedFiles","file","uFiles","uploadFiles","token","getToken","payload","String","title","name","split","path","is_private","is_directory","file_size","size","is_child","file_extension","mime_type","url","postV1Drive","prev","Date","now","Math","random","err","getRootProps","getInputProps","isDragActive","useDropzone","accept","multiple","sections","TextIcon","content","display","gridTemplateColumns","gap","Heading","ImageIcon","mt","Typography","color","CircularProgress","Alert","severity","length","mb","Grid","container","map","image","item","xs","bgcolor","alignItems","justifyContent","fontSize","Divider","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","useEffect","response","getV1Drive","skip","limit","filters","files","drive","getDriveFiles","borderRight","flexDirection","boxShadow","fontFamily","borderBottom","SearchBar","handleSearch","key","flexGrow","overflowY","section","Accordion","onChange","panel","event","isExpanded","marginBottom","AccordionSummary","expandIcon","ExpandMoreIcon","transition","minHeight","margin","fontWeight","AccordionDetails"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../../src/views/template-editor/components/SectionFlowEditor.tsx"],"sourcesContent":["/* eslint-disable no-case-declarations */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useEffect } from 'react';\r\nimport EditorHeader from './EditorHeader';\r\nimport EditorCanvas from './EditorCanvas';\r\nimport {\r\n DndContext,\r\n DragEndEvent,\r\n DragOverEvent,\r\n DragStartEvent,\r\n pointerWithin,\r\n} from '@dnd-kit/core';\r\nimport { SectionData, ElementType } from '../types/editor';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Box } from '@mui/material';\r\nimport { useLocation, useParams } from 'react-router-dom';\r\nimport { getErrorMessage, getToken } from '../../../utils/common';\r\nimport { getV1FormBuilderRelationalSchemaFieldsName, getV1SubjectsId, getV1TemplateHeaderFooterCompanyIdHeaderFooter, getV1TemplatesId, patchV1TemplateHeaderFooterId, postV1TemplateHeaderFooter } from '../../../api-client/api.system-feature/api';\r\nimport { templateRoutes, extractStyles, generateEmailPreview, generateHeaderFooterPreview, generateInlineStyles } from '../utils/common';\r\nimport { initialStyles } from '../utils/constant';\r\nimport _ from 'lodash';\r\nimport formatText from '../../../utils/format-text';\r\nimport TemplateNameModal from \"../template-name-modal/template-name-modal\";\r\n\r\ninterface EnhancedSectionData extends SectionData {\r\n isSplitPair?: boolean;\r\n splitGroupId?: string;\r\n splitWidth?: number;\r\n}\r\n\r\ninterface SectionFlowEditorProps {\r\n modulePath: string;\r\n module: string;\r\n type: string;\r\n}\r\n\r\nconst SectionFlowEditor: React.FC<SectionFlowEditorProps> = ({ modulePath, module, type}) => {\r\n const { id, template_id } = useParams();\r\n const { state: locationState } = useLocation();\r\n\r\n const [sections, setSections] = useState<EnhancedSectionData[]>([]);\r\n const [headerSections, setHeaderSections] = useState<EnhancedSectionData[]>([]);\r\n const [footerSections, setFooterSections] = useState<EnhancedSectionData[]>([]);\r\n const [activeId, setActiveId] = useState<string | null>(null);\r\n const [selectedSection, setSelectedSection] = useState<string | null>(null);\r\n const [overSection, setOverSection] = useState<string | null>(null);\r\n const [preview, setPreview] = useState<boolean>(false);\r\n const [placeholders, setPlaceholders] = useState<Record<string, any>[]>([]);\r\n const [activeCanvas, setActiveCanvas] = useState<'main' | 'header' | 'footer'>('main');\r\n const [isEditingHeaderFooter, setIsEditingHeaderFooter] = useState<boolean>(false);\r\n const [payload, setPayload] = useState<any>(null);\r\n const [headerFooterId, setHeaderFooterId] = useState<string>('');\r\n const ROUTES = templateRoutes(modulePath, type);\r\n const [relation_table, setRelationTable] = useState<any[]>([]);\r\n const [templateData, setTemplateData] = useState<Record<string, any> | null >(null);\r\n\r\n const handleDragStart = (event: DragStartEvent) => {\r\n const { active } = event;\r\n setActiveId(active.id as string);\r\n };\r\n\r\n const handleDragOver = (event: DragOverEvent) => {\r\n const { /* active, */ over } = event;\r\n\r\n if (!over) {\r\n setOverSection(null);\r\n return;\r\n }\r\n\r\n if (over.id === 'header-canvas' && isEditingHeaderFooter) {\r\n setActiveCanvas('header');\r\n } else if (over.id === 'footer-canvas' && isEditingHeaderFooter) {\r\n setActiveCanvas('footer');\r\n } else if (over.id === 'main-canvas') {\r\n setActiveCanvas('main');\r\n }\r\n\r\n if (over.id !== 'header-canvas' && over.id !== 'main-canvas' && over.id !== 'footer-canvas') {\r\n setOverSection(over.id as string);\r\n }\r\n };\r\n\r\n const handleDragEnd = (event: DragEndEvent) => {\r\n const { active, over } = event;\r\n \r\n setActiveId(null);\r\n setOverSection(null);\r\n \r\n if (!over) return;\r\n \r\n let targetSections = sections;\r\n let setTargetSections = setSections;\r\n \r\n if ((over.id === 'header-canvas' || overSection?.startsWith('header-')) && isEditingHeaderFooter) {\r\n targetSections = headerSections;\r\n setTargetSections = setHeaderSections;\r\n setActiveCanvas('header');\r\n } else if ((over.id === 'footer-canvas' || overSection?.startsWith('footer-')) && isEditingHeaderFooter) {\r\n targetSections = footerSections;\r\n setTargetSections = setFooterSections;\r\n setActiveCanvas('footer');\r\n } else {\r\n setActiveCanvas('main');\r\n }\r\n \r\n if (active.data.current?.type === 'image') {\r\n const imageUrl = active.data.current.imageUrl;\r\n const newSection: EnhancedSectionData = createNewSection('image', { src: imageUrl, alt: 'Image' });\r\n \r\n const overIndex = targetSections.findIndex((section) => section.id === over.id);\r\n const newSections = [...targetSections];\r\n \r\n if (over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas' || overIndex === -1) {\r\n setTargetSections([...targetSections, newSection]);\r\n } else {\r\n newSections.splice(overIndex, 0, newSection);\r\n setTargetSections(newSections);\r\n }\r\n \r\n enqueueSnackbar('Added uploaded image section');\r\n return;\r\n }\r\n \r\n if (typeof active.id === 'string' && active.id.startsWith('sidebar-')) {\r\n const type = active.id.replace('sidebar-', '') as ElementType;\r\n const newSection = createNewSection(type);\r\n \r\n const overIndex = targetSections.findIndex((section) => section.id === over.id);\r\n const isOverSection = overIndex !== -1;\r\n \r\n if (!isOverSection || over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas') {\r\n setTargetSections([...targetSections, newSection]);\r\n } else {\r\n const targetSection = targetSections[overIndex];\r\n const isEmpty =\r\n !targetSection.content ||\r\n targetSection.content.includes('Click to add') ||\r\n targetSection.content.includes('enter your text');\r\n \r\n if (isEmpty) {\r\n const updatedSections = [...targetSections];\r\n updatedSections[overIndex] = {\r\n ...targetSection,\r\n type,\r\n content: newSection.content,\r\n };\r\n setTargetSections(updatedSections);\r\n // enqueueSnackbar(`Changed section to ${type}`);\r\n } else {\r\n const updatedSections = [...targetSections];\r\n updatedSections.splice(overIndex, 0, newSection);\r\n setTargetSections(updatedSections);\r\n // enqueueSnackbar(`Added new ${type} section`);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n if (\r\n active.id !== over.id &&\r\n typeof active.id === 'string' &&\r\n typeof over.id === 'string'\r\n ) {\r\n let sourceSections: EnhancedSectionData[] = [];\r\n let sourceSetSections: React.Dispatch<React.SetStateAction<EnhancedSectionData[]>> | null = null;\r\n let canvasId = '';\r\n \r\n if (active.id.startsWith('header-') && isEditingHeaderFooter) {\r\n sourceSections = headerSections;\r\n sourceSetSections = setHeaderSections;\r\n canvasId = 'header-canvas';\r\n } else if (active.id.startsWith('footer-') && isEditingHeaderFooter) {\r\n sourceSections = footerSections;\r\n sourceSetSections = setFooterSections;\r\n canvasId = 'footer-canvas';\r\n } else {\r\n sourceSections = sections;\r\n sourceSetSections = setSections;\r\n canvasId = 'main-canvas';\r\n }\r\n \r\n const cleanActiveId = active.id.replace(/^(header-|footer-)/, '');\r\n \r\n const oldIndex = sourceSections.findIndex((section) => \r\n section.id === cleanActiveId || section.id === active.id\r\n );\r\n \r\n let newIndex = targetSections.findIndex((section) => \r\n section.id === String(over.id).replace(/^(header-|footer-)/, '')\r\n );\r\n \r\n if (over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas') {\r\n newIndex = targetSections.length;\r\n }\r\n \r\n if (oldIndex !== -1 && newIndex !== -1) {\r\n if (sourceSections === targetSections) {\r\n const newSections = [...sourceSections];\r\n const [movedSection] = newSections.splice(oldIndex, 1);\r\n \r\n if (movedSection.isSplitPair && movedSection.splitGroupId) {\r\n const groupId = movedSection.splitGroupId;\r\n const groupSections = [movedSection, ...sourceSections.filter(\r\n s => s.splitGroupId === groupId && s.id !== movedSection.id\r\n )];\r\n \r\n const cleaned = newSections.filter(s => s.splitGroupId !== groupId);\r\n cleaned.splice(newIndex, 0, ...groupSections);\r\n sourceSetSections(cleaned);\r\n } else {\r\n newSections.splice(newIndex, 0, movedSection);\r\n sourceSetSections(newSections);\r\n }\r\n } else {\r\n const originalSection = sourceSections[oldIndex];\r\n \r\n const newSourceSections = [...sourceSections];\r\n newSourceSections.splice(oldIndex, 1);\r\n sourceSetSections(newSourceSections);\r\n \r\n const newTargetSections = [...targetSections];\r\n \r\n const movedSection = {...originalSection};\r\n \r\n if ((over.id === 'header-canvas' || over.id.startsWith('header-')) && isEditingHeaderFooter) {\r\n if (!movedSection.id.startsWith('header-')) {\r\n movedSection.id = `header-${movedSection.id}`;\r\n }\r\n } else if ((over.id === 'footer-canvas' || over.id.startsWith('footer-')) && isEditingHeaderFooter) {\r\n if (!movedSection.id.startsWith('footer-')) {\r\n movedSection.id = `footer-${movedSection.id}`;\r\n }\r\n } else {\r\n movedSection.id = movedSection.id.replace(/^(header-|footer-)/, '');\r\n }\r\n \r\n newTargetSections.splice(newIndex, 0, movedSection);\r\n setTargetSections(newTargetSections);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const getRelevantSections = (canvasType: string) => {\r\n if (canvasType === 'header' && isEditingHeaderFooter) return headerSections;\r\n if (canvasType === 'footer' && isEditingHeaderFooter) return footerSections;\r\n return sections;\r\n };\r\n\r\n const getRelevantSetSections = (canvasType: string) => {\r\n if (canvasType === 'header' && isEditingHeaderFooter) return setHeaderSections;\r\n if (canvasType === 'footer' && isEditingHeaderFooter) return setFooterSections;\r\n return setSections;\r\n };\r\n\r\n const handleUpdateSection = (id: string, data: Partial<EnhancedSectionData>, canvasType: string) => {\r\n const relevantSections = getRelevantSections(canvasType);\r\n const relevantSetSections = getRelevantSetSections(canvasType);\r\n \r\n const cleanId = id.replace(/^(header-|footer-)/, '');\r\n \r\n relevantSetSections(\r\n relevantSections.map((section) =>\r\n section.id === cleanId || section.id === id ? { ...section, ...data } : section\r\n )\r\n );\r\n };\r\n\r\n const handleSplitSection = (id: string, content1: string, content2: string, canvasType: string) => {\r\n const relevantSections = getRelevantSections(canvasType);\r\n const relevantSetSections = getRelevantSetSections(canvasType);\r\n \r\n const cleanId = id.replace(/^(header-|footer-)/, '');\r\n \r\n const index = relevantSections.findIndex((section) => section.id === cleanId || section.id === id);\r\n if (index === -1) return;\r\n\r\n const section = relevantSections[index];\r\n const newSections = [...relevantSections];\r\n \r\n const sectionPrefix = canvasType === 'header' ? 'header-' : canvasType === 'footer' ? 'footer-' : '';\r\n \r\n if (section.isSplitPair && section.splitGroupId) {\r\n const splitGroupId = section.splitGroupId;\r\n const splitSections = newSections.filter(s => s.splitGroupId === splitGroupId);\r\n const totalSections = splitSections.length + 1;\r\n const newWidth = 100 / totalSections;\r\n \r\n newSections[index] = { \r\n ...section, \r\n content: content1,\r\n splitWidth: newWidth\r\n };\r\n\r\n const newSection: EnhancedSectionData = {\r\n id: `${sectionPrefix}section-${uuidv4()}`,\r\n content: content2,\r\n type: section.type,\r\n isSplitPair: true,\r\n splitGroupId: splitGroupId,\r\n splitWidth: newWidth,\r\n attributes: section.attributes,\r\n is_edited_from_source: false\r\n };\r\n\r\n newSections.splice(index + 1, 0, newSection);\r\n \r\n for (let i = 0; i < newSections.length; i++) {\r\n if (newSections[i].splitGroupId === splitGroupId) {\r\n newSections[i].splitWidth = newWidth;\r\n }\r\n }\r\n } else {\r\n const splitGroupId = uuidv4();\r\n const initialWidth = 50;\r\n \r\n newSections[index] = { \r\n ...section, \r\n content: content1,\r\n isSplitPair: true,\r\n splitGroupId,\r\n splitWidth: initialWidth\r\n };\r\n\r\n const newSection: EnhancedSectionData = {\r\n id: `${sectionPrefix}section-${uuidv4()}`,\r\n content: content2,\r\n type: section.type,\r\n isSplitPair: true,\r\n splitGroupId,\r\n splitWidth: initialWidth,\r\n attributes: section.attributes,\r\n is_edited_from_source: false\r\n };\r\n\r\n newSections.splice(index + 1, 0, newSection);\r\n }\r\n \r\n relevantSetSections(newSections);\r\n // enqueueSnackbar('Section split successfully');\r\n };\r\n\r\n const handleDeleteSection = (id: string, canvasType: string) => {\r\n const relevantSections = getRelevantSections(canvasType);\r\n const relevantSetSections = getRelevantSetSections(canvasType);\r\n \r\n const cleanId = id.replace(/^(header-|footer-)/, '');\r\n \r\n const sectionToDelete = relevantSections.find(s => s.id === cleanId || s.id === id);\r\n \r\n if (!sectionToDelete) return;\r\n \r\n if (sectionToDelete.isSplitPair && sectionToDelete.splitGroupId) {\r\n const splitSections = relevantSections.filter(s => s.splitGroupId === sectionToDelete.splitGroupId);\r\n \r\n if (splitSections.length <= 2) {\r\n const remainingSection = splitSections.find(s => s.id !== cleanId && s.id !== id);\r\n if (remainingSection) {\r\n remainingSection.isSplitPair = false;\r\n remainingSection.splitGroupId = undefined;\r\n remainingSection.splitWidth = undefined;\r\n }\r\n relevantSetSections(relevantSections.filter(s => s.id !== cleanId && s.id !== id));\r\n } else {\r\n const remainingSplitSections = splitSections.filter(s => s.id !== cleanId && s.id !== id);\r\n const newWidth = 100 / remainingSplitSections.length;\r\n \r\n const updatedSections = relevantSections.filter(section => section.id !== cleanId && section.id !== id).map(section => {\r\n if (section.splitGroupId === sectionToDelete.splitGroupId) {\r\n return { ...section, splitWidth: newWidth };\r\n }\r\n return section;\r\n });\r\n \r\n relevantSetSections(updatedSections);\r\n // enqueueSnackbar('Section removed from split group');\r\n }\r\n } else {\r\n relevantSetSections(relevantSections.filter(section => section.id !== cleanId && section.id !== id));\r\n // enqueueSnackbar('Section deleted');\r\n }\r\n \r\n if (selectedSection === id) {\r\n setSelectedSection(null);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.body.style.overflow = 'hidden';\r\n const main = document.getElementsByTagName('main')?.[0];\r\n if (main) {\r\n main.style.marginTop = '4.125rem';\r\n }\r\n return () => {\r\n document.body.removeAttribute('style');\r\n }\r\n }, []);\r\n\r\nconst getData = async () => {\r\n if (id) {\r\n const token = getToken();\r\n const subjRes = await getV1SubjectsId({ \r\n ...token, \r\n 'x-timezone': token['x-timezone']?.toString() || '',\r\n id \r\n });\r\n\r\n if ('data' in subjRes && subjRes.data && typeof subjRes.data === 'object' && 'resource' in subjRes.data) {\r\n const resource = (subjRes.data as any).resource;\r\n const token2 = getToken();\r\n const fRes = await getV1FormBuilderRelationalSchemaFieldsName({\r\n ...token2,\r\n 'x-timezone': token2['x-timezone']?.toString() || '',\r\n name: resource,\r\n });\r\n const schemaFields = ('data' in fRes && fRes.data && typeof fRes.data === 'object' && 'fields' in fRes.data) \r\n ? ((fRes.data as any).fields || [])\r\n : [];\r\n const relation_table = ('data' in fRes && fRes.data && typeof fRes.data === 'object' && 'relational_fields' in fRes.data)\r\n ? ((fRes.data as any).relational_fields || [])\r\n : [];\r\n\r\n // Process main schema fields\r\n const updatedFields = schemaFields\r\n .map((field) => ({\r\n ...field,\r\n key: field.key.replace('__replaceKey', ''),\r\n }))\r\n .filter((field) => !field.is_inner_join && field.alias !== 'id' && !field?.alias?.includes('_id'));\r\n\r\n // Process relation tables - separate array and object types\r\n const arrayRelationTables = [];\r\n const objectRelationFields = [];\r\n\r\n relation_table.forEach((table) => {\r\n if (!table) return;\r\n\r\n const updatedTableFields = (table.fields || []).map((field) => {\r\n const updatedField = {\r\n ...field,\r\n key: field.key.replace('__replaceKey', ''),\r\n alias: field?.templateKey ? field?.templateKey : field.alias,\r\n };\r\n\r\n // Prepend dataKey to field keys for object types\r\n if (table.type === 'object' && table.dataKey) {\r\n updatedField.key = `${table.dataKey}.${updatedField.key}`;\r\n }\r\n\r\n return updatedField;\r\n }).filter(\r\n (field) =>\r\n !field.is_inner_join &&\r\n field.alias !== 'id' &&\r\n !field.alias.includes('_id')\r\n );\r\n\r\n const uniqueTableFields = _.differenceWith(\r\n updatedTableFields,\r\n updatedTableFields,\r\n (fieldA: any, fieldB: any) => fieldA.key === fieldB?.joinKey\r\n );\r\n\r\n const tableFields = uniqueTableFields.map((f: any) => {\r\n const field = formatText(f.alias.replace(/_data$/, '').replace(/_/g, ' '));\r\n const value = table.type === 'object' && table.dataKey \r\n ? `${table.dataKey}.${f.alias.replace(/ /g, '_').toLowerCase()}`\r\n : f.alias.replace(/ /g, '_').toLowerCase();\r\n \r\n return { \r\n label: field, \r\n value: value \r\n };\r\n });\r\n\r\n if (table.type === 'object') {\r\n // Merge object type fields into main fields\r\n objectRelationFields.push(...tableFields);\r\n } else {\r\n // Keep array types separate\r\n arrayRelationTables.push({\r\n ...table,\r\n fields: tableFields\r\n });\r\n }\r\n });\r\n\r\n // Combine main fields and object relation fields\r\n const allFields = [\r\n ...updatedFields.map((f) => {\r\n const n = f?.alias || f?.key\r\n const field = formatText(n.replace(/_data$/, '').replace(/_/g, ' '));\r\n return { \r\n label: field, \r\n value: field.replace(/ /g, '_').toLowerCase() \r\n };\r\n }),\r\n ...objectRelationFields\r\n ];\r\n\r\n const uniqueAllFields = _.uniqBy(allFields, 'value');\r\n\r\n setPlaceholders(uniqueAllFields);\r\n setRelationTable(arrayRelationTables);\r\n }\r\n }\r\n\r\n // Rest of the function remains the same...\r\n if (template_id) {\r\n const token3 = getToken();\r\n const res = await getV1TemplatesId({ \r\n ...token3, \r\n 'x-timezone': token3['x-timezone']?.toString() || '',\r\n id: template_id \r\n });\r\n const templateSections = ('data' in res && res.data && typeof res.data === 'object' && 'sections' in res.data)\r\n ? ((res.data as any).sections || [])\r\n : [];\r\n const mainSecs = templateSections.map((s: any) => ({\r\n ...s,\r\n id: s.id || `section-${uuidv4()}`,\r\n }));\r\n setTemplateData(('data' in res && res.data) ? res.data as any : null);\r\n\r\n setSections(mainSecs);\r\n }\r\n\r\n if (locationState?.company_id) {\r\n const token4 = getToken();\r\n const res = await getV1TemplateHeaderFooterCompanyIdHeaderFooter({\r\n ...token4,\r\n 'x-timezone': token4['x-timezone']?.toString() || '',\r\n company_id: locationState.company_id,\r\n });\r\n const resData = ('data' in res && res.data && typeof res.data === 'object') ? res.data as any : null;\r\n setHeaderFooterId(resData?._id || '');\r\n const headerSections = resData?.header_sections || [];\r\n const footerSections = resData?.footer_sections || [];\r\n const headerSecs = headerSections.map((s) => ({\r\n ...s,\r\n id: s.id || `header-section-${uuidv4()}`,\r\n }));\r\n const footerSecs = footerSections.map((s) => ({\r\n ...s,\r\n id: s.id || `footer-section-${uuidv4()}`,\r\n }));\r\n\r\n setHeaderSections(headerSecs);\r\n setFooterSections(footerSecs);\r\n }\r\n};\r\n \r\n useEffect(() => {\r\n getData();\r\n }, [template_id, id, locationState?.company_id]);\r\n\r\n const createNewSection = (type: ElementType, attrs: Record<string, any> = {}): EnhancedSectionData => {\r\n let content = '';\r\n const styles = initialStyles[type] || {};\r\n const inlineStyles: string = generateInlineStyles(styles);\r\n\r\n const idPrefix = activeCanvas === 'header' && isEditingHeaderFooter ? 'header-' : \r\n activeCanvas === 'footer' && isEditingHeaderFooter ? 'footer-' : '';\r\n\r\n switch (type) {\r\n case 'heading':\r\n content = `<h1 style=\"${inlineStyles}\">Heading 1</h1>`;\r\n break;\r\n case 'heading-2':\r\n content = `<h2 style=\"${inlineStyles}\">Heading 2</h2>`;\r\n break;\r\n case 'heading-3':\r\n content = `<h3 style=\"${inlineStyles}\">Heading 3</h3>`;\r\n break;\r\n case 'heading-4':\r\n content = `<h4 style=\"${inlineStyles}\">Heading 4</h4>`;\r\n break;\r\n case 'text':\r\n content = `<p style=\"${inlineStyles}\">Hello, enter your text here...</p>`;\r\n break;\r\n case 'image':\r\n content = `<img src=\"${attrs.src}\" alt=\"${attrs.alt}\" style=\"${inlineStyles};\" />`;\r\n break;\r\n case 'buttons':\r\n attrs.text = attrs?.text || 'Button text';\r\n content = `<button style=\"${inlineStyles}\">${attrs.text}</button>`;\r\n break;\r\n case 'divider':\r\n content = `<hr style=\"${inlineStyles}\" />`;\r\n break;\r\n case 'table':\r\n const tableStyles = styles as any;\r\n const { border, borderStyle, borderColor, ...rest } = tableStyles;\r\n const tInlineStyles = generateInlineStyles(tableStyles.is_bordered ? tableStyles : rest);\r\n const tHeadInlineStyles: string = generateInlineStyles(tableStyles.tHead);\r\n const tBodyInlineStyles: string = generateInlineStyles(tableStyles.tBody);\r\n const thCellInlineStyles: string = generateInlineStyles({...tableStyles.thCells, border, borderStyle, borderColor });\r\n const tbCellInlineStyles: string = generateInlineStyles({...tableStyles.tbCells, border, borderStyle, borderColor});\r\n content = `\r\n <table style=\"${tInlineStyles}\">\r\n <thead style=\"${tHeadInlineStyles}\">\r\n <tr style=\"background-color: #f5f5f5;\">\r\n <th style=\"${thCellInlineStyles}\"></th>\r\n <th style=\"${thCellInlineStyles}\"></th>\r\n <th style=\"${thCellInlineStyles}\"></th>\r\n </tr>\r\n </thead>\r\n <tbody style=\"${tBodyInlineStyles}\">\r\n <tr>\r\n <td style=\"${tbCellInlineStyles}\"></td>\r\n <td style=\"${tbCellInlineStyles}\"></td>\r\n <td style=\"${tbCellInlineStyles}\"></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n `;\r\n break;\r\n case 'signature':\r\n content = `<div style=\"${inlineStyles}\">Signature: <input type='text' style=\"border:0; border-bottom:1px solid black\" class='signature-input'/></div>`;\r\n break;\r\n case 'qr-code':\r\n attrs.placeholder = attrs?.placeholder || '{{qr_data}}';\r\n content = `<div style=\"background-color: #f5f5f5; padding: 16px; text-align: center; color: #666666;\">${attrs.placeholder}</div>`;\r\n break;\r\n case 'bar-code':\r\n attrs.placeholder = attrs?.placeholder || '{{barcode_data}}';\r\n content = `<div style=\"background-color: #f5f5f5; padding: 16px; text-align: center; color: #666666;\">${attrs.placeholder}</div>`;\r\n break;\r\n default:\r\n content = '<p style=\"font-size: 16px; color: #333333; line-height: 1.5;\">New section</p>';\r\n }\r\n\r\n let attributes: Record<string, any> = {};\r\n attributes = extractStyles(content, type);\r\n\r\n return { \r\n id: `${idPrefix}section-${uuidv4()}`, \r\n content, \r\n type, \r\n attributes: {...(attrs || {}), styles},\r\n is_edited_from_source: false\r\n };\r\n };\r\n\r\n const handleSave = async () => {\r\n if(sections.length === 0 && headerSections.length === 0 && footerSections.length === 0) {\r\n enqueueSnackbar('Please add at least one section');\r\n return;\r\n }\r\n \r\n const mainHtml = generateEmailPreview(sections, headerSections, footerSections, true);\r\n try {\r\n const p = { \r\n ...getToken(), \r\n ...(template_id ? { id: template_id } : { subject_id: id, is_default: false, company_id: locationState.company_id }), \r\n sections: sections, \r\n contents: mainHtml \r\n }\r\n setPayload(p);\r\n } catch (error) {\r\n const m = getErrorMessage(error?.message);\r\n enqueueSnackbar(m, { variant: 'error' });\r\n }\r\n };\r\n const handleSaveHeaderFooter = async () => {\r\n if(sections.length === 0 && headerSections.length === 0 && footerSections.length === 0) {\r\n enqueueSnackbar('Please add at least one section', { variant: 'error' });\r\n return;\r\n } else if(!locationState?.company_id) {\r\n enqueueSnackbar('Company has not been selected', { variant: 'error' });\r\n return;\r\n }\r\n \r\n const headerHtml = generateHeaderFooterPreview(headerSections, 'header');\r\n const footerHtml = generateHeaderFooterPreview(footerSections, 'footer');\r\n const combinedHtml = `${headerHtml}${footerHtml}`;\r\n \r\n // Convert splitWidth from number to string for API\r\n const convertSectionForApi = (section: EnhancedSectionData) => ({\r\n id: section.id,\r\n content: section.content,\r\n type: section.type,\r\n isSplitPair: section.isSplitPair,\r\n splitGroupId: section.splitGroupId,\r\n splitWidth: section.splitWidth !== undefined ? String(section.splitWidth) : undefined,\r\n });\r\n \r\n const convertedHeaderSections = headerSections.map(convertSectionForApi);\r\n const convertedFooterSections = footerSections.map(convertSectionForApi);\r\n \r\n try {\r\n if(headerFooterId) {\r\n const token5 = getToken();\r\n const res = await patchV1TemplateHeaderFooterId({ \r\n ...token5,\r\n 'x-timezone': token5['x-timezone']?.toString() || '',\r\n id: headerFooterId, \r\n header_sections: convertedHeaderSections, \r\n footer_sections: convertedFooterSections, \r\n contents: combinedHtml \r\n });\r\n if(res.status_code === 200) {\r\n enqueueSnackbar('Header/Footer saved successfully', { variant: 'success' });\r\n setIsEditingHeaderFooter(false);\r\n }\r\n } else {\r\n const token6 = getToken();\r\n const res = await postV1TemplateHeaderFooter({ \r\n ...token6,\r\n 'x-timezone': token6['x-timezone']?.toString() || '',\r\n header_sections: convertedHeaderSections, \r\n footer_sections: convertedFooterSections, \r\n contents: combinedHtml, \r\n company_id: locationState.company_id\r\n });\r\n if(res.status_code === 200) {\r\n enqueueSnackbar('Header/Footer saved successfully', { variant: 'success' });\r\n setIsEditingHeaderFooter(false);\r\n }\r\n }\r\n } catch (error) {\r\n const m = getErrorMessage(error?.message);\r\n enqueueSnackbar(m, { variant: 'error' });\r\n }\r\n };\r\n\r\n const toggleHeaderFooterEditing = () => {\r\n setIsEditingHeaderFooter(!isEditingHeaderFooter);\r\n if (isEditingHeaderFooter) {\r\n setActiveCanvas('main');\r\n }\r\n };\r\n\r\n return (\r\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100vh' }}>\r\n <EditorHeader \r\n onPreview={() => setPreview(!preview)} \r\n onSave={handleSave}\r\n preview={preview}\r\n sections={sections}\r\n isEditingHeaderFooter={isEditingHeaderFooter}\r\n setIsEditingHeaderFooter={toggleHeaderFooterEditing}\r\n onSaveHeaderFooter={handleSaveHeaderFooter}\r\n modulePath={modulePath} \r\n type={type}\r\n mode={template_id ? 'edit' : 'add'}\r\n templateData={templateData}\r\n />\r\n <Box sx={{ display: 'flex', flex: 1, overflow: 'hidden' }}>\r\n <DndContext\r\n onDragStart={handleDragStart}\r\n onDragOver={handleDragOver}\r\n onDragEnd={handleDragEnd}\r\n collisionDetection={pointerWithin}\r\n >\r\n <EditorCanvas\r\n sections={sections}\r\n headerSections={headerSections}\r\n footerSections={footerSections}\r\n activeId={activeId}\r\n overSection={overSection}\r\n selectedSection={selectedSection}\r\n onSelectSection={setSelectedSection}\r\n onUpdateSection={handleUpdateSection}\r\n onSplitSection={handleSplitSection}\r\n onDeleteSection={handleDeleteSection}\r\n preview={preview}\r\n handleSave={handleSave}\r\n placeholders={placeholders}\r\n isEditingHeaderFooter={isEditingHeaderFooter}\r\n relation_table={relation_table}\r\n />\r\n </DndContext>\r\n </Box>\r\n {payload !== null && \r\n <TemplateNameModal \r\n isOpen={payload !== null} \r\n setIsOpen={() => setPayload(null)} \r\n payload={payload}\r\n templateRoutes={ROUTES}\r\n mode={template_id ? 'edit' : 'add'}\r\n templateData={templateData}\r\n />\r\n }\r\n </Box>\r\n );\r\n};\r\n\r\nexport default SectionFlowEditor;"],"names":["type","id","section","uuidv4","relation_table","_a","headerSections","footerSections"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/views/template-editor/components/SectionFlowEditor.tsx"],"sourcesContent":["/* eslint-disable no-case-declarations */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { useState, useEffect } from 'react';\nimport EditorHeader from './EditorHeader';\nimport EditorCanvas from './EditorCanvas';\nimport {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragStartEvent,\n pointerWithin,\n} from '@dnd-kit/core';\nimport { SectionData, ElementType } from '../types/editor';\nimport { v4 as uuidv4 } from 'uuid';\nimport { enqueueSnackbar } from 'notistack';\nimport { Box } from '@mui/material';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { getErrorMessage, getToken } from '../../../utils/common';\nimport { getV1FormBuilderRelationalSchemaFieldsName, getV1SubjectsId, getV1TemplateHeaderFooterCompanyIdHeaderFooter, getV1TemplatesId, patchV1TemplateHeaderFooterId, postV1TemplateHeaderFooter } from '../../../api-client/api.system-feature/api';\nimport { templateRoutes, extractStyles, generateEmailPreview, generateHeaderFooterPreview, generateInlineStyles } from '../utils/common';\nimport { initialStyles } from '../utils/constant';\nimport _ from 'lodash';\nimport formatText from '../../../utils/format-text';\nimport TemplateNameModal from \"../template-name-modal/template-name-modal\";\n\ninterface EnhancedSectionData extends SectionData {\n isSplitPair?: boolean;\n splitGroupId?: string;\n splitWidth?: number;\n}\n\ninterface SectionFlowEditorProps {\n modulePath: string;\n module: string;\n type: string;\n}\n\nconst SectionFlowEditor: React.FC<SectionFlowEditorProps> = ({ modulePath, module, type}) => {\n const { id, template_id } = useParams();\n const { state: locationState } = useLocation();\n\n const [sections, setSections] = useState<EnhancedSectionData[]>([]);\n const [headerSections, setHeaderSections] = useState<EnhancedSectionData[]>([]);\n const [footerSections, setFooterSections] = useState<EnhancedSectionData[]>([]);\n const [activeId, setActiveId] = useState<string | null>(null);\n const [selectedSection, setSelectedSection] = useState<string | null>(null);\n const [overSection, setOverSection] = useState<string | null>(null);\n const [preview, setPreview] = useState<boolean>(false);\n const [placeholders, setPlaceholders] = useState<Record<string, any>[]>([]);\n const [activeCanvas, setActiveCanvas] = useState<'main' | 'header' | 'footer'>('main');\n const [isEditingHeaderFooter, setIsEditingHeaderFooter] = useState<boolean>(false);\n const [payload, setPayload] = useState<any>(null);\n const [headerFooterId, setHeaderFooterId] = useState<string>('');\n const ROUTES = templateRoutes(modulePath, type);\n const [relation_table, setRelationTable] = useState<any[]>([]);\n const [templateData, setTemplateData] = useState<Record<string, any> | null >(null);\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveId(active.id as string);\n };\n\n const handleDragOver = (event: DragOverEvent) => {\n const { /* active, */ over } = event;\n\n if (!over) {\n setOverSection(null);\n return;\n }\n\n if (over.id === 'header-canvas' && isEditingHeaderFooter) {\n setActiveCanvas('header');\n } else if (over.id === 'footer-canvas' && isEditingHeaderFooter) {\n setActiveCanvas('footer');\n } else if (over.id === 'main-canvas') {\n setActiveCanvas('main');\n }\n\n if (over.id !== 'header-canvas' && over.id !== 'main-canvas' && over.id !== 'footer-canvas') {\n setOverSection(over.id as string);\n }\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n \n setActiveId(null);\n setOverSection(null);\n \n if (!over) return;\n \n let targetSections = sections;\n let setTargetSections = setSections;\n \n if ((over.id === 'header-canvas' || overSection?.startsWith('header-')) && isEditingHeaderFooter) {\n targetSections = headerSections;\n setTargetSections = setHeaderSections;\n setActiveCanvas('header');\n } else if ((over.id === 'footer-canvas' || overSection?.startsWith('footer-')) && isEditingHeaderFooter) {\n targetSections = footerSections;\n setTargetSections = setFooterSections;\n setActiveCanvas('footer');\n } else {\n setActiveCanvas('main');\n }\n \n if (active.data.current?.type === 'image') {\n const imageUrl = active.data.current.imageUrl;\n const newSection: EnhancedSectionData = createNewSection('image', { src: imageUrl, alt: 'Image' });\n \n const overIndex = targetSections.findIndex((section) => section.id === over.id);\n const newSections = [...targetSections];\n \n if (over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas' || overIndex === -1) {\n setTargetSections([...targetSections, newSection]);\n } else {\n newSections.splice(overIndex, 0, newSection);\n setTargetSections(newSections);\n }\n \n enqueueSnackbar('Added uploaded image section');\n return;\n }\n \n if (typeof active.id === 'string' && active.id.startsWith('sidebar-')) {\n const type = active.id.replace('sidebar-', '') as ElementType;\n const newSection = createNewSection(type);\n \n const overIndex = targetSections.findIndex((section) => section.id === over.id);\n const isOverSection = overIndex !== -1;\n \n if (!isOverSection || over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas') {\n setTargetSections([...targetSections, newSection]);\n } else {\n const targetSection = targetSections[overIndex];\n const isEmpty =\n !targetSection.content ||\n targetSection.content.includes('Click to add') ||\n targetSection.content.includes('enter your text');\n \n if (isEmpty) {\n const updatedSections = [...targetSections];\n updatedSections[overIndex] = {\n ...targetSection,\n type,\n content: newSection.content,\n };\n setTargetSections(updatedSections);\n // enqueueSnackbar(`Changed section to ${type}`);\n } else {\n const updatedSections = [...targetSections];\n updatedSections.splice(overIndex, 0, newSection);\n setTargetSections(updatedSections);\n // enqueueSnackbar(`Added new ${type} section`);\n }\n }\n return;\n }\n \n if (\n active.id !== over.id &&\n typeof active.id === 'string' &&\n typeof over.id === 'string'\n ) {\n let sourceSections: EnhancedSectionData[] = [];\n let sourceSetSections: React.Dispatch<React.SetStateAction<EnhancedSectionData[]>> | null = null;\n let canvasId = '';\n \n if (active.id.startsWith('header-') && isEditingHeaderFooter) {\n sourceSections = headerSections;\n sourceSetSections = setHeaderSections;\n canvasId = 'header-canvas';\n } else if (active.id.startsWith('footer-') && isEditingHeaderFooter) {\n sourceSections = footerSections;\n sourceSetSections = setFooterSections;\n canvasId = 'footer-canvas';\n } else {\n sourceSections = sections;\n sourceSetSections = setSections;\n canvasId = 'main-canvas';\n }\n \n const cleanActiveId = active.id.replace(/^(header-|footer-)/, '');\n \n const oldIndex = sourceSections.findIndex((section) => \n section.id === cleanActiveId || section.id === active.id\n );\n \n let newIndex = targetSections.findIndex((section) => \n section.id === String(over.id).replace(/^(header-|footer-)/, '')\n );\n \n if (over.id === 'header-canvas' || over.id === 'main-canvas' || over.id === 'footer-canvas') {\n newIndex = targetSections.length;\n }\n \n if (oldIndex !== -1 && newIndex !== -1) {\n if (sourceSections === targetSections) {\n const newSections = [...sourceSections];\n const [movedSection] = newSections.splice(oldIndex, 1);\n \n if (movedSection.isSplitPair && movedSection.splitGroupId) {\n const groupId = movedSection.splitGroupId;\n const groupSections = [movedSection, ...sourceSections.filter(\n s => s.splitGroupId === groupId && s.id !== movedSection.id\n )];\n \n const cleaned = newSections.filter(s => s.splitGroupId !== groupId);\n cleaned.splice(newIndex, 0, ...groupSections);\n sourceSetSections(cleaned);\n } else {\n newSections.splice(newIndex, 0, movedSection);\n sourceSetSections(newSections);\n }\n } else {\n const originalSection = sourceSections[oldIndex];\n \n const newSourceSections = [...sourceSections];\n newSourceSections.splice(oldIndex, 1);\n sourceSetSections(newSourceSections);\n \n const newTargetSections = [...targetSections];\n \n const movedSection = {...originalSection};\n \n if ((over.id === 'header-canvas' || over.id.startsWith('header-')) && isEditingHeaderFooter) {\n if (!movedSection.id.startsWith('header-')) {\n movedSection.id = `header-${movedSection.id}`;\n }\n } else if ((over.id === 'footer-canvas' || over.id.startsWith('footer-')) && isEditingHeaderFooter) {\n if (!movedSection.id.startsWith('footer-')) {\n movedSection.id = `footer-${movedSection.id}`;\n }\n } else {\n movedSection.id = movedSection.id.replace(/^(header-|footer-)/, '');\n }\n \n newTargetSections.splice(newIndex, 0, movedSection);\n setTargetSections(newTargetSections);\n }\n }\n }\n };\n\n const getRelevantSections = (canvasType: string) => {\n if (canvasType === 'header' && isEditingHeaderFooter) return headerSections;\n if (canvasType === 'footer' && isEditingHeaderFooter) return footerSections;\n return sections;\n };\n\n const getRelevantSetSections = (canvasType: string) => {\n if (canvasType === 'header' && isEditingHeaderFooter) return setHeaderSections;\n if (canvasType === 'footer' && isEditingHeaderFooter) return setFooterSections;\n return setSections;\n };\n\n const handleUpdateSection = (id: string, data: Partial<EnhancedSectionData>, canvasType: string) => {\n const relevantSections = getRelevantSections(canvasType);\n const relevantSetSections = getRelevantSetSections(canvasType);\n \n const cleanId = id.replace(/^(header-|footer-)/, '');\n \n relevantSetSections(\n relevantSections.map((section) =>\n section.id === cleanId || section.id === id ? { ...section, ...data } : section\n )\n );\n };\n\n const handleSplitSection = (id: string, content1: string, content2: string, canvasType: string) => {\n const relevantSections = getRelevantSections(canvasType);\n const relevantSetSections = getRelevantSetSections(canvasType);\n \n const cleanId = id.replace(/^(header-|footer-)/, '');\n \n const index = relevantSections.findIndex((section) => section.id === cleanId || section.id === id);\n if (index === -1) return;\n\n const section = relevantSections[index];\n const newSections = [...relevantSections];\n \n const sectionPrefix = canvasType === 'header' ? 'header-' : canvasType === 'footer' ? 'footer-' : '';\n \n if (section.isSplitPair && section.splitGroupId) {\n const splitGroupId = section.splitGroupId;\n const splitSections = newSections.filter(s => s.splitGroupId === splitGroupId);\n const totalSections = splitSections.length + 1;\n const newWidth = 100 / totalSections;\n \n newSections[index] = { \n ...section, \n content: content1,\n splitWidth: newWidth\n };\n\n const newSection: EnhancedSectionData = {\n id: `${sectionPrefix}section-${uuidv4()}`,\n content: content2,\n type: section.type,\n isSplitPair: true,\n splitGroupId: splitGroupId,\n splitWidth: newWidth,\n attributes: section.attributes,\n is_edited_from_source: false\n };\n\n newSections.splice(index + 1, 0, newSection);\n \n for (let i = 0; i < newSections.length; i++) {\n if (newSections[i].splitGroupId === splitGroupId) {\n newSections[i].splitWidth = newWidth;\n }\n }\n } else {\n const splitGroupId = uuidv4();\n const initialWidth = 50;\n \n newSections[index] = { \n ...section, \n content: content1,\n isSplitPair: true,\n splitGroupId,\n splitWidth: initialWidth\n };\n\n const newSection: EnhancedSectionData = {\n id: `${sectionPrefix}section-${uuidv4()}`,\n content: content2,\n type: section.type,\n isSplitPair: true,\n splitGroupId,\n splitWidth: initialWidth,\n attributes: section.attributes,\n is_edited_from_source: false\n };\n\n newSections.splice(index + 1, 0, newSection);\n }\n \n relevantSetSections(newSections);\n // enqueueSnackbar('Section split successfully');\n };\n\n const handleDeleteSection = (id: string, canvasType: string) => {\n const relevantSections = getRelevantSections(canvasType);\n const relevantSetSections = getRelevantSetSections(canvasType);\n \n const cleanId = id.replace(/^(header-|footer-)/, '');\n \n const sectionToDelete = relevantSections.find(s => s.id === cleanId || s.id === id);\n \n if (!sectionToDelete) return;\n \n if (sectionToDelete.isSplitPair && sectionToDelete.splitGroupId) {\n const splitSections = relevantSections.filter(s => s.splitGroupId === sectionToDelete.splitGroupId);\n \n if (splitSections.length <= 2) {\n const remainingSection = splitSections.find(s => s.id !== cleanId && s.id !== id);\n if (remainingSection) {\n remainingSection.isSplitPair = false;\n remainingSection.splitGroupId = undefined;\n remainingSection.splitWidth = undefined;\n }\n relevantSetSections(relevantSections.filter(s => s.id !== cleanId && s.id !== id));\n } else {\n const remainingSplitSections = splitSections.filter(s => s.id !== cleanId && s.id !== id);\n const newWidth = 100 / remainingSplitSections.length;\n \n const updatedSections = relevantSections.filter(section => section.id !== cleanId && section.id !== id).map(section => {\n if (section.splitGroupId === sectionToDelete.splitGroupId) {\n return { ...section, splitWidth: newWidth };\n }\n return section;\n });\n \n relevantSetSections(updatedSections);\n // enqueueSnackbar('Section removed from split group');\n }\n } else {\n relevantSetSections(relevantSections.filter(section => section.id !== cleanId && section.id !== id));\n // enqueueSnackbar('Section deleted');\n }\n \n if (selectedSection === id) {\n setSelectedSection(null);\n }\n };\n\n useEffect(() => {\n document.body.style.overflow = 'hidden';\n const main = document.getElementsByTagName('main')?.[0];\n if (main) {\n main.style.marginTop = '4.125rem';\n }\n return () => {\n document.body.removeAttribute('style');\n }\n }, []);\n\nconst getData = async () => {\n if (id) {\n const token = getToken();\n const subjRes = await getV1SubjectsId({ \n ...token, \n 'x-timezone': token['x-timezone']?.toString() || '',\n id \n });\n\n if ('data' in subjRes && subjRes.data && typeof subjRes.data === 'object' && 'resource' in subjRes.data) {\n const resource = (subjRes.data as any).resource;\n const token2 = getToken();\n const fRes = await getV1FormBuilderRelationalSchemaFieldsName({\n ...token2,\n 'x-timezone': token2['x-timezone']?.toString() || '',\n name: resource,\n });\n const schemaFields = ('data' in fRes && fRes.data && typeof fRes.data === 'object' && 'fields' in fRes.data) \n ? ((fRes.data as any).fields || [])\n : [];\n const relation_table = ('data' in fRes && fRes.data && typeof fRes.data === 'object' && 'relational_fields' in fRes.data)\n ? ((fRes.data as any).relational_fields || [])\n : [];\n\n // Process main schema fields\n const updatedFields = schemaFields\n .map((field) => ({\n ...field,\n key: field.key.replace('__replaceKey', ''),\n }))\n .filter((field) => !field.is_inner_join && field.alias !== 'id' && !field?.alias?.includes('_id'));\n\n // Process relation tables - separate array and object types\n const arrayRelationTables = [];\n const objectRelationFields = [];\n\n relation_table.forEach((table) => {\n if (!table) return;\n\n const updatedTableFields = (table.fields || []).map((field) => {\n const updatedField = {\n ...field,\n key: field.key.replace('__replaceKey', ''),\n alias: field?.templateKey ? field?.templateKey : field.alias,\n };\n\n // Prepend dataKey to field keys for object types\n if (table.type === 'object' && table.dataKey) {\n updatedField.key = `${table.dataKey}.${updatedField.key}`;\n }\n\n return updatedField;\n }).filter(\n (field) =>\n !field.is_inner_join &&\n field.alias !== 'id' &&\n !field.alias.includes('_id')\n );\n\n const uniqueTableFields = _.differenceWith(\n updatedTableFields,\n updatedTableFields,\n (fieldA: any, fieldB: any) => fieldA.key === fieldB?.joinKey\n );\n\n const tableFields = uniqueTableFields.map((f: any) => {\n const field = formatText(f.alias.replace(/_data$/, '').replace(/_/g, ' '));\n const value = table.type === 'object' && table.dataKey \n ? `${table.dataKey}.${f.alias.replace(/ /g, '_').toLowerCase()}`\n : f.alias.replace(/ /g, '_').toLowerCase();\n \n return { \n label: field, \n value: value \n };\n });\n\n if (table.type === 'object') {\n // Merge object type fields into main fields\n objectRelationFields.push(...tableFields);\n } else {\n // Keep array types separate\n arrayRelationTables.push({\n ...table,\n fields: tableFields\n });\n }\n });\n\n // Combine main fields and object relation fields\n const allFields = [\n ...updatedFields.map((f) => {\n const n = f?.alias || f?.key\n const field = formatText(n.replace(/_data$/, '').replace(/_/g, ' '));\n return { \n label: field, \n value: field.replace(/ /g, '_').toLowerCase() \n };\n }),\n ...objectRelationFields\n ];\n\n const uniqueAllFields = _.uniqBy(allFields, 'value');\n\n setPlaceholders(uniqueAllFields);\n setRelationTable(arrayRelationTables);\n }\n }\n\n // Rest of the function remains the same...\n if (template_id) {\n const token3 = getToken();\n const res = await getV1TemplatesId({ \n ...token3, \n 'x-timezone': token3['x-timezone']?.toString() || '',\n id: template_id \n });\n const templateSections = ('data' in res && res.data && typeof res.data === 'object' && 'sections' in res.data)\n ? ((res.data as any).sections || [])\n : [];\n const mainSecs = templateSections.map((s: any) => ({\n ...s,\n id: s.id || `section-${uuidv4()}`,\n }));\n setTemplateData(('data' in res && res.data) ? res.data as any : null);\n\n setSections(mainSecs);\n }\n\n if (locationState?.company_id) {\n const token4 = getToken();\n const res = await getV1TemplateHeaderFooterCompanyIdHeaderFooter({\n ...token4,\n 'x-timezone': token4['x-timezone']?.toString() || '',\n company_id: locationState.company_id,\n });\n const resData = ('data' in res && res.data && typeof res.data === 'object') ? res.data as any : null;\n setHeaderFooterId(resData?._id || '');\n const headerSections = resData?.header_sections || [];\n const footerSections = resData?.footer_sections || [];\n const headerSecs = headerSections.map((s) => ({\n ...s,\n id: s.id || `header-section-${uuidv4()}`,\n }));\n const footerSecs = footerSections.map((s) => ({\n ...s,\n id: s.id || `footer-section-${uuidv4()}`,\n }));\n\n setHeaderSections(headerSecs);\n setFooterSections(footerSecs);\n }\n};\n \n useEffect(() => {\n getData();\n }, [template_id, id, locationState?.company_id]);\n\n const createNewSection = (type: ElementType, attrs: Record<string, any> = {}): EnhancedSectionData => {\n let content = '';\n const styles = initialStyles[type] || {};\n const inlineStyles: string = generateInlineStyles(styles);\n\n const idPrefix = activeCanvas === 'header' && isEditingHeaderFooter ? 'header-' : \n activeCanvas === 'footer' && isEditingHeaderFooter ? 'footer-' : '';\n\n switch (type) {\n case 'heading':\n content = `<h1 style=\"${inlineStyles}\">Heading 1</h1>`;\n break;\n case 'heading-2':\n content = `<h2 style=\"${inlineStyles}\">Heading 2</h2>`;\n break;\n case 'heading-3':\n content = `<h3 style=\"${inlineStyles}\">Heading 3</h3>`;\n break;\n case 'heading-4':\n content = `<h4 style=\"${inlineStyles}\">Heading 4</h4>`;\n break;\n case 'text':\n content = `<p style=\"${inlineStyles}\">Hello, enter your text here...</p>`;\n break;\n case 'image':\n content = `<img src=\"${attrs.src}\" alt=\"${attrs.alt}\" style=\"${inlineStyles};\" />`;\n break;\n case 'buttons':\n attrs.text = attrs?.text || 'Button text';\n content = `<button style=\"${inlineStyles}\">${attrs.text}</button>`;\n break;\n case 'divider':\n content = `<hr style=\"${inlineStyles}\" />`;\n break;\n case 'table':\n const tableStyles = styles as any;\n const { border, borderStyle, borderColor, ...rest } = tableStyles;\n const tInlineStyles = generateInlineStyles(tableStyles.is_bordered ? tableStyles : rest);\n const tHeadInlineStyles: string = generateInlineStyles(tableStyles.tHead);\n const tBodyInlineStyles: string = generateInlineStyles(tableStyles.tBody);\n const thCellInlineStyles: string = generateInlineStyles({...tableStyles.thCells, border, borderStyle, borderColor });\n const tbCellInlineStyles: string = generateInlineStyles({...tableStyles.tbCells, border, borderStyle, borderColor});\n content = `\n <table style=\"${tInlineStyles}\">\n <thead style=\"${tHeadInlineStyles}\">\n <tr style=\"background-color: #f5f5f5;\">\n <th style=\"${thCellInlineStyles}\"></th>\n <th style=\"${thCellInlineStyles}\"></th>\n <th style=\"${thCellInlineStyles}\"></th>\n </tr>\n </thead>\n <tbody style=\"${tBodyInlineStyles}\">\n <tr>\n <td style=\"${tbCellInlineStyles}\"></td>\n <td style=\"${tbCellInlineStyles}\"></td>\n <td style=\"${tbCellInlineStyles}\"></td>\n </tr>\n </tbody>\n </table>\n `;\n break;\n case 'signature':\n content = `<div style=\"${inlineStyles}\">Signature: <input type='text' style=\"border:0; border-bottom:1px solid black\" class='signature-input'/></div>`;\n break;\n case 'qr-code':\n attrs.placeholder = attrs?.placeholder || '{{qr_data}}';\n content = `<div style=\"background-color: #f5f5f5; padding: 16px; text-align: center; color: #666666;\">${attrs.placeholder}</div>`;\n break;\n case 'bar-code':\n attrs.placeholder = attrs?.placeholder || '{{barcode_data}}';\n content = `<div style=\"background-color: #f5f5f5; padding: 16px; text-align: center; color: #666666;\">${attrs.placeholder}</div>`;\n break;\n default:\n content = '<p style=\"font-size: 16px; color: #333333; line-height: 1.5;\">New section</p>';\n }\n\n let attributes: Record<string, any> = {};\n attributes = extractStyles(content, type);\n\n return { \n id: `${idPrefix}section-${uuidv4()}`, \n content, \n type, \n attributes: {...(attrs || {}), styles},\n is_edited_from_source: false\n };\n };\n\n const handleSave = async () => {\n if(sections.length === 0 && headerSections.length === 0 && footerSections.length === 0) {\n enqueueSnackbar('Please add at least one section');\n return;\n }\n \n const mainHtml = generateEmailPreview(sections, headerSections, footerSections, true);\n try {\n const p = { \n ...getToken(), \n ...(template_id ? { id: template_id } : { subject_id: id, is_default: false, company_id: locationState.company_id }), \n sections: sections, \n contents: mainHtml \n }\n setPayload(p);\n } catch (error) {\n const m = getErrorMessage(error?.message);\n enqueueSnackbar(m, { variant: 'error' });\n }\n };\n const handleSaveHeaderFooter = async () => {\n if(sections.length === 0 && headerSections.length === 0 && footerSections.length === 0) {\n enqueueSnackbar('Please add at least one section', { variant: 'error' });\n return;\n } else if(!locationState?.company_id) {\n enqueueSnackbar('Company has not been selected', { variant: 'error' });\n return;\n }\n \n const headerHtml = generateHeaderFooterPreview(headerSections, 'header');\n const footerHtml = generateHeaderFooterPreview(footerSections, 'footer');\n const combinedHtml = `${headerHtml}${footerHtml}`;\n \n // Convert splitWidth from number to string for API\n const convertSectionForApi = (section: EnhancedSectionData) => ({\n id: section.id,\n content: section.content,\n type: section.type,\n isSplitPair: section.isSplitPair,\n splitGroupId: section.splitGroupId,\n splitWidth: section.splitWidth !== undefined ? String(section.splitWidth) : undefined,\n });\n \n const convertedHeaderSections = headerSections.map(convertSectionForApi);\n const convertedFooterSections = footerSections.map(convertSectionForApi);\n \n try {\n if(headerFooterId) {\n const token5 = getToken();\n const res = await patchV1TemplateHeaderFooterId({ \n ...token5,\n 'x-timezone': token5['x-timezone']?.toString() || '',\n id: headerFooterId, \n header_sections: convertedHeaderSections, \n footer_sections: convertedFooterSections, \n contents: combinedHtml \n });\n if(res.status_code === 200) {\n enqueueSnackbar('Header/Footer saved successfully', { variant: 'success' });\n setIsEditingHeaderFooter(false);\n }\n } else {\n const token6 = getToken();\n const res = await postV1TemplateHeaderFooter({ \n ...token6,\n 'x-timezone': token6['x-timezone']?.toString() || '',\n header_sections: convertedHeaderSections, \n footer_sections: convertedFooterSections, \n contents: combinedHtml, \n company_id: locationState.company_id\n });\n if(res.status_code === 200) {\n enqueueSnackbar('Header/Footer saved successfully', { variant: 'success' });\n setIsEditingHeaderFooter(false);\n }\n }\n } catch (error) {\n const m = getErrorMessage(error?.message);\n enqueueSnackbar(m, { variant: 'error' });\n }\n };\n\n const toggleHeaderFooterEditing = () => {\n setIsEditingHeaderFooter(!isEditingHeaderFooter);\n if (isEditingHeaderFooter) {\n setActiveCanvas('main');\n }\n };\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100vh' }}>\n <EditorHeader \n onPreview={() => setPreview(!preview)} \n onSave={handleSave}\n preview={preview}\n sections={sections}\n isEditingHeaderFooter={isEditingHeaderFooter}\n setIsEditingHeaderFooter={toggleHeaderFooterEditing}\n onSaveHeaderFooter={handleSaveHeaderFooter}\n modulePath={modulePath} \n type={type}\n mode={template_id ? 'edit' : 'add'}\n templateData={templateData}\n />\n <Box sx={{ display: 'flex', flex: 1, overflow: 'hidden' }}>\n <DndContext\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n collisionDetection={pointerWithin}\n >\n <EditorCanvas\n sections={sections}\n headerSections={headerSections}\n footerSections={footerSections}\n activeId={activeId}\n overSection={overSection}\n selectedSection={selectedSection}\n onSelectSection={setSelectedSection}\n onUpdateSection={handleUpdateSection}\n onSplitSection={handleSplitSection}\n onDeleteSection={handleDeleteSection}\n preview={preview}\n handleSave={handleSave}\n placeholders={placeholders}\n isEditingHeaderFooter={isEditingHeaderFooter}\n relation_table={relation_table}\n />\n </DndContext>\n </Box>\n {payload !== null && \n <TemplateNameModal \n isOpen={payload !== null} \n setIsOpen={() => setPayload(null)} \n payload={payload}\n templateRoutes={ROUTES}\n mode={template_id ? 'edit' : 'add'}\n templateData={templateData}\n />\n }\n </Box>\n );\n};\n\nexport default SectionFlowEditor;"],"names":["type","id","section","uuidv4","relation_table","_a","headerSections","footerSections"],"mappings":"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"}