@builder.io/sdk-svelte 2.0.0 → 2.0.1

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 (74) hide show
  1. package/lib/browser/blocks/columns/columns.svelte +5 -1
  2. package/lib/browser/blocks/symbol/symbol.svelte +1 -0
  3. package/lib/browser/components/block/components/block-styles.svelte +1 -1
  4. package/lib/browser/components/content/components/styles.svelte +2 -1
  5. package/lib/browser/components/content/components/styles.svelte.d.ts +3 -1
  6. package/lib/browser/components/content/content.svelte +9 -1
  7. package/lib/browser/components/content/content.svelte.d.ts +1 -0
  8. package/lib/browser/components/content-variants/content-variants.svelte +10 -1
  9. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +1 -0
  10. package/lib/browser/components/content-variants/content-variants.types.d.ts +4 -0
  11. package/lib/browser/components/inlined-script.svelte +2 -1
  12. package/lib/browser/components/inlined-script.svelte.d.ts +3 -1
  13. package/lib/browser/components/inlined-styles.svelte +2 -1
  14. package/lib/browser/components/inlined-styles.svelte.d.ts +3 -1
  15. package/lib/browser/constants/sdk-version.d.ts +1 -1
  16. package/lib/browser/constants/sdk-version.js +1 -1
  17. package/lib/browser/context/builder.context.d.ts +1 -0
  18. package/lib/browser/context/builder.context.js +1 -0
  19. package/lib/browser/context/types.d.ts +1 -0
  20. package/lib/browser/types/builder-props.d.ts +3 -0
  21. package/lib/edge/blocks/columns/columns.svelte +5 -1
  22. package/lib/edge/blocks/symbol/symbol.svelte +1 -0
  23. package/lib/edge/components/block/components/block-styles.svelte +1 -1
  24. package/lib/edge/components/content/components/styles.svelte +2 -1
  25. package/lib/edge/components/content/components/styles.svelte.d.ts +3 -1
  26. package/lib/edge/components/content/content.svelte +9 -1
  27. package/lib/edge/components/content/content.svelte.d.ts +1 -0
  28. package/lib/edge/components/content-variants/content-variants.svelte +10 -1
  29. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +1 -0
  30. package/lib/edge/components/content-variants/content-variants.types.d.ts +4 -0
  31. package/lib/edge/components/inlined-script.svelte +2 -1
  32. package/lib/edge/components/inlined-script.svelte.d.ts +3 -1
  33. package/lib/edge/components/inlined-styles.svelte +2 -1
  34. package/lib/edge/components/inlined-styles.svelte.d.ts +3 -1
  35. package/lib/edge/constants/sdk-version.d.ts +1 -1
  36. package/lib/edge/constants/sdk-version.js +1 -1
  37. package/lib/edge/context/builder.context.d.ts +1 -0
  38. package/lib/edge/context/builder.context.js +1 -0
  39. package/lib/edge/context/types.d.ts +1 -0
  40. package/lib/edge/types/builder-props.d.ts +3 -0
  41. package/lib/node/blocks/columns/columns.svelte +5 -1
  42. package/lib/node/blocks/symbol/symbol.svelte +1 -0
  43. package/lib/node/components/block/components/block-styles.svelte +1 -1
  44. package/lib/node/components/content/components/styles.svelte +2 -1
  45. package/lib/node/components/content/components/styles.svelte.d.ts +3 -1
  46. package/lib/node/components/content/content.svelte +9 -1
  47. package/lib/node/components/content/content.svelte.d.ts +1 -0
  48. package/lib/node/components/content-variants/content-variants.svelte +10 -1
  49. package/lib/node/components/content-variants/content-variants.svelte.d.ts +1 -0
  50. package/lib/node/components/content-variants/content-variants.types.d.ts +4 -0
  51. package/lib/node/components/inlined-script.svelte +2 -1
  52. package/lib/node/components/inlined-script.svelte.d.ts +3 -1
  53. package/lib/node/components/inlined-styles.svelte +2 -1
  54. package/lib/node/components/inlined-styles.svelte.d.ts +3 -1
  55. package/lib/node/constants/sdk-version.d.ts +1 -1
  56. package/lib/node/constants/sdk-version.js +1 -1
  57. package/lib/node/context/builder.context.d.ts +1 -0
  58. package/lib/node/context/builder.context.js +1 -0
  59. package/lib/node/context/types.d.ts +1 -0
  60. package/lib/node/types/builder-props.d.ts +3 -0
  61. package/package.json +1 -1
  62. package/src/blocks/columns/columns.svelte +5 -1
  63. package/src/blocks/symbol/symbol.svelte +1 -0
  64. package/src/components/block/components/block-styles.svelte +1 -1
  65. package/src/components/content/components/styles.svelte +4 -2
  66. package/src/components/content/content.svelte +9 -1
  67. package/src/components/content-variants/content-variants.svelte +10 -1
  68. package/src/components/content-variants/content-variants.types.ts +5 -0
  69. package/src/components/inlined-script.svelte +5 -2
  70. package/src/components/inlined-styles.svelte +5 -2
  71. package/src/constants/sdk-version.ts +1 -1
  72. package/src/context/builder.context.ts +1 -0
  73. package/src/context/types.ts +1 -0
  74. 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
