@capillarytech/creatives-library 8.0.271 → 8.0.272

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 (149) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/constants/unified.js +2 -1
  4. package/initialReducer.js +2 -0
  5. package/package.json +1 -1
  6. package/services/api.js +10 -0
  7. package/services/tests/api.test.js +34 -0
  8. package/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +17 -35
  9. package/tests/integration/TemplateCreation/api-response.js +31 -1
  10. package/tests/integration/TemplateCreation/msw-handler.js +2 -0
  11. package/utils/common.js +5 -0
  12. package/utils/commonUtils.js +28 -5
  13. package/utils/tests/commonUtil.test.js +224 -0
  14. package/utils/transformTemplateConfig.js +0 -10
  15. package/v2Components/CapDeviceContent/index.js +61 -56
  16. package/v2Components/CapTagList/index.js +6 -1
  17. package/v2Components/CapTagListWithInput/index.js +5 -1
  18. package/v2Components/CapTagListWithInput/messages.js +1 -1
  19. package/v2Components/CapWhatsappCTA/tests/index.test.js +5 -0
  20. package/v2Components/ErrorInfoNote/constants.js +1 -0
  21. package/v2Components/ErrorInfoNote/index.js +402 -72
  22. package/v2Components/ErrorInfoNote/messages.js +32 -6
  23. package/v2Components/ErrorInfoNote/style.scss +278 -6
  24. package/v2Components/FormBuilder/tests/index.test.js +13 -4
  25. package/v2Components/HtmlEditor/HTMLEditor.js +418 -99
  26. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +870 -0
  27. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +1882 -133
  28. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +27 -16
  29. package/v2Components/HtmlEditor/_htmlEditor.scss +108 -45
  30. package/v2Components/HtmlEditor/_index.lazy.scss +0 -1
  31. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +23 -102
  32. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +148 -140
  33. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +2 -1
  34. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  35. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +9 -1
  36. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +31 -6
  37. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +22 -0
  38. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +4 -7
  39. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +35 -45
  40. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +1 -3
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +7 -6
  43. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +7 -10
  44. package/v2Components/HtmlEditor/components/PreviewPane/index.js +22 -43
  45. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  46. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +18 -0
  47. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +36 -31
  48. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +46 -34
  49. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +6 -0
  50. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +52 -46
  51. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +277 -0
  52. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +295 -0
  53. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +51 -0
  54. package/v2Components/HtmlEditor/constants.js +45 -20
  55. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +373 -16
  56. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +351 -16
  57. package/v2Components/HtmlEditor/hooks/useEditorContent.js +5 -2
  58. package/v2Components/HtmlEditor/hooks/useInAppContent.js +88 -146
  59. package/v2Components/HtmlEditor/hooks/useValidation.js +213 -56
  60. package/v2Components/HtmlEditor/index.js +1 -1
  61. package/v2Components/HtmlEditor/messages.js +102 -94
  62. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +214 -45
  63. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +134 -0
  64. package/v2Components/HtmlEditor/utils/contentSanitizer.js +40 -41
  65. package/v2Components/HtmlEditor/utils/htmlValidator.js +71 -72
  66. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +158 -124
  67. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +23 -25
  68. package/v2Components/HtmlEditor/utils/validationAdapter.js +66 -41
  69. package/v2Components/HtmlEditor/utils/validationConstants.js +38 -0
  70. package/v2Components/MobilePushPreviewV2/constants.js +6 -0
  71. package/v2Components/MobilePushPreviewV2/index.js +33 -7
  72. package/v2Components/TemplatePreview/_templatePreview.scss +55 -24
  73. package/v2Components/TemplatePreview/index.js +47 -32
  74. package/v2Components/TemplatePreview/messages.js +4 -0
  75. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +1 -0
  76. package/v2Containers/BeeEditor/index.js +172 -90
  77. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +14 -0
  78. package/v2Containers/BeePopupEditor/constants.js +10 -0
  79. package/v2Containers/BeePopupEditor/index.js +194 -0
  80. package/v2Containers/BeePopupEditor/tests/index.test.js +627 -0
  81. package/v2Containers/CreativesContainer/SlideBoxContent.js +127 -51
  82. package/v2Containers/CreativesContainer/SlideBoxFooter.js +156 -13
  83. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -1
  84. package/v2Containers/CreativesContainer/constants.js +1 -0
  85. package/v2Containers/CreativesContainer/index.js +251 -47
  86. package/v2Containers/CreativesContainer/messages.js +8 -0
  87. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +11 -2
  88. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +38 -50
  89. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +103 -0
  90. package/v2Containers/Email/actions.js +7 -0
  91. package/v2Containers/Email/constants.js +5 -1
  92. package/v2Containers/Email/index.js +234 -29
  93. package/v2Containers/Email/messages.js +32 -0
  94. package/v2Containers/Email/reducer.js +12 -1
  95. package/v2Containers/Email/sagas.js +61 -7
  96. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +2 -0
  97. package/v2Containers/Email/tests/reducer.test.js +46 -0
  98. package/v2Containers/Email/tests/sagas.test.js +320 -29
  99. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +1246 -0
  100. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +212 -21
  101. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +40 -74
  102. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +2472 -0
  103. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +520 -0
  104. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +2 -67
  105. package/v2Containers/EmailWrapper/constants.js +2 -0
  106. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +627 -79
  107. package/v2Containers/EmailWrapper/index.js +103 -23
  108. package/v2Containers/EmailWrapper/messages.js +65 -1
  109. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +955 -0
  110. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +596 -82
  111. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +376 -0
  112. package/v2Containers/InApp/__tests__/sagas.test.js +363 -0
  113. package/v2Containers/InApp/actions.js +7 -0
  114. package/v2Containers/InApp/constants.js +20 -4
  115. package/v2Containers/InApp/index.js +802 -360
  116. package/v2Containers/InApp/index.scss +4 -3
  117. package/v2Containers/InApp/messages.js +7 -3
  118. package/v2Containers/InApp/reducer.js +21 -3
  119. package/v2Containers/InApp/sagas.js +29 -9
  120. package/v2Containers/InApp/selectors.js +25 -5
  121. package/v2Containers/InApp/tests/index.test.js +154 -50
  122. package/v2Containers/InApp/tests/reducer.test.js +34 -0
  123. package/v2Containers/InApp/tests/sagas.test.js +61 -9
  124. package/v2Containers/InApp/tests/selectors.test.js +612 -0
  125. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +151 -0
  126. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +267 -0
  127. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +23 -0
  128. package/v2Containers/InAppWrapper/constants.js +16 -0
  129. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +473 -0
  130. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +198 -0
  131. package/v2Containers/InAppWrapper/index.js +148 -0
  132. package/v2Containers/InAppWrapper/messages.js +49 -0
  133. package/v2Containers/InappAdvance/index.js +1099 -0
  134. package/v2Containers/InappAdvance/index.scss +10 -0
  135. package/v2Containers/InappAdvance/tests/index.test.js +448 -0
  136. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +3 -0
  137. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +2 -0
  138. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +2 -0
  139. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +9 -0
  140. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +12 -0
  141. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -0
  142. package/v2Containers/TagList/index.js +62 -19
  143. package/v2Containers/Templates/_templates.scss +60 -1
  144. package/v2Containers/Templates/index.js +89 -4
  145. package/v2Containers/Templates/messages.js +4 -0
  146. package/v2Containers/TemplatesV2/TemplatesV2.style.js +4 -2
  147. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -0
  148. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +0 -152
  149. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +0 -214
