@builder.io/sdk-svelte 3.0.6 → 4.0.0

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 (77) hide show
  1. package/lib/browser/blocks/symbol/symbol.svelte +1 -1
  2. package/lib/browser/blocks/video/video.svelte +54 -9
  3. package/lib/browser/blocks/video/video.svelte.d.ts +2 -2
  4. package/lib/browser/components/block/components/block-styles.svelte +10 -0
  5. package/lib/browser/components/content/components/enable-editor.svelte +6 -5
  6. package/lib/browser/components/content/components/enable-editor.svelte.d.ts +2 -2
  7. package/lib/browser/components/content/content.svelte +3 -3
  8. package/lib/browser/components/content/content.svelte.d.ts +2 -2
  9. package/lib/browser/components/content-variants/content-variants.svelte +2 -2
  10. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +2 -2
  11. package/lib/browser/components/content-variants/content-variants.types.d.ts +2 -2
  12. package/lib/browser/constants/device-sizes.d.ts +3 -2
  13. package/lib/browser/constants/device-sizes.js +20 -3
  14. package/lib/browser/constants/sdk-version.d.ts +1 -1
  15. package/lib/browser/constants/sdk-version.js +1 -1
  16. package/lib/browser/helpers/subscribe-to-editor.d.ts +13 -13
  17. package/lib/browser/helpers/subscribe-to-editor.js +6 -3
  18. package/lib/browser/scripts/init-editing.d.ts +3 -1
  19. package/lib/browser/scripts/init-editing.js +4 -1
  20. package/lib/browser/types/builder-block.d.ts +0 -1
  21. package/lib/browser/types/builder-content.d.ts +1 -0
  22. package/lib/edge/blocks/symbol/symbol.svelte +1 -1
  23. package/lib/edge/blocks/video/video.svelte +54 -9
  24. package/lib/edge/blocks/video/video.svelte.d.ts +2 -2
  25. package/lib/edge/components/block/components/block-styles.svelte +10 -0
  26. package/lib/edge/components/content/components/enable-editor.svelte +6 -5
  27. package/lib/edge/components/content/components/enable-editor.svelte.d.ts +2 -2
  28. package/lib/edge/components/content/content.svelte +3 -3
  29. package/lib/edge/components/content/content.svelte.d.ts +2 -2
  30. package/lib/edge/components/content-variants/content-variants.svelte +2 -2
  31. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +2 -2
  32. package/lib/edge/components/content-variants/content-variants.types.d.ts +2 -2
  33. package/lib/edge/constants/device-sizes.d.ts +3 -2
  34. package/lib/edge/constants/device-sizes.js +20 -3
  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/helpers/subscribe-to-editor.d.ts +13 -13
  38. package/lib/edge/helpers/subscribe-to-editor.js +6 -3
  39. package/lib/edge/scripts/init-editing.d.ts +3 -1
  40. package/lib/edge/scripts/init-editing.js +4 -1
  41. package/lib/edge/types/builder-block.d.ts +0 -1
  42. package/lib/edge/types/builder-content.d.ts +1 -0
  43. package/lib/node/blocks/symbol/symbol.svelte +1 -1
  44. package/lib/node/blocks/video/video.svelte +54 -9
  45. package/lib/node/blocks/video/video.svelte.d.ts +2 -2
  46. package/lib/node/components/block/components/block-styles.svelte +10 -0
  47. package/lib/node/components/content/components/enable-editor.svelte +6 -5
  48. package/lib/node/components/content/components/enable-editor.svelte.d.ts +2 -2
  49. package/lib/node/components/content/content.svelte +3 -3
  50. package/lib/node/components/content/content.svelte.d.ts +2 -2
  51. package/lib/node/components/content-variants/content-variants.svelte +2 -2
  52. package/lib/node/components/content-variants/content-variants.svelte.d.ts +2 -2
  53. package/lib/node/components/content-variants/content-variants.types.d.ts +2 -2
  54. package/lib/node/constants/device-sizes.d.ts +3 -2
  55. package/lib/node/constants/device-sizes.js +20 -3
  56. package/lib/node/constants/sdk-version.d.ts +1 -1
  57. package/lib/node/constants/sdk-version.js +1 -1
  58. package/lib/node/helpers/subscribe-to-editor.d.ts +13 -13
  59. package/lib/node/helpers/subscribe-to-editor.js +6 -3
  60. package/lib/node/scripts/init-editing.d.ts +3 -1
  61. package/lib/node/scripts/init-editing.js +4 -1
  62. package/lib/node/types/builder-block.d.ts +0 -1
  63. package/lib/node/types/builder-content.d.ts +1 -0
  64. package/package.json +1 -1
  65. package/src/blocks/symbol/symbol.svelte +1 -1
  66. package/src/blocks/video/video.svelte +59 -8
  67. package/src/components/block/components/block-styles.svelte +16 -0
  68. package/src/components/content/components/enable-editor.svelte +5 -4
  69. package/src/components/content/content.svelte +3 -3
  70. package/src/components/content-variants/content-variants.svelte +2 -2
  71. package/src/components/content-variants/content-variants.types.ts +2 -2
  72. package/src/constants/device-sizes.ts +26 -7
  73. package/src/constants/sdk-version.ts +1 -1
  74. package/src/helpers/subscribe-to-editor.ts +29 -16
  75. package/src/scripts/init-editing.ts +6 -1
  76. package/src/types/builder-block.ts +0 -1
  77. package/src/types/builder-content.ts +1 -0
