@capillarytech/creatives-library 8.0.263 → 8.0.265

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 (280) 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/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +35 -17
  9. package/tests/integration/TemplateCreation/api-response.js +1 -31
  10. package/tests/integration/TemplateCreation/msw-handler.js +0 -2
  11. package/utils/common.js +0 -11
  12. package/utils/commonUtils.js +5 -28
  13. package/utils/tests/commonUtil.test.js +0 -224
  14. package/utils/tests/transformerUtils.test.js +0 -297
  15. package/utils/transformTemplateConfig.js +10 -0
  16. package/utils/transformerUtils.js +0 -40
  17. package/v2Components/CapDeviceContent/index.js +56 -61
  18. package/v2Components/CapImageUpload/constants.js +0 -2
  19. package/v2Components/CapImageUpload/index.js +16 -65
  20. package/v2Components/CapImageUpload/index.scss +1 -4
  21. package/v2Components/CapImageUpload/messages.js +1 -5
  22. package/v2Components/CapTagList/index.js +1 -6
  23. package/v2Components/CapTagListWithInput/index.js +1 -5
  24. package/v2Components/CapTagListWithInput/messages.js +1 -1
  25. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  26. package/v2Components/ErrorInfoNote/index.js +72 -402
  27. package/v2Components/ErrorInfoNote/messages.js +6 -32
  28. package/v2Components/ErrorInfoNote/style.scss +6 -278
  29. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  30. package/v2Components/HtmlEditor/HTMLEditor.js +99 -418
  31. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1882
  32. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  33. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  34. package/v2Components/HtmlEditor/_index.lazy.scss +1 -0
  35. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +102 -23
  36. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -148
  37. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  38. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  39. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +1 -9
  40. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +6 -31
  41. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  46. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  47. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +10 -7
  48. package/v2Components/HtmlEditor/components/PreviewPane/index.js +43 -22
  49. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  50. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  51. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +0 -18
  52. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -36
  53. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -46
  54. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +46 -52
  55. package/v2Components/HtmlEditor/constants.js +20 -45
  56. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  57. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +16 -351
  58. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  59. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  60. package/v2Components/HtmlEditor/hooks/useValidation.js +56 -213
  61. package/v2Components/HtmlEditor/index.js +1 -1
  62. package/v2Components/HtmlEditor/messages.js +94 -102
  63. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -214
  64. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  65. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  66. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  67. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +124 -158
  68. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  69. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  70. package/v2Components/MobilePushPreviewV2/index.js +7 -33
  71. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  72. package/v2Components/TemplatePreview/index.js +32 -47
  73. package/v2Components/TemplatePreview/messages.js +0 -4
  74. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  75. package/v2Containers/App/constants.js +0 -5
  76. package/v2Containers/BeeEditor/index.js +90 -172
  77. package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
  78. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  79. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
  80. package/v2Containers/CreativesContainer/constants.js +0 -4
  81. package/v2Containers/CreativesContainer/index.js +46 -408
  82. package/v2Containers/CreativesContainer/messages.js +0 -12
  83. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  84. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  85. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
  86. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -103
  87. package/v2Containers/Email/actions.js +0 -7
  88. package/v2Containers/Email/constants.js +1 -5
  89. package/v2Containers/Email/index.js +36 -237
  90. package/v2Containers/Email/messages.js +0 -32
  91. package/v2Containers/Email/reducer.js +1 -12
  92. package/v2Containers/Email/sagas.js +7 -61
  93. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  94. package/v2Containers/Email/tests/reducer.test.js +0 -46
  95. package/v2Containers/Email/tests/sagas.test.js +29 -320
  96. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +21 -211
  97. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  98. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  99. package/v2Containers/EmailWrapper/constants.js +0 -2
  100. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  101. package/v2Containers/EmailWrapper/index.js +23 -103
  102. package/v2Containers/EmailWrapper/messages.js +1 -65
  103. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  104. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  105. package/v2Containers/InApp/actions.js +0 -7
  106. package/v2Containers/InApp/constants.js +4 -20
  107. package/v2Containers/InApp/index.js +359 -802
  108. package/v2Containers/InApp/index.scss +3 -4
  109. package/v2Containers/InApp/messages.js +3 -7
  110. package/v2Containers/InApp/reducer.js +3 -21
  111. package/v2Containers/InApp/sagas.js +9 -29
  112. package/v2Containers/InApp/selectors.js +5 -25
  113. package/v2Containers/InApp/tests/index.test.js +50 -154
  114. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  115. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  116. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +0 -3
  117. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +0 -2
  118. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +0 -2
  119. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +0 -9
  120. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -12
  121. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +0 -4
  122. package/v2Containers/TagList/index.js +19 -62
  123. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  124. package/v2Containers/Templates/_templates.scss +1 -265
  125. package/v2Containers/Templates/actions.js +1 -2
  126. package/v2Containers/Templates/constants.js +0 -1
  127. package/v2Containers/Templates/index.js +38 -363
  128. package/v2Containers/Templates/messages.js +0 -28
  129. package/v2Containers/Templates/reducer.js +0 -2
  130. package/v2Containers/Templates/tests/index.test.js +0 -10
  131. package/v2Containers/TemplatesV2/TemplatesV2.style.js +2 -4
  132. package/v2Containers/TemplatesV2/index.js +7 -15
  133. package/v2Containers/TemplatesV2/messages.js +0 -4
  134. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +0 -34
  135. package/utils/imageUrlUpload.js +0 -141
  136. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  137. package/v2Components/CapImageUrlUpload/index.js +0 -365
  138. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  139. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  140. package/v2Components/ErrorInfoNote/constants.js +0 -1
  141. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -870
  142. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  143. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -281
  144. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -295
  145. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  146. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -38
  147. package/v2Components/MobilePushPreviewV2/constants.js +0 -6
  148. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  149. package/v2Containers/BeePopupEditor/constants.js +0 -10
  150. package/v2Containers/BeePopupEditor/index.js +0 -194
  151. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  152. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1246
  153. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -2472
  154. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  155. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -956
  156. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  157. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  158. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  159. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  160. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  161. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  162. package/v2Containers/InAppWrapper/constants.js +0 -16
  163. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  164. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  165. package/v2Containers/InAppWrapper/index.js +0 -148
  166. package/v2Containers/InAppWrapper/messages.js +0 -49
  167. package/v2Containers/InappAdvance/index.js +0 -1099
  168. package/v2Containers/InappAdvance/index.scss +0 -10
  169. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
  170. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  171. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  172. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  173. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -145
  174. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -164
  175. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -463
  176. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  177. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  178. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -142
  179. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  180. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  181. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  182. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  183. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  184. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  185. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  186. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -86
  187. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  188. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  189. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  190. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  191. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  192. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  193. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  194. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  195. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
  196. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  197. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  198. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -78
  199. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -138
  200. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  201. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  202. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  203. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  204. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  205. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  206. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  207. package/v2Containers/WebPush/Create/index.js +0 -1148
  208. package/v2Containers/WebPush/Create/index.scss +0 -134
  209. package/v2Containers/WebPush/Create/messages.js +0 -211
  210. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  211. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  212. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  213. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  214. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -25
  215. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
  216. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  217. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  218. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  219. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  220. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  221. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  222. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  223. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  224. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  225. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  226. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  227. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  228. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  229. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  230. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -51
  231. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -145
  232. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  233. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  234. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  235. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  236. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  237. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  238. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -85
  239. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  240. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  241. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  242. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  243. package/v2Containers/WebPush/Create/preview/preview.scss +0 -358
  244. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  245. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  246. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  247. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  248. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  249. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  250. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  251. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  252. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  253. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  254. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  255. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  256. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  257. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
  258. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  259. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  260. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  261. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  262. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  263. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  264. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  265. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  266. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  267. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  268. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  269. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  270. package/v2Containers/WebPush/Create/utils/validation.js +0 -75
  271. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  272. package/v2Containers/WebPush/actions.js +0 -60
  273. package/v2Containers/WebPush/constants.js +0 -132
  274. package/v2Containers/WebPush/index.js +0 -2
  275. package/v2Containers/WebPush/reducer.js +0 -104
  276. package/v2Containers/WebPush/sagas.js +0 -119
  277. package/v2Containers/WebPush/selectors.js +0 -65
  278. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  279. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  280. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -1,4 +1,4 @@
