@builder.io/react 2.0.4-1 → 2.0.4-12

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 (39) hide show
  1. package/dist/builder-react-lite.cjs.js +1 -1
  2. package/dist/builder-react-lite.cjs.js.map +1 -1
  3. package/dist/builder-react-lite.esm.js +1 -1
  4. package/dist/builder-react-lite.esm.js.map +1 -1
  5. package/dist/builder-react.browser.js +1 -10
  6. package/dist/builder-react.browser.js.map +1 -1
  7. package/dist/builder-react.cjs.js +1 -1
  8. package/dist/builder-react.cjs.js.map +1 -1
  9. package/dist/builder-react.es5.js +1 -1
  10. package/dist/builder-react.es5.js.map +1 -1
  11. package/dist/builder-react.unpkg.js +1 -10
  12. package/dist/builder-react.unpkg.js.map +1 -1
  13. package/dist/lib/package.json +2 -2
  14. package/dist/lib/src/blocks/Embed.js.map +1 -1
  15. package/dist/lib/src/blocks/Section.js +2 -0
  16. package/dist/lib/src/blocks/Section.js.map +1 -1
  17. package/dist/lib/src/blocks/Symbol.js +2 -2
  18. package/dist/lib/src/blocks/Symbol.js.map +1 -1
  19. package/dist/lib/src/components/builder-block.component.js +1 -5
  20. package/dist/lib/src/components/builder-block.component.js.map +1 -1
  21. package/dist/lib/src/components/builder-blocks.component.js.map +1 -1
  22. package/dist/lib/src/components/builder-component.component.js +16 -6
  23. package/dist/lib/src/components/builder-component.component.js.map +1 -1
  24. package/dist/lib/src/components/builder-content.component.js +1 -1
  25. package/dist/lib/src/components/builder-content.component.js.map +1 -1
  26. package/dist/lib/src/constants/device-sizes.constant.js.map +1 -1
  27. package/dist/lib/src/scripts/init-editing.js +1 -1
  28. package/dist/types/src/blocks/Mutation.d.ts +1 -0
  29. package/dist/types/src/blocks/Slot.d.ts +1 -0
  30. package/dist/types/src/blocks/raw/RawText.d.ts +1 -0
  31. package/dist/types/src/components/builder-component.component.d.ts +6 -0
  32. package/package.json +2 -2
  33. package/src/blocks/Section.tsx +16 -11
  34. package/src/blocks/Symbol.tsx +1 -0
  35. package/src/components/builder-block.component.tsx +5 -8
  36. package/src/components/builder-blocks.component.tsx +10 -8
  37. package/src/components/builder-component.component.tsx +36 -21
  38. package/src/components/builder-content.component.tsx +1 -1
  39. package/src/scripts/init-editing.ts +1 -1