@@ -9,19 +9,19 @@ type ContentListener = Required<Pick<ContentProps, 'model' | 'trustedHosts'>> &
9
9
  };
10
10
  };
11
11
  export declare const createEditorListener: ({ model, trustedHosts, callbacks }: ContentListener) => (event: MessageEvent<any>) => void;
12
- type SubscribeToEditor = (
13
- /**
14
- * The Builder `model` to subscribe to
15
- */
16
- model: string,
17
- /**
18
- * The callback function to call when the content is updated.
19
- */
20
- callback: (updatedContent: BuilderContent) => void,
21
- /**
22
- * Extra options for the listener.
23
- */
24
- options?: {
12
+ type SubscribeToEditor = ({ model, apiKey, callback, trustedHosts }: {
13
+ /**
14
+ * The Builder `model` to subscribe to
15
+ */
16
+ model: string;
17
+ /**
18
+ * Builder API Key to use for the editor.
19
+ */
20
+ apiKey: string;
21
+ /**
22
+ * The callback function to call when the content is updated.
23
+ */
24
+ callback: (updatedContent: BuilderContent) => void;
25
25
  /**
26
26
  * List of hosts to allow editing content from.
27
27
  */
@@ -38,12 +38,15 @@ export const createEditorListener = ({ model, trustedHosts, callbacks }) => {
38
38
  * Subscribes to the Builder editor and listens to `content` updates of a certain `model`.
39
39
  * Sends the updated `content` to the `callback` function.
40
40
  */
41
- export const subscribeToEditor = (model, callback, options) => {
41
+ export const subscribeToEditor = ({ model, apiKey, callback, trustedHosts }) => {
42
42
  if (!isBrowser) {
43
43
  logger.warn('`subscribeToEditor` only works in the browser. It currently seems to be running on the server.');
44
44
  return () => { };
45
45
  }
46
- setupBrowserForEditing();
46
+ setupBrowserForEditing({
47
+ modelName: model,
48
+ apiKey
49
+ });
47
50
  const listener = createEditorListener({
48
51
  callbacks: {
49
52
  contentUpdate: callback,
@@ -51,7 +54,7 @@ export const subscribeToEditor = (model, callback, options) => {
51
54
  configureSdk: () => { }
52
55
  },
53
56
  model,
54
- trustedHosts: options?.trustedHosts
57
+ trustedHosts
55
58
  });
56
59
  window.addEventListener('message', listener);
57
60
  return () => {
@@ -1,5 +1,7 @@
1
1
  export declare const registerInsertMenu: () => void;
2
- export declare const setupBrowserForEditing: (options?: {
2
+ export declare const setupBrowserForEditing: (options: {
3
+ modelName: string;
4
+ apiKey: string;
3
5
  enrich?: boolean;
4
6
  includeRefs?: boolean;
5
7
  locale?: string;
@@ -27,7 +27,7 @@ export const registerInsertMenu = () => {
27
27
  });
28
28
  };
29
29
  let isSetupForEditing = false;
30
- export const setupBrowserForEditing = (options = {}) => {
30
+ export const setupBrowserForEditing = (options) => {
31
31
  if (isSetupForEditing) {
32
32
  return;
33
33
  }
@@ -43,6 +43,9 @@ export const setupBrowserForEditing = (options = {}) => {
43
43
  // scope our '+ add block' button styling
44
44
  supportsAddBlockScoping: true,
45
45
  supportsCustomBreakpoints: true,
46
+ modelName: options.modelName,
47
+ apiKey: options.apiKey,
48
+ supportsXSmallBreakpoint: TARGET === 'reactNative' ? false : true,
46
49
  blockLevelPersonalization: true
47
50
  }
48
51
  }, '*');
@@ -37,7 +37,6 @@ export interface BuilderBlock {
37
37
  large?: Partial<CSSStyleDeclaration>;
38
38
  medium?: Partial<CSSStyleDeclaration>;
39
39
  small?: Partial<CSSStyleDeclaration>;
40
- /** @deprecated */
41
40
  xsmall?: Partial<CSSStyleDeclaration>;
42
41
  };
43
42
  component?: {
@@ -2,6 +2,7 @@ import type { BuilderBlock } from './builder-block';
2
2
  import type { Input } from './input';
3
3
  import type { Nullable } from './typescript';
4
4
  export interface Breakpoints {
5
+ xsmall?: number;
5
6
  small: number;
6
7
  medium: number;
7
8
  }
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": "3.0.6",
4
+ "version": "4.0.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "lib",
@@ -83,7 +83,7 @@
83
83
  ...contentToUse?.data?.state,
84
84
  }}
85
85
  canTrack={$builderContext.canTrack}
86
- model={symbol?.model}
86
+ model={symbol?.model ?? ""}
87
87
  content={contentToUse}
88
88
  linkComponent={builderLinkComponent}
89
89
  blocksWrapper={blocksWrapper()}
@@ -1,6 +1,9 @@
1
1
  <script lang="ts">
2
+ import { onDestroy, onMount } from "svelte";
3
+
2
4
  import type { VideoProps } from "./video.types";
3
5
 
6
+ export let lazyLoad: VideoProps["lazyLoad"] = undefined;
4
7
  export let autoPlay: VideoProps["autoPlay"] = undefined;
5
8
  export let muted: VideoProps["muted"] = undefined;
6
9
  export let controls: VideoProps["controls"] = undefined;
@@ -11,9 +14,8 @@
11
14
  export let fit: VideoProps["fit"] = undefined;
12
15
  export let position: VideoProps["position"] = undefined;
13
16
  export let aspectRatio: VideoProps["aspectRatio"] = undefined;
14
- export let video: VideoProps["video"] = undefined;
15
17
  export let posterImage: VideoProps["posterImage"] = undefined;
16
- export let lazyLoad: VideoProps["lazyLoad"] = undefined;
18
+ export let video: VideoProps["video"] = undefined;
17
19
  export let fitContent: VideoProps["fitContent"] = undefined;
18
20
  export let builderBlock: VideoProps["builderBlock"] = undefined;
19
21
 
@@ -62,6 +64,49 @@
62
64
  ...videoProps(),
63
65
  };
64
66
  };
67
+
68
+ let videoRef;
69
+
70
+ let lazyVideoObserver = undefined;
71
+
72
+ onMount(() => {
73
+ if (lazyLoad) {
74
+ const oberver = new IntersectionObserver(function (entries) {
75
+ entries.forEach(function (entry) {
76
+ if (!entry.isIntersecting) return;
77
+ const videoElement = entry.target as HTMLVideoElement;
78
+ try {
79
+ // Convert HTMLCollection to Array and filter for source elements
80
+ Array.from(videoElement.children)
81
+ .filter(
82
+ (child): child is HTMLSourceElement =>
83
+ child instanceof HTMLElement && child.tagName === "SOURCE"
84
+ )
85
+ .forEach((source) => {
86
+ const src = source.dataset.src;
87
+ if (src) {
88
+ source.src = src;
89
+ }
90
+ });
91
+ videoElement.load();
92
+ oberver.unobserve(videoElement);
93
+ } catch (error) {
94
+ console.error("Error loading lazy video:", error);
95
+ }
96
+ });
97
+ });
98
+ if (videoRef) {
99
+ oberver.observe(videoRef);
100
+ }
101
+ lazyVideoObserver = oberver;
102
+ }
103
+ });
104
+
105
+ onDestroy(() => {
106
+ if (lazyVideoObserver) {
107
+ lazyVideoObserver.disconnect();
108
+ }
109
+ });
65
110
  </script>
66
111
 
67
112
  <div
@@ -87,13 +132,19 @@
87
132
  })}
88
133
  class="builder-video"
89
134
  {...spreadProps()}
90
- preload={preload || "metadata"}
91
- src={video || "no-src"}
135
+ bind:this={videoRef}
136
+ preload={lazyLoad ? "none" : preload || "metadata"}
92
137
  poster={posterImage}
93
- >
94
- {#if !lazyLoad}
95
- <source type="video/mp4" src={video} />
96
- {/if}</video
138
+ ><source
139
+ type="video/mp4"
140
+ {...lazyLoad
141
+ ? {
142
+ "data-src": video,
143
+ }
144
+ : {
145
+ src: video,
146
+ }}
147
+ /></video
97
148
  >
98
149
  {#if aspectRatio && !(fitContent && builderBlock?.children?.length)}
99
150
  <div
@@ -39,9 +39,13 @@
39
39
  const sizesWithUpdatedBreakpoints = getSizesForBreakpoints(
40
40
  content?.meta?.breakpoints || {}
41
41
  );
42
+ const contentHasXSmallBreakpoint = Boolean(
43
+ content?.meta?.breakpoints?.xsmall
44
+ );
42
45
  const largeStyles = styles?.large;
43
46
  const mediumStyles = styles?.medium;
44
47
  const smallStyles = styles?.small;
48
+ const xsmallStyles = styles?.xsmall;
45
49
  const className = processedBlock.id;
46
50
  if (!className) {
47
51
  return "";
@@ -72,6 +76,17 @@
72
76
  ),
73
77
  })
74
78
  : "";
79
+ const xsmallStylesClass =
80
+ xsmallStyles && contentHasXSmallBreakpoint
81
+ ? createCssClass({
82
+ className,
83
+ styles: xsmallStyles,
84
+ mediaQuery: getMaxWidthQueryForSize(
85
+ "xsmall",
86
+ sizesWithUpdatedBreakpoints
87
+ ),
88
+ })
89
+ : "";
75
90
  const hoverAnimation =
76
91
  processedBlock.animations &&
77
92
  processedBlock.animations.find((item) => item.trigger === "hover");
@@ -96,6 +111,7 @@
96
111
  largeStylesClass,
97
112
  mediumStylesClass,
98
113
  smallStylesClass,
114
+ xsmallStylesClass,
99
115
  hoverStylesClass,
100
116
  ].join(" ");
101
117
  };
@@ -57,8 +57,8 @@
57
57
  export let locale: BuilderEditorProps["locale"] = undefined;
58
58
  export let enrich: BuilderEditorProps["enrich"] = undefined;
59
59
  export let trustedHosts: BuilderEditorProps["trustedHosts"] = undefined;
60
- export let model: BuilderEditorProps["model"] = undefined;
61
- export let content: BuilderEditorProps["content"] = undefined;
60
+ export let model: BuilderEditorProps["model"];
61
+ export let content: BuilderEditorProps["content"];
62
62
  export let context: BuilderEditorProps["context"] = undefined;
63
63
  export let data: BuilderEditorProps["data"] = undefined;
64
64
  export let showContent: BuilderEditorProps["showContent"];
@@ -229,11 +229,12 @@
229
229
  trustedHosts: trustedHosts,
230
230
  }
231
231
  : {}),
232
+ modelName: model ?? "",
233
+ apiKey: apiKey,
232
234
  });
