@capillarytech/creatives-library 8.0.250-alpha.2 → 8.0.251

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 (276) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/constants/unified.js +1 -3
  4. package/initialReducer.js +0 -2
  5. package/package.json +1 -1
  6. package/services/api.js +0 -15
  7. package/services/tests/api.test.js +0 -34
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +0 -11
  10. package/utils/commonUtils.js +5 -28
  11. package/utils/tests/commonUtil.test.js +0 -224
  12. package/utils/tests/transformerUtils.test.js +0 -297
  13. package/utils/transformTemplateConfig.js +10 -0
  14. package/utils/transformerUtils.js +0 -40
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +0 -2
  17. package/v2Components/CapImageUpload/index.js +16 -65
  18. package/v2Components/CapImageUpload/index.scss +1 -4
  19. package/v2Components/CapImageUpload/messages.js +1 -5
  20. package/v2Components/CapTagList/index.js +1 -6
  21. package/v2Components/CapTagListWithInput/index.js +1 -5
  22. package/v2Components/CapTagListWithInput/messages.js +1 -1
  23. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  24. package/v2Components/ErrorInfoNote/index.js +72 -455
  25. package/v2Components/ErrorInfoNote/messages.js +6 -36
  26. package/v2Components/ErrorInfoNote/style.scss +4 -280
  27. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  28. package/v2Components/HtmlEditor/HTMLEditor.js +94 -547
  29. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1358
  30. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  31. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  32. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  33. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -22
  34. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -146
  35. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  36. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  37. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  38. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  39. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  40. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  45. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  46. package/v2Components/HtmlEditor/components/PreviewPane/index.js +34 -24
  47. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  48. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -50
  51. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +41 -70
  52. package/v2Components/HtmlEditor/constants.js +20 -42
  53. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  54. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  55. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  56. package/v2Components/HtmlEditor/hooks/useValidation.js +53 -189
  57. package/v2Components/HtmlEditor/index.js +1 -1
  58. package/v2Components/HtmlEditor/messages.js +85 -95
  59. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -94
  60. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  61. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  62. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  63. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +102 -134
  64. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  65. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  66. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  67. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  68. package/v2Components/TemplatePreview/index.js +32 -47
  69. package/v2Components/TemplatePreview/messages.js +0 -4
  70. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  71. package/v2Containers/App/constants.js +0 -5
  72. package/v2Containers/BeeEditor/index.js +90 -172
  73. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  74. package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
  75. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  76. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
  77. package/v2Containers/CreativesContainer/constants.js +0 -4
  78. package/v2Containers/CreativesContainer/index.js +46 -407
  79. package/v2Containers/CreativesContainer/messages.js +0 -12
  80. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  81. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  82. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
  83. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -106
  84. package/v2Containers/Email/actions.js +0 -7
  85. package/v2Containers/Email/constants.js +1 -5
  86. package/v2Containers/Email/index.js +29 -234
  87. package/v2Containers/Email/messages.js +0 -32
  88. package/v2Containers/Email/reducer.js +1 -12
  89. package/v2Containers/Email/sagas.js +7 -61
  90. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  91. package/v2Containers/Email/tests/reducer.test.js +0 -46
  92. package/v2Containers/Email/tests/sagas.test.js +29 -320
  93. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +19 -207
  94. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  95. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  96. package/v2Containers/EmailWrapper/constants.js +0 -2
  97. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  98. package/v2Containers/EmailWrapper/index.js +23 -103
  99. package/v2Containers/EmailWrapper/messages.js +1 -61
  100. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  101. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  102. package/v2Containers/InApp/actions.js +0 -7
  103. package/v2Containers/InApp/constants.js +4 -20
  104. package/v2Containers/InApp/index.js +359 -802
  105. package/v2Containers/InApp/index.scss +3 -4
  106. package/v2Containers/InApp/messages.js +3 -7
  107. package/v2Containers/InApp/reducer.js +3 -21
  108. package/v2Containers/InApp/sagas.js +9 -29
  109. package/v2Containers/InApp/selectors.js +5 -25
  110. package/v2Containers/InApp/tests/index.test.js +50 -154
  111. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  112. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  113. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +9 -15
  114. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -10
  115. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -102
  116. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -81
  117. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +174 -244
  118. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  119. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +36 -52
  120. package/v2Containers/TagList/index.js +19 -62
  121. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  122. package/v2Containers/Templates/_templates.scss +1 -265
  123. package/v2Containers/Templates/actions.js +1 -2
  124. package/v2Containers/Templates/constants.js +0 -1
  125. package/v2Containers/Templates/index.js +38 -363
  126. package/v2Containers/Templates/messages.js +0 -28
  127. package/v2Containers/Templates/reducer.js +0 -4
  128. package/v2Containers/Templates/tests/index.test.js +0 -10
  129. package/v2Containers/TemplatesV2/index.js +7 -15
  130. package/v2Containers/TemplatesV2/messages.js +0 -4
  131. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +486 -682
  132. package/utils/imageUrlUpload.js +0 -141
  133. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  134. package/v2Components/CapImageUrlUpload/index.js +0 -365
  135. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  136. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  137. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -874
  138. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  139. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  140. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -364
  141. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  142. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +0 -795
  143. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -40
  144. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  145. package/v2Containers/BeePopupEditor/constants.js +0 -10
  146. package/v2Containers/BeePopupEditor/index.js +0 -194
  147. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  148. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1285
  149. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -1870
  150. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  151. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -643
  152. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  153. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  154. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  155. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  156. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  157. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  158. package/v2Containers/InAppWrapper/constants.js +0 -16
  159. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  160. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  161. package/v2Containers/InAppWrapper/index.js +0 -148
  162. package/v2Containers/InAppWrapper/messages.js +0 -49
  163. package/v2Containers/InappAdvance/index.js +0 -1099
  164. package/v2Containers/InappAdvance/index.scss +0 -10
  165. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
  166. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  167. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  168. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  169. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -107
  170. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -160
  171. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -476
  172. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  173. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  174. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -143
  175. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  176. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  177. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  178. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  179. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  180. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  181. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  182. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -82
  183. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  184. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  185. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  186. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  187. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  188. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  189. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  190. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  191. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -515
  192. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  193. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  194. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -46
  195. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -150
  196. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  197. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  198. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  199. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  200. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  201. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  202. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  203. package/v2Containers/WebPush/Create/index.js +0 -1148
  204. package/v2Containers/WebPush/Create/index.scss +0 -134
  205. package/v2Containers/WebPush/Create/messages.js +0 -203
  206. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  207. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  208. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  209. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  210. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -23
  211. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
  212. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  213. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  214. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  215. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  216. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  217. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  218. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  219. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  220. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  221. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  222. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  223. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  224. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  225. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  226. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -47
  227. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -141
  228. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  229. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  230. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  231. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  232. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  233. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  234. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -81
  235. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  236. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  237. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  238. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  239. package/v2Containers/WebPush/Create/preview/preview.scss +0 -351
  240. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  241. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  242. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  243. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  244. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  245. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  246. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  247. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  248. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  249. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  250. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  251. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  252. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  253. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
  254. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  255. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  256. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  257. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  258. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  259. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  260. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  261. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  262. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  263. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  264. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  265. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  266. package/v2Containers/WebPush/Create/utils/validation.js +0 -75
  267. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  268. package/v2Containers/WebPush/actions.js +0 -60
  269. package/v2Containers/WebPush/constants.js +0 -132
  270. package/v2Containers/WebPush/index.js +0 -2
  271. package/v2Containers/WebPush/reducer.js +0 -104
  272. package/v2Containers/WebPush/sagas.js +0 -119
  273. package/v2Containers/WebPush/selectors.js +0 -65
  274. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  275. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  276. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -3,7 +3,6 @@