@@ -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>;
@@ -22,6 +22,7 @@ export let apiKey;
22
22
  export let apiVersion = undefined;
23
23
  export let blocksWrapper = undefined;
24
24
  export let blocksWrapperProps = undefined;
25
+ export let nonce = undefined;
25
26
  export let model = undefined;
26
27
  export let enrich = undefined;
27
28
  export let showContent;
@@ -76,6 +77,7 @@ let builderContextSignal = writable({
76
77
  inheritedStyles: {},
77
78
  BlocksWrapper: blocksWrapper || "div",
78
79
  BlocksWrapperProps: blocksWrapperProps || {},
80
+ nonce: nonce || "",
79
81
  });
80
82
  setContext(ComponentsContext.key, {
81
83
  registeredComponents: registeredComponents,
@@ -83,6 +85,7 @@ setContext(ComponentsContext.key, {
83
85
  </script>
84
86
 
85
87
  <EnableEditor
88
+ {nonce}
86
89
  {content}
87
90
  {data}
88
91
  {model}
@@ -99,10 +102,15 @@ setContext(ComponentsContext.key, {
99
102
  {...{}}
100
103
  >
101
104
  {#if isSsrAbTest}
102
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
105
+ <InlinedScript
106
+ id="builderio-variant-visibility"
107
+ {scriptStr}
108
+ nonce={nonce || ""}
109
+ />
103
110
  {/if}
104
111
  {#if TARGET !== "reactNative"}
105
112
  <ContentStyles
113
+ nonce={nonce || ""}
106
114
  {isNestedRender}
107
115
  contentId={$builderContextSignal.content?.id}
108
116
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  apiVersion?: ContentProps["apiVersion"];
13
13
  blocksWrapper?: ContentProps["blocksWrapper"];
14
14
  blocksWrapperProps?: ContentProps["blocksWrapperProps"];
15
+ nonce?: ContentProps["nonce"];
15
16
  model?: ContentProps["model"];
16
17
  enrich?: ContentProps["enrich"];
17
18
  showContent: ContentProps["showContent"];
@@ -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;
@@ -64,19 +65,26 @@ afterUpdate(() => { });
64
65
  <InlinedScript
65
66
  id="builderio-init-variants-fns"
66
67
  scriptStr={getInitVariantsFnsScriptString()}
68
+ nonce={nonce || ""}
67
69
  />
68
70
  {/if}
69
71
 
70
72
  {#if shouldRenderVariants}
71
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
73
+ <InlinedStyles
74
+ id="builderio-variants"
75
+ styles={hideVariantsStyleString()}
76
+ nonce={nonce || ""}
77
+ />
72
78
  <InlinedScript
73
79
  id="builderio-variants-visibility"
74
80
  scriptStr={updateCookieAndStylesScriptStr()}
81
+ nonce={nonce || ""}
75
82
  />
76
83
 
77
84
  {#each getVariants(content) as variant (variant.testVariationId)}
78
85
  <ContentComponent
79
86
  {isNestedRender}
87
+ {nonce}
80
88
  content={variant}
81
89
  showContent={false}
82
90
  {model}
@@ -99,6 +107,7 @@ afterUpdate(() => { });
99
107
  {/each}
100
108
  {/if}
101
109
  <ContentComponent
110
+ {nonce}
102
111
  {isNestedRender}
103
112
  {...{}}
104
113
  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.1";
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.0";
1
+ export const SDK_VERSION = "2.0.1";
@@ -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
@@ -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>;
@@ -22,6 +22,7 @@ export let apiKey;
22
22
  export let apiVersion = undefined;
23
23
  export let blocksWrapper = undefined;
24
24
  export let blocksWrapperProps = undefined;
25
+ export let nonce = undefined;
25
26
  export let model = undefined;
26
27
  export let enrich = undefined;
27
28
  export let showContent;
@@ -76,6 +77,7 @@ let builderContextSignal = writable({
76
77
  inheritedStyles: {},
77
78
  BlocksWrapper: blocksWrapper || "div",
78
79
  BlocksWrapperProps: blocksWrapperProps || {},
80
+ nonce: nonce || "",
79
81
  });
80
82
  setContext(ComponentsContext.key, {
81
83
  registeredComponents: registeredComponents,
@@ -83,6 +85,7 @@ setContext(ComponentsContext.key, {
83
85
  </script>
84
86
 
85
87
  <EnableEditor
88
+ {nonce}
86
89
  {content}
87
90
  {data}
88
91
  {model}
@@ -99,10 +102,15 @@ setContext(ComponentsContext.key, {
99
102
  {...{}}
100
103
  >
101
104
  {#if isSsrAbTest}
102
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
105
+ <InlinedScript
106
+ id="builderio-variant-visibility"
107
+ {scriptStr}
108
+ nonce={nonce || ""}
109
+ />
103
110
  {/if}
104
111
  {#if TARGET !== "reactNative"}
105
112
  <ContentStyles
113
+ nonce={nonce || ""}
106
114
  {isNestedRender}
107
115
  contentId={$builderContextSignal.content?.id}
108
116
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  apiVersion?: ContentProps["apiVersion"];
13
13
  blocksWrapper?: ContentProps["blocksWrapper"];
14
14
  blocksWrapperProps?: ContentProps["blocksWrapperProps"];
15
+ nonce?: ContentProps["nonce"];
15
16
  model?: ContentProps["model"];
16
17
  enrich?: ContentProps["enrich"];
17
18
  showContent: ContentProps["showContent"];
@@ -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;
@@ -64,19 +65,26 @@ afterUpdate(() => { });
64
65
  <InlinedScript
65
66
  id="builderio-init-variants-fns"
66
67
  scriptStr={getInitVariantsFnsScriptString()}
68
+ nonce={nonce || ""}
67
69
  />
68
70
  {/if}
69
71
 
70
72
  {#if shouldRenderVariants}
71
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
73
+ <InlinedStyles
74
+ id="builderio-variants"
75
+ styles={hideVariantsStyleString()}
76
+ nonce={nonce || ""}
77
+ />
72
78
  <InlinedScript
73
79
  id="builderio-variants-visibility"
74
80
  scriptStr={updateCookieAndStylesScriptStr()}
81
+ nonce={nonce || ""}
75
82
  />
76
83
 
77
84
  {#each getVariants(content) as variant (variant.testVariationId)}
78
85
  <ContentComponent
79
86
  {isNestedRender}
87
+ {nonce}
80
88
  content={variant}
81
89
  showContent={false}
82
90
  {model}
@@ -99,6 +107,7 @@ afterUpdate(() => { });
99
107
  {/each}
100
108
  {/if}
101
109
  <ContentComponent
110
+ {nonce}
102
111
  {isNestedRender}
103
112
  {...{}}
104
113
  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.1";
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.0";
1
+ export const SDK_VERSION = "2.0.1";
@@ -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
@@ -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>;
@@ -22,6 +22,7 @@ export let apiKey;
22
22
  export let apiVersion = undefined;
23
23
  export let blocksWrapper = undefined;
24
24
  export let blocksWrapperProps = undefined;
25
+ export let nonce = undefined;
25
26
  export let model = undefined;
26
27
  export let enrich = undefined;
27
28
  export let showContent;
@@ -76,6 +77,7 @@ let builderContextSignal = writable({
76
77
  inheritedStyles: {},
77
78
  BlocksWrapper: blocksWrapper || "div",
78
79
  BlocksWrapperProps: blocksWrapperProps || {},
80
+ nonce: nonce || "",
79
81
  });
80
82
  setContext(ComponentsContext.key, {
81
83
  registeredComponents: registeredComponents,
@@ -83,6 +85,7 @@ setContext(ComponentsContext.key, {
83
85
  </script>
84
86
 
85
87
  <EnableEditor
88
+ {nonce}
86
89
  {content}
87
90
  {data}
88
91
  {model}
@@ -99,10 +102,15 @@ setContext(ComponentsContext.key, {
99
102
  {...{}}
100
103
  >
101
104
  {#if isSsrAbTest}
102
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
105
+ <InlinedScript
106
+ id="builderio-variant-visibility"
107
+ {scriptStr}
108
+ nonce={nonce || ""}
109
+ />
103
110
  {/if}
104
111
  {#if TARGET !== "reactNative"}
105
112
  <ContentStyles
113
+ nonce={nonce || ""}
106
114
  {isNestedRender}
107
115
  contentId={$builderContextSignal.content?.id}
108
116
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  apiVersion?: ContentProps["apiVersion"];
13
13
  blocksWrapper?: ContentProps["blocksWrapper"];
14
14
  blocksWrapperProps?: ContentProps["blocksWrapperProps"];
15
+ nonce?: ContentProps["nonce"];
15
16
  model?: ContentProps["model"];
16
17
  enrich?: ContentProps["enrich"];
17
18
  showContent: ContentProps["showContent"];
@@ -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;
@@ -64,19 +65,26 @@ afterUpdate(() => { });
64
65
  <InlinedScript
65
66
  id="builderio-init-variants-fns"
66
67
  scriptStr={getInitVariantsFnsScriptString()}
68
+ nonce={nonce || ""}
67
69
  />
68
70
  {/if}
69
71
 
70
72
  {#if shouldRenderVariants}
71
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
73
+ <InlinedStyles
74
+ id="builderio-variants"
75
+ styles={hideVariantsStyleString()}
76
+ nonce={nonce || ""}
77
+ />
72
78
  <InlinedScript
73
79
  id="builderio-variants-visibility"
74
80
  scriptStr={updateCookieAndStylesScriptStr()}
81
+ nonce={nonce || ""}
75
82
  />
76
83
 
77
84
  {#each getVariants(content) as variant (variant.testVariationId)}
78
85
  <ContentComponent
79
86
  {isNestedRender}
87
+ {nonce}
80
88
  content={variant}
81
89
  showContent={false}
82
90
  {model}
@@ -99,6 +107,7 @@ afterUpdate(() => { });
99
107
  {/each}
100
108
  {/if}
101
109
  <ContentComponent
110
+ {nonce}
102
111
  {isNestedRender}
103
112
  {...{}}
104
113
  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.1";
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.0";
1
+ export const SDK_VERSION = "2.0.1";
@@ -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
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@builder.io/sdk-svelte",
3
3
  "description": "Builder.io SDK for Svelte",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "lib",
@@ -173,7 +173,11 @@
173
173
  {...{}}
174
174
  >
175
175
  {#if TARGET !== "reactNative"}
176
- <InlinedStyles id="builderio-columns" styles={columnsStyles()} />
176
+ <InlinedStyles
177
+ id="builderio-columns"
178
+ styles={columnsStyles()}
179
+ nonce={$builderContext.nonce}
180
+ />
177
181
  {/if}
178
182
  {#each columns as column, index (index)}
179
183
  <DynamicRenderer
@@ -68,6 +68,7 @@
68
68
  use:setAttrs={filterAttrs(attributes, "on:", true)}
69
69
  >
70
70
  <ContentVariants
71
+ nonce={$builderContext.nonce}
71
72
  isNestedRender={true}
72
73
  apiVersion={$builderContext.apiVersion}
73
74
  apiKey={$builderContext.apiKey}
@@ -117,5 +117,5 @@
117
117
  </script>
118
118
 
119
119
  {#if TARGET !== "reactNative" && css() && canShowBlock()}
120
- <InlinedStyles id="builderio-block" styles={css()} />
120
+ <InlinedStyles id="builderio-block" styles={css()} nonce={context.nonce} />
121
121
  {/if}
@@ -1,5 +1,5 @@
1
1
  <script context="module" lang="ts">
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  cssCode?: string;
4
4
  customFonts?: CustomFont[];
5
5
  contentId?: string;
@@ -8,6 +8,7 @@
8
8
  </script>
9
9
 
10
10
  <script lang="ts">
11
+ import type { BuilderNonceProp } from "../../../types/builder-props";
11
12
  import InlinedStyles from "../../inlined-styles.svelte";
12
13
  import type { CustomFont } from "./styles.helpers";
13
14
  import { getCss, getDefaultStyles, getFontCss } from "./styles.helpers";
@@ -16,6 +17,7 @@
16
17
  export let contentId: Props["contentId"] = undefined;
17
18
  export let customFonts: Props["customFonts"] = undefined;
18
19
  export let isNestedRender: Props["isNestedRender"] = undefined;
20
+ export let nonce: Props["nonce"];
19
21
 
20
22
  let injectedStyles = `
21
23
  ${getCss({
@@ -29,4 +31,4 @@ ${getDefaultStyles(isNestedRender)}
29
31
  `.trim();
30
32
  </script>
31
33
 
32
- <InlinedStyles id="builderio-content" styles={injectedStyles} />
34
+ <InlinedStyles id="builderio-content" styles={injectedStyles} {nonce} />
@@ -36,6 +36,7 @@
36
36
  export let apiVersion: ContentProps["apiVersion"] = undefined;
37
37
  export let blocksWrapper: ContentProps["blocksWrapper"] = undefined;
38
38
  export let blocksWrapperProps: ContentProps["blocksWrapperProps"] = undefined;
39
+ export let nonce: ContentProps["nonce"] = undefined;
39
40
  export let model: ContentProps["model"] = undefined;
40
41
  export let enrich: ContentProps["enrich"] = undefined;
41
42
  export let showContent: ContentProps["showContent"];
@@ -99,6 +100,7 @@
99
100
  inheritedStyles: {},
100
101
  BlocksWrapper: blocksWrapper || "div",
101
102
  BlocksWrapperProps: blocksWrapperProps || {},
103
+ nonce: nonce || "",
102
104
  });
103
105
 
104
106
  setContext(ComponentsContext.key, {
@@ -107,6 +109,7 @@
107
109
  </script>
108
110
 
109
111
  <EnableEditor
112
+ {nonce}
110
113
  {content}
111
114
  {data}
112
115
  {model}
@@ -123,10 +126,15 @@
123
126
  {...{}}
124
127
  >
125
128
  {#if isSsrAbTest}
126
- <InlinedScript id="builderio-variant-visibility" {scriptStr} />
129
+ <InlinedScript
130
+ id="builderio-variant-visibility"
131
+ {scriptStr}
132
+ nonce={nonce || ""}
133
+ />
127
134
  {/if}
128
135
  {#if TARGET !== "reactNative"}
129
136
  <ContentStyles
137
+ nonce={nonce || ""}
130
138
  {isNestedRender}
131
139
  contentId={$builderContextSignal.content?.id}
132
140
  cssCode={$builderContextSignal.content?.data?.cssCode}
@@ -28,6 +28,7 @@
28
28
  export let content: VariantsProviderProps["content"] = undefined;
29
29
  export let isNestedRender: VariantsProviderProps["isNestedRender"] =
30
30
  undefined;
31
+ export let nonce: VariantsProviderProps["nonce"] = undefined;
31
32
  export let model: VariantsProviderProps["model"] = undefined;
32
33
  export let data: VariantsProviderProps["data"] = undefined;
33
34
  export let context: VariantsProviderProps["context"] = undefined;
@@ -92,19 +93,26 @@
92
93
  <InlinedScript
93
94
  id="builderio-init-variants-fns"
94
95
  scriptStr={getInitVariantsFnsScriptString()}
96
+ nonce={nonce || ""}
95
97
  />
96
98
  {/if}
97
99
 
98
100
  {#if shouldRenderVariants}
99
- <InlinedStyles id="builderio-variants" styles={hideVariantsStyleString()} />
101
+ <InlinedStyles
102
+ id="builderio-variants"
103
+ styles={hideVariantsStyleString()}
104
+ nonce={nonce || ""}
105
+ />
100
106
  <InlinedScript
101
107
  id="builderio-variants-visibility"
102
108
  scriptStr={updateCookieAndStylesScriptStr()}
109
+ nonce={nonce || ""}
103
110
  />
104
111
 
105
112
  {#each getVariants(content) as variant (variant.testVariationId)}
106
113
  <ContentComponent
107
114
  {isNestedRender}
115
+ {nonce}
108
116
  content={variant}
109
117
  showContent={false}
110
118
  {model}
@@ -127,6 +135,7 @@
127
135
  {/each}
128
136
  {/if}
129
137
  <ContentComponent
138
+ {nonce}
130
139
  {isNestedRender}
131
140
  {...{}}
132
141
  content={defaultContent()}
@@ -81,4 +81,9 @@ export interface ContentVariantsPrps {
81
81
  * List of hosts to allow editing content from.
82
82
  */
83
83
  trustedHosts?: string[];
84
+
85
+ /**
86
+ * A CSP nonce to use for the SDK's inlined `<script>` and `<style>` tags.
87
+ */
88
+ nonce?: string;
84
89
  }
@@ -1,13 +1,16 @@
1
1
  <script context="module" lang="ts">
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  scriptStr: string;
4
4
  id: string;
5
5
  }
6
6
  </script>
7
7
 
8
8
  <script lang="ts">
9
+ import type { BuilderNonceProp } from "../types/builder-props";
10
+
9
11
  export let scriptStr: Props["scriptStr"];
10
12
  export let id: Props["id"];
13
+ export let nonce: Props["nonce"];
11
14
  </script>
12
15
 
13
- {@html `<script data-id=${id}>${scriptStr}</script>`}
16
+ {@html `<script data-id=${id} nonce=${nonce || ""}>${scriptStr}</script>`}
@@ -1,13 +1,16 @@
1
1
  <script context="module" lang="ts">
2
- interface Props {
2
+ interface Props extends BuilderNonceProp {
3
3
  styles: string;
4
4
  id: string;
5
5
  }
6
6
  </script>
7
7
 
8
8
  <script lang="ts">
9
+ import type { BuilderNonceProp } from "../types/builder-props";
10
+
9
11
  export let styles: Props["styles"];
10
12
  export let id: Props["id"];
13
+ export let nonce: Props["nonce"];
11
14
  </script>
12
15
 
13
- {@html `<${"style"} data-id=${id} >${styles}<${"/style"}>`}
16
+ {@html `<${"style"} data-id=${id} nonce=${nonce} >${styles}<${"/style"}>`}
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.0"
1
+ export const SDK_VERSION = "2.0.1"
@@ -14,6 +14,7 @@ export default {
14
14
  inheritedStyles: {},
15
15
  BlocksWrapper: "div",
16
16
  BlocksWrapperProps: {},
17
+ nonce: "",
17
18
  }),
18
19
  key,
19
20
  };
@@ -34,5 +34,6 @@ export interface BuilderContextInterface extends Pick<BlocksWrapperProps, 'Block
34
34
  componentInfos: Dictionary<ComponentInfo>;
35
35
  // Used to recursively store all CSS coming from a parent that would apply to a Text block
36
36
  inheritedStyles: Record<string, unknown>;
37
+ nonce: string;
37
38
  canTrack?: boolean;
38
39
  }
@@ -10,4 +10,7 @@ export type BuilderComponentsProp = {
10
10
  };
11
11
  export type BuilderLinkComponentProp = {
12
12
  builderLinkComponent?: any;
13
+ };
14
+ export type BuilderNonceProp = {
15
+ nonce: string;
13
16
  }