@builder.io/sdk-svelte 0.5.7 → 0.5.9
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/package/--package.json +7 -3
- package/package/CHANGELOG.md +8 -0
- package/package/blocks/button/button.svelte +4 -4
- package/package/blocks/button/button.svelte.d.ts +4 -4
- package/package/blocks/columns/columns.svelte +4 -4
- package/package/blocks/columns/columns.svelte.d.ts +4 -4
- package/package/blocks/custom-code/custom-code.svelte +1 -1
- package/package/blocks/custom-code/custom-code.svelte.d.ts +1 -1
- package/package/blocks/image/image.svelte +11 -11
- package/package/blocks/image/image.svelte.d.ts +11 -11
- package/package/blocks/img/img.svelte +6 -6
- package/package/blocks/img/img.svelte.d.ts +6 -6
- package/package/blocks/input/input.svelte +7 -7
- package/package/blocks/input/input.svelte.d.ts +7 -7
- package/package/blocks/raw-text/raw-text.svelte +2 -2
- package/package/blocks/raw-text/raw-text.svelte.d.ts +2 -2
- package/package/blocks/section/section.svelte +2 -2
- package/package/blocks/section/section.svelte.d.ts +2 -2
- package/package/blocks/select/select.svelte +5 -5
- package/package/blocks/select/select.svelte.d.ts +5 -5
- package/package/blocks/submit-button/submit-button.svelte +2 -2
- package/package/blocks/submit-button/submit-button.svelte.d.ts +2 -2
- package/package/blocks/symbol/symbol.svelte +3 -3
- package/package/blocks/symbol/symbol.svelte.d.ts +3 -3
- package/package/blocks/text/text.svelte +1 -1
- package/package/blocks/text/text.svelte.d.ts +1 -1
- package/package/blocks/textarea/textarea.svelte +5 -5
- package/package/blocks/textarea/textarea.svelte.d.ts +5 -5
- package/package/blocks/video/video.svelte +11 -11
- package/package/blocks/video/video.svelte.d.ts +11 -11
- package/package/components/block/components/component-ref/component-ref.svelte +1 -0
- package/package/components/blocks/blocks.svelte +2 -2
- package/package/components/blocks/blocks.svelte.d.ts +2 -2
- package/package/components/content/components/enable-editor.svelte +9 -8
- package/package/components/content/components/enable-editor.svelte.d.ts +7 -7
- package/package/components/content/components/styles.svelte +3 -3
- package/package/components/content/components/styles.svelte.d.ts +3 -3
- package/package/components/content/content.svelte +10 -10
- package/package/components/content/content.svelte.d.ts +10 -10
- package/package/components/content/content.types.d.ts +2 -2
- package/package/components/content-variants/content-variants.svelte +11 -11
- package/package/components/content-variants/content-variants.svelte.d.ts +13 -13
- package/package/components/content-variants/content-variants.types.d.ts +1 -1
- package/package/components/inlined-script.svelte +1 -1
- package/package/components/inlined-script.svelte.d.ts +1 -1
- package/package/components/inlined-styles.svelte +1 -1
- package/package/components/inlined-styles.svelte.d.ts +1 -1
- package/package/constants/sdk-version.d.ts +1 -1
- package/package/constants/sdk-version.js +1 -1
- package/package/functions/evaluate/browser-runtime/browser.d.ts +4 -0
- package/package/functions/evaluate/browser-runtime/browser.js +31 -0
- package/package/functions/evaluate/browser-runtime/index.d.ts +1 -0
- package/package/functions/evaluate/browser-runtime/index.js +1 -0
- package/package/functions/evaluate/evaluate.d.ts +4 -8
- package/package/functions/evaluate/evaluate.js +15 -38
- package/package/functions/evaluate/helpers.d.ts +18 -0
- package/package/functions/evaluate/helpers.js +10 -0
- package/package/functions/evaluate/index.d.ts +1 -1
- package/package/functions/evaluate/index.js +1 -1
- package/package/functions/evaluate/node-runtime/index.d.ts +1 -0
- package/package/functions/evaluate/node-runtime/index.js +1 -0
- package/package/functions/evaluate/non-node-runtime/non-node-runtime.d.ts +2 -2
- package/package/functions/evaluate/non-node-runtime/non-node-runtime.js +12 -13
- package/package/functions/fetch-builder-props.d.ts +2 -2
- package/package/functions/get-block-actions-handler.js +1 -1
- package/package/functions/register-component.js +1 -1
- package/package/index.d.ts +5 -14
- package/package/index.js +5 -9
- package/package/server-index.d.ts +15 -0
- package/package/server-index.js +10 -0
- package/package.json +1 -1
- package/src/blocks/button/button.svelte +4 -4
- package/src/blocks/columns/columns.svelte +6 -4
- package/src/blocks/custom-code/custom-code.svelte +1 -1
- package/src/blocks/image/image.svelte +11 -11
- package/src/blocks/img/img.svelte +6 -6
- package/src/blocks/input/input.svelte +7 -7
- package/src/blocks/raw-text/raw-text.svelte +2 -2
- package/src/blocks/section/section.svelte +2 -2
- package/src/blocks/select/select.svelte +5 -5
- package/src/blocks/submit-button/submit-button.svelte +2 -2
- package/src/blocks/symbol/symbol.svelte +4 -3
- package/src/blocks/text/text.svelte +1 -1
- package/src/blocks/textarea/textarea.svelte +5 -5
- package/src/blocks/video/video.svelte +11 -11
- package/src/components/block/components/component-ref/component-ref.svelte +1 -0
- package/src/components/blocks/blocks.svelte +3 -2
- package/src/components/content/components/enable-editor.svelte +9 -8
- package/src/components/content/components/styles.svelte +3 -3
- package/src/components/content/content.svelte +10 -10
- package/src/components/content/content.types.ts +2 -2
- package/src/components/content-variants/content-variants.svelte +15 -13
- package/src/components/content-variants/content-variants.types.ts +1 -1
- package/src/components/inlined-script.svelte +1 -1
- package/src/components/inlined-styles.svelte +1 -1
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/evaluate/browser-runtime/browser.ts +41 -0
- package/src/functions/evaluate/browser-runtime/index.ts +1 -0
- package/src/functions/evaluate/evaluate.ts +21 -53
- package/src/functions/evaluate/helpers.ts +32 -0
- package/src/functions/evaluate/index.ts +1 -1
- package/src/functions/evaluate/node-runtime/index.ts +1 -0
- package/src/functions/evaluate/non-node-runtime/non-node-runtime.ts +13 -14
- package/src/functions/fetch-builder-props.ts +2 -2
- package/src/functions/get-block-actions-handler.ts +1 -1
- package/src/functions/register-component.ts +1 -1
- package/src/index.ts +6 -14
- package/src/server-index.ts +15 -0
- package/package/functions/evaluate/types.d.ts +0 -11
- package/package/functions/evaluate/types.js +0 -1
- package/src/functions/evaluate/types.ts +0 -11
- /package/package/functions/evaluate/{acorn-interpreter.d.ts → non-node-runtime/acorn-interpreter.d.ts} +0 -0
- /package/package/functions/evaluate/{acorn-interpreter.js → non-node-runtime/acorn-interpreter.js} +0 -0
- /package/src/functions/evaluate/{acorn-interpreter.ts → non-node-runtime/acorn-interpreter.ts} +0 -0
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
import { getSrcSet } from "./image.helpers.js";
|
|
25
25
|
|
|
26
26
|
export let image: ImageProps["image"];
|
|
27
|
-
export let src: ImageProps["src"];
|
|
28
|
-
export let srcset: ImageProps["srcset"];
|
|
29
|
-
export let noWebp: ImageProps["noWebp"];
|
|
30
|
-
export let aspectRatio: ImageProps["aspectRatio"];
|
|
31
|
-
export let altText: ImageProps["altText"];
|
|
32
|
-
export let backgroundPosition: ImageProps["backgroundPosition"];
|
|
33
|
-
export let backgroundSize: ImageProps["backgroundSize"];
|
|
34
|
-
export let className: ImageProps["className"];
|
|
35
|
-
export let sizes: ImageProps["sizes"];
|
|
36
|
-
export let builderBlock: ImageProps["builderBlock"];
|
|
37
|
-
export let fitContent: ImageProps["fitContent"];
|
|
27
|
+
export let src: ImageProps["src"] = undefined;
|
|
28
|
+
export let srcset: ImageProps["srcset"] = undefined;
|
|
29
|
+
export let noWebp: ImageProps["noWebp"] = undefined;
|
|
30
|
+
export let aspectRatio: ImageProps["aspectRatio"] = undefined;
|
|
31
|
+
export let altText: ImageProps["altText"] = undefined;
|
|
32
|
+
export let backgroundPosition: ImageProps["backgroundPosition"] = undefined;
|
|
33
|
+
export let backgroundSize: ImageProps["backgroundSize"] = undefined;
|
|
34
|
+
export let className: ImageProps["className"] = undefined;
|
|
35
|
+
export let sizes: ImageProps["sizes"] = undefined;
|
|
36
|
+
export let builderBlock: ImageProps["builderBlock"] = undefined;
|
|
37
|
+
export let fitContent: ImageProps["fitContent"] = undefined;
|
|
38
38
|
|
|
39
39
|
function mitosis_styling(node, vars) {
|
|
40
40
|
Object.entries(vars || {}).forEach(([p, v]) => {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
import { filterAttrs } from "../helpers.js";
|
|
27
27
|
import { setAttrs } from "../helpers.js";
|
|
28
28
|
|
|
29
|
-
export let backgroundSize: ImgProps["backgroundSize"];
|
|
30
|
-
export let backgroundPosition: ImgProps["backgroundPosition"];
|
|
31
|
-
export let imgSrc: ImgProps["imgSrc"];
|
|
32
|
-
export let altText: ImgProps["altText"];
|
|
33
|
-
export let image: ImgProps["image"];
|
|
34
|
-
export let attributes: ImgProps["attributes"];
|
|
29
|
+
export let backgroundSize: ImgProps["backgroundSize"] = undefined;
|
|
30
|
+
export let backgroundPosition: ImgProps["backgroundPosition"] = undefined;
|
|
31
|
+
export let imgSrc: ImgProps["imgSrc"] = undefined;
|
|
32
|
+
export let altText: ImgProps["altText"] = undefined;
|
|
33
|
+
export let image: ImgProps["image"] = undefined;
|
|
34
|
+
export let attributes: ImgProps["attributes"] = undefined;
|
|
35
35
|
|
|
36
36
|
function mitosis_styling(node, vars) {
|
|
37
37
|
Object.entries(vars || {}).forEach(([p, v]) => {
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
import { filterAttrs } from "../helpers.js";
|
|
19
19
|
import { setAttrs } from "../helpers.js";
|
|
20
20
|
|
|
21
|
-
export let attributes: FormInputProps["attributes"];
|
|
22
|
-
export let defaultValue: FormInputProps["defaultValue"];
|
|
23
|
-
export let placeholder: FormInputProps["placeholder"];
|
|
24
|
-
export let type: FormInputProps["type"];
|
|
25
|
-
export let name: FormInputProps["name"];
|
|
26
|
-
export let value: FormInputProps["value"];
|
|
27
|
-
export let required: FormInputProps["required"];
|
|
21
|
+
export let attributes: FormInputProps["attributes"] = undefined;
|
|
22
|
+
export let defaultValue: FormInputProps["defaultValue"] = undefined;
|
|
23
|
+
export let placeholder: FormInputProps["placeholder"] = undefined;
|
|
24
|
+
export let type: FormInputProps["type"] = undefined;
|
|
25
|
+
export let name: FormInputProps["name"] = undefined;
|
|
26
|
+
export let value: FormInputProps["value"] = undefined;
|
|
27
|
+
export let required: FormInputProps["required"] = undefined;
|
|
28
28
|
</script>
|
|
29
29
|
|
|
30
30
|
<input
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<script lang="ts">
|
|
9
|
-
export let text: RawTextProps["text"];
|
|
10
|
-
export let attributes: RawTextProps["attributes"];
|
|
9
|
+
export let text: RawTextProps["text"] = undefined;
|
|
10
|
+
export let attributes: RawTextProps["attributes"] = undefined;
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<span class={attributes.class}>{@html text?.toString() || ""}</span>
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
import { filterAttrs } from "../helpers.js";
|
|
15
15
|
import { setAttrs } from "../helpers.js";
|
|
16
16
|
|
|
17
|
-
export let attributes: SectionProps["attributes"];
|
|
18
|
-
export let maxWidth: SectionProps["maxWidth"];
|
|
17
|
+
export let attributes: SectionProps["attributes"] = undefined;
|
|
18
|
+
export let maxWidth: SectionProps["maxWidth"] = undefined;
|
|
19
19
|
|
|
20
20
|
function mitosis_styling(node, vars) {
|
|
21
21
|
Object.entries(vars || {}).forEach(([p, v]) => {
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
import { filterAttrs } from "../helpers.js";
|
|
20
20
|
import { setAttrs } from "../helpers.js";
|
|
21
21
|
|
|
22
|
-
export let attributes: FormSelectProps["attributes"];
|
|
23
|
-
export let value: FormSelectProps["value"];
|
|
24
|
-
export let defaultValue: FormSelectProps["defaultValue"];
|
|
25
|
-
export let name: FormSelectProps["name"];
|
|
26
|
-
export let options: FormSelectProps["options"];
|
|
22
|
+
export let attributes: FormSelectProps["attributes"] = undefined;
|
|
23
|
+
export let value: FormSelectProps["value"] = undefined;
|
|
24
|
+
export let defaultValue: FormSelectProps["defaultValue"] = undefined;
|
|
25
|
+
export let name: FormSelectProps["name"] = undefined;
|
|
26
|
+
export let options: FormSelectProps["options"] = undefined;
|
|
27
27
|
</script>
|
|
28
28
|
|
|
29
29
|
<select
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
import { filterAttrs } from "../helpers.js";
|
|
13
13
|
import { setAttrs } from "../helpers.js";
|
|
14
14
|
|
|
15
|
-
export let attributes: ButtonProps["attributes"];
|
|
16
|
-
export let text: ButtonProps["text"];
|
|
15
|
+
export let attributes: ButtonProps["attributes"] = undefined;
|
|
16
|
+
export let text: ButtonProps["text"] = undefined;
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<button
|
|
@@ -38,9 +38,10 @@
|
|
|
38
38
|
import type { Nullable } from "../../types/typescript.js";
|
|
39
39
|
|
|
40
40
|
export let js: PropsWithBuilderData<SymbolProps>["js"];
|
|
41
|
-
export let attributes: PropsWithBuilderData<SymbolProps>["attributes"]
|
|
42
|
-
|
|
43
|
-
export let
|
|
41
|
+
export let attributes: PropsWithBuilderData<SymbolProps>["attributes"] =
|
|
42
|
+
undefined;
|
|
43
|
+
export let symbol: PropsWithBuilderData<SymbolProps>["symbol"] = undefined;
|
|
44
|
+
export let dynamic: PropsWithBuilderData<SymbolProps>["dynamic"] = undefined;
|
|
44
45
|
export let builderContext: PropsWithBuilderData<SymbolProps>["builderContext"];
|
|
45
46
|
export let builderComponents: PropsWithBuilderData<SymbolProps>["builderComponents"];
|
|
46
47
|
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
import { filterAttrs } from "../helpers.js";
|
|
16
16
|
import { setAttrs } from "../helpers.js";
|
|
17
17
|
|
|
18
|
-
export let attributes: TextareaProps["attributes"];
|
|
19
|
-
export let placeholder: TextareaProps["placeholder"];
|
|
20
|
-
export let name: TextareaProps["name"];
|
|
21
|
-
export let value: TextareaProps["value"];
|
|
22
|
-
export let defaultValue: TextareaProps["defaultValue"];
|
|
18
|
+
export let attributes: TextareaProps["attributes"] = undefined;
|
|
19
|
+
export let placeholder: TextareaProps["placeholder"] = undefined;
|
|
20
|
+
export let name: TextareaProps["name"] = undefined;
|
|
21
|
+
export let value: TextareaProps["value"] = undefined;
|
|
22
|
+
export let defaultValue: TextareaProps["defaultValue"] = undefined;
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<textarea
|
|
@@ -28,17 +28,17 @@
|
|
|
28
28
|
</script>
|
|
29
29
|
|
|
30
30
|
<script lang="ts">
|
|
31
|
-
export let autoPlay: VideoProps["autoPlay"];
|
|
32
|
-
export let muted: VideoProps["muted"];
|
|
33
|
-
export let controls: VideoProps["controls"];
|
|
34
|
-
export let loop: VideoProps["loop"];
|
|
35
|
-
export let playsInline: VideoProps["playsInline"];
|
|
36
|
-
export let attributes: VideoProps["attributes"];
|
|
37
|
-
export let preload: VideoProps["preload"];
|
|
38
|
-
export let fit: VideoProps["fit"];
|
|
39
|
-
export let position: VideoProps["position"];
|
|
40
|
-
export let video: VideoProps["video"];
|
|
41
|
-
export let posterImage: VideoProps["posterImage"];
|
|
31
|
+
export let autoPlay: VideoProps["autoPlay"] = undefined;
|
|
32
|
+
export let muted: VideoProps["muted"] = undefined;
|
|
33
|
+
export let controls: VideoProps["controls"] = undefined;
|
|
34
|
+
export let loop: VideoProps["loop"] = undefined;
|
|
35
|
+
export let playsInline: VideoProps["playsInline"] = undefined;
|
|
36
|
+
export let attributes: VideoProps["attributes"] = undefined;
|
|
37
|
+
export let preload: VideoProps["preload"] = undefined;
|
|
38
|
+
export let fit: VideoProps["fit"] = undefined;
|
|
39
|
+
export let position: VideoProps["position"] = undefined;
|
|
40
|
+
export let video: VideoProps["video"] = undefined;
|
|
41
|
+
export let posterImage: VideoProps["posterImage"] = undefined;
|
|
42
42
|
|
|
43
43
|
function mitosis_styling(node, vars) {
|
|
44
44
|
Object.entries(vars || {}).forEach(([p, v]) => {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import InteractiveElement from "../interactive-element.svelte";
|
|
5
5
|
import type { ComponentProps } from "./component-ref.helpers.js";
|
|
6
6
|
import { getWrapperProps } from "./component-ref.helpers.js";
|
|
7
|
+
import { wrapComponentRef } from "../../../content/wrap-component-ref.js";
|
|
7
8
|
|
|
8
9
|
export let isInteractive: ComponentProps["isInteractive"];
|
|
9
10
|
export let componentRef: ComponentProps["componentRef"];
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
export let parent: BlocksProps["parent"];
|
|
25
25
|
export let path: BlocksProps["path"];
|
|
26
26
|
export let styleProp: BlocksProps["styleProp"];
|
|
27
|
-
export let context: BlocksProps["context"];
|
|
28
|
-
export let registeredComponents: BlocksProps["registeredComponents"]
|
|
27
|
+
export let context: BlocksProps["context"] = undefined;
|
|
28
|
+
export let registeredComponents: BlocksProps["registeredComponents"] =
|
|
29
|
+
undefined;
|
|
29
30
|
|
|
30
31
|
let builderContext = getContext(BuilderContext.key);
|
|
31
32
|
let componentsContext = getContext(ComponentsContext.key);
|
|
@@ -36,20 +36,21 @@
|
|
|
36
36
|
import { isPreviewing } from "../../../functions/is-previewing.js";
|
|
37
37
|
import type { BuilderContent } from "../../../types/builder-content.js";
|
|
38
38
|
import { postPreviewContent } from "../../../helpers/preview-lru-cache/set.js";
|
|
39
|
+
import { fastClone } from "../../../functions/fast-clone.js";
|
|
39
40
|
import type { Writable } from "svelte/store";
|
|
40
41
|
|
|
41
|
-
export let canTrack: BuilderEditorProps["canTrack"];
|
|
42
|
+
export let canTrack: BuilderEditorProps["canTrack"] = undefined;
|
|
42
43
|
export let builderContextSignal: BuilderEditorProps["builderContextSignal"];
|
|
43
|
-
export let model: BuilderEditorProps["model"];
|
|
44
|
-
export let context: BuilderEditorProps["context"];
|
|
44
|
+
export let model: BuilderEditorProps["model"] = undefined;
|
|
45
|
+
export let context: BuilderEditorProps["context"] = undefined;
|
|
45
46
|
export let apiKey: BuilderEditorProps["apiKey"];
|
|
46
47
|
export let showContent: BuilderEditorProps["showContent"];
|
|
47
48
|
export let classNameProp: BuilderEditorProps["classNameProp"];
|
|
48
49
|
|
|
49
|
-
export let content: BuilderEditorProps["content"];
|
|
50
|
-
export let locale: BuilderEditorProps["locale"];
|
|
51
|
-
export let includeRefs: BuilderEditorProps["includeRefs"];
|
|
52
|
-
export let enrich: BuilderEditorProps["enrich"];
|
|
50
|
+
export let content: BuilderEditorProps["content"] = undefined;
|
|
51
|
+
export let locale: BuilderEditorProps["locale"] = undefined;
|
|
52
|
+
export let includeRefs: BuilderEditorProps["includeRefs"] = undefined;
|
|
53
|
+
export let enrich: BuilderEditorProps["enrich"] = undefined;
|
|
53
54
|
|
|
54
55
|
function mergeNewContent(newContent: BuilderContent) {
|
|
55
56
|
const newContentValue = {
|
|
@@ -185,7 +186,7 @@
|
|
|
185
186
|
"builder:component:stateChange",
|
|
186
187
|
{
|
|
187
188
|
detail: {
|
|
188
|
-
state: $builderContextSignal.rootState,
|
|
189
|
+
state: fastClone($builderContextSignal.rootState),
|
|
189
190
|
ref: {
|
|
190
191
|
name: model,
|
|
191
192
|
},
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
import { getCss } from "./styles.helpers.js";
|
|
13
13
|
import { getFontCss } from "./styles.helpers.js";
|
|
14
14
|
|
|
15
|
-
export let cssCode: Props["cssCode"];
|
|
16
|
-
export let contentId: Props["contentId"];
|
|
17
|
-
export let customFonts: Props["customFonts"];
|
|
15
|
+
export let cssCode: Props["cssCode"] = undefined;
|
|
16
|
+
export let contentId: Props["contentId"] = undefined;
|
|
17
|
+
export let customFonts: Props["customFonts"] = undefined;
|
|
18
18
|
|
|
19
19
|
let injectedStyles = `
|
|
20
20
|
${getCss({
|
|
@@ -28,17 +28,17 @@
|
|
|
28
28
|
import type { Dictionary } from "../../types/typescript.js";
|
|
29
29
|
import ComponentsContext from "../../context/components.context.js";
|
|
30
30
|
|
|
31
|
-
export let content: ContentProps["content"];
|
|
32
|
-
export let customComponents: ContentProps["customComponents"];
|
|
33
|
-
export let data: ContentProps["data"];
|
|
34
|
-
export let locale: ContentProps["locale"];
|
|
35
|
-
export let context: ContentProps["context"];
|
|
31
|
+
export let content: ContentProps["content"] = undefined;
|
|
32
|
+
export let customComponents: ContentProps["customComponents"] = undefined;
|
|
33
|
+
export let data: ContentProps["data"] = undefined;
|
|
34
|
+
export let locale: ContentProps["locale"] = undefined;
|
|
35
|
+
export let context: ContentProps["context"] = undefined;
|
|
36
36
|
export let apiKey: ContentProps["apiKey"];
|
|
37
|
-
export let apiVersion: ContentProps["apiVersion"];
|
|
38
|
-
export let model: ContentProps["model"];
|
|
39
|
-
export let canTrack: ContentProps["canTrack"];
|
|
40
|
-
export let includeRefs: ContentProps["includeRefs"];
|
|
41
|
-
export let enrich: ContentProps["enrich"];
|
|
37
|
+
export let apiVersion: ContentProps["apiVersion"] = undefined;
|
|
38
|
+
export let model: ContentProps["model"] = undefined;
|
|
39
|
+
export let canTrack: ContentProps["canTrack"] = undefined;
|
|
40
|
+
export let includeRefs: ContentProps["includeRefs"] = undefined;
|
|
41
|
+
export let enrich: ContentProps["enrich"] = undefined;
|
|
42
42
|
export let classNameProp: ContentProps["classNameProp"];
|
|
43
43
|
export let showContent: ContentProps["showContent"];
|
|
44
44
|
export let isSsrAbTest: ContentProps["isSsrAbTest"];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BuilderRenderState } from '../../context/types.js';
|
|
2
2
|
import type { EnforcePartials } from '../../types/enforced-partials.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ContentVariantsPrps } from '../content-variants/content-variants.types.js';
|
|
4
4
|
interface InternalRenderProps {
|
|
5
5
|
/**
|
|
6
6
|
* TO-DO: improve qwik generator to not remap this name for non-HTML tags, then name it `className`
|
|
@@ -9,7 +9,7 @@ interface InternalRenderProps {
|
|
|
9
9
|
showContent: boolean;
|
|
10
10
|
isSsrAbTest: boolean;
|
|
11
11
|
}
|
|
12
|
-
export type ContentProps = InternalRenderProps & EnforcePartials<
|
|
12
|
+
export type ContentProps = InternalRenderProps & EnforcePartials<ContentVariantsPrps>;
|
|
13
13
|
export interface BuilderComponentStateChange {
|
|
14
14
|
state: BuilderRenderState;
|
|
15
15
|
ref: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script context="module" lang="ts">
|
|
2
|
-
type VariantsProviderProps =
|
|
2
|
+
type VariantsProviderProps = ContentVariantsPrps & {
|
|
3
3
|
/**
|
|
4
4
|
* For internal use only. Do not provide this prop.
|
|
5
5
|
*/
|
|
@@ -22,20 +22,22 @@
|
|
|
22
22
|
import { handleABTestingSync } from "../../helpers/ab-tests.js";
|
|
23
23
|
import InlinedScript from "../inlined-script.svelte";
|
|
24
24
|
import { TARGET } from "../../constants/target.js";
|
|
25
|
-
import type {
|
|
25
|
+
import type { ContentVariantsPrps } from "./content-variants.types.js";
|
|
26
26
|
|
|
27
|
-
export let canTrack: VariantsProviderProps["canTrack"];
|
|
28
|
-
export let content: VariantsProviderProps["content"];
|
|
29
|
-
export let __isNestedRender: VariantsProviderProps["__isNestedRender"]
|
|
30
|
-
|
|
31
|
-
export let
|
|
32
|
-
export let
|
|
27
|
+
export let canTrack: VariantsProviderProps["canTrack"] = undefined;
|
|
28
|
+
export let content: VariantsProviderProps["content"] = undefined;
|
|
29
|
+
export let __isNestedRender: VariantsProviderProps["__isNestedRender"] =
|
|
30
|
+
undefined;
|
|
31
|
+
export let model: VariantsProviderProps["model"] = undefined;
|
|
32
|
+
export let data: VariantsProviderProps["data"] = undefined;
|
|
33
|
+
export let context: VariantsProviderProps["context"] = undefined;
|
|
33
34
|
export let apiKey: VariantsProviderProps["apiKey"];
|
|
34
|
-
export let apiVersion: VariantsProviderProps["apiVersion"];
|
|
35
|
-
export let customComponents: VariantsProviderProps["customComponents"]
|
|
36
|
-
|
|
37
|
-
export let
|
|
38
|
-
export let
|
|
35
|
+
export let apiVersion: VariantsProviderProps["apiVersion"] = undefined;
|
|
36
|
+
export let customComponents: VariantsProviderProps["customComponents"] =
|
|
37
|
+
undefined;
|
|
38
|
+
export let locale: VariantsProviderProps["locale"] = undefined;
|
|
39
|
+
export let includeRefs: VariantsProviderProps["includeRefs"] = undefined;
|
|
40
|
+
export let enrich: VariantsProviderProps["enrich"] = undefined;
|
|
39
41
|
|
|
40
42
|
$: variantScriptStr = () => {
|
|
41
43
|
return getVariantsScriptString(
|
|
@@ -2,7 +2,7 @@ import type { BuilderRenderContext, RegisteredComponent } from '../../context/ty
|
|
|
2
2
|
import type { ApiVersion } from '../../types/api-version.js';
|
|
3
3
|
import type { BuilderContent } from '../../types/builder-content.js';
|
|
4
4
|
import type { Nullable } from '../../types/typescript.js';
|
|
5
|
-
export interface
|
|
5
|
+
export interface ContentVariantsPrps {
|
|
6
6
|
content?: Nullable<BuilderContent>;
|
|
7
7
|
model?: string;
|
|
8
8
|
data?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.5.
|
|
1
|
+
export const SDK_VERSION = "0.5.9"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { BuilderRenderState } from '../../../context/types.js';
|
|
2
|
+
import type { ExecutorArgs } from '../helpers.js';
|
|
3
|
+
import { getFunctionArguments } from '../helpers.js';
|
|
4
|
+
export const runInBrowser = ({
|
|
5
|
+
code,
|
|
6
|
+
builder,
|
|
7
|
+
context,
|
|
8
|
+
event,
|
|
9
|
+
localState,
|
|
10
|
+
rootSetState,
|
|
11
|
+
rootState
|
|
12
|
+
}: ExecutorArgs) => {
|
|
13
|
+
const functionArgs = getFunctionArguments({
|
|
14
|
+
builder,
|
|
15
|
+
context,
|
|
16
|
+
event,
|
|
17
|
+
state: flattenState(rootState, localState, rootSetState)
|
|
18
|
+
});
|
|
19
|
+
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
20
|
+
};
|
|
21
|
+
export function flattenState(rootState: Record<string | symbol, any>, localState: Record<string | symbol, any> | undefined, rootSetState: ((rootState: BuilderRenderState) => void) | undefined): BuilderRenderState {
|
|
22
|
+
if (rootState === localState) {
|
|
23
|
+
throw new Error('rootState === localState');
|
|
24
|
+
}
|
|
25
|
+
return new Proxy(rootState, {
|
|
26
|
+
get: (_, prop) => {
|
|
27
|
+
if (localState && prop in localState) {
|
|
28
|
+
return localState[prop];
|
|
29
|
+
}
|
|
30
|
+
return rootState[(prop as string)];
|
|
31
|
+
},
|
|
32
|
+
set: (_, prop, value) => {
|
|
33
|
+
if (localState && prop in localState) {
|
|
34
|
+
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
35
|
+
}
|
|
36
|
+
rootState[(prop as string)] = value;
|
|
37
|
+
rootSetState?.(rootState);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { runInBrowser as evaluator } from './browser.js'
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import type { BuilderContextInterface, BuilderRenderState } from '../../context/types.js';
|
|
2
1
|
import { logger } from '../../helpers/logger.js';
|
|
3
2
|
import { isBrowser } from '../is-browser.js';
|
|
4
3
|
import { isEditing } from '../is-editing.js';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
4
|
+
import type { BuilderGlobals, ExecutorArgs } from './helpers.js';
|
|
5
|
+
import { getUserAttributes } from '../track/helpers.js';
|
|
6
|
+
import { runInBrowser } from './browser-runtime/browser.js';
|
|
7
7
|
import { runInNonNode } from './non-node-runtime/index.js';
|
|
8
|
+
import { isNonNodeServer } from '../is-non-node-server.js';
|
|
9
|
+
export type EvaluatorArgs = Omit<ExecutorArgs, 'builder' | 'event'> & {
|
|
10
|
+
event?: Event;
|
|
11
|
+
isExpression?: boolean;
|
|
12
|
+
};
|
|
8
13
|
export function evaluate({
|
|
9
14
|
code,
|
|
10
15
|
context,
|
|
@@ -13,19 +18,16 @@ export function evaluate({
|
|
|
13
18
|
rootSetState,
|
|
14
19
|
event,
|
|
15
20
|
isExpression = true
|
|
16
|
-
}: {
|
|
17
|
-
code: string;
|
|
18
|
-
event?: Event;
|
|
19
|
-
isExpression?: boolean;
|
|
20
|
-
} & Pick<BuilderContextInterface, 'localState' | 'context' | 'rootState' | 'rootSetState'>): any {
|
|
21
|
+
}: EvaluatorArgs): any {
|
|
21
22
|
if (code === '') {
|
|
22
23
|
logger.warn('Skipping evaluation of empty code block.');
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
|
-
const builder = {
|
|
26
|
+
const builder: BuilderGlobals = {
|
|
26
27
|
isEditing: isEditing(),
|
|
27
28
|
isBrowser: isBrowser(),
|
|
28
|
-
isServer: !isBrowser()
|
|
29
|
+
isServer: !isBrowser(),
|
|
30
|
+
getUserAttributes: () => getUserAttributes()
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
// Be able to handle simple expressions like "state.foo" or "1 + 1"
|
|
@@ -35,7 +37,7 @@ export function evaluate({
|
|
|
35
37
|
isExpression && !(code.includes(';') || code.includes(' return ') || code.trim().startsWith('return '));
|
|
36
38
|
const useCode = useReturn ? `return (${code});` : code;
|
|
37
39
|
const args: ExecutorArgs = {
|
|
38
|
-
useCode,
|
|
40
|
+
code: useCode,
|
|
39
41
|
builder,
|
|
40
42
|
context,
|
|
41
43
|
event,
|
|
@@ -43,48 +45,14 @@ export function evaluate({
|
|
|
43
45
|
rootState,
|
|
44
46
|
localState
|
|
45
47
|
};
|
|
46
|
-
if (isBrowser()) return runInBrowser(args);
|
|
47
|
-
if (isNonNodeServer()) return runInNonNode(args);
|
|
48
|
-
return runInNode(args);
|
|
49
|
-
}
|
|
50
|
-
export const runInBrowser = ({
|
|
51
|
-
useCode,
|
|
52
|
-
builder,
|
|
53
|
-
context,
|
|
54
|
-
event,
|
|
55
|
-
localState,
|
|
56
|
-
rootSetState,
|
|
57
|
-
rootState
|
|
58
|
-
}: ExecutorArgs) => {
|
|
59
|
-
const state = flattenState(rootState, localState, rootSetState);
|
|
60
48
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
};
|
|
70
|
-
export function flattenState(rootState: Record<string | symbol, any>, localState: Record<string | symbol, any> | undefined, rootSetState: ((rootState: BuilderRenderState) => void) | undefined): BuilderRenderState {
|
|
71
|
-
if (rootState === localState) {
|
|
72
|
-
throw new Error('rootState === localState');
|
|
49
|
+
if (isBrowser()) return runInBrowser(args);
|
|
50
|
+
if (isNonNodeServer()) return runInNonNode(args);
|
|
51
|
+
return runInBrowser(args);
|
|
52
|
+
} catch (e: any) {
|
|
53
|
+
logger.error('Failed code evaluation: ' + e.message, {
|
|
54
|
+
code
|
|
55
|
+
});
|
|
56
|
+
return undefined;
|
|
73
57
|
}
|
|
74
|
-
return new Proxy(rootState, {
|
|
75
|
-
get: (_, prop) => {
|
|
76
|
-
if (localState && prop in localState) {
|
|
77
|
-
return localState[prop];
|
|
78
|
-
}
|
|
79
|
-
return rootState[(prop as string)];
|
|
80
|
-
},
|
|
81
|
-
set: (_, prop, value) => {
|
|
82
|
-
if (localState && prop in localState) {
|
|
83
|
-
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
84
|
-
}
|
|
85
|
-
rootState[(prop as string)] = value;
|
|
86
|
-
rootSetState?.(rootState);
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
58
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BuilderContextInterface, BuilderRenderState } from '../../context/types.js';
|
|
2
|
+
import type { getUserAttributes } from '../track/helpers.js';
|
|
3
|
+
export type BuilderGlobals = {
|
|
4
|
+
isEditing: boolean | undefined;
|
|
5
|
+
isBrowser: boolean | undefined;
|
|
6
|
+
isServer: boolean | undefined;
|
|
7
|
+
getUserAttributes: typeof getUserAttributes;
|
|
8
|
+
};
|
|
9
|
+
export type ExecutorArgs = Pick<BuilderContextInterface, 'localState' | 'context' | 'rootState' | 'rootSetState'> & {
|
|
10
|
+
code: string;
|
|
11
|
+
builder: BuilderGlobals;
|
|
12
|
+
event: Event | undefined;
|
|
13
|
+
};
|
|
14
|
+
export type Executor = (args: ExecutorArgs) => any;
|
|
15
|
+
export type FunctionArguments = ReturnType<typeof getFunctionArguments>;
|
|
16
|
+
export const getFunctionArguments = ({
|
|
17
|
+
builder,
|
|
18
|
+
context,
|
|
19
|
+
event,
|
|
20
|
+
state
|
|
21
|
+
}: Pick<ExecutorArgs, 'builder' | 'context' | 'event'> & {
|
|
22
|
+
state: BuilderRenderState;
|
|
23
|
+
}) => {
|
|
24
|
+
return Object.entries({
|
|
25
|
+
state,
|
|
26
|
+
Builder: builder,
|
|
27
|
+
// legacy
|
|
28
|
+
builder,
|
|
29
|
+
context,
|
|
30
|
+
event
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { evaluate } from './evaluate'
|
|
1
|
+
export { evaluate } from './evaluate.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { evaluator } from '../browser-runtime/index.js'
|