3
3
  exports[`Test SlideBoxContent container campaign message, add creative click rcs 1`] = `
4
4
  <CreativesContainer__SlideBoxWrapper
5
5
  className="add-creatives-section creatives-library-mode "
6
- shouldApplyFooterMargin={false}
7
6
  slideBoxWrapperMargin={0}
8
7
  >
9
8
  <CapSlideBox
@@ -18,7 +17,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click rcs
18
17
  handleCloseTestAndPreview={[Function]}
19
18
  handleTestAndPreview={[Function]}
20
19
  hostName=""
21
- inAppEditorType={null}
22
20
  isTestAndPreviewMode={false}
23
21
  loyaltyMetaData={
24
22
  Object {
@@ -34,9 +32,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click rcs
34
32
  onEnterTemplateName={[Function]}
35
33
  onFTPSubmit={[MockFunction]}
36
34
  onFacebookSubmit={[MockFunction]}
37
- onHtmlEditorValidationStateChange={[Function]}
38
- onInAppEditorTypeChange={[Function]}
39
- onInAppModeChange={[Function]}
40
35
  onMobilepushModeChange={[Function]}
41
36
  onPreviewTemplate={[Function]}
42
37
  onRemoveTemplateName={[Function]}
@@ -94,7 +89,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click rcs
94
89
  exports[`Test SlideBoxContent container campaign message, add creative click whatsapp 1`] = `
95
90
  <CreativesContainer__SlideBoxWrapper
96
91
  className="add-creatives-section creatives-library-mode "
97
- shouldApplyFooterMargin={false}
98
92
  slideBoxWrapperMargin={0}
99
93
  >
100
94
  <CapSlideBox
@@ -109,7 +103,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click wha
109
103
  handleCloseTestAndPreview={[Function]}
110
104
  handleTestAndPreview={[Function]}
111
105
  hostName=""
112
- inAppEditorType={null}
113
106
  isTestAndPreviewMode={false}
