@builder.io/sdk-svelte 1.1.2 → 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 (141) hide show
  1. package/lib/browser/blocks/button/component-info.js +0 -3
  2. package/lib/browser/blocks/columns/columns.svelte +8 -3
  3. package/lib/browser/blocks/custom-code/component-info.js +0 -6
  4. package/lib/browser/blocks/embed/component-info.js +0 -6
  5. package/lib/browser/blocks/form/input/component-info.js +0 -6
  6. package/lib/browser/blocks/form/select/component-info.js +0 -6
  7. package/lib/browser/blocks/form/submit-button/component-info.js +0 -6
  8. package/lib/browser/blocks/form/textarea/component-info.js +0 -6
  9. package/lib/browser/blocks/fragment/component-info.js +0 -6
  10. package/lib/browser/blocks/image/component-info.js +1 -4
  11. package/lib/browser/blocks/img/component-info.js +0 -6
  12. package/lib/browser/blocks/raw-text/component-info.js +0 -6
  13. package/lib/browser/blocks/section/component-info.js +0 -6
  14. package/lib/browser/blocks/slot/component-info.js +1 -4
  15. package/lib/browser/blocks/symbol/symbol.svelte +1 -0
  16. package/lib/browser/blocks/text/component-info.js +1 -4
  17. package/lib/browser/blocks/video/component-info.js +1 -4
  18. package/lib/browser/components/block/block.helpers.d.ts +8 -8
  19. package/lib/browser/components/block/block.helpers.js +20 -43
  20. package/lib/browser/components/block/components/block-styles.svelte +1 -1
  21. package/lib/browser/components/content/components/styles.svelte +2 -1
  22. package/lib/browser/components/content/components/styles.svelte.d.ts +3 -1
  23. package/lib/browser/components/content/content.svelte +9 -1
  24. package/lib/browser/components/content/content.svelte.d.ts +1 -0
  25. package/lib/browser/components/content-variants/content-variants.svelte +10 -1
  26. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +1 -0
  27. package/lib/browser/components/content-variants/content-variants.types.d.ts +4 -0
  28. package/lib/browser/components/inlined-script.svelte +2 -1
  29. package/lib/browser/components/inlined-script.svelte.d.ts +3 -1
  30. package/lib/browser/components/inlined-styles.svelte +2 -1
  31. package/lib/browser/components/inlined-styles.svelte.d.ts +3 -1
  32. package/lib/browser/constants/sdk-version.d.ts +1 -1
  33. package/lib/browser/constants/sdk-version.js +1 -1
  34. package/lib/browser/context/builder.context.d.ts +1 -0
  35. package/lib/browser/context/builder.context.js +1 -0
  36. package/lib/browser/context/types.d.ts +1 -0
  37. package/lib/browser/types/builder-props.d.ts +3 -0
  38. package/lib/edge/blocks/button/component-info.js +0 -3
  39. package/lib/edge/blocks/columns/columns.svelte +8 -3
  40. package/lib/edge/blocks/custom-code/component-info.js +0 -6
  41. package/lib/edge/blocks/embed/component-info.js +0 -6
  42. package/lib/edge/blocks/form/input/component-info.js +0 -6
  43. package/lib/edge/blocks/form/select/component-info.js +0 -6
  44. package/lib/edge/blocks/form/submit-button/component-info.js +0 -6
  45. package/lib/edge/blocks/form/textarea/component-info.js +0 -6
  46. package/lib/edge/blocks/fragment/component-info.js +0 -6
  47. package/lib/edge/blocks/image/component-info.js +1 -4
  48. package/lib/edge/blocks/img/component-info.js +0 -6
  49. package/lib/edge/blocks/raw-text/component-info.js +0 -6
  50. package/lib/edge/blocks/section/component-info.js +0 -6
  51. package/lib/edge/blocks/slot/component-info.js +1 -4
  52. package/lib/edge/blocks/symbol/symbol.svelte +1 -0
  53. package/lib/edge/blocks/text/component-info.js +1 -4
  54. package/lib/edge/blocks/video/component-info.js +1 -4
  55. package/lib/edge/components/block/block.helpers.d.ts +8 -8
  56. package/lib/edge/components/block/block.helpers.js +20 -43
  57. package/lib/edge/components/block/components/block-styles.svelte +1 -1
  58. package/lib/edge/components/content/components/styles.svelte +2 -1
  59. package/lib/edge/components/content/components/styles.svelte.d.ts +3 -1
  60. package/lib/edge/components/content/content.svelte +9 -1
  61. package/lib/edge/components/content/content.svelte.d.ts +1 -0
  62. package/lib/edge/components/content-variants/content-variants.svelte +10 -1
  63. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +1 -0
  64. package/lib/edge/components/content-variants/content-variants.types.d.ts +4 -0
  65. package/lib/edge/components/inlined-script.svelte +2 -1
  66. package/lib/edge/components/inlined-script.svelte.d.ts +3 -1
  67. package/lib/edge/components/inlined-styles.svelte +2 -1
  68. package/lib/edge/components/inlined-styles.svelte.d.ts +3 -1
  69. package/lib/edge/constants/sdk-version.d.ts +1 -1
  70. package/lib/edge/constants/sdk-version.js +1 -1
  71. package/lib/edge/context/builder.context.d.ts +1 -0
  72. package/lib/edge/context/builder.context.js +1 -0
  73. package/lib/edge/context/types.d.ts +1 -0
  74. package/lib/edge/types/builder-props.d.ts +3 -0
  75. package/lib/node/blocks/button/component-info.js +0 -3
  76. package/lib/node/blocks/columns/columns.svelte +8 -3
  77. package/lib/node/blocks/custom-code/component-info.js +0 -6
  78. package/lib/node/blocks/embed/component-info.js +0 -6
  79. package/lib/node/blocks/form/input/component-info.js +0 -6
  80. package/lib/node/blocks/form/select/component-info.js +0 -6
  81. package/lib/node/blocks/form/submit-button/component-info.js +0 -6
  82. package/lib/node/blocks/form/textarea/component-info.js +0 -6
  83. package/lib/node/blocks/fragment/component-info.js +0 -6
  84. package/lib/node/blocks/image/component-info.js +1 -4
  85. package/lib/node/blocks/img/component-info.js +0 -6
  86. package/lib/node/blocks/raw-text/component-info.js +0 -6
  87. package/lib/node/blocks/section/component-info.js +0 -6
  88. package/lib/node/blocks/slot/component-info.js +1 -4
  89. package/lib/node/blocks/symbol/symbol.svelte +1 -0
  90. package/lib/node/blocks/text/component-info.js +1 -4
  91. package/lib/node/blocks/video/component-info.js +1 -4
  92. package/lib/node/components/block/block.helpers.d.ts +8 -8
  93. package/lib/node/components/block/block.helpers.js +20 -43
  94. package/lib/node/components/block/components/block-styles.svelte +1 -1
  95. package/lib/node/components/content/components/styles.svelte +2 -1
  96. package/lib/node/components/content/components/styles.svelte.d.ts +3 -1
  97. package/lib/node/components/content/content.svelte +9 -1
  98. package/lib/node/components/content/content.svelte.d.ts +1 -0
  99. package/lib/node/components/content-variants/content-variants.svelte +10 -1
  100. package/lib/node/components/content-variants/content-variants.svelte.d.ts +1 -0
  101. package/lib/node/components/content-variants/content-variants.types.d.ts +4 -0
  102. package/lib/node/components/inlined-script.svelte +2 -1
  103. package/lib/node/components/inlined-script.svelte.d.ts +3 -1
  104. package/lib/node/components/inlined-styles.svelte +2 -1
  105. package/lib/node/components/inlined-styles.svelte.d.ts +3 -1
  106. package/lib/node/constants/sdk-version.d.ts +1 -1
  107. package/lib/node/constants/sdk-version.js +1 -1
  108. package/lib/node/context/builder.context.d.ts +1 -0
  109. package/lib/node/context/builder.context.js +1 -0
  110. package/lib/node/context/types.d.ts +1 -0
  111. package/lib/node/types/builder-props.d.ts +3 -0
  112. package/package.json +1 -1
  113. package/src/blocks/button/component-info.ts +0 -3
  114. package/src/blocks/columns/columns.svelte +8 -3
  115. package/src/blocks/custom-code/component-info.ts +0 -6
  116. package/src/blocks/embed/component-info.ts +0 -6
  117. package/src/blocks/form/input/component-info.ts +0 -6
  118. package/src/blocks/form/select/component-info.ts +0 -6
  119. package/src/blocks/form/submit-button/component-info.ts +0 -6
  120. package/src/blocks/form/textarea/component-info.ts +0 -6
  121. package/src/blocks/fragment/component-info.ts +0 -6
  122. package/src/blocks/image/component-info.ts +1 -4
  123. package/src/blocks/img/component-info.ts +0 -6
  124. package/src/blocks/raw-text/component-info.ts +0 -6
  125. package/src/blocks/section/component-info.ts +0 -6
  126. package/src/blocks/slot/component-info.ts +1 -4
  127. package/src/blocks/symbol/symbol.svelte +1 -0
  128. package/src/blocks/text/component-info.ts +1 -4
  129. package/src/blocks/video/component-info.ts +1 -4
  130. package/src/components/block/block.helpers.ts +8 -28
  131. package/src/components/block/components/block-styles.svelte +1 -1
  132. package/src/components/content/components/styles.svelte +4 -2
  133. package/src/components/content/content.svelte +9 -1
  134. package/src/components/content-variants/content-variants.svelte +10 -1
  135. package/src/components/content-variants/content-variants.types.ts +5 -0
  136. package/src/components/inlined-script.svelte +5 -2
  137. package/src/components/inlined-styles.svelte +5 -2
  138. package/src/constants/sdk-version.ts +1 -1
  139. package/src/context/builder.context.ts +1 -0
  140. package/src/context/types.ts +1 -0
  141. package/src/types/builder-props.ts +3 -0
