forked from Razzemmatazz/react-native-typeform-embed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.js
49 lines (41 loc) · 1.4 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const embedTypes = {
widget: 'embed-widget',
popup: 'popup-blank',
slider: 'popup-drawer',
popover: 'popup-popover',
'side-tab': 'popup-side-panel',
};
const getEmbedOptions = (props) => {
const embedOptions = [
'typeform-medium=embed-sdk',
'typeform-medium-version=next',
];
const embedType = embedTypes[props.type];
if (!embedType) return null;
embedOptions.push(`typeform-embed=${embedType}`);
if (props.source) {
embedOptions.push(`typeform-source=${props.source}`);
}
if (props.enableSandbox) {
embedOptions.push(
'disable-tracking=true&__dangerous-disable-submissions=true'
);
}
embedOptions.push(`embed-hide-headers=${props.hideHeader}`);
embedOptions.push(`embed-hide-footer=${props.hideFooter}`);
// TODO: Add embed-opacity, disable-tracking, disable-auto-focus, share-ga-instance, force-touch, add-placeholder-ws
return embedOptions;
};
export const getTypeformUrl = (props) => {
const baseUrl = `https://form.typeform.com/to/${props.id}`;
const embedOptions = getEmbedOptions(props);
const embedOptionsStr = embedOptions ? `?${embedOptions.join('&')}` : '';
const hiddenFields = Object.entries(props.hidden).map(
([key, value]) => `${key}=${value}`
);
const hiddenFieldsStr = hiddenFields.length
? `#${hiddenFields.join('&')}`
: '';
const url = `${baseUrl}${embedOptionsStr}${hiddenFieldsStr}`;
return encodeURI(url);
};