@builder.io/sdk-svelte 3.0.7 → 4.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 (58) 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/content/components/enable-editor.svelte +9 -5
  5. package/lib/browser/components/content/components/enable-editor.svelte.d.ts +2 -2
  6. package/lib/browser/components/content/content.svelte +3 -3
  7. package/lib/browser/components/content/content.svelte.d.ts +2 -2
  8. package/lib/browser/components/content-variants/content-variants.svelte +2 -2
  9. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +2 -2
  10. package/lib/browser/components/content-variants/content-variants.types.d.ts +2 -2
  11. package/lib/browser/constants/sdk-version.d.ts +1 -1
  12. package/lib/browser/constants/sdk-version.js +1 -1
  13. package/lib/browser/helpers/subscribe-to-editor.d.ts +15 -13
  14. package/lib/browser/helpers/subscribe-to-editor.js +18 -4
  15. package/lib/browser/scripts/init-editing.d.ts +3 -1
  16. package/lib/browser/scripts/init-editing.js +3 -1
  17. package/lib/edge/blocks/symbol/symbol.svelte +1 -1
  18. package/lib/edge/blocks/video/video.svelte +54 -9
  19. package/lib/edge/blocks/video/video.svelte.d.ts +2 -2
  20. package/lib/edge/components/content/components/enable-editor.svelte +9 -5
  21. package/lib/edge/components/content/components/enable-editor.svelte.d.ts +2 -2
  22. package/lib/edge/components/content/content.svelte +3 -3
  23. package/lib/edge/components/content/content.svelte.d.ts +2 -2
  24. package/lib/edge/components/content-variants/content-variants.svelte +2 -2
  25. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +2 -2
  26. package/lib/edge/components/content-variants/content-variants.types.d.ts +2 -2
  27. package/lib/edge/constants/sdk-version.d.ts +1 -1
  28. package/lib/edge/constants/sdk-version.js +1 -1
  29. package/lib/edge/helpers/subscribe-to-editor.d.ts +15 -13
  30. package/lib/edge/helpers/subscribe-to-editor.js +18 -4
  31. package/lib/edge/scripts/init-editing.d.ts +3 -1
  32. package/lib/edge/scripts/init-editing.js +3 -1
  33. package/lib/node/blocks/symbol/symbol.svelte +1 -1
  34. package/lib/node/blocks/video/video.svelte +54 -9
  35. package/lib/node/blocks/video/video.svelte.d.ts +2 -2
  36. package/lib/node/components/content/components/enable-editor.svelte +9 -5
  37. package/lib/node/components/content/components/enable-editor.svelte.d.ts +2 -2
  38. package/lib/node/components/content/content.svelte +3 -3
  39. package/lib/node/components/content/content.svelte.d.ts +2 -2
  40. package/lib/node/components/content-variants/content-variants.svelte +2 -2
  41. package/lib/node/components/content-variants/content-variants.svelte.d.ts +2 -2
  42. package/lib/node/components/content-variants/content-variants.types.d.ts +2 -2
  43. package/lib/node/constants/sdk-version.d.ts +1 -1
  44. package/lib/node/constants/sdk-version.js +1 -1
  45. package/lib/node/helpers/subscribe-to-editor.d.ts +15 -13
  46. package/lib/node/helpers/subscribe-to-editor.js +18 -4
  47. package/lib/node/scripts/init-editing.d.ts +3 -1
  48. package/lib/node/scripts/init-editing.js +3 -1
  49. package/package.json +1 -1
  50. package/src/blocks/symbol/symbol.svelte +1 -1
  51. package/src/blocks/video/video.svelte +59 -8
  52. package/src/components/content/components/enable-editor.svelte +8 -4
  53. package/src/components/content/content.svelte +3 -3
  54. package/src/components/content-variants/content-variants.svelte +2 -2
  55. package/src/components/content-variants/content-variants.types.ts +2 -2
  56. package/src/constants/sdk-version.ts +1 -1
  57. package/src/helpers/subscribe-to-editor.ts +43 -17
  58. package/src/scripts/init-editing.ts +5 -1
@@ -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"];
@@ -130,6 +130,9 @@
130
130
  contentUpdate: (newContent) => {
131
131
  mergeNewContent(newContent);
132
132
  },
133
+ stateUpdate: (newState) => {
134
+ mergeNewRootState(newState);
135
+ },
133
136
  },
134
137
  })(event);
135
138
  }
@@ -229,11 +232,12 @@
229
232
  trustedHosts: trustedHosts,
230
233
  }
