@builder.io/sdk-svelte 1.0.11 → 1.0.13
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/BaseText.svelte +1 -3
- package/lib/browser/blocks/button/button.svelte +2 -3
- package/lib/browser/blocks/columns/columns.svelte +3 -5
- package/lib/browser/blocks/form/form/form.svelte +5 -7
- package/lib/browser/blocks/form/submit-button/submit-button.svelte +2 -4
- package/lib/browser/blocks/image/image.svelte +4 -7
- package/lib/browser/blocks/symbol/symbol.svelte +1 -1
- package/lib/browser/blocks/video/video.svelte +2 -5
- package/lib/browser/components/block/block.helpers.d.ts +4 -0
- package/lib/browser/components/block/block.helpers.js +14 -1
- package/lib/browser/components/block/block.svelte +4 -10
- package/lib/browser/components/block/components/block-wrapper.svelte +2 -4
- package/lib/browser/components/block/components/interactive-element.svelte +2 -4
- package/lib/browser/components/blocks/blocks-wrapper.svelte +1 -3
- package/lib/browser/components/blocks/blocks.svelte +2 -2
- package/lib/browser/components/content/components/enable-editor.svelte +8 -5
- package/lib/browser/components/content/components/enable-editor.svelte.d.ts +1 -1
- package/lib/browser/components/content/components/styles.helpers.d.ts +1 -0
- package/lib/browser/components/content/components/styles.helpers.js +21 -0
- package/lib/browser/components/content/components/styles.svelte +3 -18
- package/lib/browser/components/content/components/styles.svelte.d.ts +2 -0
- package/lib/browser/components/content/content.svelte +5 -5
- package/lib/browser/components/content/content.svelte.d.ts +1 -0
- package/lib/browser/components/content/contentProps.types.d.ts +6 -1
- package/lib/browser/components/content-variants/content-variants.svelte +4 -4
- package/lib/browser/components/content-variants/content-variants.svelte.d.ts +2 -2
- package/lib/browser/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
- package/lib/browser/constants/sdk-version.d.ts +1 -1
- package/lib/browser/constants/sdk-version.js +1 -1
- package/lib/browser/functions/evaluate/browser-runtime/browser.js +1 -1
- package/lib/browser/functions/evaluate/evaluate.d.ts +3 -1
- package/lib/browser/functions/evaluate/evaluate.js +39 -3
- package/lib/browser/functions/evaluate/helpers.d.ts +1 -0
- package/lib/browser/functions/get-block-actions-handler.js +2 -1
- package/lib/browser/functions/get-processed-block.js +2 -1
- package/lib/edge/blocks/BaseText.svelte +1 -3
- package/lib/edge/blocks/button/button.svelte +2 -3
- package/lib/edge/blocks/columns/columns.svelte +3 -5
- package/lib/edge/blocks/form/form/form.svelte +5 -7
- package/lib/edge/blocks/form/submit-button/submit-button.svelte +2 -4
- package/lib/edge/blocks/image/image.svelte +4 -7
- package/lib/edge/blocks/symbol/symbol.svelte +1 -1
- package/lib/edge/blocks/video/video.svelte +2 -5
- package/lib/edge/components/block/block.helpers.d.ts +4 -0
- package/lib/edge/components/block/block.helpers.js +14 -1
- package/lib/edge/components/block/block.svelte +4 -10
- package/lib/edge/components/block/components/block-wrapper.svelte +2 -4
- package/lib/edge/components/block/components/interactive-element.svelte +2 -4
- package/lib/edge/components/blocks/blocks-wrapper.svelte +1 -3
- package/lib/edge/components/blocks/blocks.svelte +2 -2
- package/lib/edge/components/content/components/enable-editor.svelte +8 -5
- package/lib/edge/components/content/components/enable-editor.svelte.d.ts +1 -1
- package/lib/edge/components/content/components/styles.helpers.d.ts +1 -0
- package/lib/edge/components/content/components/styles.helpers.js +21 -0
- package/lib/edge/components/content/components/styles.svelte +3 -18
- package/lib/edge/components/content/components/styles.svelte.d.ts +2 -0
- package/lib/edge/components/content/content.svelte +5 -5
- package/lib/edge/components/content/content.svelte.d.ts +1 -0
- package/lib/edge/components/content/contentProps.types.d.ts +6 -1
- package/lib/edge/components/content-variants/content-variants.svelte +4 -4
- package/lib/edge/components/content-variants/content-variants.svelte.d.ts +2 -2
- package/lib/edge/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
- package/lib/edge/constants/sdk-version.d.ts +1 -1
- package/lib/edge/constants/sdk-version.js +1 -1
- package/lib/edge/functions/evaluate/browser-runtime/browser.js +1 -1
- package/lib/edge/functions/evaluate/evaluate.d.ts +3 -1
- package/lib/edge/functions/evaluate/evaluate.js +39 -3
- package/lib/edge/functions/evaluate/helpers.d.ts +1 -0
- package/lib/edge/functions/get-block-actions-handler.js +2 -1
- package/lib/edge/functions/get-processed-block.js +2 -1
- package/lib/node/blocks/BaseText.svelte +1 -3
- package/lib/node/blocks/button/button.svelte +2 -3
- package/lib/node/blocks/columns/columns.svelte +3 -5
- package/lib/node/blocks/form/form/form.svelte +5 -7
- package/lib/node/blocks/form/submit-button/submit-button.svelte +2 -4
- package/lib/node/blocks/image/image.svelte +4 -7
- package/lib/node/blocks/symbol/symbol.svelte +1 -1
- package/lib/node/blocks/video/video.svelte +2 -5
- package/lib/node/components/block/block.helpers.d.ts +4 -0
- package/lib/node/components/block/block.helpers.js +14 -1
- package/lib/node/components/block/block.svelte +4 -10
- package/lib/node/components/block/components/block-wrapper.svelte +2 -4
- package/lib/node/components/block/components/interactive-element.svelte +2 -4
- package/lib/node/components/blocks/blocks-wrapper.svelte +1 -3
- package/lib/node/components/blocks/blocks.svelte +2 -2
- package/lib/node/components/content/components/enable-editor.svelte +8 -5
- package/lib/node/components/content/components/enable-editor.svelte.d.ts +1 -1
- package/lib/node/components/content/components/styles.helpers.d.ts +1 -0
- package/lib/node/components/content/components/styles.helpers.js +21 -0
- package/lib/node/components/content/components/styles.svelte +3 -18
- package/lib/node/components/content/components/styles.svelte.d.ts +2 -0
- package/lib/node/components/content/content.svelte +5 -5
- package/lib/node/components/content/content.svelte.d.ts +1 -0
- package/lib/node/components/content/contentProps.types.d.ts +6 -1
- package/lib/node/components/content-variants/content-variants.svelte +4 -4
- package/lib/node/components/content-variants/content-variants.svelte.d.ts +2 -2
- package/lib/node/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
- package/lib/node/constants/sdk-version.d.ts +1 -1
- package/lib/node/constants/sdk-version.js +1 -1
- package/lib/node/functions/evaluate/browser-runtime/browser.js +1 -1
- package/lib/node/functions/evaluate/evaluate.d.ts +3 -1
- package/lib/node/functions/evaluate/evaluate.js +39 -3
- package/lib/node/functions/evaluate/helpers.d.ts +1 -0
- package/lib/node/functions/get-block-actions-handler.js +2 -1
- package/lib/node/functions/get-processed-block.js +2 -1
- package/package.json +1 -1
- package/src/blocks/BaseText.svelte +1 -3
- package/src/blocks/button/button.svelte +2 -3
- package/src/blocks/columns/columns.svelte +3 -5
- package/src/blocks/form/form/form.svelte +5 -7
- package/src/blocks/form/submit-button/submit-button.svelte +2 -4
- package/src/blocks/image/image.svelte +4 -7
- package/src/blocks/symbol/symbol.svelte +1 -1
- package/src/blocks/video/video.svelte +2 -5
- package/src/components/block/block.helpers.ts +20 -1
- package/src/components/block/block.svelte +8 -11
- package/src/components/block/components/block-wrapper.svelte +2 -4
- package/src/components/block/components/interactive-element.svelte +2 -4
- package/src/components/blocks/blocks-wrapper.svelte +1 -3
- package/src/components/blocks/blocks.svelte +2 -2
- package/src/components/content/components/enable-editor.svelte +22 -10
- package/src/components/content/components/styles.helpers.ts +21 -0
- package/src/components/content/components/styles.svelte +4 -18
- package/src/components/content/content.svelte +5 -5
- package/src/components/content/contentProps.types.ts +6 -1
- package/src/components/content-variants/content-variants.svelte +5 -5
- package/src/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/evaluate/browser-runtime/browser.ts +1 -1
- package/src/functions/evaluate/evaluate.ts +44 -4
- package/src/functions/evaluate/helpers.ts +1 -0
- package/src/functions/get-block-actions-handler.ts +2 -1
- package/src/functions/get-processed-block.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "1.0.
|
|
1
|
+
export const SDK_VERSION = "1.0.13";
|
|
@@ -19,7 +19,7 @@ export function flattenState({ rootState, localState, rootSetState }) {
|
|
|
19
19
|
return localState[prop];
|
|
20
20
|
}
|
|
21
21
|
const val = target[prop];
|
|
22
|
-
if (typeof val === 'object') {
|
|
22
|
+
if (typeof val === 'object' && val !== null) {
|
|
23
23
|
return flattenState({
|
|
24
24
|
rootState: val,
|
|
25
25
|
localState: undefined,
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import type { EvaluatorArgs } from './helpers.js';
|
|
2
|
-
|
|
2
|
+
type EvalValue = unknown;
|
|
3
|
+
export declare function evaluate({ code, context, localState, rootState, rootSetState, event, isExpression, enableCache }: EvaluatorArgs): EvalValue;
|
|
4
|
+
export {};
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { logger } from '../../helpers/logger.js';
|
|
2
2
|
import { chooseBrowserOrServerEval } from './choose-eval.js';
|
|
3
3
|
import { getBuilderGlobals, parseCode } from './helpers.js';
|
|
4
|
-
|
|
4
|
+
class EvalCache {
|
|
5
|
+
static cacheLimit = 20;
|
|
6
|
+
static cache = new Map();
|
|
7
|
+
static getCacheKey(args) {
|
|
8
|
+
return JSON.stringify({
|
|
9
|
+
...args,
|
|
10
|
+
// replace the event with a random number to break cache
|
|
11
|
+
// thats because we can't serialize the event object due to circular refs in DOM node refs.
|
|
12
|
+
event: args.event ? Math.random() : undefined
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static getCachedValue(key) {
|
|
16
|
+
const cachedVal = EvalCache.cache.get(key);
|
|
17
|
+
return cachedVal;
|
|
18
|
+
}
|
|
19
|
+
static setCachedValue(key, value) {
|
|
20
|
+
if (EvalCache.cache.size > 20) {
|
|
21
|
+
EvalCache.cache.delete(EvalCache.cache.keys().next().value);
|
|
22
|
+
}
|
|
23
|
+
EvalCache.cache.set(key, {
|
|
24
|
+
value
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function evaluate({ code, context, localState, rootState, rootSetState, event, isExpression = true, enableCache }) {
|
|
5
29
|
if (code === '') {
|
|
6
30
|
logger.warn('Skipping evaluation of empty code block.');
|
|
7
|
-
return;
|
|
31
|
+
return undefined;
|
|
8
32
|
}
|
|
9
33
|
const args = {
|
|
10
34
|
code: parseCode(code, {
|
|
@@ -17,8 +41,20 @@ export function evaluate({ code, context, localState, rootState, rootSetState, e
|
|
|
17
41
|
rootState,
|
|
18
42
|
localState
|
|
19
43
|
};
|
|
44
|
+
if (enableCache) {
|
|
45
|
+
const cacheKey = EvalCache.getCacheKey(args);
|
|
46
|
+
const cachedValue = EvalCache.getCachedValue(cacheKey);
|
|
47
|
+
if (cachedValue) {
|
|
48
|
+
return cachedValue.value;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
20
51
|
try {
|
|
21
|
-
|
|
52
|
+
const newEval = chooseBrowserOrServerEval(args);
|
|
53
|
+
if (enableCache) {
|
|
54
|
+
const cacheKey = EvalCache.getCacheKey(args);
|
|
55
|
+
EvalCache.setCachedValue(cacheKey, newEval);
|
|
56
|
+
}
|
|
57
|
+
return newEval;
|
|
22
58
|
}
|
|
23
59
|
catch (e) {
|
|
24
60
|
logger.error('Failed code evaluation: ' + e.message, {
|
package/package.json
CHANGED
|
@@ -157,7 +157,6 @@
|
|
|
157
157
|
{#if TARGET !== "reactNative"}
|
|
158
158
|
<InlinedStyles styles={columnsStyles()} />
|
|
159
159
|
{/if}
|
|
160
|
-
|
|
161
160
|
{#each columns as column, index (index)}
|
|
162
161
|
<DynamicRenderer
|
|
163
162
|
TagName={column.link ? builderLinkComponent || "a" : "div"}
|
|
@@ -172,8 +171,7 @@
|
|
|
172
171
|
[getClassPropName()]: "builder-column",
|
|
173
172
|
style: mapStyleObjToStrIfNeeded(columnCssVars(index)),
|
|
174
173
|
}}
|
|
175
|
-
|
|
176
|
-
<Blocks
|
|
174
|
+
><Blocks
|
|
177
175
|
path={`component.options.columns.${index}.blocks`}
|
|
178
176
|
parent={builderBlock.id}
|
|
179
177
|
styleProp={{
|
|
@@ -183,8 +181,8 @@
|
|
|
183
181
|
registeredComponents={builderComponents}
|
|
184
182
|
linkComponent={builderLinkComponent}
|
|
185
183
|
blocks={column.blocks}
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
/></DynamicRenderer
|
|
185
|
+
>
|
|
188
186
|
{/each}
|
|
189
187
|
</div>
|
|
190
188
|
|
|
@@ -317,7 +317,6 @@
|
|
|
317
317
|
/>
|
|
318
318
|
{/each}
|
|
319
319
|
{/if}
|
|
320
|
-
|
|
321
320
|
{#if submissionState() === "error"}
|
|
322
321
|
<Blocks
|
|
323
322
|
path="errorMessage"
|
|
@@ -325,7 +324,6 @@
|
|
|
325
324
|
context={builderContext}
|
|
326
325
|
/>
|
|
327
326
|
{/if}
|
|
328
|
-
|
|
329
327
|
{#if submissionState() === "sending"}
|
|
330
328
|
<Blocks
|
|
331
329
|
path="sendingMessage"
|
|
@@ -333,13 +331,13 @@
|
|
|
333
331
|
context={builderContext}
|
|
334
332
|
/>
|
|
335
333
|
{/if}
|
|
336
|
-
|
|
337
334
|
{#if submissionState() === "error" && responseData}
|
|
338
|
-
<pre class="builder-form-error-text pre">
|
|
339
|
-
|
|
340
|
-
|
|
335
|
+
<pre class="builder-form-error-text pre">{JSON.stringify(
|
|
336
|
+
responseData,
|
|
337
|
+
null,
|
|
338
|
+
2
|
|
339
|
+
)}</pre>
|
|
341
340
|
{/if}
|
|
342
|
-
|
|
343
341
|
{#if submissionState() === "success"}
|
|
344
342
|
<Blocks
|
|
345
343
|
path="successMessage"
|
|
@@ -69,8 +69,7 @@
|
|
|
69
69
|
<picture>
|
|
70
70
|
{#if webpSrcSet()}
|
|
71
71
|
<source type="image/webp" srcset={webpSrcSet()} />
|
|
72
|
-
{/if}
|
|
73
|
-
<img
|
|
72
|
+
{/if}<img
|
|
74
73
|
use:mitosis_styling={{
|
|
75
74
|
objectPosition: backgroundPosition || "center",
|
|
76
75
|
objectFit: backgroundSize || "cover",
|
|
@@ -83,8 +82,8 @@
|
|
|
83
82
|
src={image}
|
|
84
83
|
srcset={srcSetToUse()}
|
|
85
84
|
{sizes}
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
/></picture
|
|
86
|
+
>
|
|
88
87
|
|
|
89
88
|
{#if aspectRatio && !(builderBlock?.children?.length && fitContent)}
|
|
90
89
|
<div
|
|
@@ -100,9 +99,7 @@
|
|
|
100
99
|
{/if}
|
|
101
100
|
|
|
102
101
|
{#if !fitContent && $$slots.default}
|
|
103
|
-
<div class="div-2">
|
|
104
|
-
<slot />
|
|
105
|
-
</div>
|
|
102
|
+
<div class="div-2"><slot /></div>
|
|
106
103
|
{/if}
|
|
107
104
|
|
|
108
105
|
<style>
|
|
@@ -93,9 +93,8 @@
|
|
|
93
93
|
>
|
|
94
94
|
{#if !lazyLoad}
|
|
95
95
|
<source type="video/mp4" src={video} />
|
|
96
|
-
{/if}
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
{/if}</video
|
|
97
|
+
>
|
|
99
98
|
{#if aspectRatio && !(fitContent && builderBlock?.children?.length)}
|
|
100
99
|
<div
|
|
101
100
|
use:mitosis_styling={{
|
|
@@ -106,7 +105,6 @@
|
|
|
106
105
|
}}
|
|
107
106
|
/>
|
|
108
107
|
{/if}
|
|
109
|
-
|
|
110
108
|
{#if builderBlock?.children?.length && fitContent}
|
|
111
109
|
<div
|
|
112
110
|
use:mitosis_styling={{
|
|
@@ -118,7 +116,6 @@
|
|
|
118
116
|
<slot />
|
|
119
117
|
</div>
|
|
120
118
|
{/if}
|
|
121
|
-
|
|
122
119
|
{#if builderBlock?.children?.length && !fitContent}
|
|
123
120
|
<div
|
|
124
121
|
use:mitosis_styling={{
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { BuilderContextInterface, RegisteredComponents } from '../../context/types.js';
|
|
2
2
|
import { evaluate } from '../../functions/evaluate/index.js';
|
|
3
|
+
import { extractTextStyles } from '../../functions/extract-text-styles.js';
|
|
3
4
|
import { getProcessedBlock } from '../../functions/get-processed-block.js';
|
|
5
|
+
import { getStyle } from '../../functions/get-style.js';
|
|
4
6
|
import type { BuilderBlock } from '../../types/builder-block.js';
|
|
5
7
|
import type { RepeatData } from './types.js';
|
|
6
8
|
export const getComponent = ({
|
|
@@ -57,7 +59,8 @@ export const getRepeatItemData = ({
|
|
|
57
59
|
localState: context.localState,
|
|
58
60
|
rootState: context.rootState,
|
|
59
61
|
rootSetState: context.rootSetState,
|
|
60
|
-
context: context.context
|
|
62
|
+
context: context.context,
|
|
63
|
+
enableCache: true
|
|
61
64
|
});
|
|
62
65
|
if (!Array.isArray(itemsArray)) {
|
|
63
66
|
return undefined;
|
|
@@ -78,4 +81,20 @@ export const getRepeatItemData = ({
|
|
|
78
81
|
block: blockWithoutRepeat
|
|
79
82
|
}));
|
|
80
83
|
return repeatArray;
|
|
84
|
+
};
|
|
85
|
+
export const getInheritedStyles = ({
|
|
86
|
+
block,
|
|
87
|
+
context
|
|
88
|
+
}: {
|
|
89
|
+
block: BuilderBlock;
|
|
90
|
+
context: BuilderContextInterface;
|
|
91
|
+
}) => {
|
|
92
|
+
const style = getStyle({
|
|
93
|
+
block,
|
|
94
|
+
context
|
|
95
|
+
});
|
|
96
|
+
if (!style) {
|
|
97
|
+
return {};
|
|
98
|
+
}
|
|
99
|
+
return extractTextStyles(style);
|
|
81
100
|
}
|
|
@@ -9,19 +9,20 @@
|
|
|
9
9
|
|
|
10
10
|
<script lang="ts">
|
|
11
11
|
import { onMount } from "svelte";
|
|
12
|
-
import { writable } from "svelte/store";
|
|
13
12
|
|
|
14
13
|
import type {
|
|
15
14
|
BuilderContextInterface,
|
|
16
15
|
RegisteredComponents,
|
|
17
16
|
} from "../../context/types.js";
|
|
18
|
-
import { extractTextStyles } from "../../functions/extract-text-styles.js";
|
|
19
17
|
import { getBlockComponentOptions } from "../../functions/get-block-component-options.js";
|
|
20
18
|
import { getProcessedBlock } from "../../functions/get-processed-block.js";
|
|
21
|
-
import { getStyle } from "../../functions/get-style.js";
|
|
22
19
|
import type { BuilderBlock } from "../../types/builder-block.js";
|
|
23
20
|
import { bindAnimations } from "./animator.js";
|
|
24
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
getComponent,
|
|
23
|
+
getInheritedStyles,
|
|
24
|
+
getRepeatItemData,
|
|
25
|
+
} from "./block.helpers.js";
|
|
25
26
|
import BlockStyles from "./components/block-styles.svelte";
|
|
26
27
|
import BlockWrapper from "./components/block-wrapper.svelte";
|
|
27
28
|
import type { ComponentProps } from "./components/component-ref/component-ref.helpers.js";
|
|
@@ -116,7 +117,7 @@
|
|
|
116
117
|
}
|
|
117
118
|
: {}),
|
|
118
119
|
},
|
|
119
|
-
context:
|
|
120
|
+
context: context,
|
|
120
121
|
linkComponent: linkComponent,
|
|
121
122
|
registeredComponents: registeredComponents,
|
|
122
123
|
builderBlock: processedBlock(),
|
|
@@ -125,8 +126,6 @@
|
|
|
125
126
|
};
|
|
126
127
|
};
|
|
127
128
|
|
|
128
|
-
let childrenContext = writable($context);
|
|
129
|
-
|
|
130
129
|
onMount(() => {
|
|
131
130
|
const blockId = processedBlock().id;
|
|
132
131
|
const animations = processedBlock().animations;
|
|
@@ -153,8 +152,7 @@
|
|
|
153
152
|
block={processedBlock()}
|
|
154
153
|
{context}
|
|
155
154
|
{linkComponent}
|
|
156
|
-
|
|
157
|
-
<ComponentRef
|
|
155
|
+
><ComponentRef
|
|
158
156
|
componentRef={componentRefProps().componentRef}
|
|
159
157
|
componentOptions={componentRefProps().componentOptions}
|
|
160
158
|
blockChildren={componentRefProps().blockChildren}
|
|
@@ -165,13 +163,12 @@
|
|
|
165
163
|
includeBlockProps={componentRefProps().includeBlockProps}
|
|
166
164
|
isInteractive={componentRefProps().isInteractive}
|
|
167
165
|
/>
|
|
168
|
-
|
|
169
166
|
{#each childrenWithoutParentComponent() as child (child.id)}
|
|
170
167
|
<svelte:self
|
|
171
168
|
block={child}
|
|
172
|
-
context={childrenContext}
|
|
173
169
|
{registeredComponents}
|
|
174
170
|
{linkComponent}
|
|
171
|
+
{context}
|
|
175
172
|
/>
|
|
176
173
|
{/each}
|
|
177
174
|
</BlockWrapper>
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
| "isSsrAbTest"
|
|
7
7
|
| "blocksWrapper"
|
|
8
8
|
| "blocksWrapperProps"
|
|
9
|
+
| "isNestedRender"
|
|
9
10
|
> & {
|
|
10
11
|
builderContextSignal: Writable<BuilderContextInterface>;
|
|
11
12
|
setBuilderContextSignal?: (signal: any) => any;
|
|
@@ -130,6 +131,10 @@
|
|
|
130
131
|
localState: undefined,
|
|
131
132
|
rootState: $builderContextSignal.rootState,
|
|
132
133
|
rootSetState: $builderContextSignal.rootSetState,
|
|
134
|
+
/**
|
|
135
|
+
* We don't want to cache the result of the JS code, since it's arbitrary side effect code.
|
|
136
|
+
*/
|
|
137
|
+
enableCache: false,
|
|
133
138
|
});
|
|
134
139
|
}
|
|
135
140
|
}
|
|
@@ -153,13 +158,16 @@
|
|
|
153
158
|
}
|
|
154
159
|
function evalExpression(expression: string) {
|
|
155
160
|
return expression.replace(/{{([^}]+)}}/g, (_match, group) =>
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
String(
|
|
162
|
+
evaluate({
|
|
163
|
+
code: group,
|
|
164
|
+
context: context || {},
|
|
165
|
+
localState: undefined,
|
|
166
|
+
rootState: $builderContextSignal.rootState,
|
|
167
|
+
rootSetState: $builderContextSignal.rootSetState,
|
|
168
|
+
enableCache: true,
|
|
169
|
+
})
|
|
170
|
+
)
|
|
163
171
|
);
|
|
164
172
|
}
|
|
165
173
|
function handleRequest({ url, key }: { key: string; url: string }) {
|
|
@@ -333,15 +341,18 @@
|
|
|
333
341
|
}
|
|
334
342
|
|
|
335
343
|
$: onUpdateFn_0(...[content]);
|
|
344
|
+
|
|
336
345
|
function onUpdateFn_1(..._args: any[]) {}
|
|
337
346
|
|
|
338
347
|
$: onUpdateFn_1(...[shouldSendResetCookie]);
|
|
348
|
+
|
|
339
349
|
function onUpdateFn_2(..._args: any[]) {
|
|
340
350
|
evaluateJsCode();
|
|
341
351
|
}
|
|
342
352
|
$: onUpdateFn_2_builderContextSignal_content__data__jsCode =
|
|
343
353
|
$builderContextSignal.content?.data?.jsCode;
|
|
344
354
|
$: onUpdateFn_2(...[onUpdateFn_2_builderContextSignal_content__data__jsCode]);
|
|
355
|
+
|
|
345
356
|
function onUpdateFn_3(..._args: any[]) {
|
|
346
357
|
runHttpRequests();
|
|
347
358
|
}
|
|
@@ -350,12 +361,14 @@
|
|
|
350
361
|
$: onUpdateFn_3(
|
|
351
362
|
...[onUpdateFn_3_builderContextSignal_content__data__httpRequests]
|
|
352
363
|
);
|
|
364
|
+
|
|
353
365
|
function onUpdateFn_4(..._args: any[]) {
|
|
354
366
|
emitStateUpdate();
|
|
355
367
|
}
|
|
356
368
|
$: onUpdateFn_4_builderContextSignal_rootState =
|
|
357
369
|
$builderContextSignal.rootState;
|
|
358
370
|
$: onUpdateFn_4(...[onUpdateFn_4_builderContextSignal_rootState]);
|
|
371
|
+
|
|
359
372
|
function onUpdateFn_5(..._args: any[]) {
|
|
360
373
|
if (data) {
|
|
361
374
|
mergeNewRootState(data);
|
|
@@ -363,6 +376,7 @@
|
|
|
363
376
|
}
|
|
364
377
|
|
|
365
378
|
$: onUpdateFn_5(...[data]);
|
|
379
|
+
|
|
366
380
|
function onUpdateFn_6(..._args: any[]) {
|
|
367
381
|
if (locale) {
|
|
368
382
|
mergeNewRootState({
|
|
@@ -411,8 +425,6 @@
|
|
|
411
425
|
}}
|
|
412
426
|
on:initpreviewingbldr={(event) => {
|
|
413
427
|
elementRef_onInitpreviewingbldr(event);
|
|
414
|
-
}}
|
|
428
|
+
}}><slot /></svelte:element
|
|
415
429
|
>
|
|
416
|
-
<slot />
|
|
417
|
-
</svelte:element>
|
|
418
430
|
{/if}
|
|
@@ -74,4 +74,25 @@ export const getCss = ({
|
|
|
74
74
|
// E.g. `& .foobar { ... }` to scope CSS
|
|
75
75
|
// TODO: handle if '&' is within a string like `content: "&"`
|
|
76
76
|
return cssCode?.replace(/&/g, `div[builder-content-id="${contentId}"]`) || '';
|
|
77
|
+
};
|
|
78
|
+
const DEFAULT_STYLES = `
|
|
79
|
+
.builder-button {
|
|
80
|
+
all: unset;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.builder-text > p:first-of-type, .builder-text > .builder-paragraph:first-of-type {
|
|
84
|
+
margin: 0;
|
|
85
|
+
}
|
|
86
|
+
.builder-text > p, .builder-text > .builder-paragraph {
|
|
87
|
+
color: inherit;
|
|
88
|
+
line-height: inherit;
|
|
89
|
+
letter-spacing: inherit;
|
|
90
|
+
font-weight: inherit;
|
|
91
|
+
font-size: inherit;
|
|
92
|
+
text-align: inherit;
|
|
93
|
+
font-family: inherit;
|
|
94
|
+
}
|
|
95
|
+
`;
|
|
96
|
+
export const getDefaultStyles = (isNested: boolean | undefined) => {
|
|
97
|
+
return !isNested ? DEFAULT_STYLES : '';
|
|
77
98
|
}
|
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
cssCode?: string;
|
|
4
4
|
customFonts?: CustomFont[];
|
|
5
5
|
contentId?: string;
|
|
6
|
+
isNestedRender?: boolean;
|
|
6
7
|
}
|
|
7
8
|
</script>
|
|
8
9
|
|
|
9
10
|
<script lang="ts">
|
|
10
11
|
import InlinedStyles from "../../inlined-styles.svelte";
|
|
11
12
|
import type { CustomFont } from "./styles.helpers.js";
|
|
12
|
-
import { getCss, getFontCss } from "./styles.helpers.js";
|
|
13
|
+
import { getCss, getDefaultStyles, getFontCss } from "./styles.helpers.js";
|
|
13
14
|
|
|
14
15
|
export let cssCode: Props["cssCode"] = undefined;
|
|
15
16
|
export let contentId: Props["contentId"] = undefined;
|
|
16
17
|
export let customFonts: Props["customFonts"] = undefined;
|
|
18
|
+
export let isNestedRender: Props["isNestedRender"] = undefined;
|
|
17
19
|
|
|
18
20
|
let injectedStyles = `
|
|
19
21
|
${getCss({
|
|
@@ -23,23 +25,7 @@ ${getCss({
|
|
|
23
25
|
${getFontCss({
|
|
24
26
|
customFonts: customFonts,
|
|
25
27
|
})}
|
|
26
|
-
|
|
27
|
-
.builder-button {
|
|
28
|
-
all: unset;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.builder-text > p:first-of-type, .builder-text > .builder-paragraph:first-of-type {
|
|
32
|
-
margin: 0;
|
|
33
|
-
}
|
|
34
|
-
.builder-text > p, .builder-text > .builder-paragraph {
|
|
35
|
-
color: inherit;
|
|
36
|
-
line-height: inherit;
|
|
37
|
-
letter-spacing: inherit;
|
|
38
|
-
font-weight: inherit;
|
|
39
|
-
font-size: inherit;
|
|
40
|
-
text-align: inherit;
|
|
41
|
-
font-family: inherit;
|
|
42
|
-
}
|
|
28
|
+
${getDefaultStyles(isNestedRender)}
|
|
43
29
|
`.trim();
|
|
44
30
|
</script>
|
|
45
31
|
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
export let linkComponent: ContentProps["linkComponent"] = undefined;
|
|
45
45
|
export let trustedHosts: ContentProps["trustedHosts"] = undefined;
|
|
46
46
|
export let isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
47
|
+
export let isNestedRender: ContentProps["isNestedRender"] = undefined;
|
|
47
48
|
|
|
48
49
|
function contentSetState(newRootState: BuilderRenderState) {
|
|
49
50
|
$builderContextSignal.rootState = newRootState;
|
|
@@ -123,18 +124,17 @@
|
|
|
123
124
|
{#if isSsrAbTest}
|
|
124
125
|
<InlinedScript {scriptStr} />
|
|
125
126
|
{/if}
|
|
126
|
-
|
|
127
127
|
{#if TARGET !== "reactNative"}
|
|
128
128
|
<ContentStyles
|
|
129
|
+
{isNestedRender}
|
|
129
130
|
contentId={$builderContextSignal.content?.id}
|
|
130
131
|
cssCode={$builderContextSignal.content?.data?.cssCode}
|
|
131
132
|
customFonts={$builderContextSignal.content?.data?.customFonts}
|
|
132
133
|
/>
|
|
133
|
-
{/if}
|
|
134
|
-
<Blocks
|
|
134
|
+
{/if}<Blocks
|
|
135
135
|
blocks={$builderContextSignal.content?.data?.blocks}
|
|
136
136
|
context={builderContextSignal}
|
|
137
137
|
{registeredComponents}
|
|
138
138
|
{linkComponent}
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
/></EnableEditor
|
|
140
|
+
>
|
|
@@ -9,4 +9,9 @@ interface InternalRenderProps {
|
|
|
9
9
|
* This is in a separate file so that we can override it (most notably in Vue,
|
|
10
10
|
* where prop types cannot be wrapped by generics like `EnforcePartials`).
|
|
11
11
|
*/
|
|
12
|
-
export type ContentProps = InternalRenderProps & EnforcePartials<ContentVariantsPrps>
|
|
12
|
+
export type ContentProps = InternalRenderProps & EnforcePartials<ContentVariantsPrps> & {
|
|
13
|
+
/**
|
|
14
|
+
* For internal use only. Do not provide this prop.
|
|
15
|
+
*/
|
|
16
|
+
isNestedRender?: boolean;
|
|
17
|
+
}
|