@capillarytech/creatives-library 8.0.250 → 8.0.252

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 +2 -2
  4. package/initialReducer.js +2 -0
  5. package/package.json +1 -1
  6. package/services/api.js +10 -5
  7. package/services/tests/api.test.js +34 -0
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +5 -6
  10. package/utils/commonUtils.js +28 -5
  11. package/utils/tests/commonUtil.test.js +224 -0
  12. package/utils/tests/transformerUtils.test.js +0 -297
  13. package/utils/transformTemplateConfig.js +0 -10
  14. package/utils/transformerUtils.js +0 -40
  15. package/v2Components/CapDeviceContent/index.js +61 -56
  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 +6 -1
  21. package/v2Components/CapTagListWithInput/index.js +5 -1
  22. package/v2Components/CapTagListWithInput/messages.js +1 -1
  23. package/v2Components/CapWhatsappCTA/tests/index.test.js +5 -0
  24. package/v2Components/ErrorInfoNote/index.js +455 -72
  25. package/v2Components/ErrorInfoNote/messages.js +36 -6
  26. package/v2Components/ErrorInfoNote/style.scss +280 -4
  27. package/v2Components/FormBuilder/tests/index.test.js +13 -4
  28. package/v2Components/HtmlEditor/HTMLEditor.js +547 -94
  29. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +874 -0
  30. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +1358 -133
  31. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +27 -16
  32. package/v2Components/HtmlEditor/_htmlEditor.scss +108 -45
  33. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  34. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +22 -101
  35. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +146 -140
  36. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +2 -1
  37. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  38. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +9 -0
  39. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  40. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +22 -0
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +4 -7
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +35 -45
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +1 -3
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +7 -6
  46. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +3 -6
  47. package/v2Components/HtmlEditor/components/PreviewPane/index.js +24 -34
  48. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +49 -31
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +50 -34
  51. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +6 -0
  52. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +70 -41
  53. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +254 -0
  54. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +364 -0
  55. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +51 -0
  56. package/v2Components/HtmlEditor/constants.js +42 -20
  57. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +373 -16
  58. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +795 -0
  59. package/v2Components/HtmlEditor/hooks/useEditorContent.js +5 -2
  60. package/v2Components/HtmlEditor/hooks/useInAppContent.js +88 -146
  61. package/v2Components/HtmlEditor/hooks/useValidation.js +189 -53
  62. package/v2Components/HtmlEditor/index.js +1 -1
  63. package/v2Components/HtmlEditor/messages.js +95 -85
  64. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +94 -45
  65. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +134 -0
  66. package/v2Components/HtmlEditor/utils/contentSanitizer.js +40 -41
  67. package/v2Components/HtmlEditor/utils/htmlValidator.js +71 -72
  68. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +134 -102
  69. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +23 -25
  70. package/v2Components/HtmlEditor/utils/validationAdapter.js +66 -41
  71. package/v2Components/HtmlEditor/utils/validationConstants.js +40 -0
  72. package/v2Components/MobilePushPreviewV2/index.js +32 -7
  73. package/v2Components/TemplatePreview/_templatePreview.scss +55 -24
  74. package/v2Components/TemplatePreview/index.js +47 -32
  75. package/v2Components/TemplatePreview/messages.js +4 -0
  76. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +1 -0
  77. package/v2Containers/App/constants.js +0 -5
  78. package/v2Containers/BeeEditor/index.js +172 -90
  79. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +14 -0
  80. package/v2Containers/BeePopupEditor/constants.js +10 -0
  81. package/v2Containers/BeePopupEditor/index.js +194 -0
  82. package/v2Containers/BeePopupEditor/tests/index.test.js +627 -0
  83. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  84. package/v2Containers/CreativesContainer/SlideBoxContent.js +129 -107
  85. package/v2Containers/CreativesContainer/SlideBoxFooter.js +163 -13
  86. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
  87. package/v2Containers/CreativesContainer/constants.js +1 -3
  88. package/v2Containers/CreativesContainer/index.js +239 -214
  89. package/v2Containers/CreativesContainer/messages.js +8 -4
  90. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  91. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +11 -2
  92. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +38 -354
  93. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +106 -0
  94. package/v2Containers/Email/actions.js +7 -0
  95. package/v2Containers/Email/constants.js +5 -1
  96. package/v2Containers/Email/index.js +241 -32
  97. package/v2Containers/Email/messages.js +32 -0
  98. package/v2Containers/Email/reducer.js +12 -1
  99. package/v2Containers/Email/sagas.js +61 -7
  100. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +2 -0
  101. package/v2Containers/Email/tests/reducer.test.js +46 -0
  102. package/v2Containers/Email/tests/sagas.test.js +320 -29
  103. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +1285 -0
  104. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +207 -19
  105. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +40 -74
  106. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +1870 -0
  107. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +520 -0
  108. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +2 -67
  109. package/v2Containers/EmailWrapper/constants.js +2 -0
  110. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +629 -77
  111. package/v2Containers/EmailWrapper/index.js +103 -23
  112. package/v2Containers/EmailWrapper/messages.js +61 -1
  113. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +643 -0
  114. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +594 -77
  115. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +376 -0
  116. package/v2Containers/InApp/__tests__/sagas.test.js +363 -0
  117. package/v2Containers/InApp/actions.js +7 -0
  118. package/v2Containers/InApp/constants.js +20 -4
  119. package/v2Containers/InApp/index.js +802 -359
  120. package/v2Containers/InApp/index.scss +4 -3
  121. package/v2Containers/InApp/messages.js +7 -3
  122. package/v2Containers/InApp/reducer.js +21 -3
  123. package/v2Containers/InApp/sagas.js +29 -9
  124. package/v2Containers/InApp/selectors.js +25 -5
  125. package/v2Containers/InApp/tests/index.test.js +154 -50
  126. package/v2Containers/InApp/tests/reducer.test.js +34 -0
  127. package/v2Containers/InApp/tests/sagas.test.js +61 -9
  128. package/v2Containers/InApp/tests/selectors.test.js +612 -0
  129. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +151 -0
  130. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +267 -0
  131. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +23 -0
  132. package/v2Containers/InAppWrapper/constants.js +16 -0
  133. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +473 -0
  134. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +198 -0
  135. package/v2Containers/InAppWrapper/index.js +148 -0
  136. package/v2Containers/InAppWrapper/messages.js +49 -0
  137. package/v2Containers/InappAdvance/index.js +1099 -0
  138. package/v2Containers/InappAdvance/index.scss +10 -0
  139. package/v2Containers/InappAdvance/tests/index.test.js +448 -0
  140. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
  141. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
  142. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +77 -100
  143. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +63 -72
  144. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +186 -232
  145. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  146. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +40 -48
  147. package/v2Containers/TagList/index.js +62 -19
  148. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  149. package/v2Containers/Templates/_templates.scss +56 -202
  150. package/v2Containers/Templates/actions.js +1 -2
  151. package/v2Containers/Templates/constants.js +0 -1
  152. package/v2Containers/Templates/index.js +123 -278
  153. package/v2Containers/Templates/messages.js +4 -24
  154. package/v2Containers/Templates/reducer.js +0 -4
  155. package/v2Containers/Templates/tests/index.test.js +0 -10
  156. package/v2Containers/TemplatesV2/index.js +7 -15
  157. package/v2Containers/TemplatesV2/messages.js +0 -4
  158. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +520 -648
  159. package/utils/imageUrlUpload.js +0 -141
  160. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  161. package/v2Components/CapImageUrlUpload/index.js +0 -365
  162. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  163. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  164. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +0 -152
  165. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +0 -214
  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