231
234
  : {}),
235
+ modelName: model ?? "",
236
+ apiKey: apiKey,
232
237
  });
233
238
  Object.values<ComponentInfo>($builderContextSignal.componentInfos).forEach(
234
239
  (registeredComponent) => {
235
240
  if (
236
- !model ||
237
241
  !registeredComponent.models?.length ||
238
242
  registeredComponent.models.includes(model)
239
243
  ) {
@@ -272,7 +276,7 @@
272
276
  (!content || searchParamPreviewId === content.id))
273
277
  ) {
274
278
  fetchOneEntry({
275
- model: model || "",
279
+ model: model,
276
280
  apiKey: apiKey,
277
281
  apiVersion: $builderContextSignal.apiVersion,
278
282
  ...(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 +1 @@
1
- export const SDK_VERSION = "3.0.7"
1
+ export const SDK_VERSION = "4.0.1"
@@ -4,10 +4,12 @@ import { isFromTrustedHost } from '../functions/is-from-trusted-host';
4
4
  import { setupBrowserForEditing } from '../scripts/init-editing';
5
5
  import type { BuilderAnimation } from '../types/builder-block';
6
6
  import type { BuilderContent } from '../types/builder-content';
7
+ import type { Dictionary } from '../types/typescript';
7
8
  import { logger } from './logger';
8
9
  type ContentListener = Required<Pick<ContentProps, 'model' | 'trustedHosts'>> & {
9
10
  callbacks: {
10
11
  contentUpdate: (updatedContent: BuilderContent) => void;
12
+ stateUpdate: (newState: Dictionary<string>) => void;
11
13
  animation: (updatedContent: BuilderAnimation) => void;
12
14
  configureSdk: (updatedContent: any) => void;
13
15
  };
@@ -36,6 +38,16 @@ export const createEditorListener = ({
36
38
  callbacks.animation(data.data);
37
39
  break;
38
40
  }
41
+ case 'builder.resetState':
42
+ {
43
+ const messageContent = data.data;
44
+ const modelName = messageContent.model;
45
+ const newState = messageContent?.state;
46
+ if (modelName === model && newState) {
47
+ callbacks.stateUpdate(newState);
48
+ }
49
+ break;
50
+ }
39
51
  case 'builder.contentUpdate':
40
52
  {
41
53
  const messageContent = data.data;
@@ -50,19 +62,24 @@ export const createEditorListener = ({
50
62
  }
51
63
  };
52
64
  };
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?: {
65
+ type SubscribeToEditor = ({
66
+ model,
67
+ apiKey,
68
+ callback,
69
+ trustedHosts
70
+ }: {
71
+ /**
72
+ * The Builder `model` to subscribe to
73
+ */
74
+ model: string;
75
+ /**
76
+ * Builder API Key to use for the editor.
77
+ */
78
+ apiKey: string;
79
+ /**
80
+ * The callback function to call when the content is updated.
81
+ */
82
+ callback: (updatedContent: BuilderContent) => void;
66
83
  /**
67
84
  * List of hosts to allow editing content from.
68
85
  */
@@ -73,20 +90,29 @@ options?: {
73
90
  * Subscribes to the Builder editor and listens to `content` updates of a certain `model`.
74
91
  * Sends the updated `content` to the `callback` function.
75
92
  */
76
- export const subscribeToEditor: SubscribeToEditor = (model, callback, options) => {
93
+ export const subscribeToEditor: SubscribeToEditor = ({
94
+ model,
95
+ apiKey,
96
+ callback,
97
+ trustedHosts
98
+ }) => {
77
99
  if (!isBrowser) {
78
100
  logger.warn('`subscribeToEditor` only works in the browser. It currently seems to be running on the server.');
79
101
  return () => {};
80
102
  }
81
- setupBrowserForEditing();
103
+ setupBrowserForEditing({
104
+ modelName: model,
105
+ apiKey
106
+ });
82
107
  const listener = createEditorListener({
83
108
  callbacks: {
84
109
  contentUpdate: callback,
85
110
  animation: () => {},
86
- configureSdk: () => {}
111
+ configureSdk: () => {},
112
+ stateUpdate: () => {}
87
113
  },
88
114
  model,
89
- trustedHosts: options?.trustedHosts
115
+ trustedHosts
90
116
  });
91
117
  window.addEventListener('message', listener);
92
118
  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,8 @@ 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,
51
55
  supportsXSmallBreakpoint: TARGET === 'reactNative' ? false : true,
52
56
  blockLevelPersonalization: true
53
57
  }