@capillarytech/creatives-library 7.16.9 → 7.16.10
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/app.js +2 -2
- package/components/TemplatePreview/index.js +0 -1
- package/containers/Cap/sagas.js +3 -4
- package/package.json +1 -1
- package/services/api.js +9 -1
- package/styles/vendor/semantic/src/definitions/collections/form.less +2 -2
- package/styles/vendor/semantic/src/definitions/elements/flag.less +1 -1
- package/styles/vendor/semantic/src/definitions/elements/icon.less +1 -0
- package/styles/vendor/semantic/src/definitions/globals/site.less +1 -1
- package/utils/smsCharCountV2.js +13 -0
- package/utils/test-utils.js +17 -0
- package/v2Components/FormBuilder/index.js +28 -4
- package/v2Containers/Cap/sagas.js +3 -4
- package/v2Containers/ChannelTemplates/actions.js +20 -0
- package/v2Containers/ChannelTemplates/constants.js +8 -0
- package/v2Containers/ChannelTemplates/index.js +47 -0
- package/v2Containers/ChannelTemplates/messages.js +13 -0
- package/v2Containers/ChannelTemplates/reducer.js +34 -0
- package/v2Containers/ChannelTemplates/sagas.js +32 -0
- package/v2Containers/ChannelTemplates/selectors.js +25 -0
- package/v2Containers/CreativesContainer/constants.js +2 -0
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +8 -0
- package/v2Containers/Line/Container/Video/index.js +1 -1
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +9 -3
- package/v2Containers/Sms/Create/actions.js +9 -0
- package/v2Containers/Sms/Create/constants.js +2 -0
- package/v2Containers/Sms/Create/index.js +12 -0
- package/v2Containers/Sms/Create/sagas.js +19 -3
- package/v2Containers/Sms/Create/tests/sagas.test.js +82 -0
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +16 -0
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +52 -0
package/app.js
CHANGED
|
@@ -38,8 +38,6 @@ const store = configureStore(initialState, browserHistory);
|
|
|
38
38
|
const history = syncHistoryWithStore(browserHistory, store, {
|
|
39
39
|
selectLocationState: makeSelectLocationState(),
|
|
40
40
|
});
|
|
41
|
-
const BUGSNAG_APP_VERSION = `creatives-ui__${new Date().getTime()}`;
|
|
42
|
-
const BUGSNAG_API_KEY = 'c4d96446438ff7dc7c08da08ef94c5b2';
|
|
43
41
|
|
|
44
42
|
const bugSnagErrorCallback = (event) => {
|
|
45
43
|
const { app: { releaseStage } = {}, originalError } = event || {};
|
|
@@ -89,7 +87,9 @@ const bugSnagErrorCallback = (event) => {
|
|
|
89
87
|
};
|
|
90
88
|
|
|
91
89
|
Bugsnag.start({
|
|
90
|
+
// eslint-disable-next-line no-undef
|
|
92
91
|
appVersion: BUGSNAG_APP_VERSION,
|
|
92
|
+
// eslint-disable-next-line no-undef
|
|
93
93
|
apiKey: BUGSNAG_API_KEY,
|
|
94
94
|
releaseStage: window.location.hostname,
|
|
95
95
|
plugins: [new BugsnagPluginReact()],
|
|
@@ -27,7 +27,6 @@ const wechatBody = require('./assets/images/WECHAT_5x.png');
|
|
|
27
27
|
const smsBody = require('./assets/images/mobile.svg');
|
|
28
28
|
const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
|
|
29
29
|
const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
|
|
30
|
-
const lineVideoPlaceholder = require('../../assets/rich-video-placeholder.svg');
|
|
31
30
|
import { CAP_COLOR_03, CAP_WHITE, FONT_COLOR_01, CAP_G08, CAP_G06 } from '@capillarytech/cap-ui-library/styled/variables';
|
|
32
31
|
import { TEMPLATE, IMAGE_CAROUSEL, IMAGE_MAP_CAMEL_CASE, IMAGE, STICKER, TEXT, VIDEO } from '../../v2Containers/Line/Container/constants';
|
|
33
32
|
|
package/containers/Cap/sagas.js
CHANGED
|
@@ -7,7 +7,7 @@ import * as types from './constants';
|
|
|
7
7
|
import config from '../../config/app';
|
|
8
8
|
// import {makeSelectOrgId} from './selectors';
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
function* authorize(user) {
|
|
11
11
|
try {
|
|
12
12
|
const res = yield call(Api.authorize, user);
|
|
13
13
|
yield call(LocalStorage.saveItem, 'token', res.token);
|
|
@@ -35,14 +35,13 @@ function* switchOrg({orgID}) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
function* loginFlow() {
|
|
39
|
+
const condition = true;
|
|
40
40
|
while (condition) {
|
|
41
41
|
const { user } = yield take(types.LOGIN_REQUEST);
|
|
42
42
|
const task = yield fork(authorize, user);
|
|
43
43
|
const action = yield take([types.LOGOUT_REQUEST, types.LOGIN_FAILURE]);
|
|
44
44
|
if (action.type === types.LOGOUT_REQUEST) {
|
|
45
|
-
condition = false;
|
|
46
45
|
yield cancel(task);
|
|
47
46
|
}
|
|
48
47
|
// yield call(LocalStorage.clearItem, 'token');
|
package/package.json
CHANGED
package/services/api.js
CHANGED
|
@@ -498,4 +498,12 @@ export const getCdnTransformationConfig = () => {
|
|
|
498
498
|
export const getS3UrlFileSizes = (data) => {
|
|
499
499
|
const url = `${API_ENDPOINT}/assets/files/metadata`;
|
|
500
500
|
return request(url, getAPICallObject('POST', data));
|
|
501
|
-
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
// TODO: Update this url with Aira node API
|
|
504
|
+
export const getAiSuggestions = (data) => {
|
|
505
|
+
const url = `https://capgpt.chinmayjain.live/chat-completion`;
|
|
506
|
+
return request(url, getAPICallObject('POST', {...data,
|
|
507
|
+
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiY2hpbm1heWphaW4wOEBnbWFpbC5jb20iLCJpYXQiOjE2ODE3OTc5NzN9.-o_9fiZqvrdx_prcW0Qicu1fKVJU2ysO5t4g9HkYb2M"
|
|
508
|
+
}));
|
|
509
|
+
};
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
margin: 0em;
|
|
116
116
|
outline: none;
|
|
117
117
|
-webkit-appearance: none;
|
|
118
|
-
|
|
118
|
+
tap-highlight-color: rgba(255, 255, 255, 0);
|
|
119
119
|
|
|
120
120
|
line-height: @inputLineHeight;
|
|
121
121
|
padding: @inputPadding;
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
.ui.form textarea {
|
|
134
134
|
margin: 0em;
|
|
135
135
|
-webkit-appearance: none;
|
|
136
|
-
|
|
136
|
+
tap-highlight-color: rgba(255, 255, 255, 0);
|
|
137
137
|
|
|
138
138
|
padding: @textAreaPadding;
|
|
139
139
|
font-size: @textAreaFontSize;
|
package/utils/smsCharCountV2.js
CHANGED
|
@@ -30,6 +30,19 @@ function charToSpan(chr, coding, isUnicodeEnabled) {
|
|
|
30
30
|
return <span className={isUnicode ? 'unicode-disabled' : ''}>{isUnicode ? ` \u2588 ` : chr}</span>
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
function getUHDHtml(parts, part) {
|
|
34
|
+
if (parts < 15) {
|
|
35
|
+
udh.find('.udh-total').html('0x0' + parts.toString(16));
|
|
36
|
+
} else {
|
|
37
|
+
udh.find('.udh-total').html('0x' + parts.toString(16));
|
|
38
|
+
}
|
|
39
|
+
if (part < 15) {
|
|
40
|
+
udh.find('.udh-part').html('0x0' + part.toString(16));
|
|
41
|
+
} else {
|
|
42
|
+
udh.find('.udh-part').html('0x' + part.toString(16));
|
|
43
|
+
}
|
|
44
|
+
return udh;
|
|
45
|
+
}
|
|
33
46
|
export function checkUnicode(content) {
|
|
34
47
|
var chars_arr = content.split("");
|
|
35
48
|
for (let i = 0; i < chars_arr.length; i++) {
|
package/utils/test-utils.js
CHANGED
|
@@ -42,5 +42,22 @@ function renderWithRouter(
|
|
|
42
42
|
// re-export everything
|
|
43
43
|
export * from '@testing-library/react';
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Custom text matcher to find element if text is broken/made up of multiple elements.
|
|
47
|
+
* @param {string or regex} textMatch
|
|
48
|
+
* @returns for string entire text should match, use regex for partial matching.
|
|
49
|
+
*/
|
|
50
|
+
export function textContentMatcher(textMatch) {
|
|
51
|
+
return function (_content, node) {
|
|
52
|
+
const hasText = (n) =>
|
|
53
|
+
node.textContent === textMatch || node.textContent.match(textMatch);
|
|
54
|
+
const nodeHasText = hasText(node);
|
|
55
|
+
const childrenDontHaveText = Array.from(n?.children || []).every(
|
|
56
|
+
(child) => !hasText(child),
|
|
57
|
+
);
|
|
58
|
+
return nodeHasText && childrenDontHaveText;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
45
62
|
// override render method
|
|
46
63
|
export { render, renderWithRouter };
|
|
@@ -11,9 +11,11 @@ import PropTypes from 'prop-types';
|
|
|
11
11
|
import React from 'react';
|
|
12
12
|
import _ from 'lodash';
|
|
13
13
|
import { Tabs, Table, Modal} from 'antd';
|
|
14
|
-
import {
|
|
14
|
+
import { connect } from 'react-redux';
|
|
15
|
+
import { CapSpin, CapDrawer, CapButton, CapInput, CapPopover, CapImage, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon, CapTooltip, CapAiSuggestions} from '@capillarytech/cap-ui-library';
|
|
15
16
|
import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
|
|
16
17
|
import LabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
|
|
18
|
+
import { createStructuredSelector } from 'reselect';
|
|
17
19
|
import { CAP_SPACE_12, CAP_SPACE_08, FONT_COLOR_05, FONT_COLOR_04 } from '@capillarytech/cap-ui-library/styled/variables';
|
|
18
20
|
import TemplatePreview from '../TemplatePreview';
|
|
19
21
|
import TagList from '../../v2Containers/TagList';
|
|
@@ -24,9 +26,10 @@ import EDMEditor from "../Edmeditor";
|
|
|
24
26
|
import BeeEditor from '../../v2Containers/BeeEditor';
|
|
25
27
|
import CustomPopOver from '../CustomPopOver';
|
|
26
28
|
import messages from './messages';
|
|
29
|
+
import { selectCurrentOrgDetails } from "../../v2Containers/Cap/selectors";
|
|
27
30
|
import './_formBuilder.scss';
|
|
28
31
|
import {updateCharCount, checkUnicode} from "../../utils/smsCharCountV2";
|
|
29
|
-
import { SMS, LINE } from '../../v2Containers/CreativesContainer/constants';
|
|
32
|
+
import { SMS, LINE, ENABLE_AI_SUGGESTIONS } from '../../v2Containers/CreativesContainer/constants';
|
|
30
33
|
import { validateIfTagClosed } from '../../utils/tagValidations';
|
|
31
34
|
import globalMessages from '../../v2Containers/Cap/messages';
|
|
32
35
|
import { convert } from 'html-to-text';
|
|
@@ -2278,6 +2281,12 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
2278
2281
|
const messageContent = isVersionEnable ? formData[`${currentTab - 1}`][val.id] : formData[val.id];
|
|
2279
2282
|
const { MISSING_TAG_ERROR, UNSUPPORTED_TAG_ERROR, TAG_BRACKET_COUNT_MISMATCH_ERROR } = errorMessageForTags;
|
|
2280
2283
|
const { formatMessage } = this.props.intl;
|
|
2284
|
+
|
|
2285
|
+
const { accessibleFeatures = [] } = this.props.currentOrgDetails || {};
|
|
2286
|
+
const hasAiSuggestionsEnabled = accessibleFeatures.includes(
|
|
2287
|
+
ENABLE_AI_SUGGESTIONS
|
|
2288
|
+
);
|
|
2289
|
+
|
|
2281
2290
|
let errorMessageText = false;
|
|
2282
2291
|
switch (errorType) {
|
|
2283
2292
|
case MISSING_TAG_ERROR:
|
|
@@ -2313,6 +2322,16 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
2313
2322
|
disabled={val.disabled}
|
|
2314
2323
|
cols={cols}
|
|
2315
2324
|
/>
|
|
2325
|
+
{this.props.schema.channel === "SMS" && this.props.fetchAiSuggestions && hasAiSuggestionsEnabled && (
|
|
2326
|
+
<CapAiSuggestions
|
|
2327
|
+
style={{ bottom: "1rem" }}
|
|
2328
|
+
text={messageContent || ""}
|
|
2329
|
+
setText={(x) => {
|
|
2330
|
+
this.updateFormData(x, val);
|
|
2331
|
+
}}
|
|
2332
|
+
getCompletions={this.props.fetchAiSuggestions}
|
|
2333
|
+
/>
|
|
2334
|
+
)}
|
|
2316
2335
|
</CapColumn>
|
|
2317
2336
|
);
|
|
2318
2337
|
}
|
|
@@ -3617,7 +3636,12 @@ FormBuilder.propTypes = {
|
|
|
3617
3636
|
setDrawerVisibility: PropTypes.bool,
|
|
3618
3637
|
capDrawerContent: PropTypes.array,
|
|
3619
3638
|
isFullMode: PropTypes.bool,
|
|
3620
|
-
|
|
3639
|
+
fetchAiSuggestions: PropTypes.func,
|
|
3640
|
+
currentOrgDetails: PropTypes.object,
|
|
3621
3641
|
};
|
|
3622
3642
|
|
|
3623
|
-
|
|
3643
|
+
const mapStateToProps = createStructuredSelector({
|
|
3644
|
+
currentOrgDetails: selectCurrentOrgDetails(),
|
|
3645
|
+
});
|
|
3646
|
+
|
|
3647
|
+
export default connect(mapStateToProps)(injectIntl(FormBuilder));
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from '../../v2Containers/App/constants';
|
|
14
14
|
// import {makeSelectOrgId} from './selectors';
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
function* authorize(user) {
|
|
17
17
|
try {
|
|
18
18
|
const res = yield call(Api.authorize, user);
|
|
19
19
|
yield call(LocalStorage.saveItem, 'token', res.token);
|
|
@@ -41,14 +41,13 @@ function* switchOrg({orgID}) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
function* loginFlow() {
|
|
45
|
+
const condition = true;
|
|
46
46
|
while (condition) {
|
|
47
47
|
const { user } = yield take(types.LOGIN_REQUEST);
|
|
48
48
|
const task = yield fork(authorize, user);
|
|
49
49
|
const action = yield take([types.LOGOUT_REQUEST_V2, types.LOGIN_FAILURE]);
|
|
50
50
|
if (action.type === types.LOGOUT_REQUEST_V2) {
|
|
51
|
-
condition = false;
|
|
52
51
|
yield cancel(task);
|
|
53
52
|
}
|
|
54
53
|
// yield call(LocalStorage.clearItem, 'token');
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* ChannelTemplates actions
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as types from './constants';
|
|
8
|
+
|
|
9
|
+
export function defaultAction() {
|
|
10
|
+
return {
|
|
11
|
+
type: types.DEFAULT_ACTION,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getTemplates(channel) {
|
|
16
|
+
return {
|
|
17
|
+
type: types.GET_TEMPLATES_REQUEST,
|
|
18
|
+
channel,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* ChannelTemplates
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { connect } from 'react-redux';
|
|
11
|
+
import { FormattedMessage } from 'react-intl';
|
|
12
|
+
import { bindActionCreators } from 'redux';
|
|
13
|
+
import { createStructuredSelector } from 'reselect';
|
|
14
|
+
import makeSelectChannelTemplates from './selectors';
|
|
15
|
+
import * as actions from './actions';
|
|
16
|
+
import messages from './messages';
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
export class ChannelTemplates extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
20
|
+
componentDidMount() {
|
|
21
|
+
this.props.actions.getTemplates(this.props.channel);
|
|
22
|
+
}
|
|
23
|
+
render() {
|
|
24
|
+
return (
|
|
25
|
+
<CardGrid
|
|
26
|
+
cardDataList={[]}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
ChannelTemplates.propTypes = {
|
|
33
|
+
actions: PropTypes.object.isRequired,
|
|
34
|
+
channel: PropTypes.string,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const mapStateToProps = createStructuredSelector({
|
|
38
|
+
ChannelTemplates: makeSelectChannelTemplates(),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
function mapDispatchToProps(dispatch) {
|
|
42
|
+
return {
|
|
43
|
+
actions: bindActionCreators(actions, dispatch),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default connect(mapStateToProps, mapDispatchToProps)(ChannelTemplates);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ChannelTemplates Messages
|
|
3
|
+
*
|
|
4
|
+
* This contains all the text for the ChannelTemplates component.
|
|
5
|
+
*/
|
|
6
|
+
import { defineMessages } from 'react-intl';
|
|
7
|
+
|
|
8
|
+
export default defineMessages({
|
|
9
|
+
header: {
|
|
10
|
+
id: 'creatives.containersV2.ChannelTemplates.header',
|
|
11
|
+
defaultMessage: 'This is ChannelTemplates container !',
|
|
12
|
+
},
|
|
13
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* ChannelTemplates reducer
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { fromJS } from 'immutable';
|
|
8
|
+
import * as types from './constants';
|
|
9
|
+
|
|
10
|
+
const initialState = fromJS({
|
|
11
|
+
loadingTemplates: true,
|
|
12
|
+
smsTemplates: [],
|
|
13
|
+
emailTemplates: [],
|
|
14
|
+
wechatTemplates: [],
|
|
15
|
+
mobilepushTemplates: [],
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function channelTemplatesReducer(state = initialState, action) {
|
|
19
|
+
const channelTemplates = `${action.channel}Templates`;
|
|
20
|
+
switch (action.type) {
|
|
21
|
+
case types.DEFAULT_ACTION:
|
|
22
|
+
return state;
|
|
23
|
+
case types.GET_TEMPLATES_REQUEST:
|
|
24
|
+
return state.set('loadingTemplates', true);
|
|
25
|
+
case types.GET_TEMPLATES_SUCESS:
|
|
26
|
+
return state.set('loadingTemplates', false).set(channelTemplates, action.templates);
|
|
27
|
+
case types.GET_TEMPLATES_FAILURE:
|
|
28
|
+
return state.set('loadingTemplates', false).set('error', action.error);
|
|
29
|
+
default:
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default channelTemplatesReducer;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { take, takeLatest, call, put, cancel } from 'redux-saga/effects';
|
|
2
|
+
import { LOCATION_CHANGE } from 'react-router-redux';
|
|
3
|
+
import * as Api from '../../services/api';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import * as types from './constants';
|
|
7
|
+
// Individual exports for testing
|
|
8
|
+
export function* defaultSaga() {
|
|
9
|
+
// See example in v2Containers/HomePage/sagas.js
|
|
10
|
+
}
|
|
11
|
+
function* getTemplates(action) {
|
|
12
|
+
try {
|
|
13
|
+
const req = {
|
|
14
|
+
channel: action.channel,
|
|
15
|
+
queryParams: action.query,
|
|
16
|
+
};
|
|
17
|
+
const res = call(Api.getAllTemplates, req);
|
|
18
|
+
put({type: types.GET_TEMPLATES_SUCESS, templates: res.response, channel: action.channel});
|
|
19
|
+
} catch (error) {
|
|
20
|
+
put({type: types.GET_TEMPLATES_FAILURE, error});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function* getTemplatesWatcher() {
|
|
24
|
+
const watcher = yield takeLatest(types.GET_TEMPLATES_REQUEST, getTemplates);
|
|
25
|
+
yield take(LOCATION_CHANGE);
|
|
26
|
+
yield cancel(watcher);
|
|
27
|
+
}
|
|
28
|
+
// All sagas to be loaded
|
|
29
|
+
export default [
|
|
30
|
+
defaultSaga,
|
|
31
|
+
getTemplatesWatcher,
|
|
32
|
+
];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createSelector } from 'reselect';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Direct selector to the channelTemplates state domain
|
|
5
|
+
*/
|
|
6
|
+
const selectChannelTemplatesDomain = () => (state) => state.get('templates');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Other specific selectors
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Default selector used by ChannelTemplates
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const makeSelectChannelTemplates = () => createSelector(
|
|
18
|
+
selectChannelTemplatesDomain(),
|
|
19
|
+
(substate) => substate.toJS()
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export default makeSelectChannelTemplates;
|
|
23
|
+
export {
|
|
24
|
+
selectChannelTemplatesDomain,
|
|
25
|
+
};
|
|
@@ -23,3 +23,5 @@ export const SHOW_CONTANER_LOADER = "app/CreativesContainer/SHOW_CONTANER_LOADER
|
|
|
23
23
|
export const HIDE_CONTAINER_LOADER = "app/CreativesContainer/HIDE_CONTAINER_LOADER";
|
|
24
24
|
|
|
25
25
|
export const WHATSAPP_HELP_DOC_LINK = "https://docs.capillarytech.com/docs/create-whatsapp-template";
|
|
26
|
+
|
|
27
|
+
export const ENABLE_AI_SUGGESTIONS = "ENABLE_AI_SUGGESTIONS";
|
|
@@ -5,7 +5,9 @@ exports[`Test SlideBoxContent container campaign message, add creative click rcs
|
|
|
5
5
|
className="add-creatives-section creatives-library-mode "
|
|
6
6
|
>
|
|
7
7
|
<CapSlideBox
|
|
8
|
+
closeIconPosition="right"
|
|
8
9
|
closeIconSize="m"
|
|
10
|
+
closeIconType="close"
|
|
9
11
|
content={
|
|
10
12
|
<SlideBoxContent
|
|
11
13
|
currentChannel="RCS"
|
|
@@ -76,7 +78,9 @@ exports[`Test SlideBoxContent container campaign message, add creative click wha
|
|
|
76
78
|
className="add-creatives-section creatives-library-mode "
|
|
77
79
|
>
|
|
78
80
|
<CapSlideBox
|
|
81
|
+
closeIconPosition="right"
|
|
79
82
|
closeIconSize="m"
|
|
83
|
+
closeIconType="close"
|
|
80
84
|
content={
|
|
81
85
|
<SlideBoxContent
|
|
82
86
|
currentChannel="WHATSAPP"
|
|
@@ -147,7 +151,9 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit all data
|
|
|
147
151
|
className="add-creatives-section creatives-library-mode "
|
|
148
152
|
>
|
|
149
153
|
<CapSlideBox
|
|
154
|
+
closeIconPosition="right"
|
|
150
155
|
closeIconSize="m"
|
|
156
|
+
closeIconType="close"
|
|
151
157
|
content={
|
|
152
158
|
<SlideBoxContent
|
|
153
159
|
currentChannel="WHATSAPP"
|
|
@@ -220,7 +226,9 @@ exports[`Test SlideBoxContent container campaign message, whatsapp edit min data
|
|
|
220
226
|
className="add-creatives-section creatives-library-mode "
|
|
221
227
|
>
|
|
222
228
|
<CapSlideBox
|
|
229
|
+
closeIconPosition="right"
|
|
223
230
|
closeIconSize="m"
|
|
231
|
+
closeIconType="close"
|
|
224
232
|
content={
|
|
225
233
|
<SlideBoxContent
|
|
226
234
|
currentChannel="WHATSAPP"
|
|
@@ -402,7 +402,7 @@ export const LineVideo = ({
|
|
|
402
402
|
width="230"
|
|
403
403
|
poster={imagePreview}
|
|
404
404
|
className="line-image-src"
|
|
405
|
-
onLoadedMetadata={() => updateMetadataLoaded()}
|
|
405
|
+
onLoadedMetadata={() => updateMetadataLoaded(true)}
|
|
406
406
|
onPlaying={() => updateIsPlaying(true)}
|
|
407
407
|
onPause={() => updateIsPlaying(false)}
|
|
408
408
|
onMouseOver={playVideo}
|
|
@@ -10117,7 +10117,9 @@ new message content.",
|
|
|
10117
10117
|
</Rcs__RcsFooter>
|
|
10118
10118
|
<CapSlideBox
|
|
10119
10119
|
className="rcs-fallback-preview"
|
|
10120
|
+
closeIconPosition="right"
|
|
10120
10121
|
closeIconSize="m"
|
|
10122
|
+
closeIconType="close"
|
|
10121
10123
|
content={
|
|
10122
10124
|
<React.Fragment>
|
|
10123
10125
|
<InjectIntl(TemplatePreview)
|
|
@@ -10163,7 +10165,7 @@ new message content.",
|
|
|
10163
10165
|
className="cap-slide-box-v2-container size-r right"
|
|
10164
10166
|
>
|
|
10165
10167
|
<div
|
|
10166
|
-
className="slidebox-header"
|
|
10168
|
+
className="slidebox-header-icon-right"
|
|
10167
10169
|
>
|
|
10168
10170
|
<CapHeading
|
|
10169
10171
|
type="h1"
|
|
@@ -22915,7 +22917,9 @@ new message content.",
|
|
|
22915
22917
|
</Rcs__RcsFooter>
|
|
22916
22918
|
<CapSlideBox
|
|
22917
22919
|
className="rcs-fallback-preview"
|
|
22920
|
+
closeIconPosition="right"
|
|
22918
22921
|
closeIconSize="m"
|
|
22922
|
+
closeIconType="close"
|
|
22919
22923
|
content={
|
|
22920
22924
|
<React.Fragment>
|
|
22921
22925
|
<InjectIntl(TemplatePreview)
|
|
@@ -22961,7 +22965,7 @@ new message content.",
|
|
|
22961
22965
|
className="cap-slide-box-v2-container size-r right"
|
|
22962
22966
|
>
|
|
22963
22967
|
<div
|
|
22964
|
-
className="slidebox-header"
|
|
22968
|
+
className="slidebox-header-icon-right"
|
|
22965
22969
|
>
|
|
22966
22970
|
<CapHeading
|
|
22967
22971
|
type="h1"
|
|
@@ -128167,7 +128171,9 @@ new message content.",
|
|
|
128167
128171
|
key="container"
|
|
128168
128172
|
>
|
|
128169
128173
|
<CapSlideBox
|
|
128174
|
+
closeIconPosition="right"
|
|
128170
128175
|
closeIconSize="m"
|
|
128176
|
+
closeIconType="close"
|
|
128171
128177
|
content={
|
|
128172
128178
|
<Connect(UserIsAuthenticated(Connect(InjectIntl(Templates))))
|
|
128173
128179
|
handlePeviewTemplate={[Function]}
|
|
@@ -128212,7 +128218,7 @@ new message content.",
|
|
|
128212
128218
|
className="cap-slide-box-v2-container size-xl right"
|
|
128213
128219
|
>
|
|
128214
128220
|
<div
|
|
128215
|
-
className="slidebox-header"
|
|
128221
|
+
className="slidebox-header-icon-right"
|
|
128216
128222
|
>
|
|
128217
128223
|
<CapHeading
|
|
128218
128224
|
type="h1"
|
|
@@ -25,3 +25,12 @@ export function defaultAction() {
|
|
|
25
25
|
type: types.DEFAULT_ACTION,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
|
|
29
|
+
export function getAiSuggestions(prompt, successCallback, failureCallback) {
|
|
30
|
+
return {
|
|
31
|
+
type: types.GET_AI_SUGGESTIONS,
|
|
32
|
+
prompt,
|
|
33
|
+
successCallback,
|
|
34
|
+
failureCallback,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -14,3 +14,5 @@ export const CREATE_TEMPLATE_FAILURE = 'app/v2Containers/Sms/Create/CREATE_TEMPL
|
|
|
14
14
|
export const CLEAR_CREATE_RESPONSE_REQUEST = 'app/v2Containers/Sms/Create/CLEAR_CREATE_RESPONSE_REQUEST';
|
|
15
15
|
export const CLEAR_CREATE_RESPONSE_SUCCESS = 'app/v2Containers/Sms/Create/CLEAR_CREATE_RESPONSE_SUCCESS';
|
|
16
16
|
export const CLEAR_CREATE_RESPONSE_FAILURE = 'app/v2Containers/Sms/Create/CLEAR_CREATE_RESPONSE_FAILURE';
|
|
17
|
+
|
|
18
|
+
export const GET_AI_SUGGESTIONS = 'app/v2Containers/Sms/Create/GET_AI_SUGGESTIONS';
|
|
@@ -900,6 +900,17 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
900
900
|
stopValidation = () => {
|
|
901
901
|
this.setState({startValidation: false});
|
|
902
902
|
}
|
|
903
|
+
|
|
904
|
+
getAiSuggestions = (prompt) => {
|
|
905
|
+
return new Promise((resolve, reject) => {
|
|
906
|
+
this.props.actions.getAiSuggestions(prompt, (result) => {
|
|
907
|
+
resolve(result);
|
|
908
|
+
}, (error) => {
|
|
909
|
+
reject(error);
|
|
910
|
+
})
|
|
911
|
+
})
|
|
912
|
+
}
|
|
913
|
+
|
|
903
914
|
saveFormData() {
|
|
904
915
|
//Logic to save in db etc
|
|
905
916
|
const formData = _.cloneDeep(this.state.formData);
|
|
@@ -989,6 +1000,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
989
1000
|
selectedOfferDetails={this.props.selectedOfferDetails}
|
|
990
1001
|
onTestContentClicked={this.props.onTestContentClicked}
|
|
991
1002
|
onPreviewContentClicked={this.props.onPreviewContentClicked}
|
|
1003
|
+
fetchAiSuggestions={this.getAiSuggestions}
|
|
992
1004
|
/>
|
|
993
1005
|
</CapColumn>
|
|
994
1006
|
</CapRow>
|
|
@@ -29,7 +29,23 @@ function* watchCreateTemplate() {
|
|
|
29
29
|
yield cancel(watcher);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
export function* getAiSuggestions({ prompt, successCallback, failureCallback }) {
|
|
33
|
+
try {
|
|
34
|
+
const result = yield call(Api.getAiSuggestions, {prompt});
|
|
35
|
+
yield successCallback(result);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
yield failureCallback(error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function* watchAiSuggestions() {
|
|
42
|
+
const watcher = yield takeLatest(
|
|
43
|
+
types.GET_AI_SUGGESTIONS,
|
|
44
|
+
getAiSuggestions
|
|
45
|
+
);
|
|
46
|
+
yield take(LOCATION_CHANGE);
|
|
47
|
+
yield cancel(watcher);
|
|
48
|
+
}
|
|
49
|
+
|
|
32
50
|
// All sagas to be loaded
|
|
33
|
-
export default [
|
|
34
|
-
watchCreateTemplate,
|
|
35
|
-
];
|
|
51
|
+
export default [watchCreateTemplate, watchAiSuggestions];
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { expectSaga } from "redux-saga-test-plan";
|
|
2
|
+
import { take, cancel, takeLatest } from "redux-saga/effects";
|
|
3
|
+
import * as matchers from "redux-saga-test-plan/matchers";
|
|
4
|
+
import { LOCATION_CHANGE } from "react-router-redux";
|
|
5
|
+
import { throwError } from "redux-saga-test-plan/providers";
|
|
6
|
+
import { createMockTask } from "redux-saga/utils";
|
|
7
|
+
import * as types from "../constants";
|
|
8
|
+
import { watchAiSuggestions, getAiSuggestions } from "../sagas";
|
|
9
|
+
import * as Api from "../../../../services/api";
|
|
10
|
+
|
|
11
|
+
describe("getAiSuggestions saga", () => {
|
|
12
|
+
it("Should handle valid response from api", () => {
|
|
13
|
+
const successCallback = () => {};
|
|
14
|
+
const failureCallback = () => {};
|
|
15
|
+
const action = {
|
|
16
|
+
type: types.GET_AI_SUGGESTIONS,
|
|
17
|
+
prompt: {},
|
|
18
|
+
successCallback,
|
|
19
|
+
failureCallback,
|
|
20
|
+
};
|
|
21
|
+
expectSaga(getAiSuggestions, action)
|
|
22
|
+
.provide([
|
|
23
|
+
[
|
|
24
|
+
matchers.call.fn(Api.getAiSuggestions),
|
|
25
|
+
{
|
|
26
|
+
success: true,
|
|
27
|
+
status: {
|
|
28
|
+
isError: false,
|
|
29
|
+
code: 200,
|
|
30
|
+
message: "success",
|
|
31
|
+
},
|
|
32
|
+
message: "Meta data fetched successfully",
|
|
33
|
+
response: {
|
|
34
|
+
"https://response.com": 1400,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
[matchers.call.fn(successCallback)],
|
|
39
|
+
])
|
|
40
|
+
.run();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("Should handles error thrown from api", () => {
|
|
44
|
+
const successCallback = () => {};
|
|
45
|
+
const failureCallback = () => {};
|
|
46
|
+
const action = {
|
|
47
|
+
type: types.GET_AI_SUGGESTIONS,
|
|
48
|
+
prompt: {},
|
|
49
|
+
successCallback,
|
|
50
|
+
failureCallback,
|
|
51
|
+
};
|
|
52
|
+
expectSaga(getAiSuggestions, action)
|
|
53
|
+
.provide([[matchers.call.fn(Api.getAiSuggestions), throwError()]])
|
|
54
|
+
.run();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe("watchAiSuggestions saga", () => {
|
|
59
|
+
let generator = null;
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
generator = watchAiSuggestions();
|
|
62
|
+
});
|
|
63
|
+
it("Should handle valid response from api", () => {
|
|
64
|
+
const progress1 = generator.next();
|
|
65
|
+
const mockTask = takeLatest(types.GET_AI_SUGGESTIONS, getAiSuggestions);
|
|
66
|
+
expect(progress1.value).toEqual(mockTask);
|
|
67
|
+
const progress2 = generator.next();
|
|
68
|
+
expect(progress2.value).toEqual(take(LOCATION_CHANGE));
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("Should handle LOCATION_CHANGE action and cancel the watcher", () => {
|
|
72
|
+
generator = watchAiSuggestions();
|
|
73
|
+
const mockTask = createMockTask();
|
|
74
|
+
|
|
75
|
+
expect(generator.next().value).toEqual(
|
|
76
|
+
takeLatest(types.GET_AI_SUGGESTIONS, getAiSuggestions)
|
|
77
|
+
);
|
|
78
|
+
expect(generator.next(mockTask).value).toEqual(take(LOCATION_CHANGE));
|
|
79
|
+
expect(generator.next().value).toEqual(cancel(mockTask));
|
|
80
|
+
expect(generator.next().done).toEqual(true);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -219,7 +219,9 @@ exports[`Test Templates container Should render temlates when whatsapp templates
|
|
|
219
219
|
<CapRow />
|
|
220
220
|
<CapRow>
|
|
221
221
|
<CapSlideBox
|
|
222
|
+
closeIconPosition="right"
|
|
222
223
|
closeIconSize="m"
|
|
224
|
+
closeIconType="close"
|
|
223
225
|
content={
|
|
224
226
|
<CardGrid
|
|
225
227
|
className=""
|
|
@@ -511,7 +513,9 @@ exports[`Test Templates container Should render temlates when whatsapp templates
|
|
|
511
513
|
<CapRow />
|
|
512
514
|
<CapRow>
|
|
513
515
|
<CapSlideBox
|
|
516
|
+
closeIconPosition="right"
|
|
514
517
|
closeIconSize="m"
|
|
518
|
+
closeIconType="close"
|
|
515
519
|
content={
|
|
516
520
|
<CardGrid
|
|
517
521
|
className=""
|
|
@@ -978,7 +982,9 @@ Click {{3}} to unsubscribe",
|
|
|
978
982
|
<CapRow />
|
|
979
983
|
<CapRow>
|
|
980
984
|
<CapSlideBox
|
|
985
|
+
closeIconPosition="right"
|
|
981
986
|
closeIconSize="m"
|
|
987
|
+
closeIconType="close"
|
|
982
988
|
content={
|
|
983
989
|
<CardGrid
|
|
984
990
|
className=""
|
|
@@ -1413,7 +1419,9 @@ Click {{3}} to unsubscribe",
|
|
|
1413
1419
|
<CapRow />
|
|
1414
1420
|
<CapRow>
|
|
1415
1421
|
<CapSlideBox
|
|
1422
|
+
closeIconPosition="right"
|
|
1416
1423
|
closeIconSize="m"
|
|
1424
|
+
closeIconType="close"
|
|
1417
1425
|
content={
|
|
1418
1426
|
<CardGrid
|
|
1419
1427
|
className=""
|
|
@@ -1848,7 +1856,9 @@ Click {{3}} to unsubscribe",
|
|
|
1848
1856
|
<CapRow />
|
|
1849
1857
|
<CapRow>
|
|
1850
1858
|
<CapSlideBox
|
|
1859
|
+
closeIconPosition="right"
|
|
1851
1860
|
closeIconSize="m"
|
|
1861
|
+
closeIconType="close"
|
|
1852
1862
|
content={
|
|
1853
1863
|
<CardGrid
|
|
1854
1864
|
className=""
|
|
@@ -2110,7 +2120,9 @@ exports[`Test Templates container Test removing all whatsapp filterss 1`] = `
|
|
|
2110
2120
|
<CapRow />
|
|
2111
2121
|
<CapRow>
|
|
2112
2122
|
<CapSlideBox
|
|
2123
|
+
closeIconPosition="right"
|
|
2113
2124
|
closeIconSize="m"
|
|
2125
|
+
closeIconType="close"
|
|
2114
2126
|
content={
|
|
2115
2127
|
<CardGrid
|
|
2116
2128
|
className=""
|
|
@@ -2346,7 +2358,9 @@ exports[`Test Templates container Test removing all whatsapp filterss 2`] = `
|
|
|
2346
2358
|
<CapRow />
|
|
2347
2359
|
<CapRow>
|
|
2348
2360
|
<CapSlideBox
|
|
2361
|
+
closeIconPosition="right"
|
|
2349
2362
|
closeIconSize="m"
|
|
2363
|
+
closeIconType="close"
|
|
2350
2364
|
content={
|
|
2351
2365
|
<CardGrid
|
|
2352
2366
|
className=""
|
|
@@ -2582,7 +2596,9 @@ exports[`Test Templates container Test removing single filter 1`] = `
|
|
|
2582
2596
|
<CapRow />
|
|
2583
2597
|
<CapRow>
|
|
2584
2598
|
<CapSlideBox
|
|
2599
|
+
closeIconPosition="right"
|
|
2585
2600
|
closeIconSize="m"
|
|
2601
|
+
closeIconType="close"
|
|
2586
2602
|
content={
|
|
2587
2603
|
<CardGrid
|
|
2588
2604
|
className=""
|
|
@@ -3959,6 +3959,7 @@ new message content.",
|
|
|
3959
3959
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
3960
3960
|
>
|
|
3961
3961
|
<CapSelect
|
|
3962
|
+
getMenuOptionsProps={[Function]}
|
|
3962
3963
|
id="select-whatsapp-category"
|
|
3963
3964
|
onChange={[Function]}
|
|
3964
3965
|
options={
|
|
@@ -5061,6 +5062,7 @@ new message content.",
|
|
|
5061
5062
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
5062
5063
|
>
|
|
5063
5064
|
<CapSelect
|
|
5065
|
+
getMenuOptionsProps={[Function]}
|
|
5064
5066
|
id="select-whatsapp-language"
|
|
5065
5067
|
onChange={[Function]}
|
|
5066
5068
|
options={
|
|
@@ -17648,6 +17650,7 @@ new message content.",
|
|
|
17648
17650
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
17649
17651
|
>
|
|
17650
17652
|
<CapSelect
|
|
17653
|
+
getMenuOptionsProps={[Function]}
|
|
17651
17654
|
id="select-whatsapp-category"
|
|
17652
17655
|
onChange={[Function]}
|
|
17653
17656
|
options={
|
|
@@ -18750,6 +18753,7 @@ new message content.",
|
|
|
18750
18753
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
18751
18754
|
>
|
|
18752
18755
|
<CapSelect
|
|
18756
|
+
getMenuOptionsProps={[Function]}
|
|
18753
18757
|
id="select-whatsapp-language"
|
|
18754
18758
|
onChange={[Function]}
|
|
18755
18759
|
options={
|
|
@@ -31734,6 +31738,7 @@ new message content.",
|
|
|
31734
31738
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
31735
31739
|
>
|
|
31736
31740
|
<CapSelect
|
|
31741
|
+
getMenuOptionsProps={[Function]}
|
|
31737
31742
|
id="select-whatsapp-category"
|
|
31738
31743
|
onChange={[Function]}
|
|
31739
31744
|
options={
|
|
@@ -32836,6 +32841,7 @@ new message content.",
|
|
|
32836
32841
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
32837
32842
|
>
|
|
32838
32843
|
<CapSelect
|
|
32844
|
+
getMenuOptionsProps={[Function]}
|
|
32839
32845
|
id="select-whatsapp-language"
|
|
32840
32846
|
onChange={[Function]}
|
|
32841
32847
|
options={
|
|
@@ -45012,6 +45018,7 @@ new message content.",
|
|
|
45012
45018
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
45013
45019
|
>
|
|
45014
45020
|
<CapSelect
|
|
45021
|
+
getMenuOptionsProps={[Function]}
|
|
45015
45022
|
id="select-whatsapp-category"
|
|
45016
45023
|
onChange={[Function]}
|
|
45017
45024
|
options={
|
|
@@ -46114,6 +46121,7 @@ new message content.",
|
|
|
46114
46121
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
46115
46122
|
>
|
|
46116
46123
|
<CapSelect
|
|
46124
|
+
getMenuOptionsProps={[Function]}
|
|
46117
46125
|
id="select-whatsapp-language"
|
|
46118
46126
|
onChange={[Function]}
|
|
46119
46127
|
options={
|
|
@@ -58936,6 +58944,7 @@ new message content.",
|
|
|
58936
58944
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
58937
58945
|
>
|
|
58938
58946
|
<CapSelect
|
|
58947
|
+
getMenuOptionsProps={[Function]}
|
|
58939
58948
|
id="select-whatsapp-category"
|
|
58940
58949
|
onChange={[Function]}
|
|
58941
58950
|
options={
|
|
@@ -59966,6 +59975,7 @@ new message content.",
|
|
|
59966
59975
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
59967
59976
|
>
|
|
59968
59977
|
<CapSelect
|
|
59978
|
+
getMenuOptionsProps={[Function]}
|
|
59969
59979
|
id="select-whatsapp-language"
|
|
59970
59980
|
onChange={[Function]}
|
|
59971
59981
|
options={
|
|
@@ -73162,6 +73172,7 @@ new message content.",
|
|
|
73162
73172
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
73163
73173
|
>
|
|
73164
73174
|
<CapSelect
|
|
73175
|
+
getMenuOptionsProps={[Function]}
|
|
73165
73176
|
id="select-whatsapp-category"
|
|
73166
73177
|
onChange={[Function]}
|
|
73167
73178
|
options={
|
|
@@ -74192,6 +74203,7 @@ new message content.",
|
|
|
74192
74203
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
74193
74204
|
>
|
|
74194
74205
|
<CapSelect
|
|
74206
|
+
getMenuOptionsProps={[Function]}
|
|
74195
74207
|
id="select-whatsapp-language"
|
|
74196
74208
|
onChange={[Function]}
|
|
74197
74209
|
options={
|
|
@@ -88113,6 +88125,7 @@ new message content.",
|
|
|
88113
88125
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
88114
88126
|
>
|
|
88115
88127
|
<CapSelect
|
|
88128
|
+
getMenuOptionsProps={[Function]}
|
|
88116
88129
|
id="select-whatsapp-category"
|
|
88117
88130
|
onChange={[Function]}
|
|
88118
88131
|
options={
|
|
@@ -89143,6 +89156,7 @@ new message content.",
|
|
|
89143
89156
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
89144
89157
|
>
|
|
89145
89158
|
<CapSelect
|
|
89159
|
+
getMenuOptionsProps={[Function]}
|
|
89146
89160
|
id="select-whatsapp-language"
|
|
89147
89161
|
onChange={[Function]}
|
|
89148
89162
|
options={
|
|
@@ -103416,6 +103430,7 @@ new message content.",
|
|
|
103416
103430
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
103417
103431
|
>
|
|
103418
103432
|
<CapSelect
|
|
103433
|
+
getMenuOptionsProps={[Function]}
|
|
103419
103434
|
id="select-whatsapp-category"
|
|
103420
103435
|
onChange={[Function]}
|
|
103421
103436
|
options={
|
|
@@ -104446,6 +104461,7 @@ new message content.",
|
|
|
104446
104461
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
104447
104462
|
>
|
|
104448
104463
|
<CapSelect
|
|
104464
|
+
getMenuOptionsProps={[Function]}
|
|
104449
104465
|
id="select-whatsapp-language"
|
|
104450
104466
|
onChange={[Function]}
|
|
104451
104467
|
options={
|
|
@@ -188584,6 +188600,7 @@ new message content.",
|
|
|
188584
188600
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
188585
188601
|
>
|
|
188586
188602
|
<CapSelect
|
|
188603
|
+
getMenuOptionsProps={[Function]}
|
|
188587
188604
|
id="select-whatsapp-category"
|
|
188588
188605
|
onChange={[Function]}
|
|
188589
188606
|
options={
|
|
@@ -189686,6 +189703,7 @@ new message content.",
|
|
|
189686
189703
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
189687
189704
|
>
|
|
189688
189705
|
<CapSelect
|
|
189706
|
+
getMenuOptionsProps={[Function]}
|
|
189689
189707
|
id="select-whatsapp-language"
|
|
189690
189708
|
onChange={[Function]}
|
|
189691
189709
|
options={
|
|
@@ -203260,6 +203278,7 @@ new message content.",
|
|
|
203260
203278
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
203261
203279
|
>
|
|
203262
203280
|
<CapSelect
|
|
203281
|
+
getMenuOptionsProps={[Function]}
|
|
203263
203282
|
id="select-whatsapp-category"
|
|
203264
203283
|
onChange={[Function]}
|
|
203265
203284
|
options={
|
|
@@ -204290,6 +204309,7 @@ new message content.",
|
|
|
204290
204309
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
204291
204310
|
>
|
|
204292
204311
|
<CapSelect
|
|
204312
|
+
getMenuOptionsProps={[Function]}
|
|
204293
204313
|
id="select-whatsapp-language"
|
|
204294
204314
|
onChange={[Function]}
|
|
204295
204315
|
options={
|
|
@@ -216871,6 +216891,7 @@ new message content.",
|
|
|
216871
216891
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
216872
216892
|
>
|
|
216873
216893
|
<CapSelect
|
|
216894
|
+
getMenuOptionsProps={[Function]}
|
|
216874
216895
|
id="select-whatsapp-category"
|
|
216875
216896
|
onChange={[Function]}
|
|
216876
216897
|
options={
|
|
@@ -217973,6 +217994,7 @@ new message content.",
|
|
|
217973
217994
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
217974
217995
|
>
|
|
217975
217996
|
<CapSelect
|
|
217997
|
+
getMenuOptionsProps={[Function]}
|
|
217976
217998
|
id="select-whatsapp-language"
|
|
217977
217999
|
onChange={[Function]}
|
|
217978
218000
|
options={
|
|
@@ -230546,6 +230568,7 @@ new message content.",
|
|
|
230546
230568
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
230547
230569
|
>
|
|
230548
230570
|
<CapSelect
|
|
230571
|
+
getMenuOptionsProps={[Function]}
|
|
230549
230572
|
id="select-whatsapp-category"
|
|
230550
230573
|
onChange={[Function]}
|
|
230551
230574
|
options={
|
|
@@ -231648,6 +231671,7 @@ new message content.",
|
|
|
231648
231671
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
231649
231672
|
>
|
|
231650
231673
|
<CapSelect
|
|
231674
|
+
getMenuOptionsProps={[Function]}
|
|
231651
231675
|
id="select-whatsapp-language"
|
|
231652
231676
|
onChange={[Function]}
|
|
231653
231677
|
options={
|
|
@@ -244602,6 +244626,7 @@ new message content.",
|
|
|
244602
244626
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
244603
244627
|
>
|
|
244604
244628
|
<CapSelect
|
|
244629
|
+
getMenuOptionsProps={[Function]}
|
|
244605
244630
|
id="select-whatsapp-category"
|
|
244606
244631
|
onChange={[Function]}
|
|
244607
244632
|
options={
|
|
@@ -245704,6 +245729,7 @@ new message content.",
|
|
|
245704
245729
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
245705
245730
|
>
|
|
245706
245731
|
<CapSelect
|
|
245732
|
+
getMenuOptionsProps={[Function]}
|
|
245707
245733
|
id="select-whatsapp-language"
|
|
245708
245734
|
onChange={[Function]}
|
|
245709
245735
|
options={
|
|
@@ -259071,6 +259097,7 @@ new message content.",
|
|
|
259071
259097
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
259072
259098
|
>
|
|
259073
259099
|
<CapSelect
|
|
259100
|
+
getMenuOptionsProps={[Function]}
|
|
259074
259101
|
id="select-whatsapp-category"
|
|
259075
259102
|
onChange={[Function]}
|
|
259076
259103
|
options={
|
|
@@ -260173,6 +260200,7 @@ new message content.",
|
|
|
260173
260200
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
260174
260201
|
>
|
|
260175
260202
|
<CapSelect
|
|
260203
|
+
getMenuOptionsProps={[Function]}
|
|
260176
260204
|
id="select-whatsapp-language"
|
|
260177
260205
|
onChange={[Function]}
|
|
260178
260206
|
options={
|
|
@@ -273931,6 +273959,7 @@ new message content.",
|
|
|
273931
273959
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
273932
273960
|
>
|
|
273933
273961
|
<CapSelect
|
|
273962
|
+
getMenuOptionsProps={[Function]}
|
|
273934
273963
|
id="select-whatsapp-category"
|
|
273935
273964
|
onChange={[Function]}
|
|
273936
273965
|
options={
|
|
@@ -275033,6 +275062,7 @@ new message content.",
|
|
|
275033
275062
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
275034
275063
|
>
|
|
275035
275064
|
<CapSelect
|
|
275065
|
+
getMenuOptionsProps={[Function]}
|
|
275036
275066
|
id="select-whatsapp-language"
|
|
275037
275067
|
onChange={[Function]}
|
|
275038
275068
|
options={
|
|
@@ -289192,6 +289222,7 @@ new message content.",
|
|
|
289192
289222
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
289193
289223
|
>
|
|
289194
289224
|
<CapSelect
|
|
289225
|
+
getMenuOptionsProps={[Function]}
|
|
289195
289226
|
id="select-whatsapp-category"
|
|
289196
289227
|
onChange={[Function]}
|
|
289197
289228
|
options={
|
|
@@ -290294,6 +290325,7 @@ new message content.",
|
|
|
290294
290325
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
290295
290326
|
>
|
|
290296
290327
|
<CapSelect
|
|
290328
|
+
getMenuOptionsProps={[Function]}
|
|
290297
290329
|
id="select-whatsapp-language"
|
|
290298
290330
|
onChange={[Function]}
|
|
290299
290331
|
options={
|
|
@@ -304854,6 +304886,7 @@ new message content.",
|
|
|
304854
304886
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
304855
304887
|
>
|
|
304856
304888
|
<CapSelect
|
|
304889
|
+
getMenuOptionsProps={[Function]}
|
|
304857
304890
|
id="select-whatsapp-category"
|
|
304858
304891
|
onChange={[Function]}
|
|
304859
304892
|
options={
|
|
@@ -305956,6 +305989,7 @@ new message content.",
|
|
|
305956
305989
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
305957
305990
|
>
|
|
305958
305991
|
<CapSelect
|
|
305992
|
+
getMenuOptionsProps={[Function]}
|
|
305959
305993
|
id="select-whatsapp-language"
|
|
305960
305994
|
onChange={[Function]}
|
|
305961
305995
|
options={
|
|
@@ -320917,6 +320951,7 @@ new message content.",
|
|
|
320917
320951
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
320918
320952
|
>
|
|
320919
320953
|
<CapSelect
|
|
320954
|
+
getMenuOptionsProps={[Function]}
|
|
320920
320955
|
id="select-whatsapp-category"
|
|
320921
320956
|
onChange={[Function]}
|
|
320922
320957
|
options={
|
|
@@ -322019,6 +322054,7 @@ new message content.",
|
|
|
322019
322054
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
322020
322055
|
>
|
|
322021
322056
|
<CapSelect
|
|
322057
|
+
getMenuOptionsProps={[Function]}
|
|
322022
322058
|
id="select-whatsapp-language"
|
|
322023
322059
|
onChange={[Function]}
|
|
322024
322060
|
options={
|
|
@@ -337371,6 +337407,7 @@ new message content.",
|
|
|
337371
337407
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
337372
337408
|
>
|
|
337373
337409
|
<CapSelect
|
|
337410
|
+
getMenuOptionsProps={[Function]}
|
|
337374
337411
|
id="select-whatsapp-category"
|
|
337375
337412
|
onChange={[Function]}
|
|
337376
337413
|
options={
|
|
@@ -338473,6 +338510,7 @@ new message content.",
|
|
|
338473
338510
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
338474
338511
|
>
|
|
338475
338512
|
<CapSelect
|
|
338513
|
+
getMenuOptionsProps={[Function]}
|
|
338476
338514
|
id="select-whatsapp-language"
|
|
338477
338515
|
onChange={[Function]}
|
|
338478
338516
|
options={
|
|
@@ -351058,6 +351096,7 @@ new message content.",
|
|
|
351058
351096
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
351059
351097
|
>
|
|
351060
351098
|
<CapSelect
|
|
351099
|
+
getMenuOptionsProps={[Function]}
|
|
351061
351100
|
id="select-whatsapp-category"
|
|
351062
351101
|
onChange={[Function]}
|
|
351063
351102
|
options={
|
|
@@ -352160,6 +352199,7 @@ new message content.",
|
|
|
352160
352199
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
352161
352200
|
>
|
|
352162
352201
|
<CapSelect
|
|
352202
|
+
getMenuOptionsProps={[Function]}
|
|
352163
352203
|
id="select-whatsapp-language"
|
|
352164
352204
|
onChange={[Function]}
|
|
352165
352205
|
options={
|
|
@@ -365141,6 +365181,7 @@ new message content.",
|
|
|
365141
365181
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
365142
365182
|
>
|
|
365143
365183
|
<CapSelect
|
|
365184
|
+
getMenuOptionsProps={[Function]}
|
|
365144
365185
|
id="select-whatsapp-category"
|
|
365145
365186
|
onChange={[Function]}
|
|
365146
365187
|
options={
|
|
@@ -366243,6 +366284,7 @@ new message content.",
|
|
|
366243
366284
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
366244
366285
|
>
|
|
366245
366286
|
<CapSelect
|
|
366287
|
+
getMenuOptionsProps={[Function]}
|
|
366246
366288
|
id="select-whatsapp-language"
|
|
366247
366289
|
onChange={[Function]}
|
|
366248
366290
|
options={
|
|
@@ -379645,6 +379687,7 @@ new message content.",
|
|
|
379645
379687
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
379646
379688
|
>
|
|
379647
379689
|
<CapSelect
|
|
379690
|
+
getMenuOptionsProps={[Function]}
|
|
379648
379691
|
id="select-whatsapp-category"
|
|
379649
379692
|
onChange={[Function]}
|
|
379650
379693
|
options={
|
|
@@ -380747,6 +380790,7 @@ new message content.",
|
|
|
380747
380790
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
380748
380791
|
>
|
|
380749
380792
|
<CapSelect
|
|
380793
|
+
getMenuOptionsProps={[Function]}
|
|
380750
380794
|
id="select-whatsapp-language"
|
|
380751
380795
|
onChange={[Function]}
|
|
380752
380796
|
options={
|
|
@@ -394092,6 +394136,7 @@ new message content.",
|
|
|
394092
394136
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
394093
394137
|
>
|
|
394094
394138
|
<CapSelect
|
|
394139
|
+
getMenuOptionsProps={[Function]}
|
|
394095
394140
|
id="select-whatsapp-category"
|
|
394096
394141
|
onChange={[Function]}
|
|
394097
394142
|
options={
|
|
@@ -395194,6 +395239,7 @@ new message content.",
|
|
|
395194
395239
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
395195
395240
|
>
|
|
395196
395241
|
<CapSelect
|
|
395242
|
+
getMenuOptionsProps={[Function]}
|
|
395197
395243
|
id="select-whatsapp-language"
|
|
395198
395244
|
onChange={[Function]}
|
|
395199
395245
|
options={
|
|
@@ -409950,6 +409996,7 @@ new message content.",
|
|
|
409950
409996
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
409951
409997
|
>
|
|
409952
409998
|
<CapSelect
|
|
409999
|
+
getMenuOptionsProps={[Function]}
|
|
409953
410000
|
id="select-whatsapp-category"
|
|
409954
410001
|
onChange={[Function]}
|
|
409955
410002
|
options={
|
|
@@ -411010,6 +411057,7 @@ new message content.",
|
|
|
411010
411057
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
411011
411058
|
>
|
|
411012
411059
|
<CapSelect
|
|
411060
|
+
getMenuOptionsProps={[Function]}
|
|
411013
411061
|
id="select-whatsapp-language"
|
|
411014
411062
|
onChange={[Function]}
|
|
411015
411063
|
options={
|
|
@@ -429012,6 +429060,7 @@ undefined",
|
|
|
429012
429060
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
429013
429061
|
>
|
|
429014
429062
|
<CapSelect
|
|
429063
|
+
getMenuOptionsProps={[Function]}
|
|
429015
429064
|
id="select-whatsapp-category"
|
|
429016
429065
|
onChange={[Function]}
|
|
429017
429066
|
options={
|
|
@@ -430072,6 +430121,7 @@ undefined",
|
|
|
430072
430121
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
430073
430122
|
>
|
|
430074
430123
|
<CapSelect
|
|
430124
|
+
getMenuOptionsProps={[Function]}
|
|
430075
430125
|
id="select-whatsapp-language"
|
|
430076
430126
|
onChange={[Function]}
|
|
430077
430127
|
options={
|
|
@@ -449161,6 +449211,7 @@ undefined",
|
|
|
449161
449211
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
449162
449212
|
>
|
|
449163
449213
|
<CapSelect
|
|
449214
|
+
getMenuOptionsProps={[Function]}
|
|
449164
449215
|
id="select-whatsapp-category"
|
|
449165
449216
|
onChange={[Function]}
|
|
449166
449217
|
options={
|
|
@@ -450221,6 +450272,7 @@ undefined",
|
|
|
450221
450272
|
className="ComponentWithLabelHOC__ComponentWithLabelWrapper-sc-1qk6bpg-1 evSAae"
|
|
450222
450273
|
>
|
|
450223
450274
|
<CapSelect
|
|
450275
|
+
getMenuOptionsProps={[Function]}
|
|
450224
450276
|
id="select-whatsapp-language"
|
|
450225
450277
|
onChange={[Function]}
|
|
450226
450278
|
options={
|