@capillarytech/creatives-library 8.0.259 → 8.0.260-alpha.0

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 (157) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/constants/unified.js +1 -2
  4. package/initialReducer.js +0 -2
  5. package/package.json +1 -1
  6. package/services/api.js +0 -10
  7. package/services/tests/api.test.js +0 -34
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +0 -12
  10. package/utils/commonUtils.js +5 -28
  11. package/utils/tests/commonUtil.test.js +0 -224
  12. package/utils/transformTemplateConfig.js +10 -0
  13. package/v2Components/CapDeviceContent/index.js +56 -61
  14. package/v2Components/CapTagList/index.js +1 -6
  15. package/v2Components/CapTagListWithInput/index.js +1 -5
  16. package/v2Components/CapTagListWithInput/messages.js +1 -1
  17. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  18. package/v2Components/ErrorInfoNote/index.js +72 -457
  19. package/v2Components/ErrorInfoNote/messages.js +6 -36
  20. package/v2Components/ErrorInfoNote/style.scss +6 -282
  21. package/v2Components/FormBuilder/index.js +4 -4
  22. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  23. package/v2Components/HtmlEditor/HTMLEditor.js +94 -547
  24. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1441
  25. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  26. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  27. package/v2Components/HtmlEditor/_index.lazy.scss +1 -0
  28. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +102 -23
  29. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -148
  30. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  31. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  32. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  33. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +4 -4
  34. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  35. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  36. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  37. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  38. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  39. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  40. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  41. package/v2Components/HtmlEditor/components/PreviewPane/index.js +43 -22
  42. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  43. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  44. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +0 -1
  45. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  46. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -50
  47. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +41 -70
  48. package/v2Components/HtmlEditor/constants.js +20 -42
  49. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  50. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +16 -120
  51. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  52. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  53. package/v2Components/HtmlEditor/hooks/useValidation.js +53 -189
  54. package/v2Components/HtmlEditor/index.js +1 -1
  55. package/v2Components/HtmlEditor/messages.js +94 -92
  56. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -94
  57. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  58. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  59. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  60. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +102 -134
  61. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  62. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  63. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  64. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  65. package/v2Components/TemplatePreview/index.js +32 -47
  66. package/v2Components/TemplatePreview/messages.js +0 -4
  67. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  68. package/v2Containers/BeeEditor/index.js +90 -172
  69. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  70. package/v2Containers/CreativesContainer/SlideBoxContent.js +52 -128
  71. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  72. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -2
  73. package/v2Containers/CreativesContainer/constants.js +0 -1
  74. package/v2Containers/CreativesContainer/index.js +46 -240
  75. package/v2Containers/CreativesContainer/messages.js +0 -8
  76. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  77. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -38
  78. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -106
  79. package/v2Containers/Email/actions.js +0 -7
  80. package/v2Containers/Email/constants.js +1 -5
  81. package/v2Containers/Email/index.js +30 -239
  82. package/v2Containers/Email/messages.js +0 -32
  83. package/v2Containers/Email/reducer.js +1 -12
  84. package/v2Containers/Email/sagas.js +7 -61
  85. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  86. package/v2Containers/Email/tests/reducer.test.js +0 -46
  87. package/v2Containers/Email/tests/sagas.test.js +29 -320
  88. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +21 -211
  89. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  90. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  91. package/v2Containers/EmailWrapper/constants.js +0 -2
  92. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  93. package/v2Containers/EmailWrapper/index.js +23 -103
  94. package/v2Containers/EmailWrapper/messages.js +1 -65
  95. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  96. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  97. package/v2Containers/InApp/actions.js +0 -7
  98. package/v2Containers/InApp/constants.js +4 -20
  99. package/v2Containers/InApp/index.js +360 -804
  100. package/v2Containers/InApp/index.scss +3 -4
  101. package/v2Containers/InApp/messages.js +3 -7
  102. package/v2Containers/InApp/reducer.js +3 -21
  103. package/v2Containers/InApp/sagas.js +9 -29
  104. package/v2Containers/InApp/selectors.js +5 -25
  105. package/v2Containers/InApp/tests/index.test.js +71 -152
  106. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  107. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  108. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -39
  109. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -10
  110. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -102
  111. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -81
  112. package/v2Containers/MobilePushNew/index.js +2 -3
  113. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +178 -262
  114. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  115. package/v2Containers/SmsTrai/Edit/index.js +1 -2
  116. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +111 -468
  117. package/v2Containers/TagList/index.js +19 -62
  118. package/v2Containers/Templates/_templates.scss +1 -60
  119. package/v2Containers/Templates/index.js +4 -89
  120. package/v2Containers/Templates/messages.js +0 -4
  121. package/v2Containers/WebPush/Create/messages.js +8 -0
  122. package/v2Containers/WebPush/Create/preview/PreviewControls.js +2 -2
  123. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +3 -1
  124. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +5 -1
  125. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +5 -1
  126. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +5 -1
  127. package/v2Containers/WebPush/Create/preview/preview.scss +7 -0
  128. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +734 -1306
  129. package/v2Components/ErrorInfoNote/constants.js +0 -1
  130. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -874
  131. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  132. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -255
  133. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -364
  134. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  135. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -40
  136. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  137. package/v2Containers/BeePopupEditor/constants.js +0 -10
  138. package/v2Containers/BeePopupEditor/index.js +0 -194
  139. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  140. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1285
  141. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -1880
  142. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  143. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -643
  144. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  145. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  146. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  147. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  148. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  149. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  150. package/v2Containers/InAppWrapper/constants.js +0 -16
  151. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  152. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  153. package/v2Containers/InAppWrapper/index.js +0 -148
  154. package/v2Containers/InAppWrapper/messages.js +0 -49
  155. package/v2Containers/InappAdvance/index.js +0 -1099
  156. package/v2Containers/InappAdvance/index.scss +0 -10
  157. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
