@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,14 +0,0 @@
1
- @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
-
3
- .bee-popup-editor {
4
- &__container {
5
- height: 46.5rem;
6
- }
7
- }
8
-
9
- .bee-editor-tag-list {
10
- &--positioned {
11
- left: 9.643rem;
12
- top: 17.857rem;
13
- }
14
- }
@@ -1,10 +0,0 @@
1
- export const BEE_LAYOUT_OPTIONS = {
2
- POPUP: "classic-center",
3
- HEADER: "bar-top",
4
- FOOTER: "bar-bottom",
5
- FULLSCREEN: "classic-center",
6
- };
7
- export const MOBILE = "mobile";
8
- export const UNSUBSCRIBE = 'unsubscribe';
9
- export const ANDROID = 'ANDROID';
10
- export const IOS = 'IOS';
@@ -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)));