@capillarytech/creatives-library 8.0.263 → 8.0.264

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 (163) 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/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 -5
  12. package/utils/commonUtils.js +5 -28
  13. package/utils/tagValidations.js +2 -1
  14. package/utils/tests/commonUtil.test.js +0 -224
  15. package/utils/transformTemplateConfig.js +10 -0
  16. package/v2Components/CapDeviceContent/index.js +56 -61
  17. package/v2Components/CapTagList/index.js +1 -6
  18. package/v2Components/CapTagListWithInput/index.js +1 -5
  19. package/v2Components/CapTagListWithInput/messages.js +1 -1
  20. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  21. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +2 -2
  22. package/v2Components/ErrorInfoNote/index.js +72 -402
  23. package/v2Components/ErrorInfoNote/messages.js +6 -32
  24. package/v2Components/ErrorInfoNote/style.scss +6 -278
  25. package/v2Components/FormBuilder/index.js +8 -8
  26. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  27. package/v2Components/HtmlEditor/HTMLEditor.js +99 -418
  28. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1882
  29. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  30. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  31. package/v2Components/HtmlEditor/_index.lazy.scss +1 -0
  32. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +102 -23
  33. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -148
  34. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  35. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  36. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +1 -9
  37. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +6 -31
  38. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  39. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  40. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  44. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +10 -7
  45. package/v2Components/HtmlEditor/components/PreviewPane/index.js +43 -22
  46. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  47. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  48. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +0 -18
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -36
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -46
  51. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +46 -52
  52. package/v2Components/HtmlEditor/constants.js +20 -45
  53. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  54. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +16 -351
  55. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  56. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  57. package/v2Components/HtmlEditor/hooks/useValidation.js +56 -213
  58. package/v2Components/HtmlEditor/index.js +1 -1
  59. package/v2Components/HtmlEditor/messages.js +94 -102
  60. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -214
  61. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  62. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  63. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  64. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +124 -158
  65. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  66. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  67. package/v2Components/MobilePushPreviewV2/index.js +7 -33
  68. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  69. package/v2Components/TemplatePreview/index.js +32 -47
  70. package/v2Components/TemplatePreview/messages.js +0 -4
  71. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  72. package/v2Containers/BeeEditor/index.js +90 -172
  73. package/v2Containers/CreativesContainer/SlideBoxContent.js +51 -127
  74. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  75. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -2
  76. package/v2Containers/CreativesContainer/constants.js +0 -1
  77. package/v2Containers/CreativesContainer/index.js +46 -240
  78. package/v2Containers/CreativesContainer/messages.js +0 -8
  79. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  80. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -38
  81. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -103
  82. package/v2Containers/Email/actions.js +0 -7
  83. package/v2Containers/Email/constants.js +1 -5
  84. package/v2Containers/Email/index.js +29 -234
  85. package/v2Containers/Email/messages.js +0 -32
  86. package/v2Containers/Email/reducer.js +1 -12
  87. package/v2Containers/Email/sagas.js +7 -61
  88. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  89. package/v2Containers/Email/tests/reducer.test.js +0 -46
  90. package/v2Containers/Email/tests/sagas.test.js +29 -320
  91. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +21 -211
  92. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  93. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  94. package/v2Containers/EmailWrapper/constants.js +0 -2
  95. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  96. package/v2Containers/EmailWrapper/index.js +23 -103
  97. package/v2Containers/EmailWrapper/messages.js +1 -65
  98. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  99. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  100. package/v2Containers/FTP/index.js +1 -1
  101. package/v2Containers/InApp/actions.js +0 -7
  102. package/v2Containers/InApp/constants.js +4 -20
  103. package/v2Containers/InApp/index.js +360 -802
  104. package/v2Containers/InApp/index.scss +3 -4
  105. package/v2Containers/InApp/messages.js +3 -7
  106. package/v2Containers/InApp/reducer.js +3 -21
  107. package/v2Containers/InApp/sagas.js +9 -29
  108. package/v2Containers/InApp/selectors.js +5 -25
  109. package/v2Containers/InApp/tests/index.test.js +50 -154
  110. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  111. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  112. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +0 -3
  113. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +0 -2
  114. package/v2Containers/Line/Container/Text/index.js +1 -0
  115. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +0 -2
  116. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +0 -9
  117. package/v2Containers/MobilePushNew/index.js +1 -0
  118. package/v2Containers/Rcs/index.js +3 -0
  119. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -12
  120. package/v2Containers/SmsTrai/Edit/index.js +1 -0
  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/_templates.scss +1 -60
  124. package/v2Containers/Templates/index.js +4 -89
  125. package/v2Containers/Templates/messages.js +0 -4
  126. package/v2Containers/TemplatesV2/TemplatesV2.style.js +2 -4
  127. package/v2Containers/Viber/index.js +1 -0
  128. package/v2Containers/WebPush/Create/index.js +1 -1
  129. package/v2Containers/WebPush/Create/utils/validation.js +2 -1
  130. package/v2Containers/Whatsapp/index.js +1 -0
  131. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +0 -34
  132. package/v2Containers/Zalo/index.js +1 -0
  133. package/v2Containers/Zalo/tests/index.test.js +1 -5
  134. package/v2Components/ErrorInfoNote/constants.js +0 -1
  135. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -870
  136. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  137. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -281
  138. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -295
  139. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  140. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -38
  141. package/v2Components/MobilePushPreviewV2/constants.js +0 -6
  142. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  143. package/v2Containers/BeePopupEditor/constants.js +0 -10
  144. package/v2Containers/BeePopupEditor/index.js +0 -194
  145. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  146. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1246
  147. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -2472
  148. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  149. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -956
  150. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  151. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  152. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  153. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  154. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  155. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  156. package/v2Containers/InAppWrapper/constants.js +0 -16
  157. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  158. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  159. package/v2Containers/InAppWrapper/index.js +0 -148
  160. package/v2Containers/InAppWrapper/messages.js +0 -49
  161. package/v2Containers/InappAdvance/index.js +0 -1099
  162. package/v2Containers/InappAdvance/index.scss +0 -10
  163. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
