@builder.io/sdk-svelte 2.0.0 → 2.0.2

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.
Files changed (78) hide show
  1. package/lib/browser/blocks/columns/columns.svelte +5 -1
  2. package/lib/browser/blocks/image/image.svelte +3 -0
  3. package/lib/browser/blocks/symbol/symbol.svelte +1 -0
  4. package/lib/browser/components/block/components/block-styles.svelte +1 -1
  5. package/lib/browser/components/content/components/styles.svelte +2 -1
  6. package/lib/browser/components/content/components/styles.svelte.d.ts +3 -1
  7. package/lib/browser/components/content/content.svelte +24 -4
  8. package/lib/browser/components/content/content.svelte.d.ts +2 -1
  9. package/lib/browser/components/content-variants/content-variants.svelte +11 -3
  10. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +1 -0
  11. package/lib/browser/components/content-variants/content-variants.types.d.ts +4 -0
  12. package/lib/browser/components/inlined-script.svelte +2 -1
  13. package/lib/browser/components/inlined-script.svelte.d.ts +3 -1
  14. package/lib/browser/components/inlined-styles.svelte +2 -1
  15. package/lib/browser/components/inlined-styles.svelte.d.ts +3 -1
  16. package/lib/browser/constants/sdk-version.d.ts +1 -1
  17. package/lib/browser/constants/sdk-version.js +1 -1
  18. package/lib/browser/context/builder.context.d.ts +1 -0
  19. package/lib/browser/context/builder.context.js +1 -0
  20. package/lib/browser/context/types.d.ts +1 -0
  21. package/lib/browser/types/builder-props.d.ts +3 -0
  22. package/lib/edge/blocks/columns/columns.svelte +5 -1
  23. package/lib/edge/blocks/image/image.svelte +3 -0
  24. package/lib/edge/blocks/symbol/symbol.svelte +1 -0
  25. package/lib/edge/components/block/components/block-styles.svelte +1 -1
  26. package/lib/edge/components/content/components/styles.svelte +2 -1
  27. package/lib/edge/components/content/components/styles.svelte.d.ts +3 -1
  28. package/lib/edge/components/content/content.svelte +24 -4
  29. package/lib/edge/components/content/content.svelte.d.ts +2 -1
  30. package/lib/edge/components/content-variants/content-variants.svelte +11 -3
  31. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +1 -0
  32. package/lib/edge/components/content-variants/content-variants.types.d.ts +4 -0
  33. package/lib/edge/components/inlined-script.svelte +2 -1
  34. package/lib/edge/components/inlined-script.svelte.d.ts +3 -1
  35. package/lib/edge/components/inlined-styles.svelte +2 -1
  36. package/lib/edge/components/inlined-styles.svelte.d.ts +3 -1
  37. package/lib/edge/constants/sdk-version.d.ts +1 -1
  38. package/lib/edge/constants/sdk-version.js +1 -1
  39. package/lib/edge/context/builder.context.d.ts +1 -0
  40. package/lib/edge/context/builder.context.js +1 -0
  41. package/lib/edge/context/types.d.ts +1 -0
  42. package/lib/edge/types/builder-props.d.ts +3 -0
  43. package/lib/node/blocks/columns/columns.svelte +5 -1
  44. package/lib/node/blocks/image/image.svelte +3 -0
  45. package/lib/node/blocks/symbol/symbol.svelte +1 -0
  46. package/lib/node/components/block/components/block-styles.svelte +1 -1
  47. package/lib/node/components/content/components/styles.svelte +2 -1
  48. package/lib/node/components/content/components/styles.svelte.d.ts +3 -1
  49. package/lib/node/components/content/content.svelte +24 -4
  50. package/lib/node/components/content/content.svelte.d.ts +2 -1
  51. package/lib/node/components/content-variants/content-variants.svelte +11 -3
  52. package/lib/node/components/content-variants/content-variants.svelte.d.ts +1 -0
  53. package/lib/node/components/content-variants/content-variants.types.d.ts +4 -0
  54. package/lib/node/components/inlined-script.svelte +2 -1
  55. package/lib/node/components/inlined-script.svelte.d.ts +3 -1
  56. package/lib/node/components/inlined-styles.svelte +2 -1
  57. package/lib/node/components/inlined-styles.svelte.d.ts +3 -1
  58. package/lib/node/constants/sdk-version.d.ts +1 -1
  59. package/lib/node/constants/sdk-version.js +1 -1
  60. package/lib/node/context/builder.context.d.ts +1 -0
  61. package/lib/node/context/builder.context.js +1 -0
  62. package/lib/node/context/types.d.ts +1 -0
  63. package/lib/node/types/builder-props.d.ts +3 -0
  64. package/package.json +1 -1
  65. package/src/blocks/columns/columns.svelte +5 -1
  66. package/src/blocks/image/image.svelte +3 -0
  67. package/src/blocks/symbol/symbol.svelte +1 -0
  68. package/src/components/block/components/block-styles.svelte +1 -1
  69. package/src/components/content/components/styles.svelte +4 -2
  70. package/src/components/content/content.svelte +20 -4
  71. package/src/components/content-variants/content-variants.svelte +11 -4
  72. package/src/components/content-variants/content-variants.types.ts +5 -0
  73. package/src/components/inlined-script.svelte +5 -2
  74. package/src/components/inlined-styles.svelte +5 -2
  75. package/src/constants/sdk-version.ts +1 -1
  76. package/src/context/builder.context.ts +1 -0
  77. package/src/context/types.ts +1 -0
  78. package/src/types/builder-props.ts +3 -0