@@ -40,18 +40,23 @@ class SectionComponent extends React.Component<SectionProps, { inView?: boolean
40
40
  if (typeof IntersectionObserver === 'undefined' || !this.ref) {
41
41
  this.setState({ inView: true });
42
42
  } else {
43
- const observer = new IntersectionObserver((entries, observer) => {
44
- entries.forEach(entry => {
45
- if (entry.intersectionRatio > 0) {
46
- this.setState({
47
- inView: true,
48
- });
49
- if (this.ref) {
50
- observer.unobserve(this.ref);
43
+ const observer = new IntersectionObserver(
44
+ (entries, observer) => {
45
+ entries.forEach(entry => {
46
+ if (entry.intersectionRatio > 0) {
47
+ this.setState({
48
+ inView: true,
49
+ });
50
+ if (this.ref) {
51
+ observer.unobserve(this.ref);
52
+ }
51
53
  }
52
- }
53
- });
54
- });
54
+ });
55
+ },
56
+ {
57
+ rootMargin: '10px',
58
+ }
59
+ );
55
60
 
56
61
  observer.observe(this.ref);
57
62
 
@@ -121,6 +121,7 @@ class SymbolComponent extends React.Component<SymbolProps> {
121
121
  this.placeholder
122
122
  ) : (
123
123
  <BuilderComponent
124
+ {...(state.state?.locale && { locale: state.state.locale })}
124
125
  isChild
125
126
  ref={(ref: any) => (this.ref = ref)}
126
127
  context={{ ...state.context, symbolId: this.props.builderBlock?.id }}
@@ -18,6 +18,7 @@ const camelCaseToKebabCase = (str?: string) =>
18
18
  const kebabCaseToCamelCase = (str = '') =>
19
19
  str.replace(/-([a-z])/g, match => match[1].toUpperCase());
20
20
 
21
+
21
22
  const Device = { desktop: 0, tablet: 1, mobile: 2 };
22
23
 
23
24
  const voidElements = new Set([
@@ -248,13 +249,9 @@ export class BuilderBlock extends React.Component<
248
249
  }
249
250
 
250
251
  if (location.href.includes('builder.debug=true')) {
251
- this.eval('debugger');
252
+ eval('debugger');
252
253
  }
253
254
  for (const patch of patches) {
254
- // TODO: soehow mark this.block as a new object,
255
- // e.g. access it's parent hm. maybe do the listning mutations
256
- // on hte parent element not the child (or rather
257
- // send the message to the parent)
258
255
  applyPatchWithMinimalMutationChain(this.props.block, patch, true);
259
256
  }
260
257
  this.setState({ updates: this.state.updates + 1 });
@@ -457,9 +454,9 @@ export class BuilderBlock extends React.Component<
457
454
  }
458
455
 
459
456
  const innerComponentProperties = (options.component || options.options) && {
460
- ...options.options,
461
- ...(options.component.options || options.component.data),
462
- };
457
+ ...options.options,
458
+ ...(options.component.options || options.component.data),
459
+ };
463
460
 
464
461
  const isVoid = voidElements.has(TagName);
465
462
 
@@ -108,14 +108,16 @@ export class BuilderBlocks extends React.Component<BuilderBlocksProps, BuilderBl
108
108
  // TODO: only fi in iframe?
109
109
  builder-path={Builder.isIframe ? this.path : undefined}
110
110
  builder-parent-id={this.parentId}
111
- css={{
112
- ...(!this.props.emailMode && {
113
- display: 'flex',
114
- flexDirection: 'column',
115
- alignItems: 'stretch',
116
- }),
117
- ...this.props.style,
118
- } as any}
111
+ css={
112
+ {
113
+ ...(!this.props.emailMode && {
114
+ display: 'flex',
115
+ flexDirection: 'column',
116
+ alignItems: 'stretch',
117
+ }),
118
+ ...this.props.style,
119
+ } as any
120
+ }
119
121
  onClick={() => {
120
122
  if (this.noBlocks) {
121
123
  this.onClickEmptyBlocks();
@@ -98,7 +98,6 @@ const sizeMap = {
98
98
  mobile: 'small',
99
99
  };
100
100
 
101
-
102
101
  const fetchCache: { [key: string]: any } = {};
103
102
 
104
103
  export interface BuilderComponentProps {
@@ -277,6 +276,11 @@ export interface BuilderComponentProps {
277
276
  * navigation to other pages unintended
278
277
  */
279
278
  stopClickPropagationWhenEditing?: boolean;
279
+
280
+ /**
281
+ * Locale code, should match one of the locales in your spaces locale, wll auto resolve the localized inputs to the localized value
282
+ */
283
+ locale?: string;
280
284
  }
281
285
 
282
286
  export interface BuilderComponentState {
@@ -841,7 +845,7 @@ export class BuilderComponent extends React.Component<
841
845
  get data() {
842
846
  const data = {
843
847
  ...(this.inlinedContent && this.inlinedContent.data?.state),
844
- ...this.props.data,
848
+ ...this.externalState,
845
849
  ...this.state.state,
846
850
  };
847
851
  Object.assign(this.rootState, data);
@@ -852,7 +856,7 @@ export class BuilderComponent extends React.Component<
852
856
  // TODO: shallow diff
853
857
  if (this.props.data && prevProps.data !== this.props.data) {
854
858
  this.state.update((state: any) => {
855
- Object.assign(state, this.props.data);
859
+ Object.assign(state, this.externalState);
856
860
  });
857
861
  }
858
862
 
@@ -892,6 +896,13 @@ export class BuilderComponent extends React.Component<
892
896
  return content;
893
897
  }
894
898
 
899
+ get externalState() {
900
+ return {
901
+ ...this.props.data,
902
+ ...(this.props.locale ? { locale: this.props.locale } : {}),
903
+ };
904
+ }
905
+
895
906
  get useContent() {
896
907
  return this.content || this.state.context.builderContent;
897
908
  }
@@ -900,7 +911,10 @@ export class BuilderComponent extends React.Component<
900
911
  const content = this.content;
901
912
 
902
913
  const dataString =
903
- Builder.isBrowser && this.props.data && size(this.props.data) && hash(this.props.data);
914
+ Builder.isBrowser &&
915
+ this.externalState &&
916
+ size(this.externalState) &&
917
+ hash(this.externalState);
904
918
  let key = Builder.isEditing ? this.name : this.props.entry;
905
919
  if (key && !Builder.isEditing && dataString && dataString.length < 300) {
906
920
  key += ':' + dataString;
@@ -971,6 +985,7 @@ export class BuilderComponent extends React.Component<
971
985
  !this.isPreviewing && { initialContent: [] }),
972
986
  ...(this.props.url && { url: this.props.url }),
973
987
  ...this.props.options,
988
+ ...(this.props.locale ? { locale: this.props.locale } : {}),
974
989
  ...(this.options.codegen && {
975
990
  format: 'react',
976
991
  }),
@@ -1272,7 +1287,7 @@ export class BuilderComponent extends React.Component<
1272
1287
  deviceSize: this.deviceSizeState,
1273
1288
  device: this.device,
1274
1289
  ...data.state,
1275
- ...this.props.data,
1290
+ ...this.externalState,
1276
1291
  }),
1277
1292
  };
1278
1293
  if (this.mounted) {
@@ -1358,22 +1373,22 @@ export class BuilderComponent extends React.Component<
1358
1373
  const builderModelRe = /builder\.io\/api\/v2\/([^\/\?]+)/i;
1359
1374
  const builderModelMatch = url.match(builderModelRe);
1360
1375
  const model = builderModelMatch && builderModelMatch[1];
1361
- this.handleRequest(key, finalUrl);
1362
- const currentSubscription = this.httpSubscriptionPerKey[key];
1363
- if (currentSubscription) {
1364
- currentSubscription.unsubscribe();
1365
- }
1366
-
1367
- // TODO: fix this
1368
- const newSubscription = (this.httpSubscriptionPerKey[key] =
1369
- this.onStateChange.subscribe(() => {
1370
- const newUrl = this.evalExpression(url);
1371
- if (newUrl !== finalUrl) {
1372
- this.handleRequest(key, newUrl);
1373
- this.lastHttpRequests[key] = newUrl;
1374
- }
1375
- }));
1376
- this.subscriptions.add(newSubscription);
1376
+ this.handleRequest(key, finalUrl);
1377
+ const currentSubscription = this.httpSubscriptionPerKey[key];
1378
+ if (currentSubscription) {
1379
+ currentSubscription.unsubscribe();
1380
+ }
1381
+
1382
+ // TODO: fix this
1383
+ const newSubscription = (this.httpSubscriptionPerKey[key] =
1384
+ this.onStateChange.subscribe(() => {
1385
+ const newUrl = this.evalExpression(url);
1386
+ if (newUrl !== finalUrl) {
1387
+ this.handleRequest(key, newUrl);
1388
+ this.lastHttpRequests[key] = newUrl;
1389
+ }
1390
+ }));
1391
+ this.subscriptions.add(newSubscription);
1377
1392
  } else {
1378
1393
  this.handleRequest(key, this.evalExpression(url));
1379
1394
  }
@@ -149,7 +149,7 @@ export class BuilderContent<ContentType extends object = any> extends React.Comp
149
149
  data: newData,
150
150
  });
151
151
  if (this.props.contentLoaded) {
152
- this.props.contentLoaded(newData.data, this.state.data);
152
+ this.props.contentLoaded(newData.data, newData);
153
153
  }
154
154
  break;
155
155
  }
@@ -6,7 +6,7 @@ if (typeof window !== 'undefined') {
6
6
  type: 'builder.isReactSdk',
7
7
  data: {
8
8
  value: true,
9
- supportsPatchUpdates: 'v3',
9
+ supportsPatchUpdates: 'v4',
10
10
  priorVersion: version,
11
11
  },
12
12
  },