@@ -1,363 +0,0 @@
1
- /**
2
- * InApp Sagas Tests
3
- *
4
- * Tests for InApp sagas including HTML content create/edit flows
5
- */
6
-
7
- import { call, put } from 'redux-saga/effects';
8
- import * as Api from '../../../services/api';
9
- import {
10
- inAppTemplateCreate,
11
- editTemplate,
12
- getTemplateDetails,
13
- uploadInAppAsset,
14
- } from '../sagas';
15
- import {
16
- INAPP_TEMPLATE_CREATE_SUCCESS,
17
- INAPP_TEMPLATE_CREATE_FAILURE,
18
- INAPP_EDIT_TEMPLATE_SUCCESS,
19
- INAPP_EDIT_TEMPLATE_FAILURE,
20
- GET_INAPP_TEMPLATE_DETAILS_SUCCESS,
21
- GET_INAPP_TEMPLATE_DETAILS_FAILURE,
22
- UPLOAD_INAPP_ASSET_SUCCESS,
23
- UPLOAD_INAPP_ASSET_FAILURE,
24
- } from '../constants';
25
- import { INAPP } from '../../CreativesContainer/constants';
26
-
27
- describe('InApp Sagas', () => {
28
- describe('inAppTemplateCreate', () => {
29
- const payload = {
30
- name: 'Test Template',
31
- versions: {
32
- base: {
33
- content: {
34
- ANDROID: {
35
- title: 'Android Title',
36
- message: '<p>Android HTML Content</p>',
37
- bodyType: 'MODAL',
38
- },
39
- IOS: {
40
- title: 'iOS Title',
41
- message: '<p>iOS HTML Content</p>',
42
- bodyType: 'MODAL',
43
- },
44
- },
45
- },
46
- },
47
- type: INAPP,
48
- };
49
-
50
- test('creates template successfully with HTML content', () => {
51
- const generator = inAppTemplateCreate({
52
- payload,
53
- callback: jest.fn(),
54
- });
55
-
56
- const mockResponse = {
57
- response: {
58
- id: 'template-123',
59
- name: 'Test Template',
60
- },
61
- status: {
62
- code: 201,
63
- },
64
- };
65
-
66
- expect(generator.next().value).toEqual(
67
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
68
- );
69
-
70
- expect(generator.next(mockResponse).value).toEqual(
71
- put({
72
- type: INAPP_TEMPLATE_CREATE_SUCCESS,
73
- data: mockResponse.response,
74
- statusCode: 201,
75
- errorMsg: undefined,
76
- })
77
- );
78
-
79
- const callback = generator.next().value;
80
- expect(callback).toBeUndefined(); // Callback is called but not yielded
81
-
82
- expect(generator.next().done).toBe(true);
83
- });
84
-
85
- test('handles API error when creating template', () => {
86
- const generator = inAppTemplateCreate({
87
- payload,
88
- callback: jest.fn(),
89
- });
90
-
91
- const mockError = {
92
- response: null,
93
- status: {
94
- code: 400,
95
- },
96
- message: 'Validation error',
97
- };
98
-
99
- expect(generator.next().value).toEqual(
100
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
101
- );
102
-
103
- expect(generator.next(mockError).value).toEqual(
104
- put({
105
- type: INAPP_TEMPLATE_CREATE_FAILURE,
106
- error: 'Validation error',
107
- errorMsg: 'Validation error',
108
- })
109
- );
110
-
111
- const callback = generator.next().value;
112
- expect(callback).toBeUndefined();
113
-
114
- expect(generator.next().done).toBe(true);
115
- });
116
-
117
- test('handles exception during template creation', () => {
118
- const generator = inAppTemplateCreate({
119
- payload,
120
- callback: jest.fn(),
121
- });
122
-
123
- const error = new Error('Network error');
124
-
125
- expect(generator.next().value).toEqual(
126
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
127
- );
128
-
129
- expect(generator.throw(error).value).toEqual(
130
- put({
131
- type: INAPP_TEMPLATE_CREATE_FAILURE,
132
- error,
133
- errorMsg: undefined,
134
- })
135
- );
136
-
137
- expect(generator.next().done).toBe(true);
138
- });
139
- });
140
-
141
- describe('editTemplate', () => {
142
- const payload = {
143
- _id: 'template-123',
144
- name: 'Updated Template',
145
- versions: {
146
- base: {
147
- content: {
148
- ANDROID: {
149
- title: 'Updated Android Title',
150
- message: '<p>Updated Android HTML</p>',
151
- bodyType: 'MODAL',
152
- },
153
- IOS: {
154
- title: 'Updated iOS Title',
155
- message: '<p>Updated iOS HTML</p>',
156
- bodyType: 'MODAL',
157
- },
158
- },
159
- },
160
- },
161
- type: INAPP,
162
- };
163
-
164
- test('edits template successfully with HTML content', () => {
165
- const generator = editTemplate({
166
- payload,
167
- callback: jest.fn(),
168
- });
169
-
170
- const mockResponse = {
171
- response: {
172
- id: 'template-123',
173
- name: 'Updated Template',
174
- },
175
- status: {
176
- code: 200,
177
- },
178
- };
179
-
180
- expect(generator.next().value).toEqual(
181
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
182
- );
183
-
184
- expect(generator.next(mockResponse).value).toEqual(
185
- put({
186
- type: INAPP_EDIT_TEMPLATE_SUCCESS,
187
- data: mockResponse.response,
188
- statusCode: 200,
189
- errorMsg: undefined,
190
- })
191
- );
192
-
193
- expect(generator.next().done).toBe(true);
194
- });
195
-
196
- test('handles API error when editing template', () => {
197
- const generator = editTemplate({
198
- payload,
199
- callback: jest.fn(),
200
- });
201
-
202
- const mockError = {
203
- response: null,
204
- status: {
205
- code: 404,
206
- },
207
- message: 'Template not found',
208
- };
209
-
210
- expect(generator.next().value).toEqual(
211
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
212
- );
213
-
214
- expect(generator.next(mockError).value).toEqual(
215
- put({
216
- type: INAPP_EDIT_TEMPLATE_FAILURE,
217
- error: 'Template not found',
218
- errorMsg: 'Template not found',
219
- })
220
- );
221
-
222
- expect(generator.next().done).toBe(true);
223
- });
224
- });
225
-
226
- describe('getTemplateDetails', () => {
227
- test('fetches template details successfully', () => {
228
- const generator = getTemplateDetails({
229
- id: 'template-123',
230
- callback: jest.fn(),
231
- });
232
-
233
- const mockResponse = {
234
- response: {
235
- id: 'template-123',
236
- name: 'Test Template',
237
- versions: {
238
- base: {
239
- content: {
240
- ANDROID: {
241
- title: 'Android Title',
242
- message: '<p>Android HTML Content</p>',
243
- },
244
- IOS: {
245
- title: 'iOS Title',
246
- message: '<p>iOS HTML Content</p>',
247
- },
248
- },
249
- },
250
- },
251
- },
252
- };
253
-
254
- expect(generator.next().value).toEqual(
255
- call(Api.getTemplateDetails, {
256
- id: 'template-123',
257
- channel: INAPP,
258
- })
259
- );
260
-
261
- expect(generator.next(mockResponse).value).toEqual(
262
- put({
263
- type: GET_INAPP_TEMPLATE_DETAILS_SUCCESS,
264
- data: mockResponse.response,
265
- })
266
- );
267
-
268
- expect(generator.next().done).toBe(true);
269
- });
270
-
271
- test('handles error when fetching template details', () => {
272
- const generator = getTemplateDetails({
273
- id: 'template-123',
274
- callback: jest.fn(),
275
- });
276
-
277
- const error = new Error('Not found');
278
-
279
- expect(generator.next().value).toEqual(
280
- call(Api.getTemplateDetails, {
281
- id: 'template-123',
282
- channel: INAPP,
283
- })
284
- );
285
-
286
- expect(generator.throw(error).value).toEqual(
287
- put({
288
- type: GET_INAPP_TEMPLATE_DETAILS_FAILURE,
289
- error,
290
- })
291
- );
292
-
293
- expect(generator.next().done).toBe(true);
294
- });
295
- });
296
-
297
- describe('uploadInAppAsset', () => {
298
- test('uploads asset successfully', () => {
299
- const params = {
300
- file: new File(['test'], 'test.jpg'),
301
- assetType: 'image',
302
- fileParams: {},
303
- templateType: INAPP,
304
- };
305
-
306
- const generator = uploadInAppAsset(params);
307
-
308
- const mockResponse = {
309
- response: {
310
- asset: {
311
- url: 'https://cdn.example.com/image.jpg',
312
- id: 'asset-123',
313
- },
314
- },
315
- status: {
316
- code: 200,
317
- },
318
- };
319
-
320
- expect(generator.next().value).toEqual(
321
- call(Api.uploadFile, params)
322
- );
323
-
324
- expect(generator.next(mockResponse).value).toEqual(
325
- put({
326
- type: UPLOAD_INAPP_ASSET_SUCCESS,
327
- data: mockResponse.response.asset,
328
- statusCode: 200,
329
- templateType: INAPP,
330
- })
331
- );
332
-
333
- expect(generator.next().done).toBe(true);
334
- });
335
-
336
- test('handles error when uploading asset', () => {
337
- const params = {
338
- file: new File(['test'], 'test.jpg'),
339
- assetType: 'image',
340
- fileParams: {},
341
- templateType: INAPP,
342
- };
343
-
344
- const generator = uploadInAppAsset(params);
345
-
346
- const error = new Error('Upload failed');
347
-
348
- expect(generator.next().value).toEqual(
349
- call(Api.uploadFile, params)
350
- );
351
-
352
- expect(generator.throw(error).value).toEqual(
353
- put({
354
- type: UPLOAD_INAPP_ASSET_FAILURE,
355
- error,
356
- })
357
- );
358
-
359
- expect(generator.next().done).toBe(true);
360
- });
361
- });
362
- });
363
-