@@ -147,7 +147,11 @@ let flexDir = stackColumnsAt === "never"
147
147
  {...{}}
148
148
  >
149
149
  {#if TARGET !== "reactNative"}
150
- <InlinedStyles id="builderio-columns" styles={columnsStyles()} />
150
+ <InlinedStyles
151
+ id="builderio-columns"
152
+ styles={columnsStyles()}
153
+ nonce={$builderContext.nonce}
154
+ />
151
155
  {/if}
152
156
  {#each columns as column, index (index)}
153
157
  <DynamicRenderer
@@ -31,6 +31,9 @@ $: srcSetToUse = () => {
31
31
  !(url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/))) {
32
32
  return srcset;
33
33
  }
34
+ if (noWebp) {
35
+ return undefined; // no need to add srcset to svg images
36
+ }
34
37
  if (srcset && image?.includes("builder.io/api/v1/image")) {
35
38
  if (!srcset.includes(image.split("?")[0])) {
36
39
  console.debug("Removed given srcset");
@@ -57,6 +57,7 @@ $: onUpdateFn_0(...[symbol]);
57
57
  use:setAttrs={filterAttrs(attributes, "on:", true)}
58
58
  >
59
59
  <ContentVariants
60
+ nonce={$builderContext.nonce}
60
61
  isNestedRender={true}
61
62
  apiVersion={$builderContext.apiVersion}
62
63
  apiKey={$builderContext.apiKey}
@@ -93,5 +93,5 @@ $: css = () => {
93
93
  </script>
94
94
 
95
95
  {#if TARGET !== "reactNative" && css() && canShowBlock()}
96
- <InlinedStyles id="builderio-block" styles={css()} />
96
+ <InlinedStyles id="builderio-block" styles={css()} nonce={context.nonce} />
97
97
  {/if}
@@ -6,6 +6,7 @@ export let cssCode = undefined;
6
6
  export let contentId = undefined;
7
7
  export let customFonts = undefined;
8
8
  export let isNestedRender = undefined;
9
+ export let nonce;
9
10
  let injectedStyles = `
10
11
  ${getCss({
11
12
  cssCode: cssCode,
@@ -18,4 +19,4 @@ ${getDefaultStyles(isNestedRender)}
18
19
  `.trim();
19
20
  </script>
20
21
 
21
- <InlinedStyles id="builderio-content" styles={injectedStyles} />
22
+ <InlinedStyles id="builderio-content" styles={injectedStyles} {nonce} />
@@ -1,10 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  cssCode?: string;
4
4
  customFonts?: CustomFont[];
5
5
  contentId?: string;
6
6
  isNestedRender?: boolean;
7
7
  }
8
+ import type { BuilderNonceProp } from "../../../types/builder-props";
8
9
  import type { CustomFont } from "./styles.helpers";
9
10
  declare const __propDef: {
10
11
  props: {
@@ -12,6 +13,7 @@ declare const __propDef: {
12
13
  contentId?: Props["contentId"];
13
14
  customFonts?: Props["customFonts"];
14
15
  isNestedRender?: Props["isNestedRender"];
16
+ nonce: Props["nonce"];
15
17
  };
16
18
  events: {
17
19
  [evt: string]: CustomEvent<any>;
@@ -14,6 +14,7 @@ import { getContentInitialValue, getRootStateInitialValue, } from "./content.hel
14
14
  import "./wrap-component-ref";
15
15
  export let content = undefined;
16
16
  export let customComponents = undefined;
17
+ export let model = undefined;
17
18
  export let data = undefined;
18
19
  export let locale = undefined;
19
20
  export let context = undefined;
@@ -22,7 +23,7 @@ export let apiKey;
22
23
  export let apiVersion = undefined;
23
24
  export let blocksWrapper = undefined;
24
25
  export let blocksWrapperProps = undefined;
25
- export let model = undefined;
26
+ export let nonce = undefined;
26
27
  export let enrich = undefined;
27
28
  export let showContent;
28
29
  export let contentWrapper = undefined;
@@ -42,7 +43,13 @@ let scriptStr = getUpdateVariantVisibilityScript({
42
43
  });
43
44
  let registeredComponents = [
44
45
  ...getDefaultRegisteredComponents(),
45
- ...(customComponents || []),
46
+ ...(customComponents?.filter(({ models }) => {
47
+ if (!models?.length)
48
+ return true;
49
+ if (!model)
50
+ return true;
51
+ return models.includes(model);
52
+ }) || []),
46
53
  ].reduce((acc, { component, ...info }) => ({
47
54
  ...acc,
48
55
  [info.name]: {
@@ -68,7 +75,13 @@ let builderContextSignal = writable({
68
75
  apiVersion: apiVersion,
69
76
  componentInfos: [
70
77
  ...getDefaultRegisteredComponents(),
71
- ...(customComponents || []),
78
+ ...(customComponents?.filter(({ models }) => {
79
+ if (!models?.length)
80
+ return true;
81
+ if (!model)
82
+ return true;
83
+ return models.includes(model);
84
+ }) || []),
72
85
  ].reduce((acc, { component: _, ...info }) => ({
73
86
  ...acc,
74
87
  [info.name]: serializeComponentInfo(info),
@@ -76,6 +89,7 @@ let builderContextSignal = writable({
76
89
  inheritedStyles: {},
77
90
  BlocksWrapper: blocksWrapper || "div",
78
91
  BlocksWrapperProps: blocksWrapperProps || {},
92
+ nonce: nonce || "",
79
93
  });
80
94
  setContext(ComponentsContext.key, {
81
95
  registeredComponents: registeredComponents,
@@ -83,6 +97,7 @@ setContext(ComponentsContext.key, {
83
97
  </script>
84
98
 
85
99
  <EnableEditor
100
+ {nonce}
86
101
  {content}
87
102
  {data}
88
103
  {model}
@@ -99,10 +114,15 @@ setContext(ComponentsContext.key, {
99
114
  {...{}}
100
115
  >
101
116
  {#if isSsrAbTest}
102
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
117
+ <InlinedScript
118
+ id="builderio-variant-visibility"
119
+ {scriptStr}
120
+ nonce={nonce || ""}
121
+ />
103
122
  {/if}
104
123
  {#if TARGET !== "reactNative"}
105
124
  <ContentStyles
125
+ nonce={nonce || ""}
106
126
  {isNestedRender}
107
127
  contentId={$builderContextSignal.content?.id}
108
128
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  props: {
5
5
  content?: ContentProps["content"];
6
6
  customComponents?: ContentProps["customComponents"];
7
+ model?: ContentProps["model"];
7
8
  data?: ContentProps["data"];
8
9
  locale?: ContentProps["locale"];
9
10
  context?: ContentProps["context"];
@@ -12,7 +13,7 @@ declare const __propDef: {
12
13
  apiVersion?: ContentProps["apiVersion"];
13
14
  blocksWrapper?: ContentProps["blocksWrapper"];
14
15
  blocksWrapperProps?: ContentProps["blocksWrapperProps"];
15
- model?: ContentProps["model"];
16
+ nonce?: ContentProps["nonce"];
16
17
  enrich?: ContentProps["enrich"];
17
18
  showContent: ContentProps["showContent"];
18
19
  contentWrapper?: ContentProps["contentWrapper"];
@@ -1,6 +1,6 @@
1
1
  <script context="module"></script>
2
2
 
3
- <script>import { afterUpdate, onMount } from "svelte";
3
+ <script>import { onMount } from "svelte";
4
4
  import { TARGET } from "../../constants/target";
5
5
  import { handleABTestingSync } from "../../helpers/ab-tests";
6
6
  import { getDefaultCanTrack } from "../../helpers/canTrack";
@@ -11,6 +11,7 @@ import { checkShouldRenderVariants, getInitVariantsFnsScriptString, getUpdateCoo
11
11
  export let canTrack = undefined;
12
12
  export let content = undefined;
13
13
  export let isNestedRender = undefined;
14
+ export let nonce = undefined;
14
15
  export let model = undefined;
15
16
  export let data = undefined;
16
17
  export let context = undefined;
@@ -57,26 +58,32 @@ onMount(() => {
57
58
  */
58
59
  shouldRenderVariants = false;
59
60
  });
60
- afterUpdate(() => { });
61
61
  </script>
62
62
 
63
63
  {#if !isNestedRender && TARGET !== "reactNative"}
64
64
  <InlinedScript
65
65
  id="builderio-init-variants-fns"
66
66
  scriptStr={getInitVariantsFnsScriptString()}
67
+ nonce={nonce || ""}
67
68
  />
68
69
  {/if}
69
70
 
70
71
  {#if shouldRenderVariants}
71
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
72
+ <InlinedStyles
73
+ id="builderio-variants"
74
+ styles={hideVariantsStyleString()}
75
+ nonce={nonce || ""}
76
+ />
72
77
  <InlinedScript
73
78
  id="builderio-variants-visibility"
74
79
  scriptStr={updateCookieAndStylesScriptStr()}
80
+ nonce={nonce || ""}
75
81
  />
76
82
 
77
83
  {#each getVariants(content) as variant (variant.testVariationId)}
78
84
  <ContentComponent
79
85
  {isNestedRender}
86
+ {nonce}
80
87
  content={variant}
81
88
  showContent={false}
82
89
  {model}
@@ -99,6 +106,7 @@ afterUpdate(() => { });
99
106
  {/each}
100
107
  {/if}
101
108
  <ContentComponent
109
+ {nonce}
102
110
  {isNestedRender}
103
111
  {...{}}
104
112
  content={defaultContent()}
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  canTrack?: VariantsProviderProps["canTrack"];
12
12
  content?: VariantsProviderProps["content"];
13
13
  isNestedRender?: VariantsProviderProps["isNestedRender"];
14
+ nonce?: VariantsProviderProps["nonce"];
14
15
  model?: VariantsProviderProps["model"];
15
16
  data?: VariantsProviderProps["data"];
16
17
  context?: VariantsProviderProps["context"];
@@ -68,4 +68,8 @@ export interface ContentVariantsPrps {
68
68
  * List of hosts to allow editing content from.
69
69
  */
70
70
  trustedHosts?: string[];
71
+ /**
72
+ * A CSP nonce to use for the SDK's inlined `<script>` and `<style>` tags.
73
+ */
74
+ nonce?: string;
71
75
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script>export let scriptStr;
4
4
  export let id;
5
+ export let nonce;
5
6
  </script>
6
7
 
7
- {@html `<script data-id=${id}>${scriptStr}</script>`}
8
+ {@html `<script data-id=${id} nonce=${nonce || ""}>${scriptStr}</script>`}
@@ -1,12 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  scriptStr: string;
4
4
  id: string;
5
5
  }
6
+ import type { BuilderNonceProp } from "../types/builder-props";
6
7
  declare const __propDef: {
7
8
  props: {
8
9
  scriptStr: Props["scriptStr"];
9
10
  id: Props["id"];
11
+ nonce: Props["nonce"];
10
12
  };
11
13
  events: {
12
14
  [evt: string]: CustomEvent<any>;
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script>export let styles;
4
4
  export let id;
5
+ export let nonce;
5
6
  </script>
6
7
 
7
- {@html `<${"style"} data-id=${id} >${styles}<${"/style"}>`}
8
+ {@html `<${"style"} data-id=${id} nonce=${nonce} >${styles}<${"/style"}>`}
@@ -1,12 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  styles: string;
4
4
  id: string;
5
5
  }
6
+ import type { BuilderNonceProp } from "../types/builder-props";
6
7
  declare const __propDef: {
7
8
  props: {
8
9
  styles: Props["styles"];
9
10
  id: Props["id"];
11
+ nonce: Props["nonce"];
10
12
  };
11
13
  events: {
12
14
  [evt: string]: CustomEvent<any>;
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "2.0.0";
1
+ export declare const SDK_VERSION = "2.0.2";
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.0";
1
+ export const SDK_VERSION = "2.0.2";
@@ -12,6 +12,7 @@ declare const _default: {
12
12
  inheritedStyles: {};
13
13
  BlocksWrapper: string;
14
14
  BlocksWrapperProps: {};
15
+ nonce: string;
15
16
  }>;
16
17
  key: symbol;
17
18
  };
@@ -13,6 +13,7 @@ export default {
13
13
  inheritedStyles: {},
14
14
  BlocksWrapper: "div",
15
15
  BlocksWrapperProps: {},
16
+ nonce: "",
16
17
  }),
17
18
  key,
18
19
  };
@@ -33,5 +33,6 @@ export interface BuilderContextInterface extends Pick<BlocksWrapperProps, 'Block
33
33
  apiVersion: ApiVersion | undefined;
34
34
  componentInfos: Dictionary<ComponentInfo>;
35
35
  inheritedStyles: Record<string, unknown>;
36
+ nonce: string;
36
37
  canTrack?: boolean;
37
38
  }
@@ -12,3 +12,6 @@ export type BuilderComponentsProp = {
12
12
  export type BuilderLinkComponentProp = {
13
13
  builderLinkComponent?: any;
14
14
  };
15
+ export type BuilderNonceProp = {
16
+ nonce: string;
17
+ };
@@ -147,7 +147,11 @@ let flexDir = stackColumnsAt === "never"
147
147
  {...{}}
148
148
  >
149
149
  {#if TARGET !== "reactNative"}
150
- <InlinedStyles id="builderio-columns" styles={columnsStyles()} />
150
+ <InlinedStyles
151
+ id="builderio-columns"
152
+ styles={columnsStyles()}
153
+ nonce={$builderContext.nonce}
154
+ />
151
155
  {/if}
152
156
  {#each columns as column, index (index)}
153
157
  <DynamicRenderer
@@ -31,6 +31,9 @@ $: srcSetToUse = () => {
31
31
  !(url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/))) {
32
32
  return srcset;
33
33
  }
34
+ if (noWebp) {
35
+ return undefined; // no need to add srcset to svg images
36
+ }
34
37
  if (srcset && image?.includes("builder.io/api/v1/image")) {
35
38
  if (!srcset.includes(image.split("?")[0])) {
36
39
  console.debug("Removed given srcset");
@@ -57,6 +57,7 @@ $: onUpdateFn_0(...[symbol]);
57
57
  use:setAttrs={filterAttrs(attributes, "on:", true)}
58
58
  >
59
59
  <ContentVariants
60
+ nonce={$builderContext.nonce}
60
61
  isNestedRender={true}
61
62
  apiVersion={$builderContext.apiVersion}
62
63
  apiKey={$builderContext.apiKey}
@@ -93,5 +93,5 @@ $: css = () => {
93
93
  </script>
94
94
 
95
95
  {#if TARGET !== "reactNative" && css() && canShowBlock()}
96
- <InlinedStyles id="builderio-block" styles={css()} />
96
+ <InlinedStyles id="builderio-block" styles={css()} nonce={context.nonce} />
97
97
  {/if}
@@ -6,6 +6,7 @@ export let cssCode = undefined;
6
6
  export let contentId = undefined;
7
7
  export let customFonts = undefined;
8
8
  export let isNestedRender = undefined;
9
+ export let nonce;
9
10
  let injectedStyles = `
10
11
  ${getCss({
11
12
  cssCode: cssCode,
@@ -18,4 +19,4 @@ ${getDefaultStyles(isNestedRender)}
18
19
  `.trim();
19
20
  </script>
20
21
 
21
- <InlinedStyles id="builderio-content" styles={injectedStyles} />
22
+ <InlinedStyles id="builderio-content" styles={injectedStyles} {nonce} />
@@ -1,10 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  cssCode?: string;
4
4
  customFonts?: CustomFont[];
5
5
  contentId?: string;
6
6
  isNestedRender?: boolean;
7
7
  }
8
+ import type { BuilderNonceProp } from "../../../types/builder-props";
8
9
  import type { CustomFont } from "./styles.helpers";
9
10
  declare const __propDef: {
10
11
  props: {
@@ -12,6 +13,7 @@ declare const __propDef: {
12
13
  contentId?: Props["contentId"];
13
14
  customFonts?: Props["customFonts"];
14
15
  isNestedRender?: Props["isNestedRender"];
16
+ nonce: Props["nonce"];
15
17
  };
16
18
  events: {
17
19
  [evt: string]: CustomEvent<any>;
@@ -14,6 +14,7 @@ import { getContentInitialValue, getRootStateInitialValue, } from "./content.hel
14
14
  import "./wrap-component-ref";
15
15
  export let content = undefined;
16
16
  export let customComponents = undefined;
17
+ export let model = undefined;
17
18
  export let data = undefined;
18
19
  export let locale = undefined;
19
20
  export let context = undefined;
@@ -22,7 +23,7 @@ export let apiKey;
22
23
  export let apiVersion = undefined;
23
24
  export let blocksWrapper = undefined;
24
25
  export let blocksWrapperProps = undefined;
25
- export let model = undefined;
26
+ export let nonce = undefined;
26
27
  export let enrich = undefined;
27
28
  export let showContent;
28
29
  export let contentWrapper = undefined;
@@ -42,7 +43,13 @@ let scriptStr = getUpdateVariantVisibilityScript({
42
43
  });
43
44
  let registeredComponents = [
44
45
  ...getDefaultRegisteredComponents(),
45
- ...(customComponents || []),
46
+ ...(customComponents?.filter(({ models }) => {
47
+ if (!models?.length)
48
+ return true;
49
+ if (!model)
50
+ return true;
51
+ return models.includes(model);
52
+ }) || []),
46
53
  ].reduce((acc, { component, ...info }) => ({
47
54
  ...acc,
48
55
  [info.name]: {
@@ -68,7 +75,13 @@ let builderContextSignal = writable({
68
75
  apiVersion: apiVersion,
69
76
  componentInfos: [
70
77
  ...getDefaultRegisteredComponents(),
71
- ...(customComponents || []),
78
+ ...(customComponents?.filter(({ models }) => {
79
+ if (!models?.length)
80
+ return true;
81
+ if (!model)
82
+ return true;
83
+ return models.includes(model);
84
+ }) || []),
72
85
  ].reduce((acc, { component: _, ...info }) => ({
73
86
  ...acc,
74
87
  [info.name]: serializeComponentInfo(info),
@@ -76,6 +89,7 @@ let builderContextSignal = writable({
76
89
  inheritedStyles: {},
77
90
  BlocksWrapper: blocksWrapper || "div",
78
91
  BlocksWrapperProps: blocksWrapperProps || {},
92
+ nonce: nonce || "",
79
93
  });
80
94
  setContext(ComponentsContext.key, {
81
95
  registeredComponents: registeredComponents,
@@ -83,6 +97,7 @@ setContext(ComponentsContext.key, {
83
97
  </script>
84
98
 
85
99
  <EnableEditor
100
+ {nonce}
86
101
  {content}
87
102
  {data}
88
103
  {model}
@@ -99,10 +114,15 @@ setContext(ComponentsContext.key, {
99
114
  {...{}}
100
115
  >
101
116
  {#if isSsrAbTest}
102
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
117
+ <InlinedScript
118
+ id="builderio-variant-visibility"
119
+ {scriptStr}
120
+ nonce={nonce || ""}
121
+ />
103
122
  {/if}
104
123
  {#if TARGET !== "reactNative"}
105
124
  <ContentStyles
125
+ nonce={nonce || ""}
106
126
  {isNestedRender}
107
127
  contentId={$builderContextSignal.content?.id}
108
128
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  props: {
5
5
  content?: ContentProps["content"];
6
6
  customComponents?: ContentProps["customComponents"];
7
+ model?: ContentProps["model"];
7
8
  data?: ContentProps["data"];
8
9
  locale?: ContentProps["locale"];
9
10
  context?: ContentProps["context"];
@@ -12,7 +13,7 @@ declare const __propDef: {
12
13
  apiVersion?: ContentProps["apiVersion"];
13
14
  blocksWrapper?: ContentProps["blocksWrapper"];
14
15
  blocksWrapperProps?: ContentProps["blocksWrapperProps"];
15
- model?: ContentProps["model"];
16
+ nonce?: ContentProps["nonce"];
16
17
  enrich?: ContentProps["enrich"];
17
18
  showContent: ContentProps["showContent"];
18
19
  contentWrapper?: ContentProps["contentWrapper"];
@@ -1,6 +1,6 @@
1
1
  <script context="module"></script>
2
2
 
3
- <script>import { afterUpdate, onMount } from "svelte";
3
+ <script>import { onMount } from "svelte";
4
4
  import { TARGET } from "../../constants/target";
5
5
  import { handleABTestingSync } from "../../helpers/ab-tests";
6
6
  import { getDefaultCanTrack } from "../../helpers/canTrack";
@@ -11,6 +11,7 @@ import { checkShouldRenderVariants, getInitVariantsFnsScriptString, getUpdateCoo
11
11
  export let canTrack = undefined;
12
12
  export let content = undefined;
13
13
  export let isNestedRender = undefined;
14
+ export let nonce = undefined;
14
15
  export let model = undefined;
15
16
  export let data = undefined;
16
17
  export let context = undefined;
@@ -57,26 +58,32 @@ onMount(() => {
57
58
  */
58
59
  shouldRenderVariants = false;
59
60
  });
60
- afterUpdate(() => { });
61
61
  </script>
62
62
 
63
63
  {#if !isNestedRender && TARGET !== "reactNative"}
64
64
  <InlinedScript
65
65
  id="builderio-init-variants-fns"
66
66
  scriptStr={getInitVariantsFnsScriptString()}
67
+ nonce={nonce || ""}
67
68
  />
68
69
  {/if}
69
70
 
70
71
  {#if shouldRenderVariants}
71
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
72
+ <InlinedStyles
73
+ id="builderio-variants"
74
+ styles={hideVariantsStyleString()}
75
+ nonce={nonce || ""}
76
+ />
72
77
  <InlinedScript
73
78
  id="builderio-variants-visibility"
74
79
  scriptStr={updateCookieAndStylesScriptStr()}
80
+ nonce={nonce || ""}
75
81
  />
76
82
 
77
83
  {#each getVariants(content) as variant (variant.testVariationId)}
78
84
  <ContentComponent
79
85
  {isNestedRender}
86
+ {nonce}
80
87
  content={variant}
81
88
  showContent={false}
82
89
  {model}
@@ -99,6 +106,7 @@ afterUpdate(() => { });
99
106
  {/each}
100
107
  {/if}
101
108
  <ContentComponent
109
+ {nonce}
102
110
  {isNestedRender}
103
111
  {...{}}
104
112
  content={defaultContent()}
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  canTrack?: VariantsProviderProps["canTrack"];
12
12
  content?: VariantsProviderProps["content"];
13
13
  isNestedRender?: VariantsProviderProps["isNestedRender"];
14
+ nonce?: VariantsProviderProps["nonce"];
14
15
  model?: VariantsProviderProps["model"];
15
16
  data?: VariantsProviderProps["data"];
16
17
  context?: VariantsProviderProps["context"];
@@ -68,4 +68,8 @@ export interface ContentVariantsPrps {
68
68
  * List of hosts to allow editing content from.
69
69
  */
70
70
  trustedHosts?: string[];
71
+ /**
72
+ * A CSP nonce to use for the SDK's inlined `<script>` and `<style>` tags.
73
+ */
74
+ nonce?: string;
71
75
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script>export let scriptStr;
4
4
  export let id;
5
+ export let nonce;
5
6
  </script>
6
7
 
7
- {@html `<script data-id=${id}>${scriptStr}</script>`}
8
+ {@html `<script data-id=${id} nonce=${nonce || ""}>${scriptStr}</script>`}
@@ -1,12 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  scriptStr: string;
4
4
  id: string;
5
5
  }
6
+ import type { BuilderNonceProp } from "../types/builder-props";
6
7
  declare const __propDef: {
7
8
  props: {
8
9
  scriptStr: Props["scriptStr"];
9
10
  id: Props["id"];
11
+ nonce: Props["nonce"];
10
12
  };
11
13
  events: {
12
14
  [evt: string]: CustomEvent<any>;
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script>export let styles;
4
4
  export let id;
5
+ export let nonce;
5
6
  </script>
6
7
 
7
- {@html `<${"style"} data-id=${id} >${styles}<${"/style"}>`}
8
+ {@html `<${"style"} data-id=${id} nonce=${nonce} >${styles}<${"/style"}>`}
@@ -1,12 +1,14 @@
1
1
  import { SvelteComponent } from "svelte";
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  styles: string;
4
4
  id: string;
5
5
  }
6
+ import type { BuilderNonceProp } from "../types/builder-props";
6
7
  declare const __propDef: {
7
8
  props: {
8
9
  styles: Props["styles"];
9
10
  id: Props["id"];
11
+ nonce: Props["nonce"];
10
12
  };
11
13
  events: {
12
14
  [evt: string]: CustomEvent<any>;
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "2.0.0";
1
+ export declare const SDK_VERSION = "2.0.2";