1
- import React, { useRef, useCallback } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { FormattedMessage } from 'react-intl';
4
4
  import styled from 'styled-components';
@@ -11,38 +11,25 @@ import CapSpin from '@capillarytech/cap-ui-library/CapSpin';
11
11
  import CapButton from '@capillarytech/cap-ui-library/CapButton';
12
12
  import CapError from '@capillarytech/cap-ui-library/CapError';
13
13
  import ComponentWithLabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
14
- import { CAP_COLOR_06, CAP_WHITE } from '@capillarytech/cap-ui-library/styled/variables';
15
- import { EmailWithoutSaga } from '../../Email';
14
+ import Email from '../../Email';
16
15
  import CmsTemplatesComponent from '../../../v2Components/CmsTemplatesComponent';
17
- import EmailHTMLEditor from './EmailHTMLEditor';
18
- import TestAndPreviewSlidebox from '../../../v2Components/TestAndPreviewSlidebox';
19
- import { EMAIL } from '../../CreativesContainer/constants';
20
16
  import messages from '../messages';
21
17
  import { EMAIL_CREATE_MODES, STEPS } from '../constants';
22
- import { hasSupportCKEditor } from '../../../utils/common';
23
18
 
24
19
  const CapRadioCardWithLabel = ComponentWithLabelHOC(CapRadioCard);
