@builder.io/sdk-react-native 3.0.6 → 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 (147) hide show
  1. package/lib/browser/commonjs/blocks/symbol/symbol.js +1 -1
  2. package/lib/browser/commonjs/blocks/symbol/symbol.js.map +1 -1
  3. package/lib/browser/commonjs/components/block/components/block-styles.js +9 -2
  4. package/lib/browser/commonjs/components/block/components/block-styles.js.map +1 -1
  5. package/lib/browser/commonjs/components/content/components/enable-editor.js +13 -6
  6. package/lib/browser/commonjs/components/content/components/enable-editor.js.map +1 -1
  7. package/lib/browser/commonjs/components/content/content.js +1 -1
  8. package/lib/browser/commonjs/components/content/content.js.map +1 -1
  9. package/lib/browser/commonjs/constants/device-sizes.js +24 -6
  10. package/lib/browser/commonjs/constants/device-sizes.js.map +1 -1
  11. package/lib/browser/commonjs/constants/sdk-version.js +1 -1
  12. package/lib/browser/commonjs/helpers/subscribe-to-editor.js +23 -4
  13. package/lib/browser/commonjs/helpers/subscribe-to-editor.js.map +1 -1
  14. package/lib/browser/commonjs/scripts/init-editing.js +4 -1
  15. package/lib/browser/commonjs/scripts/init-editing.js.map +1 -1
  16. package/lib/browser/module/blocks/symbol/symbol.js +1 -1
  17. package/lib/browser/module/blocks/symbol/symbol.js.map +1 -1
  18. package/lib/browser/module/components/block/components/block-styles.js +9 -2
  19. package/lib/browser/module/components/block/components/block-styles.js.map +1 -1
  20. package/lib/browser/module/components/content/components/enable-editor.js +13 -6
  21. package/lib/browser/module/components/content/components/enable-editor.js.map +1 -1
  22. package/lib/browser/module/components/content/content.js +1 -1
  23. package/lib/browser/module/components/content/content.js.map +1 -1
  24. package/lib/browser/module/constants/device-sizes.js +24 -6
  25. package/lib/browser/module/constants/device-sizes.js.map +1 -1
  26. package/lib/browser/module/constants/sdk-version.js +1 -1
  27. package/lib/browser/module/helpers/subscribe-to-editor.js +23 -4
  28. package/lib/browser/module/helpers/subscribe-to-editor.js.map +1 -1
  29. package/lib/browser/module/scripts/init-editing.js +4 -1
  30. package/lib/browser/module/scripts/init-editing.js.map +1 -1
  31. package/lib/browser/typescript/components/block/components/block-styles.d.ts.map +1 -1
  32. package/lib/browser/typescript/components/content/components/enable-editor.d.ts.map +1 -1
  33. package/lib/browser/typescript/components/content-variants/content-variants.types.d.ts +2 -2
  34. package/lib/browser/typescript/components/content-variants/content-variants.types.d.ts.map +1 -1
  35. package/lib/browser/typescript/constants/device-sizes.d.ts +3 -2
  36. package/lib/browser/typescript/constants/device-sizes.d.ts.map +1 -1
  37. package/lib/browser/typescript/constants/sdk-version.d.ts +1 -1
  38. package/lib/browser/typescript/helpers/subscribe-to-editor.d.ts +15 -13
  39. package/lib/browser/typescript/helpers/subscribe-to-editor.d.ts.map +1 -1
  40. package/lib/browser/typescript/scripts/init-editing.d.ts +3 -1
  41. package/lib/browser/typescript/scripts/init-editing.d.ts.map +1 -1
  42. package/lib/browser/typescript/types/builder-block.d.ts +0 -1
  43. package/lib/browser/typescript/types/builder-block.d.ts.map +1 -1
  44. package/lib/browser/typescript/types/builder-content.d.ts +1 -0
  45. package/lib/browser/typescript/types/builder-content.d.ts.map +1 -1
  46. package/lib/edge/commonjs/blocks/symbol/symbol.js +1 -1
  47. package/lib/edge/commonjs/blocks/symbol/symbol.js.map +1 -1
  48. package/lib/edge/commonjs/components/block/components/block-styles.js +9 -2
  49. package/lib/edge/commonjs/components/block/components/block-styles.js.map +1 -1
  50. package/lib/edge/commonjs/components/content/components/enable-editor.js +13 -6
  51. package/lib/edge/commonjs/components/content/components/enable-editor.js.map +1 -1
  52. package/lib/edge/commonjs/components/content/content.js +1 -1
  53. package/lib/edge/commonjs/components/content/content.js.map +1 -1
  54. package/lib/edge/commonjs/constants/device-sizes.js +24 -6
  55. package/lib/edge/commonjs/constants/device-sizes.js.map +1 -1
  56. package/lib/edge/commonjs/constants/sdk-version.js +1 -1
  57. package/lib/edge/commonjs/helpers/subscribe-to-editor.js +23 -4
  58. package/lib/edge/commonjs/helpers/subscribe-to-editor.js.map +1 -1
  59. package/lib/edge/commonjs/scripts/init-editing.js +4 -1
  60. package/lib/edge/commonjs/scripts/init-editing.js.map +1 -1
  61. package/lib/edge/module/blocks/symbol/symbol.js +1 -1
  62. package/lib/edge/module/blocks/symbol/symbol.js.map +1 -1
  63. package/lib/edge/module/components/block/components/block-styles.js +9 -2
  64. package/lib/edge/module/components/block/components/block-styles.js.map +1 -1
  65. package/lib/edge/module/components/content/components/enable-editor.js +13 -6
  66. package/lib/edge/module/components/content/components/enable-editor.js.map +1 -1
  67. package/lib/edge/module/components/content/content.js +1 -1
  68. package/lib/edge/module/components/content/content.js.map +1 -1
  69. package/lib/edge/module/constants/device-sizes.js +24 -6
  70. package/lib/edge/module/constants/device-sizes.js.map +1 -1
  71. package/lib/edge/module/constants/sdk-version.js +1 -1
  72. package/lib/edge/module/helpers/subscribe-to-editor.js +23 -4
  73. package/lib/edge/module/helpers/subscribe-to-editor.js.map +1 -1
  74. package/lib/edge/module/scripts/init-editing.js +4 -1
  75. package/lib/edge/module/scripts/init-editing.js.map +1 -1
  76. package/lib/edge/typescript/components/block/components/block-styles.d.ts.map +1 -1
  77. package/lib/edge/typescript/components/content/components/enable-editor.d.ts.map +1 -1
  78. package/lib/edge/typescript/components/content-variants/content-variants.types.d.ts +2 -2
  79. package/lib/edge/typescript/components/content-variants/content-variants.types.d.ts.map +1 -1
  80. package/lib/edge/typescript/constants/device-sizes.d.ts +3 -2
  81. package/lib/edge/typescript/constants/device-sizes.d.ts.map +1 -1
  82. package/lib/edge/typescript/constants/sdk-version.d.ts +1 -1
  83. package/lib/edge/typescript/helpers/subscribe-to-editor.d.ts +15 -13
  84. package/lib/edge/typescript/helpers/subscribe-to-editor.d.ts.map +1 -1
  85. package/lib/edge/typescript/scripts/init-editing.d.ts +3 -1
  86. package/lib/edge/typescript/scripts/init-editing.d.ts.map +1 -1
  87. package/lib/edge/typescript/types/builder-block.d.ts +0 -1
  88. package/lib/edge/typescript/types/builder-block.d.ts.map +1 -1
  89. package/lib/edge/typescript/types/builder-content.d.ts +1 -0
  90. package/lib/edge/typescript/types/builder-content.d.ts.map +1 -1
  91. package/lib/node/commonjs/blocks/symbol/symbol.js +1 -1
  92. package/lib/node/commonjs/blocks/symbol/symbol.js.map +1 -1
  93. package/lib/node/commonjs/components/block/components/block-styles.js +9 -2
  94. package/lib/node/commonjs/components/block/components/block-styles.js.map +1 -1
  95. package/lib/node/commonjs/components/content/components/enable-editor.js +13 -6
  96. package/lib/node/commonjs/components/content/components/enable-editor.js.map +1 -1
  97. package/lib/node/commonjs/components/content/content.js +1 -1
  98. package/lib/node/commonjs/components/content/content.js.map +1 -1
  99. package/lib/node/commonjs/constants/device-sizes.js +24 -6
  100. package/lib/node/commonjs/constants/device-sizes.js.map +1 -1
  101. package/lib/node/commonjs/constants/sdk-version.js +1 -1
  102. package/lib/node/commonjs/helpers/subscribe-to-editor.js +23 -4
  103. package/lib/node/commonjs/helpers/subscribe-to-editor.js.map +1 -1
  104. package/lib/node/commonjs/scripts/init-editing.js +4 -1
  105. package/lib/node/commonjs/scripts/init-editing.js.map +1 -1
  106. package/lib/node/module/blocks/symbol/symbol.js +1 -1
  107. package/lib/node/module/blocks/symbol/symbol.js.map +1 -1
  108. package/lib/node/module/components/block/components/block-styles.js +9 -2
  109. package/lib/node/module/components/block/components/block-styles.js.map +1 -1
  110. package/lib/node/module/components/content/components/enable-editor.js +13 -6
  111. package/lib/node/module/components/content/components/enable-editor.js.map +1 -1
  112. package/lib/node/module/components/content/content.js +1 -1
  113. package/lib/node/module/components/content/content.js.map +1 -1
  114. package/lib/node/module/constants/device-sizes.js +24 -6
  115. package/lib/node/module/constants/device-sizes.js.map +1 -1
  116. package/lib/node/module/constants/sdk-version.js +1 -1
  117. package/lib/node/module/helpers/subscribe-to-editor.js +23 -4
  118. package/lib/node/module/helpers/subscribe-to-editor.js.map +1 -1
  119. package/lib/node/module/scripts/init-editing.js +4 -1
  120. package/lib/node/module/scripts/init-editing.js.map +1 -1
  121. package/lib/node/typescript/components/block/components/block-styles.d.ts.map +1 -1
  122. package/lib/node/typescript/components/content/components/enable-editor.d.ts.map +1 -1
  123. package/lib/node/typescript/components/content-variants/content-variants.types.d.ts +2 -2
  124. package/lib/node/typescript/components/content-variants/content-variants.types.d.ts.map +1 -1
  125. package/lib/node/typescript/constants/device-sizes.d.ts +3 -2
  126. package/lib/node/typescript/constants/device-sizes.d.ts.map +1 -1
  127. package/lib/node/typescript/constants/sdk-version.d.ts +1 -1
  128. package/lib/node/typescript/helpers/subscribe-to-editor.d.ts +15 -13
  129. package/lib/node/typescript/helpers/subscribe-to-editor.d.ts.map +1 -1
  130. package/lib/node/typescript/scripts/init-editing.d.ts +3 -1
  131. package/lib/node/typescript/scripts/init-editing.d.ts.map +1 -1
  132. package/lib/node/typescript/types/builder-block.d.ts +0 -1
  133. package/lib/node/typescript/types/builder-block.d.ts.map +1 -1
  134. package/lib/node/typescript/types/builder-content.d.ts +1 -0
  135. package/lib/node/typescript/types/builder-content.d.ts.map +1 -1
  136. package/package.json +1 -1
  137. package/src/blocks/symbol/symbol.tsx +1 -1
  138. package/src/components/block/components/block-styles.tsx +16 -0
  139. package/src/components/content/components/enable-editor.tsx +9 -4
  140. package/src/components/content/content.tsx +1 -1
  141. package/src/components/content-variants/content-variants.types.ts +2 -2
  142. package/src/constants/device-sizes.ts +26 -7
  143. package/src/constants/sdk-version.ts +1 -1
  144. package/src/helpers/subscribe-to-editor.ts +43 -17
  145. package/src/scripts/init-editing.ts +6 -1
  146. package/src/types/builder-block.ts +0 -1
  147. package/src/types/builder-content.ts +1 -0