@@ -0,0 +1,148 @@
1
+ /*
2
+ *
3
+ * InAppWrapper
4
+ *
5
+ */
6
+ import React from 'react';
7
+ import PropTypes from 'prop-types';
8
+ import { injectIntl, intlShape } from 'react-intl';
9
+ import { bindActionCreators } from 'redux';
10
+ import { createStructuredSelector } from 'reselect';
11
+ import withCreatives from '../../hoc/withCreatives';
12
+ import useInAppWrapper from './hooks/useInAppWrapper';
13
+ import InAppWrapperView from './components/InAppWrapperView';
14
+ import messages from './messages';
15
+ import * as inAppActions from '../InApp/actions';
16
+ const InAppWrapper = (props) => {
17
+ // Destructure props for clarity before passing to hook
18
+ const {
19
+ intl,
20
+ inAppEditorType,
21
+ step,
22
+ isFullMode,
23
+ onInAppEditorTypeChange,
24
+ showNextStep,
25
+ onResetStep,
26
+ setIsLoadingContent,
27
+ isGetFormData,
28
+ getFormdata,
29
+ type,
30
+ cap,
31
+ showTemplateName,
32
+ showLiquidErrorInFooter,
33
+ onValidationFail,
34
+ forwardedTags,
35
+ selectedOfferDetails,
36
+ onPreviewContentClicked,
37
+ onTestContentClicked,
38
+ eventContextTags,
39
+ onCreateComplete,
40
+ handleClose,
41
+ templateData,
42
+ getDefaultTags,
43
+ onEnterTemplateName,
44
+ onRemoveTemplateName,
45
+ } = props;
46
+
47
+ // Pass destructured props to the custom hook
48
+ const {
49
+ templateName,
50
+ isTemplateNameEmpty,
51
+ selectedEditorType,
52
+ modes,
53
+ isShowInAppCreate,
54
+ inAppProps,
55
+ onTemplateNameChange,
56
+ onChange,
57
+ handleEditorTypeSelection,
58
+ } = useInAppWrapper({
59
+ intl,
60
+ onInAppEditorTypeChange,
61
+ inAppEditorType,
62
+ step,
63
+ showNextStep,
64
+ onResetStep,
65
+ onEnterTemplateName,
66
+ onRemoveTemplateName,
67
+ setIsLoadingContent,
68
+ isGetFormData,
69
+ getFormdata,
70
+ type,
71
+ isFullMode,
72
+ cap,
73
+ showTemplateName,
74
+ showLiquidErrorInFooter,
75
+ onValidationFail,
76
+ forwardedTags,
77
+ selectedOfferDetails,
78
+ onPreviewContentClicked,
79
+ onTestContentClicked,
80
+ eventContextTags,
81
+ onCreateComplete,
82
+ handleClose,
83
+ templateData,
84
+ getDefaultTags,
85
+ });
86
+
87
+ // Render using the presentation component with data from the hook
88
+ return (
89
+ <InAppWrapperView
90
+ inAppEditorType={inAppEditorType}
91
+ step={step}
92
+ isFullMode={isFullMode}
93
+ templateName={templateName}
94
+ onTemplateNameChange={onTemplateNameChange}
95
+ isTemplateNameEmpty={isTemplateNameEmpty}
96
+ modes={modes}
97
+ onChange={onChange}
98
+ isShowInAppCreate={isShowInAppCreate}
99
+ inAppProps={inAppProps}
100
+ handleEditorTypeSelection={handleEditorTypeSelection}
101
+ templateNamePlaceholder={intl.formatMessage(messages.templateNamePlaceholder)}
102
+ />
103
+ );
104
+ };
105
+
106
+ InAppWrapper.propTypes = {
107
+ onInAppEditorTypeChange: PropTypes.func.isRequired,
108
+ isGetFormData: PropTypes.bool,
109
+ type: PropTypes.string,
110
+ inAppEditorType: PropTypes.string,
111
+ step: PropTypes.string,
112
+ showNextStep: PropTypes.func,
113
+ getFormdata: PropTypes.func,
114
+ intl: intlShape,
115
+ cap: PropTypes.object,
116
+ onResetStep: PropTypes.func,
117
+ isFullMode: PropTypes.bool,
118
+ setIsLoadingContent: PropTypes.func,
119
+ showTemplateName: PropTypes.func,
120
+ showLiquidErrorInFooter: PropTypes.func,
121
+ onValidationFail: PropTypes.func,
122
+ forwardedTags: PropTypes.object,
123
+ selectedOfferDetails: PropTypes.array,
124
+ onPreviewContentClicked: PropTypes.func,
125
+ onTestContentClicked: PropTypes.func,
126
+ eventContextTags: PropTypes.array,
127
+ onCreateComplete: PropTypes.func,
128
+ handleClose: PropTypes.func,
129
+ templateData: PropTypes.object,
130
+ getDefaultTags: PropTypes.string,
131
+ onEnterTemplateName: PropTypes.func,
132
+ onRemoveTemplateName: PropTypes.func,
133
+ };
134
+
135
+ const mapStateToProps = createStructuredSelector({
136
+ // Add selectors here if needed
137
+ });
138
+
139
+ const mapDispatchToProps = (dispatch) => ({
140
+ actions: bindActionCreators(inAppActions, dispatch),
141
+ });
142
+
143
+ export default withCreatives({
144
+ WrappedComponent: injectIntl(InAppWrapper),
145
+ mapStateToProps,
146
+ mapDispatchToProps,
147
+ userAuth: true,
148
+ });
@@ -0,0 +1,49 @@
1
+ /*
2
+ * InAppWrapper Messages
3
+ *
4
+ * This contains all the text for the InAppWrapper component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.containersV2.InAppWrapper.header',
11
+ defaultMessage: 'Create In App Message',
12
+ },
13
+ htmlEditor: {
14
+ id: 'creatives.containersV2.InAppWrapper.htmlEditor',
15
+ defaultMessage: 'HTML editor',
16
+ },
17
+ htmlEditorDesc: {
18
+ id: 'creatives.containersV2.InAppWrapper.htmlEditorDesc',
19
+ defaultMessage: 'Use a basic HTML editor to write and format your content. Suitable if you\'re familiar with HTML.',
20
+ },
21
+ dragDropEditor: {
22
+ id: 'creatives.containersV2.InAppWrapper.dragDropEditor',
23
+ defaultMessage: 'Drag & drop editor',
24
+ },
25
+ dragDropEditorDesc: {
26
+ id: 'creatives.containersV2.InAppWrapper.dragDropEditorDesc',
27
+ defaultMessage: 'Create your content visually by dragging blocks - no coding needed. Great for quick, easy designs.',
28
+ },
29
+ creativeName: {
30
+ id: 'creatives.containersV2.InAppWrapper.creativeName',
31
+ defaultMessage: 'Creative name',
32
+ },
33
+ editorType: {
34
+ id: 'creatives.containersV2.InAppWrapper.editorType',
35
+ defaultMessage: 'Editor type',
36
+ },
37
+ emptyTemplateName: {
38
+ id: 'creatives.containersV2.InAppWrapper.emptyTemplateName',
39
+ defaultMessage: 'Please enter template name.',
40
+ },
41
+ next: {
42
+ id: 'creatives.containersV2.InAppWrapper.next',
43
+ defaultMessage: 'Next',
44
+ },
45
+ templateNamePlaceholder: {
46
+ id: 'creatives.containersV2.InAppWrapper.templateNamePlaceholder',
47
+ defaultMessage: 'Enter the template name',
48
+ },
49
+ });