@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
@@ -9,6 +9,7 @@ import { connect } from 'react-redux';
9
9
  import { injectIntl, intlShape } from 'react-intl';
10
10
  import { createStructuredSelector } from 'reselect';
11
11
  import { bindActionCreators } from 'redux';
12
+ import { compose } from 'redux';
12
13
  import { UserIsAuthenticated } from '../../utils/authWrapper';
13
14
  import {
14
15
  selectEmailLayout,
@@ -18,10 +19,17 @@ import {
18
19
  selectCmsTemplatesLoader,
19
20
  } from '../Templates/selectors';
20
21
  import * as templatesActionsCreators from '../Templates/actions';
21
- import { selectCurrentOrgDetails } from "../../v2Containers/Cap/selectors";
22
+ import { selectCurrentOrgDetails, makeSelectMetaEntities, isLoadingMetaEntities, setInjectedTags, selectLiquidStateDetails } from "../../v2Containers/Cap/selectors";
23
+ import { makeSelectEmail, selectLoadingStatus, makeSelectFetchingCmsData } from '../Email/selectors';
24
+ import * as emailActionsCreators from '../Email/actions';
25
+ import * as globalActions from '../Cap/actions';
22
26
  import EmailWrapperView from './components/EmailWrapperView';
23
27
  import useEmailWrapper from './hooks/useEmailWrapper';
24
28
  import HTMLEditorTesting from './components/HTMLEditorTesting';
29
+ import injectReducer from '../../utils/injectReducer';
30
+ import injectSaga from '../../utils/injectSaga';
31
+ import v2EmailReducer from '../Email/reducer';
32
+ import { v2EmailSagas } from '../Email/sagas';
25
33
 
26
34
 
27
35
  const EmailWrapper = (props) => {
@@ -64,6 +72,19 @@ const EmailWrapper = (props) => {
64
72
  handleTestAndPreview,
65
73
  handleCloseTestAndPreview,
66
74
  isTestAndPreviewMode,
75
+ location,
76
+ emailActions,
77
+ Email,
78
+ metaEntities,
79
+ loadingTags,
80
+ injectedTags,
81
+ globalActions: globalActionsProp,
82
+ templateData,
83
+ params,
84
+ fetchingLiquidTags,
85
+ createTemplateInProgress,
86
+ fetchingCmsData,
87
+ onHtmlEditorValidationStateChange,
67
88
  } = props;
68
89
 
69
90
  // Pass destructured props to the custom hook
@@ -117,32 +138,70 @@ const EmailWrapper = (props) => {
117
138
  handleTestAndPreview,
118
139
  handleCloseTestAndPreview,
119
140
  isTestAndPreviewMode,
141
+ location,
142
+ emailActions,
143
+ Email,
144
+ templateData,
145
+ params,
120
146
  });
121
147
 
122
148
  // Render using the presentation component with data from the hook
123
149
  return (
124
150
  <div>
125
151
  <EmailWrapperView
126
- isUploading={isUploading}
127
- emailCreateMode={emailCreateMode}
128
- step={step}
129
- isFullMode={isFullMode}
130
- templateName={templateName}
131
- onTemplateNameChange={onTemplateNameChange}
132
- isTemplateNameEmpty={isTemplateNameEmpty}
133
- modes={modes}
134
- onChange={onChange}
135
- EmailLayout={EmailLayout}
136
- modeContent={modeContent}
137
- useFileUpload={useFileUpload}
138
- uploadButtonLabel={uploadButtonLabel}
139
- isShowEmailCreate={isShowEmailCreate}
140
- emailProps={emailProps}
141
- cmsTemplatesProps={cmsTemplatesProps}
142
- onPreviewContentClicked={onPreviewContentClicked}
143
- onTestContentClicked={onTestContentClicked}
144
- editor={editor}
145
- />
152
+ isUploading={isUploading}
153
+ emailCreateMode={emailCreateMode}
154
+ step={step}
155
+ isFullMode={isFullMode}
156
+ templateName={templateName}
157
+ onTemplateNameChange={onTemplateNameChange}
158
+ isTemplateNameEmpty={isTemplateNameEmpty}
159
+ modes={modes}
160
+ onChange={onChange}
161
+ EmailLayout={EmailLayout}
162
+ modeContent={modeContent}
163
+ useFileUpload={useFileUpload}
164
+ uploadButtonLabel={uploadButtonLabel}
165
+ isShowEmailCreate={isShowEmailCreate}
166
+ emailProps={emailProps}
167
+ cmsTemplatesProps={cmsTemplatesProps}
168
+ onPreviewContentClicked={onPreviewContentClicked}
169
+ onTestContentClicked={onTestContentClicked}
170
+ editor={editor}
171
+ // New flow props - only used when supportCKEditor is false
172
+ // These props are needed for EmailHTMLEditor component (tag loading, validation, etc.)
173
+ metaEntities={metaEntities}
174
+ loadingTags={loadingTags}
175
+ injectedTags={injectedTags}
176
+ globalActions={globalActionsProp}
177
+ supportedTags={props.supportedTags}
178
+ getDefaultTags={type}
179
+ location={location}
180
+ currentOrgDetails={currentOrgDetails}
181
+ onValidationFail={onValidationFail}
182
+ forwardedTags={forwardedTags}
183
+ selectedOfferDetails={selectedOfferDetails}
184
+ eventContextTags={eventContextTags}
185
+ getFormdata={getFormdata}
186
+ isGetFormData={isGetFormData}
187
+ getLiquidTags={globalActionsProp?.getLiquidTags}
188
+ showLiquidErrorInFooter={showLiquidErrorInFooter}
189
+ intl={intl}
190
+ emailActions={emailActions}
191
+ showTestAndPreviewSlidebox={showTestAndPreviewSlidebox}
192
+ handleTestAndPreview={handleTestAndPreview}
193
+ handleCloseTestAndPreview={handleCloseTestAndPreview}
194
+ Email={Email}
195
+ setIsLoadingContent={setIsLoadingContent}
196
+ templateData={templateData}
197
+ params={params}
198
+ showTemplateName={showTemplateName}
199
+ fetchingLiquidTags={fetchingLiquidTags}
200
+ createTemplateInProgress={createTemplateInProgress}
201
+ fetchingCmsData={fetchingCmsData}
202
+ onHtmlEditorValidationStateChange={onHtmlEditorValidationStateChange}
203
+ moduleType={moduleType}
204
+ />
146
205
 
147
206
  {/* HTMLEditor Testing Component - Console Controlled */}
148
207
  <HTMLEditorTesting />
@@ -159,7 +218,7 @@ EmailWrapper.propTypes = {
159
218
  templatesActions: PropTypes.object,
160
219
  CmsTemplates: PropTypes.arrayOf(PropTypes.object),
161
220
  SelectedEdmDefaultTemplate: PropTypes.object,
162
- step: PropTypes.string,
221
+ step: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
163
222
  showNextStep: PropTypes.func,
164
223
  getFormdata: PropTypes.func,
165
224
  intl: intlShape,
@@ -187,6 +246,8 @@ EmailWrapper.propTypes = {
187
246
  handleTestAndPreview: PropTypes.func,
188
247
  handleCloseTestAndPreview: PropTypes.func,
189
248
  isTestAndPreviewMode: PropTypes.bool,
249
+ location: PropTypes.object,
250
+ onHtmlEditorValidationStateChange: PropTypes.func,
190
251
  };
191
252
 
192
253
  const mapStateToProps = createStructuredSelector({
@@ -196,12 +257,31 @@ const mapStateToProps = createStructuredSelector({
196
257
  isUploading: uploadSelector(),
197
258
  cmsTemplatesLoader: selectCmsTemplatesLoader(),
198
259
  currentOrgDetails: selectCurrentOrgDetails(),
260
+ Email: makeSelectEmail(),
261
+ metaEntities: makeSelectMetaEntities(),
262
+ loadingTags: isLoadingMetaEntities(),
263
+ injectedTags: setInjectedTags(),
264
+ fetchingLiquidTags: selectLiquidStateDetails(),
265
+ createTemplateInProgress: selectLoadingStatus(),
266
+ fetchingCmsData: makeSelectFetchingCmsData(),
199
267
  });
200
268
 
201
269
  function mapDispatchToProps(dispatch) {
202
270
  return {
203
271
  templatesActions: bindActionCreators(templatesActionsCreators, dispatch),
272
+ emailActions: bindActionCreators(emailActionsCreators, dispatch),
273
+ globalActions: bindActionCreators(globalActions, dispatch),
204
274
  };
205
275
  }
206
276
 
207
- export default UserIsAuthenticated(connect(mapStateToProps, mapDispatchToProps)(injectIntl(EmailWrapper)));
277
+ // Inject Email reducer and saga so that getCmsSetting action can be handled
278
+ const withReducer = injectReducer({ key: 'email', reducer: v2EmailReducer });
279
+ const withEmailSaga = injectSaga({ key: 'email', saga: v2EmailSagas });
280
+
281
+ const ConnectedEmailWrapper = connect(mapStateToProps, mapDispatchToProps)(injectIntl(EmailWrapper));
282
+
283
+ export default compose(
284
+ UserIsAuthenticated,
285
+ withReducer,
286
+ withEmailSaga,
287
+ )(ConnectedEmailWrapper);
@@ -60,6 +60,70 @@ export default defineMessages({
60
60
  },
61
61
  emptyTemplateName: {
62
62
  id: `creatives.containersV2.EmailWrapper.emptyTemplateName`,
63
- defaultMessage: `Please enter template name.`
63
+ defaultMessage: `Please enter template name.`,
64
+ },
65
+ htmlEditorTitle: {
66
+ id: 'creatives.EmailWrapper.htmlEditorTitle',
67
+ defaultMessage: 'HTML editor',
68
+ },
69
+ htmlEditorDesc: {
70
+ id: 'creatives.EmailWrapper.htmlEditorDesc',
71
+ defaultMessage: 'Use a basic HTML editor to write and format your content. Suitable if you are familiar with HTML.',
72
+ },
73
+ dragDropEditorTitle: {
74
+ id: 'creatives.EmailWrapper.dragDropEditorTitle',
75
+ defaultMessage: 'Drag & drop editor',
76
+ },
77
+ dragDropEditorDesc: {
78
+ id: 'creatives.EmailWrapper.dragDropEditorDesc',
79
+ defaultMessage: 'Create your content visually by dragging blocks — no coding needed. Great for quick, easy designs.',
80
+ },
81
+ uploadZipTitle: {
82
+ id: 'creatives.EmailWrapper.uploadZipTitle',
83
+ defaultMessage: 'Upload zip file',
84
+ },
85
+ uploadZipDesc: {
86
+ id: 'creatives.EmailWrapper.uploadZipDesc',
87
+ defaultMessage: 'Upload a ZIP containing your custom HTML, images, and assets. Ideal if your content is already built.',
88
+ },
89
+ next: {
90
+ id: 'creatives.EmailWrapper.next',
91
+ defaultMessage: 'Next',
92
+ },
93
+ beeEditorDisabledTooltip: {
94
+ id: 'creatives.EmailWrapper.beeEditorDisabledTooltip',
95
+ defaultMessage: 'Please get the drag & drop editor enabled for your brand',
96
+ },
97
+ emailContent: {
98
+ id: 'creatives.containersV2.Email.emailContent',
99
+ defaultMessage: 'Email content',
100
+ },
101
+ create: {
102
+ id: 'creatives.containersV2.EmailWrapper.create',
103
+ defaultMessage: 'Create',
104
+ },
105
+ update: {
106
+ id: 'creatives.containersV2.EmailWrapper.update',
107
+ defaultMessage: 'Update',
108
+ },
109
+ previewAndTest: {
110
+ id: 'creatives.containersV2.EmailWrapper.previewAndTest',
111
+ defaultMessage: 'Preview and Test',
112
+ },
113
+ required: {
114
+ id: 'creatives.containersV2.EmailWrapper.required',
115
+ defaultMessage: 'Required',
116
+ },
117
+ subject: {
118
+ id: 'creatives.containersV2.EmailWrapper.subject',
119
+ defaultMessage: 'Subject',
120
+ },
121
+ enterEmailSubject: {
122
+ id: 'creatives.containersV2.EmailWrapper.enterEmailSubject',
123
+ defaultMessage: 'Enter Email Subject',
124
+ },
125
+ editorType: {
126
+ id: 'creatives.containersV2.EmailWrapper.editorType',
127
+ defaultMessage: 'Editor type',
64
128
  },
65
129
  });