@builder.io/sdk-svelte 2.0.25 → 2.0.28
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/blocks/columns/columns.svelte +23 -15
- package/lib/browser/components/content/components/enable-editor.svelte +5 -1
- package/lib/browser/components/content/components/enable-editor.svelte.d.ts +3 -1
- package/lib/browser/components/content/content.svelte +4 -1
- package/lib/browser/components/content/content.svelte.d.ts +2 -1
- package/lib/browser/components/content-variants/content-variants.svelte +3 -0
- package/lib/browser/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/browser/components/content-variants/content-variants.types.d.ts +4 -0
- package/lib/browser/constants/sdk-version.d.ts +1 -1
- package/lib/browser/constants/sdk-version.js +1 -1
- package/lib/browser/functions/evaluate/node-runtime/node-runtime.js +5 -4
- package/lib/browser/functions/evaluate/node-runtime/setIvm.d.ts +1 -0
- package/lib/browser/functions/evaluate/node-runtime/setIvm.js +1 -0
- package/lib/browser/functions/get-content/generate-content-url.js +3 -2
- package/lib/browser/functions/get-content/types.d.ts +4 -0
- package/lib/browser/functions/track/index.d.ts +3 -1
- package/lib/browser/functions/track/index.js +3 -2
- package/lib/edge/blocks/columns/columns.svelte +23 -15
- package/lib/edge/components/content/components/enable-editor.svelte +5 -1
- package/lib/edge/components/content/components/enable-editor.svelte.d.ts +3 -1
- package/lib/edge/components/content/content.svelte +4 -1
- package/lib/edge/components/content/content.svelte.d.ts +2 -1
- package/lib/edge/components/content-variants/content-variants.svelte +3 -0
- package/lib/edge/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/edge/components/content-variants/content-variants.types.d.ts +4 -0
- package/lib/edge/constants/sdk-version.d.ts +1 -1
- package/lib/edge/constants/sdk-version.js +1 -1
- package/lib/edge/functions/evaluate/node-runtime/node-runtime.js +5 -4
- package/lib/edge/functions/evaluate/node-runtime/setIvm.d.ts +1 -0
- package/lib/edge/functions/evaluate/node-runtime/setIvm.js +1 -0
- package/lib/edge/functions/get-content/generate-content-url.js +3 -2
- package/lib/edge/functions/get-content/types.d.ts +4 -0
- package/lib/edge/functions/track/index.d.ts +3 -1
- package/lib/edge/functions/track/index.js +3 -2
- package/lib/node/blocks/columns/columns.svelte +23 -15
- package/lib/node/components/content/components/enable-editor.svelte +5 -1
- package/lib/node/components/content/components/enable-editor.svelte.d.ts +3 -1
- package/lib/node/components/content/content.svelte +4 -1
- package/lib/node/components/content/content.svelte.d.ts +2 -1
- package/lib/node/components/content-variants/content-variants.svelte +3 -0
- package/lib/node/components/content-variants/content-variants.svelte.d.ts +1 -0
- package/lib/node/components/content-variants/content-variants.types.d.ts +4 -0
- package/lib/node/constants/sdk-version.d.ts +1 -1
- package/lib/node/constants/sdk-version.js +1 -1
- package/lib/node/functions/evaluate/node-runtime/node-runtime.js +5 -4
- package/lib/node/functions/evaluate/node-runtime/setIvm.d.ts +1 -0
- package/lib/node/functions/evaluate/node-runtime/setIvm.js +1 -0
- package/lib/node/functions/get-content/generate-content-url.js +3 -2
- package/lib/node/functions/get-content/types.d.ts +4 -0
- package/lib/node/functions/track/index.d.ts +3 -1
- package/lib/node/functions/track/index.js +3 -2
- package/package.json +1 -1
- package/src/blocks/columns/columns.svelte +19 -13
- package/src/components/content/components/enable-editor.svelte +5 -2
- package/src/components/content/content.svelte +4 -1
- package/src/components/content-variants/content-variants.svelte +3 -0
- package/src/components/content-variants/content-variants.types.ts +5 -0
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/evaluate/node-runtime/node-runtime.ts +3 -3
- package/src/functions/evaluate/node-runtime/setIvm.ts +1 -0
- package/src/functions/get-content/generate-content-url.ts +4 -2
- package/src/functions/get-content/types.ts +5 -0
- package/src/functions/track/index.ts +8 -2
|
@@ -32,30 +32,30 @@ function getTagName(column) {
|
|
|
32
32
|
return column.link ? builderLinkComponent || "a" : "div";
|
|
33
33
|
}
|
|
34
34
|
function getWidth(index) {
|
|
35
|
-
return cols[index]?.width || 100 / cols.length;
|
|
35
|
+
return cols()[index]?.width || 100 / cols().length;
|
|
36
36
|
}
|
|
37
37
|
function getColumnCssWidth(index) {
|
|
38
38
|
const width = getWidth(index);
|
|
39
|
-
const subtractWidth = gutterSize * (cols.length - 1) * (width / 100);
|
|
39
|
+
const subtractWidth = gutterSize() * (cols().length - 1) * (width / 100);
|
|
40
40
|
return `calc(${width}% - ${subtractWidth}px)`;
|
|
41
41
|
}
|
|
42
42
|
function getTabletStyle({ stackedStyle, desktopStyle, }) {
|
|
43
|
-
return stackAt === "tablet" ? stackedStyle : desktopStyle;
|
|
43
|
+
return stackAt() === "tablet" ? stackedStyle : desktopStyle;
|
|
44
44
|
}
|
|
45
45
|
function getMobileStyle({ stackedStyle, desktopStyle, }) {
|
|
46
|
-
return stackAt === "never" ? desktopStyle : stackedStyle;
|
|
46
|
+
return stackAt() === "never" ? desktopStyle : stackedStyle;
|
|
47
47
|
}
|
|
48
48
|
function columnsCssVars() {
|
|
49
49
|
return {
|
|
50
|
-
"--flex-dir": flexDir,
|
|
50
|
+
"--flex-dir": flexDir(),
|
|
51
51
|
"--flex-dir-tablet": getTabletStyle({
|
|
52
|
-
stackedStyle: flexDir,
|
|
52
|
+
stackedStyle: flexDir(),
|
|
53
53
|
desktopStyle: "row",
|
|
54
54
|
}),
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
function columnCssVars(index) {
|
|
58
|
-
const gutter = index === 0 ? 0 : gutterSize;
|
|
58
|
+
const gutter = index === 0 ? 0 : gutterSize();
|
|
59
59
|
const width = getColumnCssWidth(index);
|
|
60
60
|
const gutterPixels = `${gutter}px`;
|
|
61
61
|
const mobileWidth = "100%";
|
|
@@ -132,14 +132,22 @@ function getAttributes(column, index) {
|
|
|
132
132
|
style: mapStyleObjToStrIfNeeded(columnCssVars(index)),
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
$: gutterSize = () => {
|
|
136
|
+
return typeof space === "number" ? space || 0 : 20;
|
|
137
|
+
};
|
|
138
|
+
$: cols = () => {
|
|
139
|
+
return columns || [];
|
|
140
|
+
};
|
|
141
|
+
$: stackAt = () => {
|
|
142
|
+
return stackColumnsAt || "tablet";
|
|
143
|
+
};
|
|
144
|
+
$: flexDir = () => {
|
|
145
|
+
return stackColumnsAt === "never"
|
|
146
|
+
? "row"
|
|
147
|
+
: reverseColumnsWhenStacked
|
|
148
|
+
? "column-reverse"
|
|
149
|
+
: "column";
|
|
150
|
+
};
|
|
143
151
|
</script>
|
|
144
152
|
|
|
145
153
|
<div
|
|
@@ -18,9 +18,11 @@ import { registerInsertMenu, setupBrowserForEditing, } from "../../../scripts/in
|
|
|
18
18
|
import { triggerAnimation } from "../../block/animator";
|
|
19
19
|
import "../../dynamic-div.svelte";
|
|
20
20
|
import { getWrapperClassName } from "./styles.helpers";
|
|
21
|
+
export let isNestedRender = undefined;
|
|
21
22
|
export let builderContextSignal;
|
|
22
23
|
export let canTrack = undefined;
|
|
23
24
|
export let apiKey;
|
|
25
|
+
export let apiHost = undefined;
|
|
24
26
|
export let locale = undefined;
|
|
25
27
|
export let enrich = undefined;
|
|
26
28
|
export let trustedHosts = undefined;
|
|
@@ -92,6 +94,7 @@ function onClick(event) {
|
|
|
92
94
|
const variationId = $builderContextSignal.content?.testVariationId;
|
|
93
95
|
const contentId = $builderContextSignal.content?.id;
|
|
94
96
|
_track({
|
|
97
|
+
apiHost: apiHost,
|
|
95
98
|
type: "click",
|
|
96
99
|
canTrack: getDefaultCanTrack(canTrack),
|
|
97
100
|
contentId,
|
|
@@ -223,7 +226,7 @@ runHttpRequests();
|
|
|
223
226
|
emitStateUpdate();
|
|
224
227
|
onMount(() => {
|
|
225
228
|
if (isBrowser()) {
|
|
226
|
-
if (isEditing()) {
|
|
229
|
+
if (isEditing() && !isNestedRender) {
|
|
227
230
|
if (elementRef) {
|
|
228
231
|
elementRef.dispatchEvent(new CustomEvent("initeditingbldr"));
|
|
229
232
|
}
|
|
@@ -234,6 +237,7 @@ onMount(() => {
|
|
|
234
237
|
const contentId = $builderContextSignal.content?.id;
|
|
235
238
|
const apiKeyProp = apiKey;
|
|
236
239
|
_track({
|
|
240
|
+
apiHost: apiHost,
|
|
237
241
|
type: "impression",
|
|
238
242
|
canTrack: true,
|
|
239
243
|
contentId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
-
type BuilderEditorProps = Omit<ContentProps, "customComponents" | "apiVersion" | "isSsrAbTest" | "blocksWrapper" | "blocksWrapperProps" | "
|
|
2
|
+
type BuilderEditorProps = Omit<ContentProps, "customComponents" | "apiVersion" | "isSsrAbTest" | "blocksWrapper" | "blocksWrapperProps" | "linkComponent"> & {
|
|
3
3
|
builderContextSignal: Writable<BuilderContextInterface>;
|
|
4
4
|
setBuilderContextSignal?: (signal: any) => any;
|
|
5
5
|
children?: any;
|
|
@@ -9,9 +9,11 @@ import type { ContentProps } from "../content.types";
|
|
|
9
9
|
import type { Writable } from "svelte/store";
|
|
10
10
|
declare const __propDef: {
|
|
11
11
|
props: {
|
|
12
|
+
isNestedRender?: BuilderEditorProps["isNestedRender"];
|
|
12
13
|
builderContextSignal: BuilderEditorProps["builderContextSignal"];
|
|
13
14
|
canTrack?: BuilderEditorProps["canTrack"];
|
|
14
15
|
apiKey: BuilderEditorProps["apiKey"];
|
|
16
|
+
apiHost?: BuilderEditorProps["apiHost"];
|
|
15
17
|
locale?: BuilderEditorProps["locale"];
|
|
16
18
|
enrich?: BuilderEditorProps["enrich"];
|
|
17
19
|
trustedHosts?: BuilderEditorProps["trustedHosts"];
|
|
@@ -26,13 +26,14 @@ export let apiVersion = undefined;
|
|
|
26
26
|
export let blocksWrapper = undefined;
|
|
27
27
|
export let blocksWrapperProps = undefined;
|
|
28
28
|
export let nonce = undefined;
|
|
29
|
+
export let apiHost = undefined;
|
|
29
30
|
export let enrich = undefined;
|
|
30
31
|
export let showContent;
|
|
31
32
|
export let contentWrapper = undefined;
|
|
32
33
|
export let contentWrapperProps = undefined;
|
|
33
34
|
export let trustedHosts = undefined;
|
|
34
|
-
export let isSsrAbTest;
|
|
35
35
|
export let isNestedRender = undefined;
|
|
36
|
+
export let isSsrAbTest;
|
|
36
37
|
export let linkComponent = undefined;
|
|
37
38
|
function contentSetState(newRootState) {
|
|
38
39
|
$builderContextSignal.rootState = newRootState;
|
|
@@ -116,6 +117,7 @@ setContext(ComponentsContext.key, {
|
|
|
116
117
|
</script>
|
|
117
118
|
|
|
118
119
|
<EnableEditor
|
|
120
|
+
{apiHost}
|
|
119
121
|
{nonce}
|
|
120
122
|
{content}
|
|
121
123
|
{data}
|
|
@@ -130,6 +132,7 @@ setContext(ComponentsContext.key, {
|
|
|
130
132
|
{contentWrapper}
|
|
131
133
|
{contentWrapperProps}
|
|
132
134
|
{trustedHosts}
|
|
135
|
+
{isNestedRender}
|
|
133
136
|
{...{}}
|
|
134
137
|
>
|
|
135
138
|
{#if isSsrAbTest}
|
|
@@ -14,13 +14,14 @@ declare const __propDef: {
|
|
|
14
14
|
blocksWrapper?: ContentProps["blocksWrapper"];
|
|
15
15
|
blocksWrapperProps?: ContentProps["blocksWrapperProps"];
|
|
16
16
|
nonce?: ContentProps["nonce"];
|
|
17
|
+
apiHost?: ContentProps["apiHost"];
|
|
17
18
|
enrich?: ContentProps["enrich"];
|
|
18
19
|
showContent: ContentProps["showContent"];
|
|
19
20
|
contentWrapper?: ContentProps["contentWrapper"];
|
|
20
21
|
contentWrapperProps?: ContentProps["contentWrapperProps"];
|
|
21
22
|
trustedHosts?: ContentProps["trustedHosts"];
|
|
22
|
-
isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
23
23
|
isNestedRender?: ContentProps["isNestedRender"];
|
|
24
|
+
isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
24
25
|
linkComponent?: ContentProps["linkComponent"];
|
|
25
26
|
};
|
|
26
27
|
events: {
|
|
@@ -12,6 +12,7 @@ export let canTrack = undefined;
|
|
|
12
12
|
export let content = undefined;
|
|
13
13
|
export let isNestedRender = undefined;
|
|
14
14
|
export let nonce = undefined;
|
|
15
|
+
export let apiHost = undefined;
|
|
15
16
|
export let model = undefined;
|
|
16
17
|
export let data = undefined;
|
|
17
18
|
export let context = undefined;
|
|
@@ -82,6 +83,7 @@ onMount(() => {
|
|
|
82
83
|
|
|
83
84
|
{#each getVariants(content) as variant (variant.testVariationId)}
|
|
84
85
|
<ContentComponent
|
|
86
|
+
{apiHost}
|
|
85
87
|
{isNestedRender}
|
|
86
88
|
{nonce}
|
|
87
89
|
content={variant}
|
|
@@ -107,6 +109,7 @@ onMount(() => {
|
|
|
107
109
|
{/each}
|
|
108
110
|
{/if}
|
|
109
111
|
<ContentComponent
|
|
112
|
+
{apiHost}
|
|
110
113
|
{nonce}
|
|
111
114
|
{isNestedRender}
|
|
112
115
|
{...{}}
|
|
@@ -12,6 +12,7 @@ declare const __propDef: {
|
|
|
12
12
|
content?: VariantsProviderProps["content"];
|
|
13
13
|
isNestedRender?: VariantsProviderProps["isNestedRender"];
|
|
14
14
|
nonce?: VariantsProviderProps["nonce"];
|
|
15
|
+
apiHost?: VariantsProviderProps["apiHost"];
|
|
15
16
|
model?: VariantsProviderProps["model"];
|
|
16
17
|
data?: VariantsProviderProps["data"];
|
|
17
18
|
context?: VariantsProviderProps["context"];
|
|
@@ -26,6 +26,10 @@ export interface ContentVariantsPrps extends ExtraFrameworkProps {
|
|
|
26
26
|
* Your API Key: needed to enable visual editing, and to dynamically fetch symbols (required).
|
|
27
27
|
*/
|
|
28
28
|
apiKey: string;
|
|
29
|
+
/**
|
|
30
|
+
* Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
|
|
31
|
+
*/
|
|
32
|
+
apiHost?: string;
|
|
29
33
|
apiVersion?: ApiVersion;
|
|
30
34
|
/**
|
|
31
35
|
* An array of custom components to register (optional).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "2.0.
|
|
1
|
+
export declare const SDK_VERSION = "2.0.28";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "2.0.
|
|
1
|
+
export const SDK_VERSION = "2.0.28";
|
|
@@ -63,6 +63,8 @@ let IVM_CONTEXT = null;
|
|
|
63
63
|
* `safeDynamicRequire` trick to import the `isolated-vm` package.
|
|
64
64
|
*/
|
|
65
65
|
export const setIvm = (ivm, options = {}) => {
|
|
66
|
+
if (IVM_INSTANCE)
|
|
67
|
+
return;
|
|
66
68
|
IVM_INSTANCE = ivm;
|
|
67
69
|
setIsolateContext(options);
|
|
68
70
|
};
|
|
@@ -92,6 +94,8 @@ const getIvm = () => {
|
|
|
92
94
|
function setIsolateContext(options = {
|
|
93
95
|
memoryLimit: 128
|
|
94
96
|
}) {
|
|
97
|
+
if (IVM_CONTEXT)
|
|
98
|
+
return IVM_CONTEXT;
|
|
95
99
|
const ivm = getIvm();
|
|
96
100
|
const isolate = new ivm.Isolate(options);
|
|
97
101
|
const context = isolate.createContextSync();
|
|
@@ -108,10 +112,7 @@ function setIsolateContext(options = {
|
|
|
108
112
|
return context;
|
|
109
113
|
}
|
|
110
114
|
const getIsolateContext = () => {
|
|
111
|
-
|
|
112
|
-
return IVM_CONTEXT;
|
|
113
|
-
const context = setIsolateContext();
|
|
114
|
-
return context;
|
|
115
|
+
return setIsolateContext();
|
|
115
116
|
};
|
|
116
117
|
export const runInNode = ({ code, builder, context, event, localState, rootSetState, rootState }) => {
|
|
117
118
|
const ivm = getIvm();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { setIvm } from './node-runtime';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { setIvm } from './node-runtime';
|
|
@@ -4,7 +4,7 @@ import { DEFAULT_API_VERSION } from '../../types/api-version';
|
|
|
4
4
|
import { getBuilderSearchParamsFromWindow } from '../get-builder-search-params/index';
|
|
5
5
|
const isPositiveNumber = (thing) => typeof thing === 'number' && !isNaN(thing) && thing >= 0;
|
|
6
6
|
export const generateContentUrl = (options) => {
|
|
7
|
-
const { limit = 30, userAttributes, query, model, apiKey, enrich, locale, apiVersion = DEFAULT_API_VERSION, fields, omit, offset, cacheSeconds, staleCacheSeconds, sort, includeUnpublished } = options;
|
|
7
|
+
const { limit = 30, userAttributes, query, model, apiKey, enrich, locale, apiVersion = DEFAULT_API_VERSION, fields, omit, offset, cacheSeconds, staleCacheSeconds, sort, includeUnpublished, apiHost } = options;
|
|
8
8
|
if (!apiKey) {
|
|
9
9
|
throw new Error('Missing API key');
|
|
10
10
|
}
|
|
@@ -13,7 +13,8 @@ export const generateContentUrl = (options) => {
|
|
|
13
13
|
}
|
|
14
14
|
// if we are fetching an array of content, we disable noTraverse for perf reasons.
|
|
15
15
|
const noTraverse = limit !== 1;
|
|
16
|
-
const
|
|
16
|
+
const baseUrl = apiHost || 'https://cdn.builder.io';
|
|
17
|
+
const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
|
|
17
18
|
url.searchParams.set('apiKey', apiKey);
|
|
18
19
|
url.searchParams.set('limit', String(limit));
|
|
19
20
|
url.searchParams.set('noTraverse', String(noTraverse));
|
|
@@ -136,4 +136,8 @@ export interface GetContentOptions {
|
|
|
136
136
|
* Optional fetch options to be passed as the second argument to the `fetch` function.
|
|
137
137
|
*/
|
|
138
138
|
fetchOptions?: object;
|
|
139
|
+
/**
|
|
140
|
+
* Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
|
|
141
|
+
*/
|
|
142
|
+
apiHost?: string;
|
|
139
143
|
}
|
|
@@ -46,6 +46,8 @@ type EventProperties = Pick<Event, 'type'> & Pick<Event['data'], 'contentId' | '
|
|
|
46
46
|
[index: string]: any;
|
|
47
47
|
};
|
|
48
48
|
export type EventProps = EventProperties & CanTrack;
|
|
49
|
-
export declare function _track(eventProps: EventProps
|
|
49
|
+
export declare function _track({ apiHost, ...eventProps }: EventProps & {
|
|
50
|
+
apiHost?: string;
|
|
51
|
+
}): Promise<void | Response>;
|
|
50
52
|
export declare const track: (args: EventProperties) => Promise<void | Response>;
|
|
51
53
|
export {};
|
|
@@ -39,7 +39,7 @@ const createEvent = async ({ type: eventType, canTrack, apiKey, metadata, ...pro
|
|
|
39
39
|
ownerId: apiKey
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
export async function _track(eventProps) {
|
|
42
|
+
export async function _track({ apiHost, ...eventProps }) {
|
|
43
43
|
if (!eventProps.apiKey) {
|
|
44
44
|
logger.error('Missing API key for track call. Please provide your API key.');
|
|
45
45
|
return;
|
|
@@ -53,7 +53,8 @@ export async function _track(eventProps) {
|
|
|
53
53
|
if (!(isBrowser() || TARGET === 'reactNative')) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
const baseUrl = apiHost || 'https://cdn.builder.io';
|
|
57
|
+
return fetch(`${baseUrl}/api/v1/track`, {
|
|
57
58
|
method: 'POST',
|
|
58
59
|
body: JSON.stringify({
|
|
59
60
|
events: [await createEvent(eventProps)]
|
|
@@ -32,30 +32,30 @@ function getTagName(column) {
|
|
|
32
32
|
return column.link ? builderLinkComponent || "a" : "div";
|
|
33
33
|
}
|
|
34
34
|
function getWidth(index) {
|
|
35
|
-
return cols[index]?.width || 100 / cols.length;
|
|
35
|
+
return cols()[index]?.width || 100 / cols().length;
|
|
36
36
|
}
|
|
37
37
|
function getColumnCssWidth(index) {
|
|
38
38
|
const width = getWidth(index);
|
|
39
|
-
const subtractWidth = gutterSize * (cols.length - 1) * (width / 100);
|
|
39
|
+
const subtractWidth = gutterSize() * (cols().length - 1) * (width / 100);
|
|
40
40
|
return `calc(${width}% - ${subtractWidth}px)`;
|
|
41
41
|
}
|
|
42
42
|
function getTabletStyle({ stackedStyle, desktopStyle, }) {
|
|
43
|
-
return stackAt === "tablet" ? stackedStyle : desktopStyle;
|
|
43
|
+
return stackAt() === "tablet" ? stackedStyle : desktopStyle;
|
|
44
44
|
}
|
|
45
45
|
function getMobileStyle({ stackedStyle, desktopStyle, }) {
|
|
46
|
-
return stackAt === "never" ? desktopStyle : stackedStyle;
|
|
46
|
+
return stackAt() === "never" ? desktopStyle : stackedStyle;
|
|
47
47
|
}
|
|
48
48
|
function columnsCssVars() {
|
|
49
49
|
return {
|
|
50
|
-
"--flex-dir": flexDir,
|
|
50
|
+
"--flex-dir": flexDir(),
|
|
51
51
|
"--flex-dir-tablet": getTabletStyle({
|
|
52
|
-
stackedStyle: flexDir,
|
|
52
|
+
stackedStyle: flexDir(),
|
|
53
53
|
desktopStyle: "row",
|
|
54
54
|
}),
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
function columnCssVars(index) {
|
|
58
|
-
const gutter = index === 0 ? 0 : gutterSize;
|
|
58
|
+
const gutter = index === 0 ? 0 : gutterSize();
|
|
59
59
|
const width = getColumnCssWidth(index);
|
|
60
60
|
const gutterPixels = `${gutter}px`;
|
|
61
61
|
const mobileWidth = "100%";
|
|
@@ -132,14 +132,22 @@ function getAttributes(column, index) {
|
|
|
132
132
|
style: mapStyleObjToStrIfNeeded(columnCssVars(index)),
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
$: gutterSize = () => {
|
|
136
|
+
return typeof space === "number" ? space || 0 : 20;
|
|
137
|
+
};
|
|
138
|
+
$: cols = () => {
|
|
139
|
+
return columns || [];
|
|
140
|
+
};
|
|
141
|
+
$: stackAt = () => {
|
|
142
|
+
return stackColumnsAt || "tablet";
|
|
143
|
+
};
|
|
144
|
+
$: flexDir = () => {
|
|
145
|
+
return stackColumnsAt === "never"
|
|
146
|
+
? "row"
|
|
147
|
+
: reverseColumnsWhenStacked
|
|
148
|
+
? "column-reverse"
|
|
149
|
+
: "column";
|
|
150
|
+
};
|
|
143
151
|
</script>
|
|
144
152
|
|
|
145
153
|
<div
|
|
@@ -18,9 +18,11 @@ import { registerInsertMenu, setupBrowserForEditing, } from "../../../scripts/in
|
|
|
18
18
|
import { triggerAnimation } from "../../block/animator";
|
|
19
19
|
import "../../dynamic-div.svelte";
|
|
20
20
|
import { getWrapperClassName } from "./styles.helpers";
|
|
21
|
+
export let isNestedRender = undefined;
|
|
21
22
|
export let builderContextSignal;
|
|
22
23
|
export let canTrack = undefined;
|
|
23
24
|
export let apiKey;
|
|
25
|
+
export let apiHost = undefined;
|
|
24
26
|
export let locale = undefined;
|
|
25
27
|
export let enrich = undefined;
|
|
26
28
|
export let trustedHosts = undefined;
|
|
@@ -92,6 +94,7 @@ function onClick(event) {
|
|
|
92
94
|
const variationId = $builderContextSignal.content?.testVariationId;
|
|
93
95
|
const contentId = $builderContextSignal.content?.id;
|
|
94
96
|
_track({
|
|
97
|
+
apiHost: apiHost,
|
|
95
98
|
type: "click",
|
|
96
99
|
canTrack: getDefaultCanTrack(canTrack),
|
|
97
100
|
contentId,
|
|
@@ -223,7 +226,7 @@ runHttpRequests();
|
|
|
223
226
|
emitStateUpdate();
|
|
224
227
|
onMount(() => {
|
|
225
228
|
if (isBrowser()) {
|
|
226
|
-
if (isEditing()) {
|
|
229
|
+
if (isEditing() && !isNestedRender) {
|
|
227
230
|
if (elementRef) {
|
|
228
231
|
elementRef.dispatchEvent(new CustomEvent("initeditingbldr"));
|
|
229
232
|
}
|
|
@@ -234,6 +237,7 @@ onMount(() => {
|
|
|
234
237
|
const contentId = $builderContextSignal.content?.id;
|
|
235
238
|
const apiKeyProp = apiKey;
|
|
236
239
|
_track({
|
|
240
|
+
apiHost: apiHost,
|
|
237
241
|
type: "impression",
|
|
238
242
|
canTrack: true,
|
|
239
243
|
contentId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
-
type BuilderEditorProps = Omit<ContentProps, "customComponents" | "apiVersion" | "isSsrAbTest" | "blocksWrapper" | "blocksWrapperProps" | "
|
|
2
|
+
type BuilderEditorProps = Omit<ContentProps, "customComponents" | "apiVersion" | "isSsrAbTest" | "blocksWrapper" | "blocksWrapperProps" | "linkComponent"> & {
|
|
3
3
|
builderContextSignal: Writable<BuilderContextInterface>;
|
|
4
4
|
setBuilderContextSignal?: (signal: any) => any;
|
|
5
5
|
children?: any;
|
|
@@ -9,9 +9,11 @@ import type { ContentProps } from "../content.types";
|
|
|
9
9
|
import type { Writable } from "svelte/store";
|
|
10
10
|
declare const __propDef: {
|
|
11
11
|
props: {
|
|
12
|
+
isNestedRender?: BuilderEditorProps["isNestedRender"];
|
|
12
13
|
builderContextSignal: BuilderEditorProps["builderContextSignal"];
|
|
13
14
|
canTrack?: BuilderEditorProps["canTrack"];
|
|
14
15
|
apiKey: BuilderEditorProps["apiKey"];
|
|
16
|
+
apiHost?: BuilderEditorProps["apiHost"];
|
|
15
17
|
locale?: BuilderEditorProps["locale"];
|
|
16
18
|
enrich?: BuilderEditorProps["enrich"];
|
|
17
19
|
trustedHosts?: BuilderEditorProps["trustedHosts"];
|
|
@@ -26,13 +26,14 @@ export let apiVersion = undefined;
|
|
|
26
26
|
export let blocksWrapper = undefined;
|
|
27
27
|
export let blocksWrapperProps = undefined;
|
|
28
28
|
export let nonce = undefined;
|
|
29
|
+
export let apiHost = undefined;
|
|
29
30
|
export let enrich = undefined;
|
|
30
31
|
export let showContent;
|
|
31
32
|
export let contentWrapper = undefined;
|
|
32
33
|
export let contentWrapperProps = undefined;
|
|
33
34
|
export let trustedHosts = undefined;
|
|
34
|
-
export let isSsrAbTest;
|
|
35
35
|
export let isNestedRender = undefined;
|
|
36
|
+
export let isSsrAbTest;
|
|
36
37
|
export let linkComponent = undefined;
|
|
37
38
|
function contentSetState(newRootState) {
|
|
38
39
|
$builderContextSignal.rootState = newRootState;
|
|
@@ -116,6 +117,7 @@ setContext(ComponentsContext.key, {
|
|
|
116
117
|
</script>
|
|
117
118
|
|
|
118
119
|
<EnableEditor
|
|
120
|
+
{apiHost}
|
|
119
121
|
{nonce}
|
|
120
122
|
{content}
|
|
121
123
|
{data}
|
|
@@ -130,6 +132,7 @@ setContext(ComponentsContext.key, {
|
|
|
130
132
|
{contentWrapper}
|
|
131
133
|
{contentWrapperProps}
|
|
132
134
|
{trustedHosts}
|
|
135
|
+
{isNestedRender}
|
|
133
136
|
{...{}}
|
|
134
137
|
>
|
|
135
138
|
{#if isSsrAbTest}
|
|
@@ -14,13 +14,14 @@ declare const __propDef: {
|
|
|
14
14
|
blocksWrapper?: ContentProps["blocksWrapper"];
|
|
15
15
|
blocksWrapperProps?: ContentProps["blocksWrapperProps"];
|
|
16
16
|
nonce?: ContentProps["nonce"];
|
|
17
|
+
apiHost?: ContentProps["apiHost"];
|
|
17
18
|
enrich?: ContentProps["enrich"];
|
|
18
19
|
showContent: ContentProps["showContent"];
|
|
19
20
|
contentWrapper?: ContentProps["contentWrapper"];
|
|
20
21
|
contentWrapperProps?: ContentProps["contentWrapperProps"];
|
|
21
22
|
trustedHosts?: ContentProps["trustedHosts"];
|
|
22
|
-
isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
23
23
|
isNestedRender?: ContentProps["isNestedRender"];
|
|
24
|
+
isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
24
25
|
linkComponent?: ContentProps["linkComponent"];
|
|
25
26
|
};
|
|
26
27
|
events: {
|
|
@@ -12,6 +12,7 @@ export let canTrack = undefined;
|
|
|
12
12
|
export let content = undefined;
|
|
13
13
|
export let isNestedRender = undefined;
|
|
14
14
|
export let nonce = undefined;
|
|
15
|
+
export let apiHost = undefined;
|
|
15
16
|
export let model = undefined;
|
|
16
17
|
export let data = undefined;
|
|
17
18
|
export let context = undefined;
|
|
@@ -82,6 +83,7 @@ onMount(() => {
|
|
|
82
83
|
|
|
83
84
|
{#each getVariants(content) as variant (variant.testVariationId)}
|
|
84
85
|
<ContentComponent
|
|
86
|
+
{apiHost}
|
|
85
87
|
{isNestedRender}
|
|
86
88
|
{nonce}
|
|
87
89
|
content={variant}
|
|
@@ -107,6 +109,7 @@ onMount(() => {
|
|
|
107
109
|
{/each}
|
|
108
110
|
{/if}
|
|
109
111
|
<ContentComponent
|
|
112
|
+
{apiHost}
|
|
110
113
|
{nonce}
|
|
111
114
|
{isNestedRender}
|
|
112
115
|
{...{}}
|
|
@@ -12,6 +12,7 @@ declare const __propDef: {
|
|
|
12
12
|
content?: VariantsProviderProps["content"];
|
|
13
13
|
isNestedRender?: VariantsProviderProps["isNestedRender"];
|
|
14
14
|
nonce?: VariantsProviderProps["nonce"];
|
|
15
|
+
apiHost?: VariantsProviderProps["apiHost"];
|
|
15
16
|
model?: VariantsProviderProps["model"];
|
|
16
17
|
data?: VariantsProviderProps["data"];
|
|
17
18
|
context?: VariantsProviderProps["context"];
|
|
@@ -26,6 +26,10 @@ export interface ContentVariantsPrps extends ExtraFrameworkProps {
|
|
|
26
26
|
* Your API Key: needed to enable visual editing, and to dynamically fetch symbols (required).
|
|
27
27
|
*/
|
|
28
28
|
apiKey: string;
|
|
29
|
+
/**
|
|
30
|
+
* Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
|
|
31
|
+
*/
|
|
32
|
+
apiHost?: string;
|
|
29
33
|
apiVersion?: ApiVersion;
|
|
30
34
|
/**
|
|
31
35
|
* An array of custom components to register (optional).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "2.0.
|
|
1
|
+
export declare const SDK_VERSION = "2.0.28";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "2.0.
|
|
1
|
+
export const SDK_VERSION = "2.0.28";
|
|
@@ -63,6 +63,8 @@ let IVM_CONTEXT = null;
|
|
|
63
63
|
* `safeDynamicRequire` trick to import the `isolated-vm` package.
|
|
64
64
|
*/
|
|
65
65
|
export const setIvm = (ivm, options = {}) => {
|
|
66
|
+
if (IVM_INSTANCE)
|
|
67
|
+
return;
|
|
66
68
|
IVM_INSTANCE = ivm;
|
|
67
69
|
setIsolateContext(options);
|
|
68
70
|
};
|
|
@@ -92,6 +94,8 @@ const getIvm = () => {
|
|
|
92
94
|
function setIsolateContext(options = {
|
|
93
95
|
memoryLimit: 128
|
|
94
96
|
}) {
|
|
97
|
+
if (IVM_CONTEXT)
|
|
98
|
+
return IVM_CONTEXT;
|
|
95
99
|
const ivm = getIvm();
|
|
96
100
|
const isolate = new ivm.Isolate(options);
|
|
97
101
|
const context = isolate.createContextSync();
|
|
@@ -108,10 +112,7 @@ function setIsolateContext(options = {
|
|
|
108
112
|
return context;
|
|
109
113
|
}
|
|
110
114
|
const getIsolateContext = () => {
|
|
111
|
-
|
|
112
|
-
return IVM_CONTEXT;
|
|
113
|
-
const context = setIsolateContext();
|
|
114
|
-
return context;
|
|
115
|
+
return setIsolateContext();
|
|
115
116
|
};
|
|
116
117
|
export const runInNode = ({ code, builder, context, event, localState, rootSetState, rootState }) => {
|
|
117
118
|
const ivm = getIvm();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { setIvm } from './node-runtime';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { setIvm } from './node-runtime';
|
|
@@ -4,7 +4,7 @@ import { DEFAULT_API_VERSION } from '../../types/api-version';
|
|
|
4
4
|
import { getBuilderSearchParamsFromWindow } from '../get-builder-search-params/index';
|
|
5
5
|
const isPositiveNumber = (thing) => typeof thing === 'number' && !isNaN(thing) && thing >= 0;
|
|
6
6
|
export const generateContentUrl = (options) => {
|
|
7
|
-
const { limit = 30, userAttributes, query, model, apiKey, enrich, locale, apiVersion = DEFAULT_API_VERSION, fields, omit, offset, cacheSeconds, staleCacheSeconds, sort, includeUnpublished } = options;
|
|
7
|
+
const { limit = 30, userAttributes, query, model, apiKey, enrich, locale, apiVersion = DEFAULT_API_VERSION, fields, omit, offset, cacheSeconds, staleCacheSeconds, sort, includeUnpublished, apiHost } = options;
|
|
8
8
|
if (!apiKey) {
|
|
9
9
|
throw new Error('Missing API key');
|
|
10
10
|
}
|
|
@@ -13,7 +13,8 @@ export const generateContentUrl = (options) => {
|
|
|
13
13
|
}
|
|
14
14
|
// if we are fetching an array of content, we disable noTraverse for perf reasons.
|
|
15
15
|
const noTraverse = limit !== 1;
|
|
16
|
-
const
|
|
16
|
+
const baseUrl = apiHost || 'https://cdn.builder.io';
|
|
17
|
+
const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
|
|
17
18
|
url.searchParams.set('apiKey', apiKey);
|
|
18
19
|
url.searchParams.set('limit', String(limit));
|
|
19
20
|
url.searchParams.set('noTraverse', String(noTraverse));
|
|
@@ -136,4 +136,8 @@ export interface GetContentOptions {
|
|
|
136
136
|
* Optional fetch options to be passed as the second argument to the `fetch` function.
|
|
137
137
|
*/
|
|
138
138
|
fetchOptions?: object;
|
|
139
|
+
/**
|
|
140
|
+
* Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
|
|
141
|
+
*/
|
|
142
|
+
apiHost?: string;
|
|
139
143
|
}
|
|
@@ -46,6 +46,8 @@ type EventProperties = Pick<Event, 'type'> & Pick<Event['data'], 'contentId' | '
|
|
|
46
46
|
[index: string]: any;
|
|
47
47
|
};
|
|
48
48
|
export type EventProps = EventProperties & CanTrack;
|
|
49
|
-
export declare function _track(eventProps: EventProps
|
|
49
|
+
export declare function _track({ apiHost, ...eventProps }: EventProps & {
|
|
50
|
+
apiHost?: string;
|
|
51
|
+
}): Promise<void | Response>;
|
|
50
52
|
export declare const track: (args: EventProperties) => Promise<void | Response>;
|
|
51
53
|
export {};
|