@@ -137,6 +137,9 @@ function EnableEditor(props: BuilderEditorProps) {
137
137
  contentUpdate: (newContent) => {
138
138
  mergeNewContent(newContent);
139
139
  },
140
+ stateUpdate: (newState) => {
141
+ mergeNewRootState(newState);
142
+ },
140
143
  },
141
144
  })(event);
142
145
  }
@@ -246,12 +249,13 @@ function EnableEditor(props: BuilderEditorProps) {
246
249
  trustedHosts: props.trustedHosts,
247
250
  }
248
251
  : {}),
252
+ modelName: props.model ?? "",
253
+ apiKey: props.apiKey,
249
254
  });
250
255
  Object.values<ComponentInfo>(
251
256
  props.builderContextSignal.componentInfos
252
257
  ).forEach((registeredComponent) => {
253
258
  if (
254
- !props.model ||
255
259
  !registeredComponent.models?.length ||
256
260
  registeredComponent.models.includes(props.model)
257
261
  ) {
@@ -288,7 +292,7 @@ function EnableEditor(props: BuilderEditorProps) {
288
292
  (!props.content || searchParamPreviewId === props.content.id))
289
293
  ) {
290
294
  fetchOneEntry({
291
- model: props.model || "",
295
+ model: props.model,
292
296
  apiKey: props.apiKey,
293
297
  apiVersion: props.builderContextSignal.apiVersion,
294
298
  ...(searchParamPreviewModel === "BUILDER_STUDIO" &&
@@ -335,12 +339,13 @@ function EnableEditor(props: BuilderEditorProps) {
335
339
  trustedHosts: props.trustedHosts,
336
340
  }
337
341
  : {}),
342
+ modelName: props.model ?? "",
343
+ apiKey: props.apiKey,
338
344
  });
339
345
  Object.values<ComponentInfo>(
340
346
  props.builderContextSignal.componentInfos
341
347
  ).forEach((registeredComponent) => {
342
348
  if (
343
- !props.model ||
344
349
  !registeredComponent.models?.length ||
345
350
  registeredComponent.models.includes(props.model)
346
351
  ) {
@@ -397,7 +402,7 @@ function EnableEditor(props: BuilderEditorProps) {
397
402
  (!props.content || searchParamPreviewId === props.content.id))
398
403
  ) {
399
404
  fetchOneEntry({
400
- model: props.model || "",
405
+ model: props.model,
401
406
  apiKey: props.apiKey,
402
407
  apiVersion: props.builderContextSignal.apiVersion,
403
408
  ...(searchParamPreviewModel === "BUILDER_STUDIO" &&
@@ -104,7 +104,7 @@ function ContentComponent(props: ContentProps) {
104
104
  BlocksWrapper: props.blocksWrapper || ScrollView,
105
105
  BlocksWrapperProps: props.blocksWrapperProps || {},
106
106
  nonce: props.nonce || "",
107
- model: props.model || "",
107
+ model: props.model,
108
108
  }));
109
109
 
110
110
  const hasInitialized = useRef(false);
@@ -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.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,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
  }