233
235
  Object.values<ComponentInfo>($builderContextSignal.componentInfos).forEach(
234
236
  (registeredComponent) => {
235
237
  if (
236
- !model ||
237
238
  !registeredComponent.models?.length ||
238
239
  registeredComponent.models.includes(model)
239
240
  ) {
@@ -272,7 +273,7 @@
272
273
  (!content || searchParamPreviewId === content.id))
273
274
  ) {
274
275
  fetchOneEntry({
275
- model: model || "",
276
+ model: model,
276
277
  apiKey: apiKey,
277
278
  apiVersion: $builderContextSignal.apiVersion,
278
279
  ...(searchParamPreviewModel === "BUILDER_STUDIO" && context?.symbolId
@@ -30,7 +30,7 @@
30
30
 
31
31
  export let apiKey: ContentProps["apiKey"];
32
32
  export let context: ContentProps["context"] = undefined;
33
- export let content: ContentProps["content"] = undefined;
33
+ export let content: ContentProps["content"];
34
34
  export let customComponents: ContentProps["customComponents"] = undefined;
35
35
  export let data: ContentProps["data"] = undefined;
36
36
  export let locale: ContentProps["locale"] = undefined;
@@ -39,7 +39,7 @@
39
39
  export let blocksWrapper: ContentProps["blocksWrapper"] = undefined;
40
40
  export let blocksWrapperProps: ContentProps["blocksWrapperProps"] = undefined;
41
41
  export let nonce: ContentProps["nonce"] = undefined;
42
- export let model: ContentProps["model"] = undefined;
42
+ export let model: ContentProps["model"];
43
43
  export let apiHost: ContentProps["apiHost"] = undefined;
44
44
  export let enrich: ContentProps["enrich"] = undefined;
45
45
  export let showContent: ContentProps["showContent"];
@@ -104,7 +104,7 @@
104
104
  BlocksWrapper: blocksWrapper || "div",
105
105
  BlocksWrapperProps: blocksWrapperProps || {},
106
106
  nonce: nonce || "",
107
- model: model || "",
107
+ model: model,
108
108
  });
109
109
  if (!apiKey) {
110
110
  logger.error(
@@ -25,12 +25,12 @@
25
25
  } from "./helpers";
26
26
 
27
27
  export let canTrack: VariantsProviderProps["canTrack"] = undefined;
28
- export let content: VariantsProviderProps["content"] = undefined;
28
+ export let content: VariantsProviderProps["content"];
29
29
  export let isNestedRender: VariantsProviderProps["isNestedRender"] =
30
30
  undefined;
31
31
  export let nonce: VariantsProviderProps["nonce"] = undefined;
32
32
  export let apiHost: VariantsProviderProps["apiHost"] = undefined;
33
- export let model: VariantsProviderProps["model"] = undefined;
33
+ export let model: VariantsProviderProps["model"];
34
34
  export let data: VariantsProviderProps["data"] = undefined;
35
35
  export let context: VariantsProviderProps["context"] = undefined;
36
36
  export let apiKey: VariantsProviderProps["apiKey"];
@@ -7,12 +7,12 @@ export interface ContentVariantsPrps extends ExtraFrameworkProps {
7
7
  /**
8
8
  * The Builder content JSON to render (required).
9
9
  */
10
- content?: Nullable<BuilderContent>;
10
+ content: Nullable<BuilderContent>;
11
11
 
12
12
  /**
13
13
  * The Builder content `model` to render (required).
14
14
  */
15
- model?: string;
15
+ model: string;
16
16
 
17
17
  /**
18
18
  * Additional data to inject into your Builder content (optional).
@@ -1,13 +1,18 @@
1
1
  import { fastClone } from '../functions/fast-clone';
2
- export type SizeName = 'large' | 'medium' | 'small';
2
+ export type SizeName = 'large' | 'medium' | 'small' | 'xsmall';
3
3
  interface Size {
4
4
  min: number;
5
5
  default: number;
6
6
  max: number;
7
7
  }
8
8
  const SIZES: Record<SizeName, Size> = {
9
+ xsmall: {
10
+ min: 0,
11
+ default: 160,
12
+ max: 320
13
+ },
9
14
  small: {
10
- min: 320,
15
+ min: 321,
11
16
  default: 321,
12
17
  max: 640
13
18
  },
@@ -24,19 +29,33 @@ const SIZES: Record<SizeName, Size> = {
24
29
  };
25
30
  export const getMaxWidthQueryForSize = (size: SizeName, sizeValues = SIZES) => `@media (max-width: ${sizeValues[size].max}px)`;
26
31
  interface Breakpoints {
32
+ xsmall?: number;
27
33
  small?: number;
28
34
  medium?: number;
29
35
  }
30
- export const getSizesForBreakpoints = ({
31
- small,
32
- medium
33
- }: Breakpoints) => {
36
+ export const getSizesForBreakpoints = (breakpoints: Breakpoints) => {
34
37
  const newSizes = fastClone(SIZES); // Note: this helps to get a deep clone of fields like small, medium etc
35
38
 
39
+ if (!breakpoints) {
40
+ return newSizes;
41
+ }
42
+ const {
43
+ xsmall,
44
+ small,
45
+ medium
46
+ } = breakpoints;
47
+ if (xsmall) {
48
+ const xsmallMin = Math.floor(xsmall / 2);
49
+ newSizes.xsmall = {
50
+ max: xsmall,
51
+ min: xsmallMin,
52
+ default: xsmallMin + 1
53
+ };
54
+ }
36
55
  if (!small || !medium) {
37
56
  return newSizes;
38
57
  }
39
- const smallMin = Math.floor(small / 2);
58
+ const smallMin = xsmall ? newSizes.xsmall.max + 1 : Math.floor(small / 2);
40
59
  newSizes.small = {
41
60
  max: small,
42
61
  min: smallMin,
@@ -1 +1 @@
1
- export const SDK_VERSION = "3.0.6"
1
+ export const SDK_VERSION = "4.0.0"
@@ -50,19 +50,24 @@ export const createEditorListener = ({
50
50
  }
51
51
  };
52
52
  };
53
- type SubscribeToEditor = (
54
- /**
55
- * The Builder `model` to subscribe to
56
- */
57
- model: string,
58
- /**
59
- * The callback function to call when the content is updated.
60
- */
61
- callback: (updatedContent: BuilderContent) => void,
62
- /**
63
- * Extra options for the listener.
64
- */
65
- options?: {
53
+ type SubscribeToEditor = ({
54
+ model,
55
+ apiKey,
56
+ callback,
57
+ trustedHosts
58
+ }: {
59
+ /**
60
+ * The Builder `model` to subscribe to
61
+ */
62
+ model: string;
63
+ /**
64
+ * Builder API Key to use for the editor.
65
+ */
66
+ apiKey: string;
67
+ /**
68
+ * The callback function to call when the content is updated.
69
+ */
70
+ callback: (updatedContent: BuilderContent) => void;
66
71
  /**
67
72
  * List of hosts to allow editing content from.
68
73
  */
@@ -73,12 +78,20 @@ options?: {
73
78
  * Subscribes to the Builder editor and listens to `content` updates of a certain `model`.
74
79
  * Sends the updated `content` to the `callback` function.
75
80
  */
76
- export const subscribeToEditor: SubscribeToEditor = (model, callback, options) => {
81
+ export const subscribeToEditor: SubscribeToEditor = ({
82
+ model,
83
+ apiKey,
84
+ callback,
85
+ trustedHosts
86
+ }) => {
77
87
  if (!isBrowser) {
78
88
  logger.warn('`subscribeToEditor` only works in the browser. It currently seems to be running on the server.');
79
89
  return () => {};
80
90
  }
81
- setupBrowserForEditing();
91
+ setupBrowserForEditing({
92
+ modelName: model,
93
+ apiKey
94
+ });
82
95
  const listener = createEditorListener({
83
96
  callbacks: {
84
97
  contentUpdate: callback,
@@ -86,7 +99,7 @@ export const subscribeToEditor: SubscribeToEditor = (model, callback, options) =
86
99
  configureSdk: () => {}
87
100
  },
88
101
  model,
89
- trustedHosts: options?.trustedHosts
102
+ trustedHosts
90
103
  });
91
104
  window.addEventListener('message', listener);
92
105
  return () => {
@@ -28,11 +28,13 @@ export const registerInsertMenu = () => {
28
28
  };
29
29
  let isSetupForEditing = false;
30
30
  export const setupBrowserForEditing = (options: {
31
+ modelName: string;
32
+ apiKey: string;
31
33
  enrich?: boolean;
32
34
  includeRefs?: boolean;
33
35
  locale?: string;
34
36
  trustedHosts?: string[];
35
- } = {}) => {
37
+ }) => {
36
38
  if (isSetupForEditing) {
37
39
  return;
38
40
  }
@@ -48,6 +50,9 @@ export const setupBrowserForEditing = (options: {
48
50
  // scope our '+ add block' button styling
49
51
  supportsAddBlockScoping: true,
50
52
  supportsCustomBreakpoints: true,
53
+ modelName: options.modelName,
54
+ apiKey: options.apiKey,
55
+ supportsXSmallBreakpoint: TARGET === 'reactNative' ? false : true,
51
56
  blockLevelPersonalization: true
52
57
  }
53
58
  }, '*');
@@ -41,7 +41,6 @@ export interface BuilderBlock {
41
41
  large?: Partial<CSSStyleDeclaration>;
42
42
  medium?: Partial<CSSStyleDeclaration>;
43
43
  small?: Partial<CSSStyleDeclaration>;
44
- /** @deprecated */
45
44
  xsmall?: Partial<CSSStyleDeclaration>;
46
45
  };
47
46
  component?: {
@@ -2,6 +2,7 @@ import type { BuilderBlock } from './builder-block';
2
2
  import type { Input } from './input';
3
3
  import type { Nullable } from './typescript';
4
4
  export interface Breakpoints {
5
+ xsmall?: number;
5
6
  small: number;
6
7
  medium: number;
7
8
  }