Binary file
package/assets/iOS.png CHANGED
Binary file
@@ -45,13 +45,13 @@ export const GIFT_CARDS = 'GIFT_CARDS';
45
45
  export const PROMO_ENGINE = 'PROMO_ENGINE';
46
46
  export const LIQUID_SUPPORT = 'ENABLE_LIQUID_SUPPORT';
47
47
  export const ENABLE_NEW_MPUSH = 'ENABLE_NEW_MPUSH';
48
+ export const SUPPORT_CK_EDITOR = 'SUPPORT_CK_EDITOR';
48
49
  export const CUSTOM_TAG = 'CustomTagMessage';
49
50
  export const CUSTOMER_EXTENDED_FIELD = 'Customer extended fields';
50
51
  export const EXTENDED_TAG = 'ExtendedTagMessage';
51
52
  export const BADGES_UI_ENABLED = 'BADGES_UI_ENABLED';
52
53
  export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
53
54
  export const ENABLE_WECHAT = 'ENABLE_WECHAT';
54
- export const ENABLE_WEBPUSH = 'ENABLE_WEBPUSH';
55
55
  export const ENABLE_CUSTOMER_BARCODE_TAG = 'ENABLE_CUSTOMER_BARCODE_TAG';
56
56
  export const EMAIL_UNSUBSCRIBE_TAG_MANDATORY = 'EMAIL_UNSUBSCRIBE_TAG_MANDATORY';
