@capillarytech/creatives-library 8.0.139 → 8.0.141
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.
- package/containers/Cap/tests/__snapshots__/index.test.js.snap +1 -0
- package/package.json +2 -2
- package/translations/en.json +1 -0
- package/utils/content.js +15 -0
- package/utils/tests/tagValidations.test.js +112 -0
- package/v2Components/FormBuilder/index.js +12 -1
- package/v2Components/FormBuilder/messages.js +4 -0
- package/v2Containers/Cap/constants.js +7 -0
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +1 -0
- package/v2Containers/Email/index.js +9 -0
- package/v2Containers/Email/messages.js +4 -0
- package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +5 -0
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +3 -0
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +2 -0
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +25 -0
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +18 -0
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +111 -0
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +4 -0
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +8 -0
- package/v2Containers/Templates/index.js +5 -0
- package/v2Containers/Templates/sagas.js +4 -1
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +132 -0
|
@@ -281,6 +281,7 @@ exports[`<Cap /> should render its children 1`] = `
|
|
|
281
281
|
"creatives.componentsV2.FTP.message": "Message",
|
|
282
282
|
"creatives.componentsV2.FTP.search": "Search",
|
|
283
283
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
284
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
284
285
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
285
286
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
286
287
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capillarytech/creatives-library",
|
|
3
3
|
"author": "meharaj",
|
|
4
|
-
"version": "8.0.
|
|
4
|
+
"version": "8.0.141",
|
|
5
5
|
"description": "Capillary creatives ui",
|
|
6
6
|
"main": "./index.js",
|
|
7
7
|
"module": "./index.es.js",
|
|
@@ -55,4 +55,4 @@
|
|
|
55
55
|
"webpack-bugsnag-plugins": "^1.4.3",
|
|
56
56
|
"whatwg-fetch": "3.0.0"
|
|
57
57
|
}
|
|
58
|
-
}
|
|
58
|
+
}
|
package/translations/en.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"creatives.componentsV2.FormBuilder.uploadComputer": "Your computer",
|
|
257
257
|
"creatives.componentsV2.FormBuilder.uploadGallery": "Gallery",
|
|
258
258
|
"creatives.componentsV2.FormBuilder.yes": "Yes",
|
|
259
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
259
260
|
"creatives.componentsV2.Header.cancel": "Cancel",
|
|
260
261
|
"creatives.componentsV2.Header.header": "This is the Header component !",
|
|
261
262
|
"creatives.componentsV2.Header.preview": "Preview",
|
package/utils/content.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BASE64_IMAGE_REGEX, BASE64_IMAGE_ERROR_MESSAGE } from '../v2Containers/Cap/constants';
|
|
2
|
+
|
|
3
|
+
export const containsBase64Images = ({content, CapNotification, callback}) => {
|
|
4
|
+
if (!content || typeof content !== 'string') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
// Create a new regex instance to avoid global flag state issues
|
|
8
|
+
const regex = new RegExp(BASE64_IMAGE_REGEX.source, BASE64_IMAGE_REGEX.flags);
|
|
9
|
+
if (regex.test(content)) {
|
|
10
|
+
CapNotification && CapNotification.error(BASE64_IMAGE_ERROR_MESSAGE);
|
|
11
|
+
callback && callback();
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
};
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
skipTags,
|
|
11
11
|
isInsideLiquidBlock,
|
|
12
12
|
} from '../tagValidations';
|
|
13
|
+
import { containsBase64Images } from '../content';
|
|
13
14
|
import { eventContextTags } from '../../v2Containers/TagList/tests/mockdata';
|
|
14
15
|
|
|
15
16
|
describe("check if curly brackets are balanced", () => {
|
|
@@ -933,3 +934,114 @@ describe('isInsideLiquidBlock', () => {
|
|
|
933
934
|
expect(isInsideLiquidBlock(content, blockEnd - 1)).toBe(true);
|
|
934
935
|
});
|
|
935
936
|
});
|
|
937
|
+
|
|
938
|
+
describe('containsBase64Images', () => {
|
|
939
|
+
let mockCapNotification;
|
|
940
|
+
let mockCallback;
|
|
941
|
+
|
|
942
|
+
beforeEach(() => {
|
|
943
|
+
mockCapNotification = {
|
|
944
|
+
error: jest.fn()
|
|
945
|
+
};
|
|
946
|
+
mockCallback = jest.fn();
|
|
947
|
+
});
|
|
948
|
+
|
|
949
|
+
it('should return false for empty or null content', () => {
|
|
950
|
+
expect(containsBase64Images({content: null})).toBe(false);
|
|
951
|
+
expect(containsBase64Images({content: undefined})).toBe(false);
|
|
952
|
+
expect(containsBase64Images({content: ''})).toBe(false);
|
|
953
|
+
expect(containsBase64Images({content: ' '})).toBe(false);
|
|
954
|
+
});
|
|
955
|
+
|
|
956
|
+
it('should return false for content without images', () => {
|
|
957
|
+
const content = '<div><p>Hello world</p></div>';
|
|
958
|
+
expect(containsBase64Images({content})).toBe(false);
|
|
959
|
+
expect(mockCapNotification.error).not.toHaveBeenCalled();
|
|
960
|
+
});
|
|
961
|
+
|
|
962
|
+
it('should return false for content with regular image URLs', () => {
|
|
963
|
+
const content = '<img src="https://example.com/image.jpg" alt="test" />';
|
|
964
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification})).toBe(false);
|
|
965
|
+
expect(mockCapNotification.error).not.toHaveBeenCalled();
|
|
966
|
+
});
|
|
967
|
+
|
|
968
|
+
it('should return true for content with base64 images and trigger notification', () => {
|
|
969
|
+
const content = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==" alt="test" />';
|
|
970
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification, callback: mockCallback})).toBe(true);
|
|
971
|
+
|
|
972
|
+
expect(mockCapNotification.error).toHaveBeenCalledWith({
|
|
973
|
+
key: 'base64Error',
|
|
974
|
+
message: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
975
|
+
description: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
976
|
+
});
|
|
977
|
+
expect(mockCallback).toHaveBeenCalled();
|
|
978
|
+
});
|
|
979
|
+
|
|
980
|
+
it('should return true for content with multiple base64 images', () => {
|
|
981
|
+
const content = `
|
|
982
|
+
<div>
|
|
983
|
+
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD..." alt="image1" />
|
|
984
|
+
<p>Some text</p>
|
|
985
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP//..." alt="image2" />
|
|
986
|
+
</div>
|
|
987
|
+
`;
|
|
988
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification})).toBe(true);
|
|
989
|
+
expect(mockCapNotification.error).toHaveBeenCalled();
|
|
990
|
+
});
|
|
991
|
+
|
|
992
|
+
it('should return false for content with data URLs that are not images', () => {
|
|
993
|
+
const content = '<a href="data:text/plain;base64,SGVsbG8gV29ybGQ=">Download</a>';
|
|
994
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification})).toBe(false);
|
|
995
|
+
expect(mockCapNotification.error).not.toHaveBeenCalled();
|
|
996
|
+
});
|
|
997
|
+
|
|
998
|
+
it('should handle various image formats', () => {
|
|
999
|
+
const pngContent = '<img src="data:image/png;base64,iVBORw0..." />';
|
|
1000
|
+
const jpegContent = '<img src="data:image/jpeg;base64,/9j/4AAQ..." />';
|
|
1001
|
+
const gifContent = '<img src="data:image/gif;base64,R0lGODlh..." />';
|
|
1002
|
+
const webpContent = '<img src="data:image/webp;base64,UklGRi..." />';
|
|
1003
|
+
|
|
1004
|
+
expect(containsBase64Images({content: pngContent, CapNotification: mockCapNotification})).toBe(true);
|
|
1005
|
+
expect(containsBase64Images({content: jpegContent, CapNotification: mockCapNotification})).toBe(true);
|
|
1006
|
+
expect(containsBase64Images({content: gifContent, CapNotification: mockCapNotification})).toBe(true);
|
|
1007
|
+
expect(containsBase64Images({content: webpContent, CapNotification: mockCapNotification})).toBe(true);
|
|
1008
|
+
|
|
1009
|
+
expect(mockCapNotification.error).toHaveBeenCalledTimes(4);
|
|
1010
|
+
});
|
|
1011
|
+
|
|
1012
|
+
it('should handle mixed content', () => {
|
|
1013
|
+
const content = `
|
|
1014
|
+
<div>
|
|
1015
|
+
<img src="https://example.com/regular-image.jpg" alt="regular" />
|
|
1016
|
+
<img src="data:image/png;base64,iVBORw0..." alt="base64" />
|
|
1017
|
+
<img src="/local/path/image.gif" alt="local" />
|
|
1018
|
+
</div>
|
|
1019
|
+
`;
|
|
1020
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification})).toBe(true);
|
|
1021
|
+
expect(mockCapNotification.error).toHaveBeenCalled();
|
|
1022
|
+
});
|
|
1023
|
+
|
|
1024
|
+
it('should work without CapNotification parameter', () => {
|
|
1025
|
+
const content = '<img src="data:image/png;base64,iVBORw0..." alt="test" />';
|
|
1026
|
+
expect(containsBase64Images({content})).toBe(true);
|
|
1027
|
+
// Should not throw error when CapNotification is undefined
|
|
1028
|
+
});
|
|
1029
|
+
|
|
1030
|
+
it('should work without callback parameter', () => {
|
|
1031
|
+
const content = '<img src="data:image/png;base64,iVBORw0..." alt="test" />';
|
|
1032
|
+
expect(containsBase64Images({content, CapNotification: mockCapNotification})).toBe(true);
|
|
1033
|
+
expect(mockCapNotification.error).toHaveBeenCalled();
|
|
1034
|
+
// Should not throw error when callback is undefined
|
|
1035
|
+
});
|
|
1036
|
+
|
|
1037
|
+
it('should execute callback only when base64 images are found', () => {
|
|
1038
|
+
const contentWithBase64 = '<img src="data:image/png;base64,iVBORw0..." alt="test" />';
|
|
1039
|
+
const contentWithoutBase64 = '<img src="https://example.com/image.jpg" alt="test" />';
|
|
1040
|
+
|
|
1041
|
+
containsBase64Images({content: contentWithBase64, callback: mockCallback});
|
|
1042
|
+
expect(mockCallback).toHaveBeenCalledTimes(1);
|
|
1043
|
+
|
|
1044
|
+
containsBase64Images({content: contentWithoutBase64, callback: mockCallback});
|
|
1045
|
+
expect(mockCallback).toHaveBeenCalledTimes(1); // Should still be 1, not called again
|
|
1046
|
+
});
|
|
1047
|
+
});
|
|
@@ -48,7 +48,8 @@ import { makeSelectMetaEntities, selectCurrentOrgDetails, selectLiquidStateDetai
|
|
|
48
48
|
import * as actions from "../../v2Containers/Cap/actions";
|
|
49
49
|
import './_formBuilder.scss';
|
|
50
50
|
import {updateCharCount, checkUnicode} from "../../utils/smsCharCountV2";
|
|
51
|
-
import { checkSupport, extractNames, preprocessHtml, validateIfTagClosed
|
|
51
|
+
import { checkSupport, extractNames, preprocessHtml, validateIfTagClosed} from '../../utils/tagValidations';
|
|
52
|
+
import { containsBase64Images } from '../../utils/content';
|
|
52
53
|
import { SMS, MOBILE_PUSH, LINE, ENABLE_AI_SUGGESTIONS,AI_CONTENT_BOT_DISABLED, EMAIL, LIQUID_SUPPORTED_CHANNELS, INAPP } from '../../v2Containers/CreativesContainer/constants';
|
|
53
54
|
import globalMessages from '../../v2Containers/Cap/messages';
|
|
54
55
|
import { convert } from 'html-to-text';
|
|
@@ -982,6 +983,13 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
982
983
|
return false;
|
|
983
984
|
}
|
|
984
985
|
const tagValidationResponse = this.validateTags(content, tags, injectedTags, isEmail);
|
|
986
|
+
|
|
987
|
+
// Check for base64 images in email content
|
|
988
|
+
isEmail && containsBase64Images({content, callback:()=>{
|
|
989
|
+
tagValidationResponse.valid = false;
|
|
990
|
+
tagValidationResponse.hasBase64Images = true;
|
|
991
|
+
}})
|
|
992
|
+
|
|
985
993
|
if (errorData[index][currentLang] === undefined) {
|
|
986
994
|
errorData[index][currentLang] = {};
|
|
987
995
|
}
|
|
@@ -1012,6 +1020,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
1012
1020
|
isLiquidValid = true;
|
|
1013
1021
|
}
|
|
1014
1022
|
}
|
|
1023
|
+
if (tagValidationResponse?.hasBase64Images) {
|
|
1024
|
+
errorString += this.props.intl.formatMessage(messages.base64ImageError);
|
|
1025
|
+
}
|
|
1015
1026
|
}
|
|
1016
1027
|
}
|
|
1017
1028
|
}
|
|
@@ -98,4 +98,8 @@ export default defineMessages({
|
|
|
98
98
|
id: 'creatives.componentsV2.FormBuilder.liquidSpinText',
|
|
99
99
|
defaultMessage: 'Validating the template, it might take a few seconds',
|
|
100
100
|
},
|
|
101
|
+
base64ImageError: {
|
|
102
|
+
id: 'creatives.componentsV2.FormBuilder.base64ImageError',
|
|
103
|
+
defaultMessage: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
104
|
+
},
|
|
101
105
|
});
|
|
@@ -67,3 +67,10 @@ export const GET_LIQUID_TAGS_SUCCESS = 'cap/GET_LIQUID_TAGS_SUCCESS_V2';
|
|
|
67
67
|
export const CREATE_CENTRAL_COMMS_META_ID_FAILURE = 'cap/CREATE_CENTRAL_COMMS_META_ID_FAILURE_V2';
|
|
68
68
|
export const CREATE_CENTRAL_COMMS_META_ID_REQUEST = 'cap/CREATE_CENTRAL_COMMS_META_ID_REQUEST_V2';
|
|
69
69
|
export const CREATE_CENTRAL_COMMS_META_ID_SUCCESS = 'cap/CREATE_CENTRAL_COMMS_META_ID_SUCCESS_V2';
|
|
70
|
+
|
|
71
|
+
export const BASE64_IMAGE_REGEX = /<img[^>]*\bsrc\s*=\s*["']data:image\/[^"']*["'][^>]*>/gi;
|
|
72
|
+
export const BASE64_IMAGE_ERROR_MESSAGE = {
|
|
73
|
+
key: 'base64Error',
|
|
74
|
+
message: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
75
|
+
description: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
76
|
+
};
|
|
@@ -317,6 +317,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
317
317
|
"creatives.componentsV2.FTP.message": "Message",
|
|
318
318
|
"creatives.componentsV2.FTP.search": "Search",
|
|
319
319
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
320
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
320
321
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
321
322
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
322
323
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -37,6 +37,8 @@ import { FONT_COLOR_05 } from '@capillarytech/cap-ui-library/styled/variables';
|
|
|
37
37
|
import { gtmPush } from '../../utils/gtmTrackers';
|
|
38
38
|
const {CapCustomCardList} = CapCustomCard;
|
|
39
39
|
import {storeS3FileSizeDetails, CREATIVES_S3_ASSET_FILESIZES} from '../../utils/cdnTransformation';
|
|
40
|
+
|
|
41
|
+
import { containsBase64Images } from '../../utils/content';
|
|
40
42
|
import { CUSTOMER_BARCODE_TAG } from '../../containers/App/constants';
|
|
41
43
|
import injectReducer from '../../utils/injectReducer';
|
|
42
44
|
import v2EmailReducer from './reducer';
|
|
@@ -1176,6 +1178,13 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
|
|
|
1176
1178
|
reader.onload = () => {
|
|
1177
1179
|
this.setState({ addLanguageType: "upload"}, () => {
|
|
1178
1180
|
const text = reader.result;
|
|
1181
|
+
|
|
1182
|
+
// Check for base64 images in HTML content
|
|
1183
|
+
containsBase64Images({content:text, CapNotification, callback:()=>{
|
|
1184
|
+
document.getElementById("filename").value = "";
|
|
1185
|
+
this.setState({showModal: false});
|
|
1186
|
+
}});
|
|
1187
|
+
|
|
1179
1188
|
this.props.templatesActions.handleHtmlUpload(text);
|
|
1180
1189
|
document.getElementById("filename").value = "";
|
|
1181
1190
|
this.setState({showModal: false});
|
|
@@ -298,4 +298,8 @@ export default defineMessages({
|
|
|
298
298
|
id: 'creatives.containersV2.Email.addLabel',
|
|
299
299
|
defaultMessage: 'Add label',
|
|
300
300
|
},
|
|
301
|
+
"base64ImageError": {
|
|
302
|
+
id: 'creatives.containersV2.Email.base64ImageError',
|
|
303
|
+
defaultMessage: 'Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.',
|
|
304
|
+
},
|
|
301
305
|
});
|
|
@@ -10,6 +10,7 @@ import { EMAIL } from '../../CreativesContainer/constants';
|
|
|
10
10
|
import messages from '../messages';
|
|
11
11
|
import { STEPS } from '../constants';
|
|
12
12
|
import { EMAIL_CREATE_MODES } from '../constants';
|
|
13
|
+
import { containsBase64Images } from '../../../utils/content';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Custom hook to handle EmailWrapper component business logic
|
|
@@ -166,6 +167,10 @@ const useEmailWrapper = ({
|
|
|
166
167
|
handleZipUploadError();
|
|
167
168
|
return;
|
|
168
169
|
}
|
|
170
|
+
|
|
171
|
+
// Check for base64 images in HTML content
|
|
172
|
+
containsBase64Images({content:text, CapNotification});
|
|
173
|
+
|
|
169
174
|
setModeContent({ file });
|
|
170
175
|
templatesActions.handleHtmlUpload(text);
|
|
171
176
|
};
|
|
@@ -263,6 +263,7 @@ exports[`Creatives line image carousel test/> should render 1`] = `
|
|
|
263
263
|
"creatives.componentsV2.FTP.message": "Message",
|
|
264
264
|
"creatives.componentsV2.FTP.search": "Search",
|
|
265
265
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
266
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
266
267
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
267
268
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
268
269
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -3945,6 +3946,7 @@ exports[`Creatives line image carousel test/> should render 2`] = `
|
|
|
3945
3946
|
"creatives.componentsV2.FTP.message": "Message",
|
|
3946
3947
|
"creatives.componentsV2.FTP.search": "Search",
|
|
3947
3948
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
3949
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
3948
3950
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
3949
3951
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
3950
3952
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -7766,6 +7768,7 @@ exports[`Creatives line image carousel test/> should render 3`] = `
|
|
|
7766
7768
|
"creatives.componentsV2.FTP.message": "Message",
|
|
7767
7769
|
"creatives.componentsV2.FTP.search": "Search",
|
|
7768
7770
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
7771
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
7769
7772
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
7770
7773
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
7771
7774
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -263,6 +263,7 @@ exports[`line wrapper test/> should render line component new 1`] = `
|
|
|
263
263
|
"creatives.componentsV2.FTP.message": "Message",
|
|
264
264
|
"creatives.componentsV2.FTP.search": "Search",
|
|
265
265
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
266
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
266
267
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
267
268
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
268
269
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -19535,6 +19536,7 @@ exports[`line wrapper test/> should render line component old 1`] = `
|
|
|
19535
19536
|
"creatives.componentsV2.FTP.message": "Message",
|
|
19536
19537
|
"creatives.componentsV2.FTP.search": "Search",
|
|
19537
19538
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
19539
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
19538
19540
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
19539
19541
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
19540
19542
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -263,6 +263,7 @@ exports[`line wrapper test/> should render create mode 1`] = `
|
|
|
263
263
|
"creatives.componentsV2.FTP.message": "Message",
|
|
264
264
|
"creatives.componentsV2.FTP.search": "Search",
|
|
265
265
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
266
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
266
267
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
267
268
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
268
269
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -18255,6 +18256,7 @@ new message content.",
|
|
|
18255
18256
|
"creatives.componentsV2.FTP.message": "Message",
|
|
18256
18257
|
"creatives.componentsV2.FTP.search": "Search",
|
|
18257
18258
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
18259
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
18258
18260
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
18259
18261
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
18260
18262
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -20800,6 +20802,7 @@ new message content.",
|
|
|
20800
20802
|
"creatives.componentsV2.FTP.message": "Message",
|
|
20801
20803
|
"creatives.componentsV2.FTP.search": "Search",
|
|
20802
20804
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
20805
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
20803
20806
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
20804
20807
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
20805
20808
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -23776,6 +23779,7 @@ new message content.",
|
|
|
23776
23779
|
"creatives.componentsV2.FTP.message": "Message",
|
|
23777
23780
|
"creatives.componentsV2.FTP.search": "Search",
|
|
23778
23781
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
23782
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
23779
23783
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
23780
23784
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
23781
23785
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -26029,6 +26033,7 @@ new message content.",
|
|
|
26029
26033
|
"creatives.componentsV2.FTP.message": "Message",
|
|
26030
26034
|
"creatives.componentsV2.FTP.search": "Search",
|
|
26031
26035
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
26036
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
26032
26037
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
26033
26038
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
26034
26039
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -28303,6 +28308,7 @@ new message content.",
|
|
|
28303
28308
|
"creatives.componentsV2.FTP.message": "Message",
|
|
28304
28309
|
"creatives.componentsV2.FTP.search": "Search",
|
|
28305
28310
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
28311
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
28306
28312
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
28307
28313
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
28308
28314
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -30589,6 +30595,7 @@ new message content.",
|
|
|
30589
30595
|
"creatives.componentsV2.FTP.message": "Message",
|
|
30590
30596
|
"creatives.componentsV2.FTP.search": "Search",
|
|
30591
30597
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
30598
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
30592
30599
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
30593
30600
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
30594
30601
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -32860,6 +32867,7 @@ exports[`line wrapper test/> should render create mode 2`] = `
|
|
|
32860
32867
|
"creatives.componentsV2.FTP.message": "Message",
|
|
32861
32868
|
"creatives.componentsV2.FTP.search": "Search",
|
|
32862
32869
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
32870
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
32863
32871
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
32864
32872
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
32865
32873
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -58138,6 +58146,7 @@ new message content.",
|
|
|
58138
58146
|
"creatives.componentsV2.FTP.message": "Message",
|
|
58139
58147
|
"creatives.componentsV2.FTP.search": "Search",
|
|
58140
58148
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
58149
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
58141
58150
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
58142
58151
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
58143
58152
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -60875,6 +60884,7 @@ new message content.",
|
|
|
60875
60884
|
"creatives.componentsV2.FTP.message": "Message",
|
|
60876
60885
|
"creatives.componentsV2.FTP.search": "Search",
|
|
60877
60886
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
60887
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
60878
60888
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
60879
60889
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
60880
60890
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -64208,6 +64218,7 @@ new message content.",
|
|
|
64208
64218
|
"creatives.componentsV2.FTP.message": "Message",
|
|
64209
64219
|
"creatives.componentsV2.FTP.search": "Search",
|
|
64210
64220
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
64221
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
64211
64222
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
64212
64223
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
64213
64224
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -66945,6 +66956,7 @@ new message content.",
|
|
|
66945
66956
|
"creatives.componentsV2.FTP.message": "Message",
|
|
66946
66957
|
"creatives.componentsV2.FTP.search": "Search",
|
|
66947
66958
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
66959
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
66948
66960
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
66949
66961
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
66950
66962
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -70651,6 +70663,7 @@ new message content.",
|
|
|
70651
70663
|
"creatives.componentsV2.FTP.message": "Message",
|
|
70652
70664
|
"creatives.componentsV2.FTP.search": "Search",
|
|
70653
70665
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
70666
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
70654
70667
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
70655
70668
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
70656
70669
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -73830,6 +73843,7 @@ new message content.",
|
|
|
73830
73843
|
"creatives.componentsV2.FTP.message": "Message",
|
|
73831
73844
|
"creatives.componentsV2.FTP.search": "Search",
|
|
73832
73845
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
73846
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
73833
73847
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
73834
73848
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
73835
73849
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -76865,6 +76879,7 @@ new message content.",
|
|
|
76865
76879
|
"creatives.componentsV2.FTP.message": "Message",
|
|
76866
76880
|
"creatives.componentsV2.FTP.search": "Search",
|
|
76867
76881
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
76882
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
76868
76883
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
76869
76884
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
76870
76885
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -79911,6 +79926,7 @@ new message content.",
|
|
|
79911
79926
|
"creatives.componentsV2.FTP.message": "Message",
|
|
79912
79927
|
"creatives.componentsV2.FTP.search": "Search",
|
|
79913
79928
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
79929
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
79914
79930
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
79915
79931
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
79916
79932
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -85719,6 +85735,7 @@ new message content.",
|
|
|
85719
85735
|
"creatives.componentsV2.FTP.message": "Message",
|
|
85720
85736
|
"creatives.componentsV2.FTP.search": "Search",
|
|
85721
85737
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
85738
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
85722
85739
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
85723
85740
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
85724
85741
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -88870,6 +88887,7 @@ new message content.",
|
|
|
88870
88887
|
"creatives.componentsV2.FTP.message": "Message",
|
|
88871
88888
|
"creatives.componentsV2.FTP.search": "Search",
|
|
88872
88889
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
88890
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
88873
88891
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
88874
88892
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
88875
88893
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -91952,6 +91970,7 @@ new message content.",
|
|
|
91952
91970
|
"creatives.componentsV2.FTP.message": "Message",
|
|
91953
91971
|
"creatives.componentsV2.FTP.search": "Search",
|
|
91954
91972
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
91973
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
91955
91974
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
91956
91975
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
91957
91976
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -94933,6 +94952,7 @@ new message content.",
|
|
|
94933
94952
|
"creatives.componentsV2.FTP.message": "Message",
|
|
94934
94953
|
"creatives.componentsV2.FTP.search": "Search",
|
|
94935
94954
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
94955
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
94936
94956
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
94937
94957
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
94938
94958
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -97674,6 +97694,7 @@ new message content.",
|
|
|
97674
97694
|
"creatives.componentsV2.FTP.message": "Message",
|
|
97675
97695
|
"creatives.componentsV2.FTP.search": "Search",
|
|
97676
97696
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
97697
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
97677
97698
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
97678
97699
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
97679
97700
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -100348,6 +100369,7 @@ new message content.",
|
|
|
100348
100369
|
"creatives.componentsV2.FTP.message": "Message",
|
|
100349
100370
|
"creatives.componentsV2.FTP.search": "Search",
|
|
100350
100371
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
100372
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
100351
100373
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
100352
100374
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
100353
100375
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -102601,6 +102623,7 @@ new message content.",
|
|
|
102601
102623
|
"creatives.componentsV2.FTP.message": "Message",
|
|
102602
102624
|
"creatives.componentsV2.FTP.search": "Search",
|
|
102603
102625
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
102626
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
102604
102627
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
102605
102628
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
102606
102629
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -104875,6 +104898,7 @@ new message content.",
|
|
|
104875
104898
|
"creatives.componentsV2.FTP.message": "Message",
|
|
104876
104899
|
"creatives.componentsV2.FTP.search": "Search",
|
|
104877
104900
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
104901
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
104878
104902
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
104879
104903
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
104880
104904
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|
|
@@ -107161,6 +107185,7 @@ new message content.",
|
|
|
107161
107185
|
"creatives.componentsV2.FTP.message": "Message",
|
|
107162
107186
|
"creatives.componentsV2.FTP.search": "Search",
|
|
107163
107187
|
"creatives.componentsV2.Footer.header": "This is the Footer component !",
|
|
107188
|
+
"creatives.componentsV2.FormBuilder.base64ImageError": "Base64 images are not allowed. Please upload your image to a gallery and use it, or add the image URL instead.",
|
|
107164
107189
|
"creatives.componentsV2.FormBuilder.cancel": "Cancel",
|
|
107165
107190
|
"creatives.componentsV2.FormBuilder.contentNotValidLanguage": "Content is not valid for language:",
|
|
107166
107191
|
"creatives.componentsV2.FormBuilder.dragAndDrop": "Drag and drop image here",
|