25
20
 
26
21
  const CardContainer = styled.div`
27
22
  margin-top: 16px;
28
-
29
- .ant-radio-group.cap-radioCard-v2 {
30
- .ant-radio-button-wrapper {
31
- &.ant-radio-button-wrapper-checked {
32
- .icon-container {
33
- background-color: ${CAP_COLOR_06};
34
- .anticon,
35
- .cap-icon {
36
- color: ${CAP_WHITE};
37
- }
38
- }
23
+ .ant-radio-group{
24
+ .ant-radio-button-wrapper{
25
+ &:first-child{
26
+ margin-left: unset;
39
27
  }
40
28
  }
41
29
  }
42
30
  `;
43
31
 
44
-
45
- // Mode selection component
32
+ // Mode selection component that handles the creation mode selection UI
46
33
  const ModeSelectionUI = ({
47
34
  isFullMode,
48
35
  templateName,
@@ -64,21 +51,20 @@ const ModeSelectionUI = ({
64
51
  value={templateName}
65
52
  labelPosition="top"
66
53
  size="default"
67
- style={{ width: '68%' }}
54
+ style={{ width: '68%'}}
68
55
  />
69
56
  )}
70
57
  <CardContainer>
71
58
  <CapRadioCardWithLabel
72
- style={{ marginLeft: '-6px'}}
73
59
  panes={modes}
74
60
  onChange={onChange}
75
61
  selected={emailCreateMode}
76
- label={<FormattedMessage {...messages.editorType} />}
62
+ label={<FormattedMessage {...messages.createMode} />}
77
63
  />
78
64
  </CardContainer>
79
65
  <>
80
66
  {emailCreateMode === EMAIL_CREATE_MODES.UPLOAD && (
81
- <div>
67
+ <div style={{ marginLeft: '8px' }}>
82
68
  <CapUploader onChange={useFileUpload} accept=".zip, .html, .htm" showUploadList={false}>
83
69
  {(isFullMode && isTemplateNameEmpty) && (
84
70
  <CapError type="error">
@@ -112,36 +98,25 @@ ModeSelectionUI.propTypes = {
112
98
  uploadButtonLabel: PropTypes.node.isRequired,
113
99
  };
114
100
 
115
- // Content creation component
101
+ // Content creation component that handles the email or template selection UI
116
102
  const ContentCreationUI = ({
117
103
  isShowEmailCreate,
118
104
  emailProps,
119
105
  cmsTemplatesProps,
120
- isHTMLEditorMode,
121
- htmlEditorProps,
122
- }) => {
123
-
124
- return (
125
- <>
126
- {isShowEmailCreate ? (
127
- isHTMLEditorMode ? (
128
- <EmailHTMLEditor {...htmlEditorProps} />
129
- ) : (
130
- <EmailWithoutSaga {...emailProps} />
131
- )
132
- ) : (
133
- <CmsTemplatesComponent {...cmsTemplatesProps} />
134
- )}
135
- </>
136
- );
137
- };
106
+ }) => (
107
+ <>
108
+ {isShowEmailCreate ? (
109
+ <Email {...emailProps} />
110
+ ) : (
111
+ <CmsTemplatesComponent {...cmsTemplatesProps} />
112
+ )}
113
+ </>
114
+ );
138
115
 
139
116
  ContentCreationUI.propTypes = {
140
117
  isShowEmailCreate: PropTypes.bool.isRequired,
141
118
  emailProps: PropTypes.object.isRequired,
142
119
  cmsTemplatesProps: PropTypes.object.isRequired,
143
- isHTMLEditorMode: PropTypes.bool,
144
- htmlEditorProps: PropTypes.object,
145
120
  };
146
121
 
147
122
  // Main EmailWrapper presentational component
@@ -162,136 +137,9 @@ const EmailWrapperView = ({
162
137
  isShowEmailCreate,
163
138
  emailProps,
164
139
  cmsTemplatesProps,
165
- metaEntities,
166
- loadingTags,
167
- injectedTags,
168
- globalActions,
169
- supportedTags,
170
- getDefaultTags,
171
- location,
172
- currentOrgDetails,
173
- forwardedTags,
174
- selectedOfferDetails,
175
- eventContextTags,
176
- getFormdata,
177
- isGetFormData,
178
- getLiquidTags,
179
- showLiquidErrorInFooter,
180
- onValidationFail,
181
- emailActions,
182
- Email,
183
- templateData: templateDataProp,
184
- params,
185
- fetchingLiquidTags,
186
- createTemplateInProgress,
187
- fetchingCmsData,
188
- setIsLoadingContent,
189
- showTestAndPreviewSlidebox,
190
- handleCloseTestAndPreview,
191
- showTemplateName,
192
- onHtmlEditorValidationStateChange,
193
- moduleType,
194
140
  }) => {
195
- const htmlEditorRef = useRef(null);
196
- const supportCKEditor = hasSupportCKEditor();
197
- const hasParamsIdForEditor = params?.id || location?.query?.id || location?.params?.id || location?.pathname?.includes('/edit/');
198
- const isEditModeForEditor = hasParamsIdForEditor;
199
- const isBEEFromProps = emailProps?.editor === 'BEE' && emailProps?.selectedEditorMode === null;
200
- const isDragDropFromCreateMode = emailCreateMode === EMAIL_CREATE_MODES.DRAG_DROP;
201
- const isExplicitlyBEEEditor = isBEEFromProps || isDragDropFromCreateMode;
202
- let isHTMLEditorMode = false;
203
141
 
204
- if (supportCKEditor) {
205
- isHTMLEditorMode = false; // Legacy flow: use Email component
206
- } else if (isEditModeForEditor) {
207
- isHTMLEditorMode = !isExplicitlyBEEEditor;
208
- } else {
209
- if (isExplicitlyBEEEditor || isBEEFromProps || isDragDropFromCreateMode) {
210
- isHTMLEditorMode = false;
211
- } else {
212
- isHTMLEditorMode = emailProps?.selectedEditorMode === EMAIL_CREATE_MODES.HTML_EDITOR ||
213
- emailCreateMode === EMAIL_CREATE_MODES.HTML_EDITOR;
214
- }
215
- }
216
-
217
- const isShowTemplateSelection = step === STEPS.MODE_SELECTION;
218
-
219
- // Create onFormDataChange callback for template name updates (similar to Email component)
220
- // This allows CreativesContainer to update the template name when user clicks "Edit name"
221
- // When user edits the name in CreativesContainer header, it calls this callback
222
- // which updates the template name in EmailWrapper, and then CreativesContainer
223
- // will call showTemplateName again with the updated formData
224
- const handleFormDataChange = useCallback((updatedFormData) => {
225
- const newTemplateName = updatedFormData?.['template-name'] || templateName;
226
- if (newTemplateName !== templateName && onTemplateNameChange) {
227
- // Update template name in parent (useEmailWrapper hook)
228
- onTemplateNameChange({ target: { value: newTemplateName } });
229
- }
230
- // Note: CreativesContainer will call showTemplateName again after this callback
231
- // (it stores the callback in templateContainerDetails and calls it after state updates)
232
- }, [templateName, onTemplateNameChange]);
233
-
234
- const htmlEditorProps = isHTMLEditorMode ? {
235
- // Location and params
236
- location,
237
- params,
238
- // Tag-related props
239
- getDefaultTags,
240
- supportedTags,
241
- metaEntities,
242
- injectedTags,
243
- globalActions,
244
- loadingTags,
245
- eventContextTags,
246
- forwardedTags,
247
- selectedOfferDetails,
248
- currentOrgDetails,
249
- // Email Redux state and actions
250
- Email,
251
- emailActions,
252
- // Full mode props
253
- isFullMode,
254
- templateName,
255
- isGetFormData,
256
- getFormdata,
257
- // Library mode props
258
- templateData: templateDataProp,
259
- // Uploaded content from zip file
260
- EmailLayout,
261
- // Liquid validation
262
- getLiquidTags,
263
- showLiquidErrorInFooter,
264
- // Validation state callback
265
- onHtmlEditorValidationStateChange,
266
- onValidationFail,
267
- // Template name
268
- showTemplateName,
269
- onFormDataChange: handleFormDataChange,
270
- // Module type for unsubscribe tag validation
271
- moduleType,
272
- // Loading states
273
- fetchingLiquidTags: fetchingLiquidTags || false,
274
- createTemplateInProgress: createTemplateInProgress || false,
275
- fetchingCmsData: fetchingCmsData || false,
276
- // Parent loading control
277
- setIsLoadingContent,
278
- ref: htmlEditorRef,
279
- } : {};
280
-
281
- // Get formData for TestAndPreviewSlidebox when needed
282
- const getFormDataForPreview = () => {
283
- if (htmlEditorRef.current && htmlEditorRef.current.getFormDataForPreview) {
284
- return htmlEditorRef.current.getFormDataForPreview();
285
- }
286
- return {};
287
- };
288
-
289
- const getContentForPreview = () => {
290
- if (htmlEditorRef.current && htmlEditorRef.current.getContentForPreview) {
291
- return htmlEditorRef.current.getContentForPreview();
292
- }
293
- return '';
294
- };
142
+ const isShowTemplateSelection = step === STEPS.MODE_SELECTION || (step === STEPS.TEMPLATE_SELECTION && emailCreateMode === EMAIL_CREATE_MODES.UPLOAD);
295
143
 
296
144
  return (
297
145
  <>
@@ -315,22 +163,9 @@ const EmailWrapperView = ({
315
163
  isShowEmailCreate={isShowEmailCreate}
316
164
  emailProps={emailProps}
317
165
  cmsTemplatesProps={cmsTemplatesProps}
318
- isHTMLEditorMode={isHTMLEditorMode}
319
- htmlEditorProps={htmlEditorProps}
320
166
  />
321
167
  )}
322
168
  </CapSpin>
323
- {/* Render TestAndPreviewSlidebox for HTML Editor (similar to legacy Email component) */}
324
- {isHTMLEditorMode && showTestAndPreviewSlidebox && (
325
- <TestAndPreviewSlidebox
326
- show={showTestAndPreviewSlidebox}
327
- onClose={handleCloseTestAndPreview}
328
- formData={getFormDataForPreview()}
329
- content={getContentForPreview()}
330
- currentChannel={EMAIL}
331
- currentTab={1}
332
- />
333
- )}
334
169
  </>
335
170
  );
336
171
  };
@@ -340,10 +175,6 @@ EmailWrapperView.propTypes = {
340
175
  emailCreateMode: PropTypes.string,
341
176
  step: PropTypes.string,
342
177
  isFullMode: PropTypes.bool,
343
- getFormdata: PropTypes.func,
344
- isGetFormData: PropTypes.bool,
345
- getLiquidTags: PropTypes.func,
346
- showLiquidErrorInFooter: PropTypes.func,
347
178
  templateName: PropTypes.string,
348
179
  onTemplateNameChange: PropTypes.func.isRequired,
349
180
  isTemplateNameEmpty: PropTypes.bool,
@@ -356,27 +187,6 @@ EmailWrapperView.propTypes = {
356
187
  isShowEmailCreate: PropTypes.bool.isRequired,
357
188
  emailProps: PropTypes.object.isRequired,
358
189
  cmsTemplatesProps: PropTypes.object.isRequired,
359
- metaEntities: PropTypes.object,
360
- loadingTags: PropTypes.bool,
361
- injectedTags: PropTypes.object,
362
- globalActions: PropTypes.object,
363
- supportedTags: PropTypes.array,
364
- getDefaultTags: PropTypes.string,
365
- location: PropTypes.object,
366
- currentOrgDetails: PropTypes.object,
367
- forwardedTags: PropTypes.object,
368
- selectedOfferDetails: PropTypes.array,
369
- eventContextTags: PropTypes.array,
370
- emailActions: PropTypes.object,
371
- Email: PropTypes.object,
372
- templateData: PropTypes.object,
373
- params: PropTypes.object,
374
- fetchingLiquidTags: PropTypes.bool,
375
- createTemplateInProgress: PropTypes.bool,
376
- fetchingCmsData: PropTypes.bool,
377
- setIsLoadingContent: PropTypes.func,
378
- showTestAndPreviewSlidebox: PropTypes.bool,
379
- handleCloseTestAndPreview: PropTypes.func,
380
190
  };
381
191
 
382
192
  export default EmailWrapperView;
@@ -24,20 +24,24 @@ const HTMLEditorTesting = () => {
24
24
  // Show/Hide editor
25
25
  show: () => {
26
26
  setIsVisible(true);
27
+ console.log('✅ HTMLEditor test mode activated');
27
28
  },
28
29
 
29
30
  hide: () => {
30
31
  setIsVisible(false);
32
+ console.log('✅ HTMLEditor test mode deactivated');
31
33
  },
32
34
 
33
35
  toggle: () => {
34
- setIsVisible((prev) => !prev);
36
+ setIsVisible(prev => !prev);
37
+ console.log(`✅ HTMLEditor test mode ${!isVisible ? 'activated' : 'deactivated'}`);
35
38
  },
36
39
 
37
40
  // Variant control
38
41
  setVariant: (newVariant) => {
39
42
  if (['email', 'inapp'].includes(newVariant)) {
40
43
  setVariant(newVariant);
44
+ console.log(`✅ Variant set to: ${newVariant}`);
41
45
  } else {
42
46
  console.error('❌ Invalid variant. Use: "email" or "inapp"');
43
47
  }
@@ -48,6 +52,7 @@ const HTMLEditorTesting = () => {
48
52
  const validLayouts = Object.values(LAYOUT_TYPES);
49
53
  if (validLayouts.includes(layout)) {
50
54
  setLayoutType(layout);
55
+ console.log(`✅ Layout set to: ${layout}`);
51
56
  } else {
52
57
  console.error(`❌ Invalid layout. Use: ${validLayouts.join(', ')}`);
53
58
  }
@@ -56,22 +61,58 @@ const HTMLEditorTesting = () => {
56
61
  // Content control
57
62
  setContent: (newContent) => {
58
63
  setContent(newContent);
64
+ console.log('✅ Content updated');
59
65
  },
60
66
 
61
67
  getContent: () => {
68
+ console.log('Current content:', content);
62
69
  return content;
63
70
  },
64
71
 
65
72
  // Status
66
73
  status: () => {
74
+ console.log('📊 HTMLEditor Test Status:');
75
+ console.log(` Visible: ${isVisible}`);
76
+ console.log(` Variant: ${variant}`);
77
+ console.log(` Layout: ${layoutType}`);
78
+ console.log(` Content size: ${content.length} chars`);
67
79
  },
68
80
 
69
81
  // Help
70
82
  help: () => {
71
- },
83
+ console.log(`
84
+ 🚀 HTMLEditor Testing Console Commands:
85
+
86
+ 📱 Basic Controls:
87
+ htmlEditorTest.show() - Show the editor
88
+ htmlEditorTest.hide() - Hide the editor
89
+ htmlEditorTest.toggle() - Toggle editor visibility
90
+
91
+ ⚙️ Configuration:
92
+ htmlEditorTest.setVariant('email') - Set to email variant
93
+ htmlEditorTest.setVariant('inapp') - Set to inapp variant
94
+ htmlEditorTest.setLayout('POPUP') - Set layout (inapp only)
95
+ - Valid: POPUP, HEADER, FOOTER, FULLSCREEN
96
+
97
+ 📝 Content:
98
+ htmlEditorTest.setContent('<h1>Test</h1>') - Set editor content
99
+ htmlEditorTest.getContent() - Get current content
100
+
101
+ 📊 Status:
102
+ htmlEditorTest.status() - Show current status
103
+ htmlEditorTest.help() - Show this help
104
+
105
+ 💡 Example Usage:
106
+ htmlEditorTest.show()
107
+ htmlEditorTest.setVariant('inapp')
108
+ htmlEditorTest.setLayout('HEADER') // Top banner
109
+ htmlEditorTest.setLayout('FOOTER') // Bottom banner
110
+ `);
111
+ }
72
112
  };
73
113
 
74
114
  // Show help on first load
115
+ console.log('🚀 HTMLEditor Testing Ready! Type htmlEditorTest.help() for commands');
75
116
 
76
117
  // Cleanup on unmount
77
118
  return () => {
@@ -87,40 +128,32 @@ const HTMLEditorTesting = () => {
87
128
  }
88
129
 
89
130
  return (
90
- <div
91
- style={{
92
- position: 'fixed',
93
- top: 0,
94
- left: 0,
95
- right: 0,
96
- bottom: 0,
97
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
98
- zIndex: 9999,
131
+ <div style={{
132
+ position: 'fixed',
133
+ top: 0,
134
+ left: 0,
135
+ right: 0,
136
+ bottom: 0,
137
+ backgroundColor: 'rgba(0, 0, 0, 0.8)',
138
+ zIndex: 9999,
139
+ display: 'flex',
140
+ flexDirection: 'column',
141
+ padding: '20px'
142
+ }}>
143
+ {/* Header */}
144
+ <div style={{
145
+ backgroundColor: '#fff',
146
+ padding: '10px 20px',
147
+ borderRadius: '8px 8px 0 0',
99
148
  display: 'flex',
100
- flexDirection: 'column',
101
- padding: '20px',
149
+ justifyContent: 'space-between',
150
+ alignItems: 'center',
151
+ borderBottom: '1px solid #ddd'
102
152
  }}>
103
- {/* Header */}
104
- <div
105
- style={{
106
- backgroundColor: '#fff',
107
- padding: '10px 20px',
108
- borderRadius: '8px 8px 0 0',
109
- display: 'flex',
110
- justifyContent: 'space-between',
111
- alignItems: 'center',
112
- borderBottom: '1px solid #ddd',
113
- }}>
114
153
  <div>
115
154
  <strong>HTMLEditor Testing Mode</strong>
116
155
  <span style={{ marginLeft: '20px', color: '#666' }}>
117
- Variant:
118
- {' '}
119
- {variant}
120
- {' '}
121
- | Layout:
122
- {' '}
123
- {layoutType}
156
+ Variant: {variant} | Layout: {layoutType}
124
157
  </span>
125
158
  </div>
126
159
  <button
@@ -131,7 +164,7 @@ const HTMLEditorTesting = () => {
131
164
  border: 'none',
132
165
  padding: '5px 15px',
133
166
  borderRadius: '4px',
134
- cursor: 'pointer',
167
+ cursor: 'pointer'
135
168
  }}
136
169
  >
137
170
  Close
@@ -139,13 +172,12 @@ const HTMLEditorTesting = () => {
139
172
  </div>
140
173
 
141
174
  {/* Editor Container */}
142
- <div
143
- style={{
144
- flex: 1,
145
- backgroundColor: '#fff',
146
- borderRadius: '0 0 8px 8px',
147
- overflow: 'hidden',
148
- }}>
175
+ <div style={{
176
+ flex: 1,
177
+ backgroundColor: '#fff',
178
+ borderRadius: '0 0 8px 8px',
179
+ overflow: 'hidden'
180
+ }}>
149
181
  <IntlProvider locale="en" messages={{}}>
150
182
  <HTMLEditor
151
183
  variant={variant}
@@ -153,8 +185,10 @@ const HTMLEditorTesting = () => {
153
185
  initialContent={content}
154
186
  onContentChange={(newContent) => {
155
187
  setContent(newContent);
188
+ console.log('📝 Content changed:', newContent.substring(0, 100) + '...');
156
189
  }}
157
- onSave={() => {
190
+ onSave={(savedContent) => {
191
+ console.log('💾 Content saved:', savedContent);
158
192
  }}
159
193
  />
160
194
  </IntlProvider>
@@ -47,8 +47,8 @@ describe('HTMLEditorTesting', () => {
47
47
  beforeEach(() => {
48
48
  // Mock console methods
49
49
  consoleSpy = {
50
- log: jest.spyOn(console, 'log').mockImplementation(() => { }),
51
- error: jest.spyOn(console, 'error').mockImplementation(() => { })
50
+ log: jest.spyOn(console, 'log').mockImplementation(() => {}),
51
+ error: jest.spyOn(console, 'error').mockImplementation(() => {})
52
52
  };
53
53
 
54
54
  // Clear any existing window.htmlEditorTest
@@ -88,6 +88,14 @@ describe('HTMLEditorTesting', () => {
88
88
  expect(typeof window.htmlEditorTest.status).toBe('function');
89
89
  expect(typeof window.htmlEditorTest.help).toBe('function');
90
90
  });
91
+
92
+ it('logs help message on initial load', () => {
93
+ render(<HTMLEditorTesting />);
94
+
95
+ expect(consoleSpy.log).toHaveBeenCalledWith(
96
+ '🚀 HTMLEditor Testing Ready! Type htmlEditorTest.help() for commands'
97
+ );
98
+ });
91
99
  });
92
100
 
93
101
  describe('Visibility Control', () => {
@@ -99,6 +107,7 @@ describe('HTMLEditorTesting', () => {
99
107
  });
100
108
 
101
109
  expect(screen.getByTestId('mock-html-editor')).toBeInTheDocument();
110
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode activated');
102
111
  });
103
112
 
104
113
  it('hides editor when hide() is called', () => {
@@ -115,6 +124,7 @@ describe('HTMLEditorTesting', () => {
115
124
  window.htmlEditorTest.hide();
116
125
  });
117
126
  expect(screen.queryByTestId('mock-html-editor')).not.toBeInTheDocument();
127
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode deactivated');
118
128
  });
119
129
 
120
130
  it('toggles editor visibility with toggle()', () => {
@@ -125,11 +135,14 @@ describe('HTMLEditorTesting', () => {
125
135
  window.htmlEditorTest.toggle();
126
136
  });
127
137
  expect(screen.getByTestId('mock-html-editor')).toBeInTheDocument();
138
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode activated');
139
+
128
140
  // Toggle to hide
129
141
  act(() => {
130
142
  window.htmlEditorTest.toggle();
131
143
  });
132
144
  expect(screen.queryByTestId('mock-html-editor')).not.toBeInTheDocument();
145
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode deactivated');
133
146
  });
134
147
 
135
148
  it('closes editor when close button is clicked', () => {
@@ -156,6 +169,7 @@ describe('HTMLEditorTesting', () => {
156
169
  });
157
170
 
158
171
  expect(screen.getByTestId('editor-variant')).toHaveTextContent('email');
172
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ Variant set to: email');
159
173
  });
160
174
 
161
175
  it('sets variant to inapp', () => {
@@ -167,6 +181,7 @@ describe('HTMLEditorTesting', () => {
167
181
  });
168
182
 
169
183
  expect(screen.getByTestId('editor-variant')).toHaveTextContent('inapp');
184
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ Variant set to: inapp');
170
185
  });
171
186
 
172
187
  it('rejects invalid variant', () => {
@@ -200,6 +215,7 @@ describe('HTMLEditorTesting', () => {
200
215
  });
201
216
 
202
217
  expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.MODAL);
218
+ expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.MODAL}`);
203
219
  });
204
220
 
205
221
  it('sets layout to HEADER', () => {
@@ -211,6 +227,7 @@ describe('HTMLEditorTesting', () => {
211
227
  });
212
228
 
213
229
  expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.HEADER);
230
+ expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.HEADER}`);
214
231
  });
215
232
 
216
233
  it('sets layout to FOOTER', () => {
@@ -222,6 +239,7 @@ describe('HTMLEditorTesting', () => {
222
239
  });
223
240
 
224
241
  expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.FOOTER);
242
+ expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.FOOTER}`);
225
243
  });
226
244
 
227
245
  it('sets layout to FULLSCREEN', () => {
@@ -233,6 +251,7 @@ describe('HTMLEditorTesting', () => {
233
251
  });
234
252
 
235
253
  expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.FULLSCREEN);
254
+ expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.FULLSCREEN}`);
236
255
  });
237
256
 
238
257
  it('rejects invalid layout', () => {
@@ -270,6 +289,7 @@ describe('HTMLEditorTesting', () => {
270
289
  });
271
290
 
272
291
  expect(screen.getByTestId('editor-content')).toHaveTextContent(newContent);
292
+ expect(consoleSpy.log).toHaveBeenCalledWith('✅ Content updated');
273
293
  });
274
294
 
275
295
  it('gets current content', () => {
@@ -278,6 +298,7 @@ describe('HTMLEditorTesting', () => {
278
298
  const result = window.htmlEditorTest.getContent();
279
299
 
280
300
  expect(result).toBe('<h1>Test HTML Editor</h1><p>This is a test integration.</p>');
301
+ expect(consoleSpy.log).toHaveBeenCalledWith('Current content:', result);
281
302
  });
282
303
 
283
304
  it('starts with default content', () => {
@@ -301,6 +322,8 @@ describe('HTMLEditorTesting', () => {
301
322
 
302
323
  const changeButton = screen.getByTestId('trigger-content-change');
303
324
  fireEvent.click(changeButton);
325
+
326
+ expect(consoleSpy.log).toHaveBeenCalledWith('📝 Content changed:', '<p>Changed content</p>...');
304
327
  });
305
328
 
306
329
  it('handles save callback', () => {
@@ -312,6 +335,46 @@ describe('HTMLEditorTesting', () => {
312
335
 
313
336
  const saveButton = screen.getByTestId('trigger-save');
314
337
  fireEvent.click(saveButton);
338
+
339
+ expect(consoleSpy.log).toHaveBeenCalledWith('💾 Content saved:', '<p>Saved content</p>');
340
+ });
341
+ });
342
+
343
+ describe('Status and Help', () => {
344
+ it('shows status information', () => {
345
+ render(<HTMLEditorTesting />);
346
+
347
+ act(() => {
348
+ window.htmlEditorTest.show();
349
+ window.htmlEditorTest.setVariant('inapp');
350
+ window.htmlEditorTest.setLayout(LAYOUT_TYPES.HEADER);
351
+ });
352
+
353
+ // Clear previous console calls
354
+ consoleSpy.log.mockClear();
355
+
356
+ act(() => {
357
+ window.htmlEditorTest.status();
358
+ });
359
+
360
+ expect(consoleSpy.log).toHaveBeenCalledWith('📊 HTMLEditor Test Status:');
361
+ expect(consoleSpy.log).toHaveBeenCalledWith(' Visible: true');
362
+ expect(consoleSpy.log).toHaveBeenCalledWith(' Variant: inapp');
363
+ expect(consoleSpy.log).toHaveBeenCalledWith(' Layout: HEADER');
364
+ expect(consoleSpy.log).toHaveBeenCalledWith(' Content size: 59 chars');
365
+ });
366
+
367
+ it('shows help information', () => {
368
+ render(<HTMLEditorTesting />);
369
+
370
+ act(() => {
371
+ window.htmlEditorTest.help();
372
+ });
373
+
374
+ expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('🚀 HTMLEditor Testing Console Commands:'));
375
+ expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.show()'));
376
+ expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.setVariant(\'email\')'));
377
+ expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.setLayout(\'POPUP\')'));
315
378
  });
316
379
  });
317
380
 
@@ -407,6 +470,8 @@ describe('HTMLEditorTesting', () => {
407
470
  act(() => {
408
471
  window.htmlEditorTest.status();
409
472
  });
473
+
474
+ expect(consoleSpy.log).toHaveBeenCalledWith(` Content size: ${customContent.length} chars`);
410
475
  });
411
476
 
412
477
  it('handles multiple rapid operations', () => {