57
57
  export const ENABLE_AI_SUGGESTIONS = 'ENABLE_AI_SUGGESTIONS';
@@ -169,7 +169,7 @@ export const JAPANESE_HIDE_DATE_TAGS = [
169
169
  "dd.mm.yy",
170
170
  "dd Mon",
171
171
  "dd/m/yyyy",
172
- ];
172
+ ];
173
173
 
174
174
  export const LIQUID_SUPPORTED_CHANNELS = [EMAIL, SMS, MOBILE_PUSH, INAPP];
175
175
 
package/initialReducer.js CHANGED
@@ -15,6 +15,7 @@ import galleryReducer from './v2Containers/Assets/Gallery/reducer';
15
15
  import CapCollapsibleLeftNavigationReducer from '@capillarytech/cap-ui-library/CapCollapsibleLeftNavigation/reducer';
16
16
  import { AIRA_REDUCER_DOMAIN, askAiraReducer } from '@capillarytech/cap-ui-library/CapAskAira';
17
17
  import previewAndTestReducer from './v2Components/TestAndPreviewSlidebox/reducer';
18
+ import inAppReducer from './v2Containers/InApp/reducer';
18
19
 
19
20
  export const initialReducer = {
20
21
  language: languageProviderReducer,
@@ -33,4 +34,5 @@ export const initialReducer = {
33
34
  gallery: galleryReducer,
34
35
  navigationConfig: CapCollapsibleLeftNavigationReducer,
35
36
  previewAndTest: previewAndTestReducer,
37
+ inApp: inAppReducer,
36
38
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "8.0.250",
4
+ "version": "8.0.252",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
package/services/api.js CHANGED
@@ -287,11 +287,6 @@ export const createMobilePushTemplateV2 = (template) => {
287
287
  return request(url, getAPICallObject('POST', template));
288
288
  };
289
289
 
290
- export const createWebPushTemplate = (template) => {
291
- const url = `${API_ENDPOINT}/templates/WEBPUSH`;
292
- return request(url, getAPICallObject('POST', template));
293
- };
294
-
295
290
  export const duplicateTemplate = ({id, channel}) => {
296
291
  const url = `${API_ENDPOINT}/templates/duplicate/${id}/${channel}`;
297
292
  return request(url, getAPICallObject('GET'));
@@ -470,6 +465,11 @@ export const getCmsTemplateSettingsV2 = (cmsType, projectId, cmsMode, langId, is
470
465
  return API.get(url);
471
466
  };
472
467
 
468
+ export const getCmsAccounts = (cmsType) => {
469
+ const url = `${API_ENDPOINT}/cms/accounts?type=${cmsType}`;
470
+ return API.get(url);
471
+ };
472
+
473
473
  export const getCmsTemplateData = (cmsType, projectId, langId) => {
474
474
  const url = `${API_ENDPOINT}/cms/getContent?type=${cmsType}&projectId=${projectId}&langId=${langId}`;
475
475
  return API.get(url);
@@ -725,4 +725,9 @@ export const getAssetStatus = (type, assetId) => {
725
725
  return request(url, getAPICallObject('GET'));
726
726
  };
727
727
 
728
+ export const getBeePopupBuilderToken = () => {
729
+ const url = `${API_ENDPOINT}/common/getInappTokenData`;
730
+ return request(url, getAPICallObject('GET'));
731
+ };
732
+
728
733
  export {request, getAPICallObject};
@@ -26,6 +26,8 @@ import {
26
26
  updateMetaConfig,
27
27
  getMediaDetails,
28
28
  getAssetStatus,
29
+ getBeePopupBuilderToken,
30
+ getCmsAccounts,
29
31
  } from '../api';
30
32
  import { mockData } from './mockData';
31
33
  import getSchema from '../getSchema';
@@ -973,3 +975,35 @@ describe('getAssetStatus', () => {
973
975
  expect(callArgs[0]).toContain('/assets/video/asset-456/status');
974
976
  });
975
977
  });
978
+
979
+ describe('getBeePopupBuilderToken', () => {
980
+ it('should return correct response', async () => {
981
+ global.fetch.mockReturnValue(Promise.resolve({
982
+ status: 200,
983
+ json: () => Promise.resolve({
984
+ status: 200,
985
+ response: 'test',
986
+ }),
987
+ }));
988
+ const result = await getBeePopupBuilderToken();
989
+ expect(result).toEqual({
990
+ status: 200,
991
+ response: 'test',
992
+ });
993
+ });
994
+ });
995
+
996
+ describe('getCmsAccounts', () => {
997
+ it('should return a promise (line 473-476)', () => {
998
+ // Similar to other API tests, just verify it returns a Promise
999
+ const result = getCmsAccounts('bee');
1000
+ expect(result).toBeInstanceOf(Promise);
1001
+ });
1002
+
1003
+ it('should be callable with cmsType parameter', () => {
1004
+ // Verify function exists and can be called
1005
+ expect(typeof getCmsAccounts).toBe('function');
1006
+ const result = getCmsAccounts('bee');
1007
+ expect(result).toBeInstanceOf(Promise);
1008
+ });
1009
+ });
@@ -165,7 +165,7 @@
165
165
  "creatives.componentsV2.CapDocumentUpload.imageDimenstionDescription": "Dimensions upto: {width}px x {height}px",
166
166
  "creatives.componentsV2.CapDocumentUpload.or": "OR",
167
167
  "creatives.componentsV2.CapDocumentUpload.uploadComputer": "Select from computer",
168
- "creatives.componentsV2.CapDocumentUpload.whatsappDocSize": "Size up to: {size}",
168
+ "creatives.componentsV2.CapDocumentUpload.whatsappDocSize": "Size upto: {size}",
169
169
  "creatives.componentsV2.CapImageUpload.aspectRatio": "Aspect ratio: 1:1",
170
170
  "creatives.componentsV2.CapImageUpload.dragAndDrop": "Drag and drop image here",
171
171
  "creatives.componentsV2.CapImageUpload.format": "Format: JPEG, JPG, PNG",
@@ -173,13 +173,13 @@
173
173
  "creatives.componentsV2.CapImageUpload.imageErrorDesc": "Please upload the image with allowed file extension, size, dimension and aspect ratio",
174
174
  "creatives.componentsV2.CapImageUpload.imageGallery": "Gallery",
175
175
  "creatives.componentsV2.CapImageUpload.imageReUpload": "Reupload",
176
- "creatives.componentsV2.CapImageUpload.imageSize": "Size up to: 2MB",
176
+ "creatives.componentsV2.CapImageUpload.imageSize": "Size upto: 2MB",
177
177
  "creatives.componentsV2.CapImageUpload.or": "OR",
178
178
  "creatives.componentsV2.CapImageUpload.uploadComputer": "Select from computer",
179
179
  "creatives.componentsV2.CapImageUpload.uploadGallery": "Gallery",
180
180
  "creatives.componentsV2.CapImageUpload.uploadImageDescription": "The relevant image that complements the message context.",
181
181
  "creatives.componentsV2.CapImageUpload.whatsappAspectRatio": "Max aspect ratio: 1.91:1",
182
- "creatives.componentsV2.CapImageUpload.whatsappImageSize": "Size up to: 5MB",
182
+ "creatives.componentsV2.CapImageUpload.whatsappImageSize": "Size upto: 5MB",
183
183
  "creatives.componentsV2.CapTagList.Cancel": "Cancel",
184
184
  "creatives.componentsV2.CapTagList.Ok": "Ok",
185
185
  "creatives.componentsV2.CapTagList.all": "All",
@@ -2022,7 +2022,6 @@
2022
2022
  "creatives.containersV2.Whatsapp.vietnamese": "Vietnamese",
2023
2023
  "creatives.containersV2.Whatsapp.whatsappCreateNotification": "{name} has been sent for approval",
2024
2024
  "creatives.containersV2.Whatsapp.zulu": "Zulu",
2025
- "creatives.containersV2.WebPush.addLabels": "Add labels",
2026
2025
  "creatives.containersV2.addLabels": "Add labels",
2027
2026
  "creatives.containersV2.appName": "App Name",
2028
2027
  "creatives.containersV2.applyNow": "Apply now",
package/utils/common.js CHANGED
@@ -21,8 +21,8 @@ import {
21
21
  EMAIL_UNSUBSCRIBE_TAG_MANDATORY,
22
22
  BADGES_ISSUE,
23
23
  ENABLE_WECHAT,
24
- ENABLE_WEBPUSH,
25
24
  LIQUID_SUPPORT,
25
+ SUPPORT_CK_EDITOR,
26
26
  ENABLE_NEW_MPUSH
27
27
  } from '../constants/unified';
28
28
  import { apiMessageFormatHandler } from './commonUtils';
@@ -96,6 +96,10 @@ export const hasLiquidSupportFeature = Auth.hasFeatureAccess.bind(
96
96
  LIQUID_SUPPORT,
97
97
  );
98
98
 
99
+ export const hasSupportCKEditor = Auth.hasFeatureAccess.bind(
100
+ null,
101
+ SUPPORT_CK_EDITOR,
102
+ );
99
103
 
100
104
  export const hasGiftVoucherFeature = Auth.hasFeatureAccess.bind(
101
105
  null,
@@ -117,11 +121,6 @@ export const hasWechatFeatureEnabled = Auth.hasFeatureAccess.bind(
117
121
  ENABLE_WECHAT,
118
122
  );
119
123
 
120
- export const hasWebPushFeatureEnabled = Auth.hasFeatureAccess.bind(
121
- null,
122
- ENABLE_WEBPUSH,
123
- );
124
-
125
124
  export const hasCustomerBarcodeFeatureEnabled = Auth.hasFeatureAccess.bind(
126
125
  null,
127
126
  ENABLE_CUSTOMER_BARCODE_TAG,
@@ -173,20 +173,30 @@ export const validateLiquidTemplateContent = async (
173
173
  // Handle API errors or empty content
174
174
  if (result?.errors?.length > 0 || !validString || isError) {
175
175
  let standardErrors = [];
176
+ let liquidErrors = [];
177
+
178
+ // Empty content errors are NOT from liquid endpoints, so they go to standardErrors
176
179
  if (!validString) {
177
180
  standardErrors = [emptyBodyError];
178
181
  }
179
- let liquidErrors;
180
- if (result && Array.isArray(result?.errors)) {
181
- liquidErrors = result?.errors?.map((error) => {
182
+
183
+ // IMPORTANT: Errors from extractTags and liquidValidation endpoints should ALWAYS be categorized as liquidErrors
184
+ // These endpoints are: /extractTags and /ask-aira-service/creatives_ai/liquidValidation
185
+ // Only errors from these endpoints should appear in Liquid Issues tab
186
+ if (result && Array.isArray(result?.errors) && result.errors.length > 0) {
187
+ // Errors from extractTags or liquidValidation endpoints
188
+ liquidErrors = result.errors.map((error) => {
182
189
  const message = typeof error?.message === "string"
183
190
  ? error.message
184
191
  : somethingWrongMsg;
185
192
  return message;
186
193
  });
187
- } else {
194
+ } else if (isError) {
195
+ // If isError is true, it means the API call to extractTags/liquidValidation failed
196
+ // This is also a liquid endpoint error, so categorize as liquidErrors
188
197
  liquidErrors = [somethingWrongMsg];
189
198
  }
199
+
190
200
  onError({
191
201
  standardErrors,
192
202
  liquidErrors,
@@ -398,7 +408,20 @@ export const validateMobilePushContent = async (formData, options) => {
398
408
  // Helper function to extract content for a platform
399
409
  export const extractContent = (platformData) => {
400
410
  if (!platformData) return '';
401
- const { title, message, ctas } = platformData;
411
+ const { title, message, ctas, isBEEeditor, beeHtml } = platformData;
412
+
413
+ // For BEE editor, extract content from beeHtml
414
+ if (isBEEeditor && beeHtml) {
415
+ // beeHtml can be an object with value property or a string
416
+ const beeHtmlContent = typeof beeHtml === 'string' ? beeHtml : (beeHtml?.value || '');
417
+ return [
418
+ title,
419
+ beeHtmlContent,
420
+ ...((ctas?.map((cta) => cta?.text || cta?.actionLink)) || []),
421
+ ].filter(Boolean).join(' ');
422
+ }
423
+
424
+ // For regular content
402
425
  return [
403
426
  title,
404
427
  message,
@@ -1376,4 +1376,228 @@ describe("validateCarouselCards", () => {
1376
1376
  expect(result.isValid).toBe(true);
1377
1377
  });
1378
1378
  });
1379
+
1380
+ describe('extractContent BEE Editor Logic (L404-L412)', () => {
1381
+ it('extracts content from beeHtml as string', () => {
1382
+ const platformData = {
1383
+ title: 'Test Title',
1384
+ isBEEeditor: true,
1385
+ beeHtml: '<p>BEE HTML Content</p>',
1386
+ ctas: [
1387
+ { text: 'Click Here', actionLink: 'https://example.com' },
1388
+ ],
1389
+ };
1390
+
1391
+ const result = extractContent(platformData);
1392
+
1393
+ expect(result).toContain(platformData.title);
1394
+ expect(result).toContain(platformData.beeHtml);
1395
+ expect(result).toContain(platformData.ctas[0].text);
1396
+ });
1397
+
1398
+ it('extracts content from beeHtml as object with value property', () => {
1399
+ const platformData = {
1400
+ title: 'Test Title',
1401
+ isBEEeditor: true,
1402
+ beeHtml: { value: '<p>BEE HTML from Object</p>' },
1403
+ ctas: [
1404
+ { text: 'Button Text' },
1405
+ ],
1406
+ };
1407
+
1408
+ const result = extractContent(platformData);
1409
+
1410
+ expect(result).toContain(platformData.title);
1411
+ expect(result).toContain(platformData.beeHtml.value);
1412
+ expect(result).toContain(platformData.ctas[0].text);
1413
+ });
1414
+
1415
+ it('handles beeHtml as object without value property', () => {
1416
+ const platformData = {
1417
+ title: 'Test Title',
1418
+ isBEEeditor: true,
1419
+ beeHtml: { someOtherProperty: 'data' },
1420
+ ctas: [],
1421
+ };
1422
+
1423
+ const result = extractContent(platformData);
1424
+
1425
+ // Should extract title and empty beeHtml (since value is undefined)
1426
+ expect(result).toContain('Test Title');
1427
+ expect(result).not.toContain('someOtherProperty');
1428
+ });
1429
+
1430
+ it('extracts ctas with text property', () => {
1431
+ const platformData = {
1432
+ title: 'Title',
1433
+ isBEEeditor: true,
1434
+ beeHtml: '<p>Content</p>',
1435
+ ctas: [
1436
+ { text: 'CTA Text 1' },
1437
+ { text: 'CTA Text 2' },
1438
+ ],
1439
+ };
1440
+
1441
+ const result = extractContent(platformData);
1442
+
1443
+ expect(result).toContain('CTA Text 1');
1444
+ expect(result).toContain('CTA Text 2');
1445
+ });
1446
+
1447
+ it('extracts ctas with actionLink when text is missing', () => {
1448
+ const platformData = {
1449
+ title: 'Title',
1450
+ isBEEeditor: true,
1451
+ beeHtml: '<p>Content</p>',
1452
+ ctas: [
1453
+ { actionLink: 'https://link1.com' },
1454
+ { actionLink: 'https://link2.com' },
1455
+ ],
1456
+ };
1457
+
1458
+ const result = extractContent(platformData);
1459
+
1460
+ expect(result).toContain('https://link1.com');
1461
+ expect(result).toContain('https://link2.com');
1462
+ });
1463
+
1464
+ it('filters out falsy values with filter(Boolean)', () => {
1465
+ const platformData = {
1466
+ title: '',
1467
+ isBEEeditor: true,
1468
+ beeHtml: null,
1469
+ ctas: [
1470
+ { text: null, actionLink: null },
1471
+ { text: 'Valid Text' },
1472
+ ],
1473
+ };
1474
+
1475
+ const result = extractContent(platformData);
1476
+
1477
+ // Should only contain 'Valid Text' after filtering
1478
+ expect(result).toBe('Valid Text');
1479
+ });
1480
+
1481
+ it('handles empty ctas array', () => {
1482
+ const platformData = {
1483
+ title: 'Title Only',
1484
+ isBEEeditor: true,
1485
+ beeHtml: '<p>BEE Content</p>',
1486
+ ctas: [],
1487
+ };
1488
+
1489
+ const result = extractContent(platformData);
1490
+
1491
+ expect(result).toContain('Title Only');
1492
+ expect(result).toContain('<p>BEE Content</p>');
1493
+ });
1494
+
1495
+ it('handles undefined ctas', () => {
1496
+ const platformData = {
1497
+ title: 'Title',
1498
+ isBEEeditor: true,
1499
+ beeHtml: '<p>Content</p>',
1500
+ ctas: undefined,
1501
+ };
1502
+
1503
+ const result = extractContent(platformData);
1504
+
1505
+ expect(result).toContain('Title');
1506
+ expect(result).toContain('<p>Content</p>');
1507
+ });
1508
+
1509
+ it('joins all content with spaces', () => {
1510
+ const platformData = {
1511
+ title: 'Title',
1512
+ isBEEeditor: true,
1513
+ beeHtml: 'HTML',
1514
+ ctas: [
1515
+ { text: 'CTA1' },
1516
+ { text: 'CTA2' },
1517
+ ],
1518
+ };
1519
+
1520
+ const result = extractContent(platformData);
1521
+
1522
+ expect(result).toBe('Title HTML CTA1 CTA2');
1523
+ });
1524
+
1525
+ it('falls back to regular content when not BEE editor', () => {
1526
+ const platformData = {
1527
+ title: 'Title',
1528
+ message: 'Message',
1529
+ isBEEeditor: false,
1530
+ beeHtml: '<p>Should be ignored</p>',
1531
+ ctas: [
1532
+ { text: 'CTA' },
1533
+ ],
1534
+ };
1535
+
1536
+ const result = extractContent(platformData);
1537
+
1538
+ expect(result).toContain('Title');
1539
+ expect(result).toContain('Message');
1540
+ expect(result).toContain('CTA');
1541
+ expect(result).not.toContain('<p>Should be ignored</p>');
1542
+ });
1543
+
1544
+ it('handles null beeHtml', () => {
1545
+ const platformData = {
1546
+ title: 'Title',
1547
+ isBEEeditor: true,
1548
+ beeHtml: null,
1549
+ ctas: [{ text: 'CTA' }],
1550
+ };
1551
+
1552
+ const result = extractContent(platformData);
1553
+
1554
+ expect(result).toContain('Title');
1555
+ expect(result).toContain('CTA');
1556
+ });
1557
+
1558
+ it('handles undefined beeHtml', () => {
1559
+ const platformData = {
1560
+ title: 'Title',
1561
+ isBEEeditor: true,
1562
+ beeHtml: undefined,
1563
+ ctas: [],
1564
+ };
1565
+
1566
+ const result = extractContent(platformData);
1567
+
1568
+ expect(result).toBe('Title');
1569
+ });
1570
+
1571
+ it('handles complex ctas with both text and actionLink', () => {
1572
+ const platformData = {
1573
+ title: 'Title',
1574
+ isBEEeditor: true,
1575
+ beeHtml: 'Content',
1576
+ ctas: [
1577
+ { text: 'CTA Text', actionLink: 'https://example.com' },
1578
+ ],
1579
+ };
1580
+
1581
+ const result = extractContent(platformData);
1582
+
1583
+ // Should prefer text over actionLink
1584
+ expect(result).toContain('CTA Text');
1585
+ expect(result).toContain('Title');
1586
+ expect(result).toContain('Content');
1587
+ });
1588
+
1589
+ it('handles empty string beeHtml', () => {
1590
+ const platformData = {
1591
+ title: 'Title',
1592
+ isBEEeditor: true,
1593
+ beeHtml: '',
1594
+ ctas: [{ text: 'CTA' }],
1595
+ };
1596
+
1597
+ const result = extractContent(platformData);
1598
+
1599
+ expect(result).toBe('Title CTA');
1600
+ });
1601
+ });
1379
1602
  });
1603
+