@@ -81,9 +81,6 @@ export const componentInfo: ComponentInfo = {
81
81
  advanced: true
82
82
  }],
83
83
  shouldReceiveBuilderProps: {
84
- builderBlock: true,
85
- builderContext: false,
86
- builderComponents: false,
87
- builderLinkComponent: false
84
+ builderBlock: true
88
85
  }
89
86
  }
@@ -4,7 +4,6 @@ import { evaluate } from '../../functions/evaluate/index';
4
4
  import { extractTextStyles } from '../../functions/extract-text-styles';
5
5
  import { getProcessedBlock } from '../../functions/get-processed-block';
6
6
  import { getStyle } from '../../functions/get-style';
7
- import type { ComponentInfo } from '../../server-index';
8
7
  import type { BuilderBlock } from '../../types/builder-block';
9
8
  import type { RepeatData } from './types';
10
9
  export const getComponent = ({
@@ -100,46 +99,27 @@ export const getInheritedStyles = ({
100
99
  }
101
100
  return extractTextStyles(style);
102
101
  };
103
- const applyDefaults = (shouldReceiveBuilderProps: ComponentInfo['shouldReceiveBuilderProps']) => {
104
- return {
105
- // once we bump to a major version, toggle this to `false`.
106
- builderBlock: true,
107
- // once we bump to a major version, toggle this to `false`.
108
- builderContext: true,
109
- builderComponents: false,
110
- builderLinkComponent: false,
111
- ...shouldReceiveBuilderProps
112
- };
113
- };
114
102
  export const provideLinkComponent = (block: RegisteredComponent | null | undefined, linkComponent: any) => {
115
- if (!block) return {};
116
- const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderLinkComponent;
117
- if (!shouldReceiveProp) return {};
118
- return {
103
+ if (block?.shouldReceiveBuilderProps?.builderLinkComponent) return {
119
104
  builderLinkComponent: linkComponent
120
105
  };
106
+ return {};
121
107
  };
122
108
  export const provideRegisteredComponents = (block: RegisteredComponent | null | undefined, registeredComponents: RegisteredComponents) => {
123
- if (!block) return {};
124
- const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderComponents;
125
- if (!shouldReceiveProp) return {};
126
- return {
109
+ if (block?.shouldReceiveBuilderProps?.builderComponents) return {
127
110
  builderComponents: registeredComponents
128
111
  };
112
+ return {};
129
113
  };
130
114
  export const provideBuilderBlock = (block: RegisteredComponent | null | undefined, builderBlock: BuilderBlock) => {
131
- if (!block) return {};
132
- const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderBlock;
133
- if (!shouldReceiveProp) return {};
134
- return {
115
+ if (block?.shouldReceiveBuilderProps?.builderBlock) return {
135
116
  builderBlock
136
117
  };
118
+ return {};
137
119
  };
138
120
  export const provideBuilderContext = (block: RegisteredComponent | null | undefined, context: Writable<BuilderContextInterface>) => {
139
- if (!block) return {};
140
- const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderContext;
141
- if (!shouldReceiveProp) return {};
142
- return {
121
+ if (block?.shouldReceiveBuilderProps?.builderContext) return {
143
122
  builderContext: context
144
123
  };
124
+ return {};
145
125
  }
@@ -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 = "1.1.2"
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
  }