@builder.io/sdk-react-native 4.0.9 → 4.1.0
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/lib/browser/commonjs/blocks/form/form/form.js +33 -9
- package/lib/browser/commonjs/blocks/form/form/form.js.map +1 -1
- package/lib/browser/commonjs/blocks/img/img.js +15 -1
- package/lib/browser/commonjs/blocks/img/img.js.map +1 -1
- package/lib/browser/commonjs/blocks/personalization-container/helpers.js +2 -2
- package/lib/browser/commonjs/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/browser/commonjs/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/browser/commonjs/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/browser/commonjs/constants/sdk-version.js +1 -1
- package/lib/browser/commonjs/helpers/no-serialize-wrapper.js +10 -0
- package/lib/browser/commonjs/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/browser/commonjs/helpers/user-attributes.js +20 -4
- package/lib/browser/commonjs/helpers/user-attributes.js.map +1 -1
- package/lib/browser/module/blocks/form/form/form.js +33 -9
- package/lib/browser/module/blocks/form/form/form.js.map +1 -1
- package/lib/browser/module/blocks/img/img.js +15 -1
- package/lib/browser/module/blocks/img/img.js.map +1 -1
- package/lib/browser/module/blocks/personalization-container/helpers.js +2 -2
- package/lib/browser/module/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/browser/module/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/browser/module/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/browser/module/constants/sdk-version.js +1 -1
- package/lib/browser/module/helpers/no-serialize-wrapper.js +4 -0
- package/lib/browser/module/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/browser/module/helpers/user-attributes.js +20 -4
- package/lib/browser/module/helpers/user-attributes.js.map +1 -1
- package/lib/browser/typescript/blocks/personalization-container/helpers.d.ts.map +1 -1
- package/lib/browser/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -1
- package/lib/browser/typescript/constants/sdk-version.d.ts +1 -1
- package/lib/browser/typescript/helpers/no-serialize-wrapper.d.ts +2 -0
- package/lib/browser/typescript/helpers/no-serialize-wrapper.d.ts.map +1 -0
- package/lib/browser/typescript/helpers/user-attributes.d.ts +6 -2
- package/lib/browser/typescript/helpers/user-attributes.d.ts.map +1 -1
- package/lib/edge/commonjs/blocks/form/form/form.js +33 -9
- package/lib/edge/commonjs/blocks/form/form/form.js.map +1 -1
- package/lib/edge/commonjs/blocks/img/img.js +15 -1
- package/lib/edge/commonjs/blocks/img/img.js.map +1 -1
- package/lib/edge/commonjs/blocks/personalization-container/helpers.js +2 -2
- package/lib/edge/commonjs/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/edge/commonjs/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/edge/commonjs/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/edge/commonjs/constants/sdk-version.js +1 -1
- package/lib/edge/commonjs/helpers/no-serialize-wrapper.js +10 -0
- package/lib/edge/commonjs/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/edge/commonjs/helpers/user-attributes.js +20 -4
- package/lib/edge/commonjs/helpers/user-attributes.js.map +1 -1
- package/lib/edge/module/blocks/form/form/form.js +33 -9
- package/lib/edge/module/blocks/form/form/form.js.map +1 -1
- package/lib/edge/module/blocks/img/img.js +15 -1
- package/lib/edge/module/blocks/img/img.js.map +1 -1
- package/lib/edge/module/blocks/personalization-container/helpers.js +2 -2
- package/lib/edge/module/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/edge/module/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/edge/module/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/edge/module/constants/sdk-version.js +1 -1
- package/lib/edge/module/helpers/no-serialize-wrapper.js +4 -0
- package/lib/edge/module/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/edge/module/helpers/user-attributes.js +20 -4
- package/lib/edge/module/helpers/user-attributes.js.map +1 -1
- package/lib/edge/typescript/blocks/personalization-container/helpers.d.ts.map +1 -1
- package/lib/edge/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -1
- package/lib/edge/typescript/constants/sdk-version.d.ts +1 -1
- package/lib/edge/typescript/helpers/no-serialize-wrapper.d.ts +2 -0
- package/lib/edge/typescript/helpers/no-serialize-wrapper.d.ts.map +1 -0
- package/lib/edge/typescript/helpers/user-attributes.d.ts +6 -2
- package/lib/edge/typescript/helpers/user-attributes.d.ts.map +1 -1
- package/lib/node/commonjs/blocks/form/form/form.js +33 -9
- package/lib/node/commonjs/blocks/form/form/form.js.map +1 -1
- package/lib/node/commonjs/blocks/img/img.js +15 -1
- package/lib/node/commonjs/blocks/img/img.js.map +1 -1
- package/lib/node/commonjs/blocks/personalization-container/helpers.js +2 -2
- package/lib/node/commonjs/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/node/commonjs/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/node/commonjs/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/node/commonjs/constants/sdk-version.js +1 -1
- package/lib/node/commonjs/helpers/no-serialize-wrapper.js +10 -0
- package/lib/node/commonjs/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/node/commonjs/helpers/user-attributes.js +20 -4
- package/lib/node/commonjs/helpers/user-attributes.js.map +1 -1
- package/lib/node/module/blocks/form/form/form.js +33 -9
- package/lib/node/module/blocks/form/form/form.js.map +1 -1
- package/lib/node/module/blocks/img/img.js +15 -1
- package/lib/node/module/blocks/img/img.js.map +1 -1
- package/lib/node/module/blocks/personalization-container/helpers.js +2 -2
- package/lib/node/module/blocks/personalization-container/helpers.js.map +1 -1
- package/lib/node/module/blocks/personalization-container/personalization-container.js +2 -0
- package/lib/node/module/blocks/personalization-container/personalization-container.js.map +1 -1
- package/lib/node/module/constants/sdk-version.js +1 -1
- package/lib/node/module/helpers/no-serialize-wrapper.js +4 -0
- package/lib/node/module/helpers/no-serialize-wrapper.js.map +1 -0
- package/lib/node/module/helpers/user-attributes.js +20 -4
- package/lib/node/module/helpers/user-attributes.js.map +1 -1
- package/lib/node/typescript/blocks/personalization-container/helpers.d.ts.map +1 -1
- package/lib/node/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -1
- package/lib/node/typescript/constants/sdk-version.d.ts +1 -1
- package/lib/node/typescript/helpers/no-serialize-wrapper.d.ts +2 -0
- package/lib/node/typescript/helpers/no-serialize-wrapper.d.ts.map +1 -0
- package/lib/node/typescript/helpers/user-attributes.d.ts +6 -2
- package/lib/node/typescript/helpers/user-attributes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/blocks/form/form/form.tsx +31 -9
- package/src/blocks/img/img.tsx +15 -0
- package/src/blocks/personalization-container/helpers.ts +2 -2
- package/src/blocks/personalization-container/personalization-container.tsx +3 -0
- package/src/constants/sdk-version.ts +1 -1
- package/src/helpers/no-serialize-wrapper.ts +3 -0
- package/src/helpers/user-attributes.ts +22 -4
|
@@ -187,6 +187,18 @@ function FormComponent(props: FormProps) {
|
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
setFormState("sending");
|
|
190
|
+
if (
|
|
191
|
+
props.sendSubmissionsTo === "email" &&
|
|
192
|
+
(props.sendSubmissionsToEmail === "your@email.com" ||
|
|
193
|
+
!props.sendSubmissionsToEmail)
|
|
194
|
+
) {
|
|
195
|
+
const message =
|
|
196
|
+
"SubmissionsToEmail is required when sendSubmissionsTo is set to email";
|
|
197
|
+
console.error(message);
|
|
198
|
+
setFormState("error");
|
|
199
|
+
mergeNewRootState({ formErrorMessage: message });
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
190
202
|
const formUrl = `${
|
|
191
203
|
getEnv() === "dev" ? "http://localhost:5000" : "https://builder.io"
|
|
192
204
|
}/api/v1/form-submit?apiKey=${props.builderContext.apiKey}&to=${btoa(
|
|
@@ -203,17 +215,27 @@ function FormComponent(props: FormProps) {
|
|
|
203
215
|
} else {
|
|
204
216
|
body = await res.text();
|
|
205
217
|
}
|
|
206
|
-
if (!res.ok
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
218
|
+
if (!res.ok) {
|
|
219
|
+
const submitErrorEvent = new CustomEvent("submit:error", {
|
|
220
|
+
detail: { error: body, status: res.status },
|
|
221
|
+
});
|
|
222
|
+
if (formRef.current?.nativeElement) {
|
|
223
|
+
formRef.current?.nativeElement.dispatchEvent(submitErrorEvent);
|
|
224
|
+
if (submitErrorEvent.defaultPrevented) {
|
|
225
|
+
return;
|
|
213
226
|
}
|
|
214
|
-
setFormErrorMessage(message);
|
|
215
|
-
mergeNewRootState({ formErrorMessage: message });
|
|
216
227
|
}
|
|
228
|
+
setResponseData(body);
|
|
229
|
+
setFormState("error");
|
|
230
|
+
let message = props.errorMessagePath
|
|
231
|
+
? get(body, props.errorMessagePath)
|
|
232
|
+
: body.message || body.error || body;
|
|
233
|
+
if (typeof message !== "string") {
|
|
234
|
+
message = JSON.stringify(message);
|
|
235
|
+
}
|
|
236
|
+
setFormErrorMessage(message);
|
|
237
|
+
mergeNewRootState({ formErrorMessage: message });
|
|
238
|
+
return;
|
|
217
239
|
}
|
|
218
240
|
setResponseData(body);
|
|
219
241
|
setFormState(res.ok ? "success" : "error");
|
package/src/blocks/img/img.tsx
CHANGED
|
@@ -37,9 +37,23 @@ export interface ImgProps {
|
|
|
37
37
|
|
|
38
38
|
import { isEditing } from "../../functions/is-editing";
|
|
39
39
|
import { filterAttrs } from "../helpers";
|
|
40
|
+
import { getSrcSet } from "../image/image.helpers";
|
|
40
41
|
import { setAttrs } from "../helpers";
|
|
41
42
|
|
|
42
43
|
function ImgComponent(props: ImgProps) {
|
|
44
|
+
function srcSetToUse() {
|
|
45
|
+
const url = props.imgSrc || props.image;
|
|
46
|
+
if (!url || typeof url !== "string") {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// We can auto add srcset for cdn.builder.io images
|
|
51
|
+
if (!url.match(/builder\.io/)) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return getSrcSet(url);
|
|
55
|
+
}
|
|
56
|
+
|
|
43
57
|
return (
|
|
44
58
|
<Image
|
|
45
59
|
style={{
|
|
@@ -49,6 +63,7 @@ function ImgComponent(props: ImgProps) {
|
|
|
49
63
|
key={(isEditing() && props.imgSrc) || "default-key"}
|
|
50
64
|
alt={props.altText}
|
|
51
65
|
source={{ uri: props.imgSrc || props.image }}
|
|
66
|
+
srcSet={srcSetToUse()}
|
|
52
67
|
{...{}}
|
|
53
68
|
{...props.attributes}
|
|
54
69
|
/>
|
|
@@ -30,7 +30,7 @@ type BlocksToRenderReturnType = {
|
|
|
30
30
|
/**
|
|
31
31
|
* SDKs that support Variant Containers
|
|
32
32
|
*/
|
|
33
|
-
export const SDKS_SUPPORTING_PERSONALIZATION = (['react', 'vue', 'svelte'] as Target[]);
|
|
33
|
+
export const SDKS_SUPPORTING_PERSONALIZATION = (['react', 'vue', 'svelte', 'qwik'] as Target[]);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* After hydration, we reset the tree
|
|
@@ -41,7 +41,7 @@ export const SDKS_SUPPORTING_PERSONALIZATION = (['react', 'vue', 'svelte'] as Ta
|
|
|
41
41
|
* This helps us to avoid flicker and show the correct / winning variant initially and then once we've hydrated we show the winning variant
|
|
42
42
|
* and keep a track of the cookies to update to the correct variant dynamically when the cookie updates.
|
|
43
43
|
*/
|
|
44
|
-
export const SDKS_REQUIRING_RESET_APPROACH = (['vue', 'svelte'] as Target[]);
|
|
44
|
+
export const SDKS_REQUIRING_RESET_APPROACH = (['vue', 'svelte', 'qwik'] as Target[]);
|
|
45
45
|
export function checkShouldRenderVariants(variants: PersonalizationContainerProps['variants'], canTrack: boolean) {
|
|
46
46
|
const hasVariants = variants && variants.length > 0;
|
|
47
47
|
if (TARGET === 'reactNative') return false;
|
|
@@ -121,6 +121,9 @@ function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
121
121
|
const unsub = userAttributesService.subscribeOnUserAttributesChange(
|
|
122
122
|
(attrs) => {
|
|
123
123
|
setUserAttributes(attrs);
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
fireImmediately: TARGET === "qwik",
|
|
124
127
|
}
|
|
125
128
|
);
|
|
126
129
|
if (!(isEditing() || isPreviewing())) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "4.0
|
|
1
|
+
export const SDK_VERSION = "4.1.0"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { TARGET } from '../constants/target';
|
|
1
2
|
import { isBrowser } from '../functions/is-browser';
|
|
2
3
|
import { getCookieSync, setCookie } from './cookie';
|
|
4
|
+
import { noSerializeWrapper } from './no-serialize-wrapper';
|
|
3
5
|
export interface UserAttributes {
|
|
4
6
|
[key: string]: any;
|
|
5
7
|
}
|
|
@@ -32,18 +34,34 @@ export function createUserAttributesService() {
|
|
|
32
34
|
canTrack
|
|
33
35
|
}) || '{}');
|
|
34
36
|
},
|
|
35
|
-
subscribeOnUserAttributesChange(callback: (attrs: UserAttributes) => void
|
|
37
|
+
subscribeOnUserAttributesChange(callback: (attrs: UserAttributes) => void, {
|
|
38
|
+
fireImmediately
|
|
39
|
+
}: {
|
|
40
|
+
fireImmediately?: boolean;
|
|
41
|
+
} = {}) {
|
|
36
42
|
subscribers.add(callback);
|
|
37
|
-
|
|
43
|
+
if (fireImmediately) {
|
|
44
|
+
callback(this.getUserAttributes());
|
|
45
|
+
}
|
|
46
|
+
return noSerializeWrapper(function () {
|
|
38
47
|
subscribers.delete(callback);
|
|
39
|
-
};
|
|
48
|
+
});
|
|
40
49
|
},
|
|
41
50
|
setCanTrack(value: boolean) {
|
|
42
51
|
canTrack = value;
|
|
43
52
|
}
|
|
44
53
|
};
|
|
45
54
|
}
|
|
46
|
-
|
|
55
|
+
let _userAttributesService: ReturnType<typeof createUserAttributesService>;
|
|
56
|
+
if (isBrowser() && TARGET === 'qwik') {
|
|
57
|
+
if (!(window as any).__BUILDER_USER_ATTRIBUTES_SERVICE__) {
|
|
58
|
+
(window as any).__BUILDER_USER_ATTRIBUTES_SERVICE__ = createUserAttributesService();
|
|
59
|
+
}
|
|
60
|
+
_userAttributesService = (window as any).__BUILDER_USER_ATTRIBUTES_SERVICE__;
|
|
61
|
+
} else {
|
|
62
|
+
_userAttributesService = createUserAttributesService();
|
|
63
|
+
}
|
|
64
|
+
export const userAttributesService = _userAttributesService;
|
|
47
65
|
export const setClientUserAttributes = (attributes: UserAttributes) => {
|
|
48
66
|
userAttributesService.setUserAttributes(attributes);
|
|
49
67
|
}
|