@@ -1,194 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { injectIntl } from 'react-intl';
4
- import { connect } from 'react-redux';
5
- // import { bindActionCreators } from 'redux';
6
- import { createStructuredSelector } from 'reselect';
7
- import CapRow from '@capillarytech/cap-ui-library/CapRow';
8
- import { UserIsAuthenticated } from '../../utils/authWrapper';
9
- import TagList from '../TagList';
10
- import {
11
- ANDROID, BEE_LAYOUT_OPTIONS, MOBILE, UNSUBSCRIBE,
12
- } from './constants';
13
- import emptyAndroidSvg from '../../assets/Android.png';
14
- import emptyIosSvg from '../../assets/iOS.png';
15
- import './_beePopupEditor.scss';
16
- function BeePopupEditor(props) {
17
- const {
18
- uid,
19
- id,
20
- tokenData,
21
- saveBeeInstance,
22
- saveBeeData,
23
- saveBeeHtmlValue,
24
- beeJson,
25
- templateLayoutType,
26
- moduleFilterEnabled,
27
- label,
28
- location,
29
- injectedTags,
30
- className,
31
- userLocale,
32
- selectedOfferDetails,
33
- tags,
34
- onContextChange,
35
- device,
36
- } = props;
37
-
38
- let beePluginInstance = null;
39
- let intervalTimer;
40
- const savedCallback = useRef();
41
- const beeInstanceRef = useRef(null);
42
- const isInitializedRef = useRef(false);
43
-
44
- const [visibleTaglist, setVisibleTaglist] = useState(false);
45
- const [selectedTag, setSelectedTag] = useState({});
46
- const filteredTags = (tags || []).filter((obj) => obj.definition.value !== UNSUBSCRIBE);
47
-
48
- useEffect(() => {
49
- // Only recreate BEE editor when layout type changes, not when content (beeJson) changes
50
- // If beeJson is in dependencies, editor reloads on every keystroke!
51
- const beeConfig = {
52
- uid,
53
- trackChanges: true,
54
- container: 'bee-plugin-container',
55
- workspace: {
56
- popup: {
57
- backgroundImageMobile: device === ANDROID ? emptyAndroidSvg : emptyIosSvg,
58
- layout: BEE_LAYOUT_OPTIONS[templateLayoutType],
59
- customStyles: {
60
- container: {
61
- width: "90%",
62
- margin: "1.5rem",
63
- },
64
- },
65
- },
66
- stage: MOBILE,
67
- hideStageToggle: true,
68
- },
69
- contentDialog: {
70
- mergeTags: {
71
- label: 'Add Label',
72
- handler: async (resolve, reject) => {
73
- // this will open tag modal
74
- await setVisibleTaglist(true);
75
- // until tag modal will not open promise will not execute
76
- // once tag modal is opened it will start 2 sec interval to wait use has selected any tag or cancel the tag selection
77
- const promise = new Promise((resolveP) => {
78
- intervalTimer = setInterval(() => {
79
- // this will execute, if user cancel the tag selection
80
- if ((savedCallback.current || {}).close === true) {
81
- reject();
82
- clearInterval(intervalTimer);
83
- return;
84
- }
85
- // this block is checking use has selected any tag or not
86
- if (Object.keys(savedCallback.current || {}).length > 0) {
87
- resolveP(savedCallback.current);
88
- setSelectedTag({});
89
- clearInterval(intervalTimer);
90
- }
91
- }, 2000);
92
- });
93
- // once prmise will resolve , pass the resolve data to handler to show tags in bee edior
94
- const result = await promise;
95
- resolve(result);
96
- },
97
- },
98
- },
99
- onChange: (jsonFile, htmlFile) => {
100
- saveBeeData(jsonFile, htmlFile, device);
101
- },
102
- onSave: (jsonFile, htmlFile) => {
103
- // onSave provides the actual HTML value, use it to update beeHtml.value
104
- if (saveBeeHtmlValue && htmlFile) {
105
- saveBeeHtmlValue(htmlFile, device);
106
- }
107
- // Also call saveBeeData to update JSON
108
- saveBeeData(jsonFile, htmlFile, device);
109
- },
110
- };
111
- window.BeePlugin.create(tokenData, beeConfig, (instance) => {
112
- beePluginInstance = instance;
113
- beeInstanceRef.current = instance;
114
- // Check if beeJson is already an object (happens when layout type changes)
115
- const parseJson = typeof beeJson === 'string' ? JSON.parse(beeJson) : beeJson;
116
- beePluginInstance.start(parseJson);
117
- saveBeeInstance(beePluginInstance, device);
118
- isInitializedRef.current = true;
119
- });
120
- return () => {
121
- clearInterval(intervalTimer);
122
- // Reset initialization flag when component unmounts or layout changes
123
- isInitializedRef.current = false;
124
- };
125
- // IMPORTANT: Only include templateLayoutType, NOT beeJson
126
- // beeJson changes on every keystroke and would cause editor to reload constantly
127
- }, [templateLayoutType]);
128
-
129
- useEffect(() => {
130
- savedCallback.current = Object?.keys(selectedTag)?.length > 0 && selectedTag;
131
- }, [selectedTag]);
132
-
133
- const onTagSelect = (result) => {
134
- const msg = {
135
- name: result,
136
- value: `{{${result}}}`,
137
- };
138
- setSelectedTag(msg);
139
- setVisibleTaglist(false);
140
- };
141
-
142
- const onCancelTagList = () => {
143
- setVisibleTaglist(false);
144
- setSelectedTag({ close: true });
145
- };
146
-
147
- return (
148
- <CapRow>
149
- <div id="bee-plugin-container" className="bee-popup-editor__container"></div>
150
- <TagList
151
- moduleFilterEnabled={moduleFilterEnabled}
152
- label={label}
153
- onTagSelect={onTagSelect}
154
- location={location}
155
- tags={filteredTags}
156
- injectedTags={injectedTags}
157
- className={className}
158
- id={id}
159
- userLocale={userLocale}
160
- selectedOfferDetails={selectedOfferDetails}
161
- visibleTaglist={visibleTaglist}
162
- hidePopover
163
- modalProps={{
164
- onCancel: onCancelTagList,
165
- className: "bee-editor-tag-list bee-editor-tag-list--positioned",
166
- }}
167
- onContextChange={onContextChange}
168
- />
169
- </CapRow>
170
- );
171
- }
172
- BeePopupEditor.propTypes = {
173
- saveBeeData: PropTypes.func.isRequired,
174
- saveBeeInstance: PropTypes.func.isRequired,
175
- beeJson: PropTypes.object.isRequired,
176
- tokenData: PropTypes.object.isRequired,
177
- uid: PropTypes.string.isRequired,
178
- templateLayoutType: PropTypes.string.isRequired,
179
- id: PropTypes.string.isRequired,
180
- moduleFilterEnabled: PropTypes.bool.isRequired,
181
- label: PropTypes.string.isRequired,
182
- location: PropTypes.object.isRequired,
183
- injectedTags: PropTypes.array.isRequired,
184
- className: PropTypes.string.isRequired,
185
- userLocale: PropTypes.string.isRequired,
186
- selectedOfferDetails: PropTypes.object.isRequired,
187
- tags: PropTypes.array.isRequired,
188
- onContextChange: PropTypes.func.isRequired,
189
- device: PropTypes.string.isRequired,
190
- };
191
- const mapStateToProps = () => createStructuredSelector({});
192
-
193
- function mapDispatchToProps() { }
194
- export default UserIsAuthenticated(connect(mapStateToProps, mapDispatchToProps)(injectIntl(BeePopupEditor)));