114
107
  loyaltyMetaData={
115
108
  Object {
@@ -125,9 +118,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click wha
125
118
  onEnterTemplateName={[Function]}
126
119
  onFTPSubmit={[MockFunction]}
127
120
  onFacebookSubmit={[MockFunction]}
128
- onHtmlEditorValidationStateChange={[Function]}
129
- onInAppEditorTypeChange={[Function]}
130
- onInAppModeChange={[Function]}
131
121
  onMobilepushModeChange={[Function]}
132
122
  onPreviewTemplate={[Function]}
133
123
  onRemoveTemplateName={[Function]}
@@ -185,7 +175,6 @@ exports[`Test SlideBoxContent container campaign message, add creative click wha
185
175
  exports[`Test SlideBoxContent container campaign message, whatsapp edit all data 1`] = `
186
176
  <CreativesContainer__SlideBoxWrapper
187
177
  className="add-creatives-section creatives-library-mode "
188
- shouldApplyFooterMargin={false}
189
178
  slideBoxWrapperMargin={0}
190
179
  >
191
180
  <CapSlideBox
@@ -200,7 +189,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit all data
200
189
  handleCloseTestAndPreview={[Function]}
201
190
  handleTestAndPreview={[Function]}
202
191
  hostName=""
203
- inAppEditorType={null}
204
192
  isTestAndPreviewMode={false}
205
193
  loyaltyMetaData={
206
194
  Object {
@@ -216,9 +204,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit all data
216
204
  onEnterTemplateName={[Function]}
217
205
  onFTPSubmit={[MockFunction]}
218
206
  onFacebookSubmit={[MockFunction]}
219
- onHtmlEditorValidationStateChange={[Function]}
220
- onInAppEditorTypeChange={[Function]}
221
- onInAppModeChange={[Function]}
222
207
  onMobilepushModeChange={[Function]}
223
208
  onPreviewTemplate={[Function]}
224
209
  onRemoveTemplateName={[Function]}
@@ -241,47 +226,20 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit all data
241
226
  }
242
227
  footer={
243
228
  <SlideBoxFooter
244
- continueButtonLabel={
245
- Object {
246
- "defaultMessage": "Next",
247
- "id": "creatives.containersV2.Creatives.next",
248
- }
249
- }
250
229
  currentChannel="WHATSAPP"
251
230
  currentTab="ANDROID"
252
- emailCreateMode=""
253
231
  errorMessages={
254
232
  Object {
255
233
  "LIQUID_ERROR_MSG": Array [],
256
234
  "STANDARD_ERROR_MSG": Array [],
257
235
  }
258
236
  }
259
- fetchingCmsData={false}
260
- htmlEditorValidationState={
261
- Object {
262
- "errorsAcknowledged": false,
263
- "isContentEmpty": true,
264
- "issueCounts": Object {
265
- "html": 0,
266
- "label": 0,
267
- "liquid": 0,
268
- "total": 0,
269
- },
270
- "validationComplete": false,
271
- }
272
- }
273
- isContinueButtonDisabled={true}
274
- isCreatingTemplate={false}
275
- isEmptyContent={false}
276
- isFullMode={false}
277
237
  isLiquidValidationError={false}
278
- isTemplateNameEmpty={false}
279
238
  onCreateNextStep={[Function]}
280
239
  onDiscard={[Function]}
281
240
  onEditTemplate={[Function]}
282
241
  onSave={[Function]}
283
242
  onTestAndPreview={[Function]}
284
- selectedEmailCreateMode={null}
285
243
  shouldShowContinueFooter={[Function]}
286
244
  shouldShowDoneFooter={[Function]}
287
245
  showTestAndPreviewButton={true}
@@ -315,7 +273,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit all data
315
273
  exports[`Test SlideBoxContent container campaign message, whatsapp edit min data 1`] = `
316
274
  <CreativesContainer__SlideBoxWrapper
317
275
  className="add-creatives-section creatives-library-mode "
318
- shouldApplyFooterMargin={false}
319
276
  slideBoxWrapperMargin={0}
320
277
  >
321
278
  <CapSlideBox
@@ -330,7 +287,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit min data
330
287
  handleCloseTestAndPreview={[Function]}
331
288
  handleTestAndPreview={[Function]}
332
289
  hostName=""
333
- inAppEditorType={null}
334
290
  isTestAndPreviewMode={false}
335
291
  loyaltyMetaData={
336
292
  Object {
@@ -346,9 +302,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit min data
346
302
  onEnterTemplateName={[Function]}
347
303
  onFTPSubmit={[MockFunction]}
348
304
  onFacebookSubmit={[MockFunction]}
349
- onHtmlEditorValidationStateChange={[Function]}
350
- onInAppEditorTypeChange={[Function]}
351
- onInAppModeChange={[Function]}
352
305
  onMobilepushModeChange={[Function]}
353
306
  onPreviewTemplate={[Function]}
354
307
  onRemoveTemplateName={[Function]}
@@ -371,47 +324,20 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit min data
371
324
  }
372
325
  footer={
373
326
  <SlideBoxFooter
374
- continueButtonLabel={
375
- Object {
376
- "defaultMessage": "Next",
377
- "id": "creatives.containersV2.Creatives.next",
378
- }
379
- }
380
327
  currentChannel="WHATSAPP"
381
328
  currentTab="ANDROID"
382
- emailCreateMode=""
383
329
  errorMessages={
384
330
  Object {
385
331
  "LIQUID_ERROR_MSG": Array [],
386
332
  "STANDARD_ERROR_MSG": Array [],
387
333
  }
388
334
  }
389
- fetchingCmsData={false}
390
- htmlEditorValidationState={
391
- Object {
392
- "errorsAcknowledged": false,
393
- "isContentEmpty": true,
394
- "issueCounts": Object {
395
- "html": 0,
396
- "label": 0,
397
- "liquid": 0,
398
- "total": 0,
399
- },
400
- "validationComplete": false,
401
- }
402
- }
403
- isContinueButtonDisabled={true}
404
- isCreatingTemplate={false}
405
- isEmptyContent={false}
406
- isFullMode={false}
407
335
  isLiquidValidationError={false}
408
- isTemplateNameEmpty={false}
409
336
  onCreateNextStep={[Function]}
410
337
  onDiscard={[Function]}
411
338
  onEditTemplate={[Function]}
412
339
  onSave={[Function]}
413
340
  onTestAndPreview={[Function]}
414
- selectedEmailCreateMode={null}
415
341
  shouldShowContinueFooter={[Function]}
416
342
  shouldShowDoneFooter={[Function]}
417
343
  showTestAndPreviewButton={true}
@@ -445,7 +371,6 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit min data
445
371
  exports[`Test SlideBoxContent container it should clear the url, on channel change from new whatsapp to another 1`] = `
446
372
  <CreativesContainer__SlideBoxWrapper
447
373
  className="add-creatives-section creatives-library-mode "
448
- shouldApplyFooterMargin={false}
449
374
  slideBoxWrapperMargin={0}
450
375
  >
451
376
  <CapSlideBox
@@ -460,7 +385,6 @@ exports[`Test SlideBoxContent container it should clear the url, on channel chan
460
385
  handleCloseTestAndPreview={[Function]}
461
386
  handleTestAndPreview={[Function]}
462
387
  hostName=""
463
- inAppEditorType={null}
464
388
  isTestAndPreviewMode={false}
465
389
  loyaltyMetaData={
466
390
  Object {
@@ -476,9 +400,6 @@ exports[`Test SlideBoxContent container it should clear the url, on channel chan
476
400
  onEnterTemplateName={[Function]}
477
401
  onFTPSubmit={[MockFunction]}
478
402
  onFacebookSubmit={[MockFunction]}
479
- onHtmlEditorValidationStateChange={[Function]}
480
- onInAppEditorTypeChange={[Function]}
481
- onInAppModeChange={[Function]}
482
403
  onMobilepushModeChange={[Function]}
483
404
  onPreviewTemplate={[Function]}
484
405
  onRemoveTemplateName={[Function]}
@@ -501,47 +422,20 @@ exports[`Test SlideBoxContent container it should clear the url, on channel chan
501
422
  }
502
423
  footer={
503
424
  <SlideBoxFooter
504
- continueButtonLabel={
505
- Object {
506
- "defaultMessage": "Next",
507
- "id": "creatives.containersV2.Creatives.next",
508
- }
509
- }
510
425
  currentChannel="WHATSAPP"
511
426
  currentTab="ANDROID"
512
- emailCreateMode=""
513
427
  errorMessages={
514
428
  Object {
515
429
  "LIQUID_ERROR_MSG": Array [],
516
430
  "STANDARD_ERROR_MSG": Array [],
517
431
  }
518
432
  }
519
- fetchingCmsData={false}
520
- htmlEditorValidationState={
521
- Object {
522
- "errorsAcknowledged": false,
523
- "isContentEmpty": true,
524
- "issueCounts": Object {
525
- "html": 0,
526
- "label": 0,
527
- "liquid": 0,
528
- "total": 0,
529
- },
530
- "validationComplete": false,
531
- }
532
- }
533
- isContinueButtonDisabled={true}
534
- isCreatingTemplate={false}
535
- isEmptyContent={false}
536
- isFullMode={false}
537
433
  isLiquidValidationError={false}
538
- isTemplateNameEmpty={false}
539
434
  onCreateNextStep={[Function]}
540
435
  onDiscard={[Function]}
541
436
  onEditTemplate={[Function]}
542
437
  onSave={[Function]}
543
438
  onTestAndPreview={[Function]}
544
- selectedEmailCreateMode={null}
545
439
  shouldShowContinueFooter={[Function]}
546
440
  shouldShowDoneFooter={[Function]}
547
441
  showTestAndPreviewButton={true}
@@ -66,13 +66,6 @@ export function clearCRUDResponse() {
66
66
  };
67
67
  }
68
68
 
69
- export function getCmsAccounts(cmsType) {
70
- return {
71
- type: types.GET_CMS_ACCOUNTS_REQUEST,
72
- cmsType,
73
- };
74
- }
75
-
76
69
  export function clearStoreValues() {
77
70
  return {
78
71
  type: types.CLEAR_ALL_VALUES,
@@ -36,8 +36,4 @@ export const DUPLICATE_TEMPLATE_REQUEST = 'app/v2Containers/Email/DUPLICATE_TEMP
36
36
  export const DUPLICATE_TEMPLATE_SUCCESS = 'app/v2Containers/Email/DUPLICATE_TEMPLATE_SUCCESS';
37
37
  export const DUPLICATE_TEMPLATE_FAILURE = 'app/v2Containers/Email/DUPLICATE_TEMPLATE_FAILURE';
38
38
 
39
- export const TRANSFORM_EMAIL_TEMPLATE_REQUEST = 'app/v2Containers/Email/TRANSFORM_EMAIL_TEMPLATE_REQUEST';
40
-
41
- export const GET_CMS_ACCOUNTS_REQUEST = 'app/v2Containers/Email/GET_CMS_ACCOUNTS_REQUEST';
42
- export const GET_CMS_ACCOUNTS_SUCCESS = 'app/v2Containers/Email/GET_CMS_ACCOUNTS_SUCCESS';
43
- export const GET_CMS_ACCOUNTS_FAILURE = 'app/v2Containers/Email/GET_CMS_ACCOUNTS_FAILURE';
39
+ export const TRANSFORM_EMAIL_TEMPLATE_REQUEST = 'app/v2Containers/Email/TRANSFORM_EMAIL_TEMPLATE_REQUEST';
@@ -208,31 +208,13 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
208
208
  const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
209
209
  const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
210
210
  if (!_.isEmpty(this.props.Templates.BEETemplate)) {
211
- const isDragDrop = this.props.Templates.BEETemplate.versions?.base?.is_drag_drop;
212
-
213
- if (isDragDrop && isBEEAppEnable ) {
211
+ if (this.props.Templates.BEETemplate.versions.base.is_drag_drop && isBEEAppEnable ) {
214
212
  this.setState({isDragDrop: true});
215
213
  }
216
214
  if (this.props.params.id) {
217
- // Extract drag_drop_id - check multiple possible paths
218
- const activeTab = this.props.Templates.BEETemplate.versions?.base?.activeTab || 'en';
219
- const activeTabData = this.props.Templates.BEETemplate.versions?.base?.[activeTab] || {};
220
- const dragDropId = activeTabData.drag_drop_id
221
- || activeTabData.id
222
- || _.get(this.props.Templates.BEETemplate, 'versions.base.drag_drop_id')
223
- || _.get(this.props.Templates.BEETemplate, 'versions.base.id')
224
- || this.props.Templates.BEETemplate?._id;
225
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'open', undefined, isBEESupport, isBEEAppEnable);
215
+ this.props.actions.getCmsSetting(BEE_PLUGIN, _.get(this.props.Templates.BEETemplate, 'versions.base.drag_drop_id', this.props.Templates.BEETemplate?._id), 'open', undefined, isBEESupport, isBEEAppEnable);
226
216
  } else if (this.props.location.query.module !== "library" || (this.props.location.query.module === "library" && !this.props.templateData)) {
227
- // Extract drag_drop_id - check multiple possible paths
228
- const activeTab = this.props.Templates.BEETemplate.versions?.base?.activeTab || 'en';
229
- const activeTabData = this.props.Templates.BEETemplate.versions?.base?.[activeTab] || {};
230
- const dragDropId = activeTabData.drag_drop_id
231
- || activeTabData.id
232
- || _.get(this.props.Templates.BEETemplate, 'versions.base.drag_drop_id')
233
- || _.get(this.props.Templates.BEETemplate, 'versions.base.id')
234
- || this.props.Templates.BEETemplate?._id;
235
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'create', undefined, isBEESupport, isBEEAppEnable);
217
+ this.props.actions.getCmsSetting(BEE_PLUGIN, _.get(this.props.Templates.BEETemplate, 'versions.base.drag_drop_id', this.props.Templates.BEETemplate?._id), 'create', undefined, isBEESupport, isBEEAppEnable);
236
218
  }
237
219
  }
238
220
  this.setState({ content: (this.props.Templates.selectedEmailLayout ? this.props.Templates.selectedEmailLayout : ''), formData});
@@ -255,52 +237,11 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
255
237
  if (this.props.location.query.type === 'embedded') {
256
238
  this.showNext();
257
239
  }
258
-
259
- // Check if BEETemplate was set after componentWillMount but before componentDidMount
260
- // This can happen if BEETemplate is set asynchronously
261
- if (!_.isEmpty(this.props.Templates.BEETemplate) && !this.state.isDragDrop) {
262
- const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
263
- const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
264
- const beeTemplate = this.props.Templates.BEETemplate;
265
- const activeTab = beeTemplate.versions?.base?.activeTab || 'en';
266
- const activeTabData = beeTemplate.versions?.base?.[activeTab] || {};
267
- const isDragDrop = activeTabData.is_drag_drop
268
- || beeTemplate.versions?.base?.is_drag_drop
269
- || beeTemplate.base?.is_drag_drop
270
- || beeTemplate.is_drag_drop;
271
-
272
- if (isDragDrop && isBEEAppEnable) {
273
- this.setState({isDragDrop: true});
274
-
275
- const dragDropId = activeTabData.drag_drop_id
276
- || activeTabData.id
277
- || _.get(beeTemplate, 'versions.base.drag_drop_id')
278
- || _.get(beeTemplate, 'versions.base.id')
279
- || beeTemplate._id;
280
-
281
- if (this.props.params.id) {
282
- const activeTabForLang = beeTemplate.versions?.base?.activeTab || 'en';
283
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'open', activeTabForLang, isBEESupport, isBEEAppEnable);
284
- } else {
285
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'create', undefined, isBEESupport, isBEEAppEnable);
286
- }
287
- }
288
- }
289
240
  }
290
241
 
291
242
 
292
- checkBeeEditorAllowedForLibrary = (props = null) => {
293
- // Allow passing props for use in componentWillReceiveProps (to use nextProps)
294
- const componentProps = props || this.props;
295
- const { isFullMode = false, editor, Email } = componentProps || {};
296
- // IMPORTANT: For isBEEAppEnable API parameter, use API response if available
297
- // This ensures consistent behavior across full mode and library mode
298
- // The API response (Email.isBeeEnabled) represents the actual org setting
299
- if (Email?.isBeeEnabled !== undefined && Email?.isBeeEnabled !== null) {
300
- return Email.isBeeEnabled;
301
- }
302
- // Fallback to mode-based logic for UI purposes (editor selection, etc.)
303
- // But for API calls, this should ideally use the API response
243
+ checkBeeEditorAllowedForLibrary = () => {
244
+ const { isFullMode = false, editor } = this.props || {};
304
245
  if ((editor === "BEE" && !isFullMode) || isFullMode) {
305
246
  return true;
306
247
  }
@@ -401,61 +342,9 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
401
342
  // this.props.globalActions.fetchSchemaForEntity(query);
402
343
  // }
403
344
 
404
- // Check if BEETemplate was just set (for new flow when template details load)
405
- // This handles the case where BEETemplate is set after componentWillMount
406
- const wasBEETemplateEmpty = _.isEmpty(this.props.Templates.BEETemplate);
407
- const isBEETemplateNowSet = !_.isEmpty(nextProps.Templates.BEETemplate);
408
- const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary(nextProps);
409
- const isBEESupport = (nextProps.location.query.isBEESupport !== "false") || false;
410
-
411
- if (wasBEETemplateEmpty && isBEETemplateNowSet && isBEEAppEnable) {
412
- const beeTemplate = nextProps.Templates.BEETemplate;
413
- const isDragDrop = beeTemplate.versions?.base?.is_drag_drop
414
- || beeTemplate.versions?.base?.[beeTemplate.versions?.base?.activeTab || 'en']?.is_drag_drop
415
- || beeTemplate.base?.is_drag_drop
416
- || beeTemplate.is_drag_drop;
417
-
418
- // Check if we're in edit mode - check multiple sources for id
419
- const hasParamsId = nextProps.params?.id
420
- || nextProps.location?.query?.id
421
- || nextProps.location?.params?.id
422
- || (nextProps.location?.pathname && nextProps.location.pathname.includes('/edit/'));
423
-
424
- if (isDragDrop) {
425
- this.setState({isDragDrop: true});
426
-
427
- // Extract drag_drop_id - check multiple possible paths
428
- // Priority: versions.base[activeTab].drag_drop_id > versions.base[activeTab].id > versions.base.drag_drop_id > _id
429
- const activeTab = beeTemplate.versions?.base?.activeTab || 'en';
430
- const activeTabData = beeTemplate.versions?.base?.[activeTab] || {};
431
- let dragDropId = activeTabData.drag_drop_id
432
- || activeTabData.id
433
- || beeTemplate.versions?.base?.drag_drop_id
434
- || beeTemplate.versions?.base?.id
435
- || beeTemplate.base?.drag_drop_id
436
- || beeTemplate.base?.id
437
- || beeTemplate._id;
438
-
439
- // Call getCmsSetting for BEE template - use 'open' mode if in edit mode
440
- // Extract langId from active tab
441
- const activeTabForLang = beeTemplate.versions?.base?.activeTab || 'en';
442
- if (hasParamsId) {
443
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'open', activeTabForLang, isBEESupport, isBEEAppEnable);
444
- } else if (nextProps.location.query.module !== "library" || (nextProps.location.query.module === "library" && !nextProps.templateData)) {
445
- this.props.actions.getCmsSetting(BEE_PLUGIN, dragDropId, 'create', undefined, isBEESupport, isBEEAppEnable);
446
- }
447
- }
448
- }
449
-
450
345
  if (this.state.isEdit && !this.state.editDataSet && !_.isEmpty(nextProps.Email.templateDetails) && !_.isEmpty(this.state.schema)) {
451
346
  this.setState({editDataSet: true}, () => {
452
347
  this.setEditData(nextProps.Email.templateDetails);
453
- // Update template name in parent if available
454
- if (this.props.isFullMode && this.props.showTemplateName && nextProps.Email.templateDetails.name) {
455
- const formData = this.state.formData;
456
- formData['template-name'] = nextProps.Email.templateDetails.name;
457
- this.props.showTemplateName({formData, onFormDataChange: this.onFormDataChange});
458
- }
459
348
  });
460
349
  }
461
350
  if (this.state.isEdit && nextProps.location.query.module === "library" && !_.isEmpty(nextProps.templateData) && !this.props.params.id && !nextProps.isGetFormData && _.isEmpty(_.get(this, `state.formData['template-subject']`))) {
@@ -494,7 +383,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
494
383
  const formData = _.cloneDeep(this.state.formData);
495
384
 
496
385
  const schema = _.cloneDeep(this.state.schema);
497
- const langIndex = formData[this.state.currentTab - 1]?.selectedLanguages?.indexOf(langId);
386
+ const langIndex = formData[this.state.currentTab - 1].selectedLanguages.indexOf(langId);
498
387
 
499
388
  const temp = (schema.containers || {})[this.state.currentTab - 1];
500
389
 
@@ -502,91 +391,32 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
502
391
  if (nextProps.Email.CmsSettings.isDragDrop && this.checkBeeEditorAllowedForLibrary()) {
503
392
  const beeJson = `BEEeditor${currentTab > 1 ? currentTab : ''}json`;
504
393
  const beeToken = `BEEeditor${currentTab > 1 ? currentTab : ''}token`;
505
- let beeJsonValue = '';
394
+ let beeJsonValue = _.get(nextProps, 'Templates.BEETemplate.versions.base.json-content', '');
506
395
  const selectedId = _.get(this.props, 'Email.templateDetails._id', '') || _.get(this.props, 'Templates.BEETemplate.versions.base.drag_drop_id', '');
507
-
508
- // Get beeJsonValue from template data - check multiple sources
509
- // First check if it's already in formData (from setEditData)
510
- beeJsonValue = _.get(this.state, `formData[${currentTab - 1}][${langId}].json-content`, '');
511
-
512
- // Also check formData.base
513
- if (!beeJsonValue) {
514
- beeJsonValue = _.get(this.state, `formData.base[${langId}].json-content`, '');
515
- }
516
-
517
- // Always check templateDetails and BEETemplate regardless of mode
518
- if (!beeJsonValue) {
519
- // Check Email.templateDetails first
520
- const templateDetails = nextProps.Email.templateDetails;
521
- if (templateDetails && templateDetails.versions && templateDetails.versions.base) {
522
- const baseVersion = templateDetails.versions.base;
523
- // Try language-specific path first (e.g., base.en.json-content)
524
- if (baseVersion[langId] && baseVersion[langId]['json-content']) {
525
- beeJsonValue = baseVersion[langId]['json-content'];
526
- } else if (baseVersion['json-content']) {
527
- // Fallback to base-level json-content
528
- beeJsonValue = baseVersion['json-content'];
529
- }
530
- }
531
-
532
- // If still not found, check BEETemplate
533
- if (!beeJsonValue) {
534
- const beeTemplate = nextProps.Templates.BEETemplate;
535
- if (beeTemplate && beeTemplate.versions && beeTemplate.versions.base) {
536
- const beeBase = beeTemplate.versions.base;
537
- if (beeBase[langId] && beeBase[langId]['json-content']) {
538
- beeJsonValue = beeBase[langId]['json-content'];
539
- } else if (beeBase['json-content']) {
540
- beeJsonValue = beeBase['json-content'];
541
- }
542
- }
543
- }
544
- }
545
- // Ensure we have a valid beeJsonValue - if it's a string, try to parse it to verify it's valid JSON
546
- let finalBeeJsonValue = beeJsonValue;
547
- if (beeJsonValue && typeof beeJsonValue === 'string') {
548
- try {
549
- // Try to parse to verify it's valid JSON
550
- JSON.parse(beeJsonValue);
551
- } catch (e) {
552
- console.warn('[Email] componentWillReceiveProps - beeJsonValue is not valid JSON, using as-is:', e);
396
+ if (this.state.isEdit) {
397
+ if (this.props.location.query.module === "library") {
398
+ beeJsonValue = _.get(this.state, `formData[${currentTab - 1}][${langId}].json-content`, '');
399
+ } else {
400
+ beeJsonValue = _.get(nextProps, `Email.templateDetails.versions.base[${langId}].json-content`, '');
553
401
  }
554
402
  }
555
-
556
- // Preserve existing formData values, especially template-subject
557
- const existingFormData = formData[`${currentTab - 1}`][langId] || {};
558
403
  formData[`${currentTab - 1}`][langId] = {
559
- ...existingFormData,
404
+ ...formData[`${currentTab - 1}`][langId],
560
405
  is_drag_drop: true,
561
- [beeJson]: finalBeeJsonValue,
406
+ [beeJson]: beeJsonValue,
562
407
  [beeToken]: nextProps.Email.CmsSettings.tokenData,
563
408
  id: selectedId,
564
- // Also store json-content for reference
565
- 'json-content': finalBeeJsonValue,
566
409
  };
567
-
568
- // Ensure template-subject is preserved at the top level
569
- if (formData['template-subject'] === undefined || formData['template-subject'] === '') {
570
- const subjectFromEditData = _.get(nextProps, 'Email.templateDetails.versions.base.subject', '');
571
- if (subjectFromEditData) {
572
- formData['template-subject'] = subjectFromEditData;
573
- }
574
- }
575
-
576
- if (langIndex !== undefined && langIndex !== -1 && temp && temp.panes) {
577
- _.forEach(temp.panes, (pane, index) => {
578
- const tempPane = pane;
410
+ _.forEach(temp.panes, (pane, index) => {
411
+ const tempPane = pane;
412
+ //
413
+ if (parseInt(index, 10) === parseInt(langIndex, 10)) {
579
414
  //
580
- if (parseInt(index, 10) === parseInt(langIndex, 10)) {
581
- //
582
- if (tempPane.sections && tempPane.sections[0] && tempPane.sections[0].inputFields && tempPane.sections[0].inputFields[0] && tempPane.sections[0].inputFields[0].cols) {
583
- tempPane.sections[0].inputFields[0].cols[1].colStyle = {display: ""};
584
- tempPane.sections[0].inputFields[0].cols[0].colStyle = {display: "none"};
585
- }
586
- }
587
- });
588
- }
589
- this.setState({schema, isSchemaChanged: true, loadingStatus: this.state.loadingStatus + 1, formData});
415
+ tempPane.sections[0].inputFields[0].cols[1].colStyle = {display: ""};
416
+ tempPane.sections[0].inputFields[0].cols[0].colStyle = {display: "none"};
417
+ }
418
+ });
419
+ this.setState({schema, isSchemaChanged: true, loadingStatus: this.state.loadingStatus + 1});
590
420
  } else {
591
421
  _.forEach(temp.panes, (pane, index) => {
592
422
  const tempPane = pane;
@@ -883,18 +713,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
883
713
  const msgString = JSON.stringify(msg);
884
714
  const langId = formData[this.state.currentTab - 1].activeTab;
885
715
  const langIndex = formData[this.state.currentTab - 1].selectedLanguages.indexOf(langId);
886
- const elementToSelect = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`);
887
- if (elementToSelect) {
888
- try {
889
- const win = elementToSelect.contentWindow;
890
- if (win) {
891
- win.postMessage(msgString, '*');
892
- }
893
- } catch (error) {
894
- // Handle cross-origin frame access errors
895
- console.warn('Failed to access iframe contentWindow (cross-origin restriction):', error);
896
- }
897
- }
716
+ const win = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`).contentWindow;
717
+ win.postMessage(msgString, '*');
898
718
  } else if (data === "unsubscribe" && this.state.editorInstanse) {
899
719
  const anchor = `<a href='{{${data}}}'>${data}</a>`;
900
720
  this.state.editorInstanse.insertHtml(`${anchor}`);
@@ -1077,11 +897,6 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1077
897
  const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
1078
898
  const formData = _.cloneDeep(this.state.formData);
1079
899
 
1080
- // Set template name from editData if available
1081
- if (editData.name) {
1082
- formData['template-name'] = editData.name;
1083
- }
1084
-
1085
900
  const schema = (this.props.location.query.type === 'embedded') ? this.removeStandAlone(this.state.schema) : _.cloneDeep(this.state.schema);
1086
901
  const containers = _.cloneDeep(schema.containers.slice());
1087
902
  let tabKey = "";
@@ -1090,8 +905,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1090
905
  const type = this.props.location.query.type;
1091
906
 
1092
907
  formData['template-name'] = editData.name;
1093
- const subject = _.get(editData, 'versions.base.subject', '');
1094
- formData['template-subject'] = subject;
908
+ formData['template-subject'] = _.get(editData, 'versions.base.subject');
1095
909
  formData.base = editData.versions.base;
1096
910
 
1097
911
  _.forEach(editData.versions.history, (data1, index) => {
@@ -1172,13 +986,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1172
986
 
1173
987
 
1174
988
  this.setState({ formData, schema, tabKey, currentTab, tabCount: editData.versions.history.length, loadingStatus: this.state.loadingStatus + 1 }, () => {
1175
- if (this.props.isFullMode && this.props.showTemplateName) {
1176
- // Ensure template name is set before showing it
1177
- const updatedFormData = _.cloneDeep(formData);
1178
- if (editData.name && !updatedFormData['template-name']) {
1179
- updatedFormData['template-name'] = editData.name;
1180
- }
1181
- this.props.showTemplateName({formData: updatedFormData, onFormDataChange: this.onFormDataChange});
989
+ if (this.props.isFullMode) {
990
+ this.props.showTemplateName({formData, onFormDataChange: this.onFormDataChange});
1182
991
  }
1183
992
  const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
1184
993
  _.forEach((editData.versions.base.selectedLanguages), (language) => {
@@ -2854,7 +2663,6 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2854
2663
  getTemplateDetailsInProgress,
2855
2664
  assetUploading,
2856
2665
  createTemplateInProgress,
2857
- fetchingCmsSettings,
2858
2666
  } = this.props.Email;
2859
2667
  let isLoading =
2860
2668
  isLoadingMetaEntities ||
@@ -2863,7 +2671,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2863
2671
  ) || (
2864
2672
  assetUploading !== undefined && assetUploading
2865
2673
  ) || (
2866
- Email && (fetchingCmsData || getTemplateDetailsInProgress || fetchingCmsSettings)
2674
+ Email && (fetchingCmsData || getTemplateDetailsInProgress)
2867
2675
  );
2868
2676
 
2869
2677
  if (!isLoading) {
@@ -3185,19 +2993,6 @@ function mapDispatchToProps(dispatch) {
3185
2993
  const withReducer = injectReducer({ key: 'email', reducer: v2EmailReducer });
3186
2994
  const withEmailSaga = injectSaga({ key: 'email', saga: v2EmailSagas });
3187
2995
 
3188
- // Base Email component without saga registration (for use from EmailWrapper)
3189
- // EmailWrapper already registers the saga, so we don't need to register it here
3190
- export const EmailWithoutSaga = withCreatives({
3191
- WrappedComponent: Email,
3192
- mapStateToProps,
3193
- mapDispatchToProps,
3194
- userAuth: true,
3195
- sagas: [], // No saga - EmailWrapper registers it
3196
- reducers: [withReducer],
3197
- });
3198
-
3199
- // Email component with saga registration (for direct use from SlideBoxContent in Edit mode)
3200
- // When Email is used directly (not as child of EmailWrapper), it needs to register the saga
3201
2996
  export default withCreatives({
3202
2997
  WrappedComponent: Email,
3203
2998
  mapStateToProps,