@builder.io/sdk-react 0.1.3 → 0.1.5

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 (201) hide show
  1. package/dist/react/blocks/button/button.js +2 -2
  2. package/dist/react/blocks/columns/columns.js +6 -6
  3. package/dist/react/blocks/form/form.js +4 -4
  4. package/dist/react/blocks/image/image.js +6 -6
  5. package/dist/react/blocks/symbol/symbol.js +1 -1
  6. package/dist/react/components/render-block/block-styles.js +1 -1
  7. package/dist/react/components/render-block/render-block.js +21 -4
  8. package/dist/react/components/render-block/render-component.js +2 -2
  9. package/dist/react/components/render-block/render-repeated-block.js +2 -1
  10. package/dist/react/components/render-blocks.js +4 -4
  11. package/dist/react/components/render-content/components/render-styles.helpers.js +51 -0
  12. package/dist/react/components/render-content/components/render-styles.js +13 -55
  13. package/dist/react/components/render-content/index.js +1 -1
  14. package/dist/react/components/render-content/render-content.helpers.js +38 -0
  15. package/dist/react/components/render-content/render-content.js +67 -64
  16. package/dist/react/components/render-content/render-content.types.js +1 -0
  17. package/dist/react/components/render-inlined-styles.js +2 -2
  18. package/dist/react/constants/builder-registered-components.js +18 -18
  19. package/dist/react/context/builder.context.js +2 -0
  20. package/dist/react/index-helpers/blocks-exports.js +11 -11
  21. package/dist/react/types/input.js +1 -0
  22. package/dist/rsc/blocks/button/button.js +2 -2
  23. package/dist/rsc/blocks/columns/columns.js +6 -6
  24. package/dist/rsc/blocks/form/form.js +4 -4
  25. package/dist/rsc/blocks/image/image.js +6 -6
  26. package/dist/rsc/blocks/symbol/symbol.js +1 -1
  27. package/dist/rsc/components/render-block/block-styles.js +1 -1
  28. package/dist/rsc/components/render-block/render-block.js +21 -4
  29. package/dist/rsc/components/render-block/render-component.js +2 -2
  30. package/dist/rsc/components/render-block/render-repeated-block.js +2 -1
  31. package/dist/rsc/components/render-blocks.js +4 -4
  32. package/dist/rsc/components/render-content/builder-editing.js +47 -4
  33. package/dist/rsc/components/render-content/components/render-styles.helpers.js +51 -0
  34. package/dist/rsc/components/render-content/components/render-styles.js +12 -55
  35. package/dist/rsc/components/render-content/index.js +1 -1
  36. package/dist/rsc/components/render-content/render-content.helpers.js +38 -0
  37. package/dist/rsc/components/render-content/render-content.js +45 -40
  38. package/dist/rsc/components/render-content/render-content.types.js +1 -0
  39. package/dist/rsc/components/render-inlined-styles.js +2 -2
  40. package/dist/rsc/constants/builder-registered-components.js +18 -18
  41. package/dist/rsc/context/builder.context.js +2 -0
  42. package/dist/rsc/index-helpers/blocks-exports.js +11 -11
  43. package/dist/rsc/types/input.js +1 -0
  44. package/package.json +1 -1
  45. package/packages/react/src/blocks/button/button.jsx +2 -2
  46. package/packages/react/src/blocks/columns/columns.jsx +6 -6
  47. package/packages/react/src/blocks/form/form.jsx +4 -4
  48. package/packages/react/src/blocks/image/image.jsx +6 -6
  49. package/packages/react/src/blocks/symbol/symbol.jsx +1 -1
  50. package/packages/react/src/components/render-block/block-styles.jsx +1 -1
  51. package/packages/react/src/components/render-block/render-block.jsx +25 -4
  52. package/packages/react/src/components/render-block/render-component.jsx +2 -2
  53. package/packages/react/src/components/render-block/render-repeated-block.jsx +2 -1
  54. package/packages/react/src/components/render-blocks.jsx +4 -4
  55. package/packages/react/src/components/render-content/components/render-styles.helpers.js +57 -0
  56. package/packages/react/src/components/render-content/components/render-styles.jsx +14 -57
  57. package/packages/react/src/components/render-content/index.js +1 -1
  58. package/packages/react/src/components/render-content/render-content.helpers.js +48 -0
  59. package/packages/react/src/components/render-content/render-content.jsx +78 -69
  60. package/packages/{_rsc/src/components/render-block/types.js → react/src/components/render-content/render-content.types.js} +0 -0
  61. package/packages/react/src/components/render-inlined-styles.jsx +2 -2
  62. package/packages/react/src/constants/builder-registered-components.js +18 -18
  63. package/packages/react/src/context/builder.context.js +2 -0
  64. package/packages/react/src/index-helpers/blocks-exports.js +19 -19
  65. package/packages/{_rsc/src/context/types.js → react/src/types/input.js} +0 -0
  66. package/packages/rsc/src/blocks/button/button.jsx +2 -2
  67. package/packages/rsc/src/blocks/columns/columns.jsx +6 -6
  68. package/packages/rsc/src/blocks/form/form.jsx +4 -4
  69. package/packages/rsc/src/blocks/image/image.jsx +6 -6
  70. package/packages/rsc/src/blocks/symbol/symbol.jsx +1 -1
  71. package/packages/rsc/src/components/render-block/block-styles.jsx +1 -1
  72. package/packages/rsc/src/components/render-block/render-block.jsx +24 -4
  73. package/packages/rsc/src/components/render-block/render-component.jsx +2 -2
  74. package/packages/rsc/src/components/render-block/render-repeated-block.jsx +2 -1
  75. package/packages/rsc/src/components/render-blocks.jsx +4 -4
  76. package/packages/rsc/src/components/render-content/builder-editing.jsx +61 -4
  77. package/packages/rsc/src/components/render-content/components/render-styles.helpers.js +57 -0
  78. package/packages/rsc/src/components/render-content/components/render-styles.jsx +11 -57
  79. package/packages/rsc/src/components/render-content/index.js +1 -1
  80. package/packages/rsc/src/components/render-content/render-content.helpers.js +48 -0
  81. package/packages/rsc/src/components/render-content/render-content.jsx +48 -39
  82. package/packages/{_rsc/src/functions/get-content/types.js → rsc/src/components/render-content/render-content.types.js} +0 -0
  83. package/packages/rsc/src/components/render-inlined-styles.jsx +2 -4
  84. package/packages/rsc/src/constants/builder-registered-components.js +18 -18
  85. package/packages/rsc/src/context/builder.context.js +2 -0
  86. package/packages/rsc/src/index-helpers/blocks-exports.js +19 -19
  87. package/packages/{_rsc/src/types/builder-block.js → rsc/src/types/input.js} +0 -0
  88. package/packages/_rsc/src/blocks/BaseText.jsx +0 -10
  89. package/packages/_rsc/src/blocks/button/button.jsx +0 -29
  90. package/packages/_rsc/src/blocks/button/component-info.js +0 -41
  91. package/packages/_rsc/src/blocks/columns/columns.jsx +0 -172
  92. package/packages/_rsc/src/blocks/columns/component-info.js +0 -242
  93. package/packages/_rsc/src/blocks/custom-code/component-info.js +0 -31
  94. package/packages/_rsc/src/blocks/custom-code/custom-code.jsx +0 -55
  95. package/packages/_rsc/src/blocks/embed/component-info.js +0 -44
  96. package/packages/_rsc/src/blocks/embed/embed.jsx +0 -43
  97. package/packages/_rsc/src/blocks/embed/helpers.js +0 -9
  98. package/packages/_rsc/src/blocks/form/component-info.js +0 -262
  99. package/packages/_rsc/src/blocks/form/form.jsx +0 -259
  100. package/packages/_rsc/src/blocks/fragment/component-info.js +0 -11
  101. package/packages/_rsc/src/blocks/fragment/fragment.jsx +0 -7
  102. package/packages/_rsc/src/blocks/image/component-info.js +0 -151
  103. package/packages/_rsc/src/blocks/image/image.helpers.js +0 -48
  104. package/packages/_rsc/src/blocks/image/image.jsx +0 -124
  105. package/packages/_rsc/src/blocks/img/component-info.js +0 -20
  106. package/packages/_rsc/src/blocks/img/img.jsx +0 -19
  107. package/packages/_rsc/src/blocks/input/component-info.js +0 -74
  108. package/packages/_rsc/src/blocks/input/input.jsx +0 -21
  109. package/packages/_rsc/src/blocks/raw-text/component-info.js +0 -16
  110. package/packages/_rsc/src/blocks/raw-text/raw-text.jsx +0 -12
  111. package/packages/_rsc/src/blocks/section/component-info.js +0 -49
  112. package/packages/_rsc/src/blocks/section/section.jsx +0 -29
  113. package/packages/_rsc/src/blocks/select/component-info.js +0 -59
  114. package/packages/_rsc/src/blocks/select/select.jsx +0 -22
  115. package/packages/_rsc/src/blocks/submit-button/component-info.js +0 -28
  116. package/packages/_rsc/src/blocks/submit-button/submit-button.jsx +0 -11
  117. package/packages/_rsc/src/blocks/symbol/component-info.js +0 -43
  118. package/packages/_rsc/src/blocks/symbol/symbol.jsx +0 -56
  119. package/packages/_rsc/src/blocks/text/component-info.js +0 -24
  120. package/packages/_rsc/src/blocks/text/text.jsx +0 -12
  121. package/packages/_rsc/src/blocks/textarea/component-info.js +0 -47
  122. package/packages/_rsc/src/blocks/textarea/textarea.jsx +0 -15
  123. package/packages/_rsc/src/blocks/util.js +0 -8
  124. package/packages/_rsc/src/blocks/video/component-info.js +0 -106
  125. package/packages/_rsc/src/blocks/video/video.jsx +0 -61
  126. package/packages/_rsc/src/components/render-block/block-styles.jsx +0 -72
  127. package/packages/_rsc/src/components/render-block/render-block.helpers.js +0 -23
  128. package/packages/_rsc/src/components/render-block/render-block.jsx +0 -251
  129. package/packages/_rsc/src/components/render-block/render-component-with-context.jsx +0 -38
  130. package/packages/_rsc/src/components/render-block/render-component.jsx +0 -37
  131. package/packages/_rsc/src/components/render-block/render-repeated-block.jsx +0 -36
  132. package/packages/_rsc/src/components/render-blocks.jsx +0 -90
  133. package/packages/_rsc/src/components/render-content/builder-editing.jsx +0 -7
  134. package/packages/_rsc/src/components/render-content/components/render-styles.jsx +0 -70
  135. package/packages/_rsc/src/components/render-content/index.js +0 -4
  136. package/packages/_rsc/src/components/render-content/render-content.jsx +0 -259
  137. package/packages/_rsc/src/components/render-inlined-styles.jsx +0 -33
  138. package/packages/_rsc/src/constants/builder-registered-components.js +0 -54
  139. package/packages/_rsc/src/constants/device-sizes.js +0 -48
  140. package/packages/_rsc/src/constants/target.js +0 -4
  141. package/packages/_rsc/src/context/builder.context.js +0 -11
  142. package/packages/_rsc/src/functions/camel-to-kebab-case.js +0 -4
  143. package/packages/_rsc/src/functions/evaluate.js +0 -6
  144. package/packages/_rsc/src/functions/event-handler-name.js +0 -7
  145. package/packages/_rsc/src/functions/extract-text-styles.js +0 -22
  146. package/packages/_rsc/src/functions/fast-clone.js +0 -4
  147. package/packages/_rsc/src/functions/get-block-actions-handler.js +0 -11
  148. package/packages/_rsc/src/functions/get-block-actions.js +0 -18
  149. package/packages/_rsc/src/functions/get-block-component-options.js +0 -28
  150. package/packages/_rsc/src/functions/get-block-properties.js +0 -50
  151. package/packages/_rsc/src/functions/get-block-tag.js +0 -6
  152. package/packages/_rsc/src/functions/get-builder-search-params/fn.test.js +0 -13
  153. package/packages/_rsc/src/functions/get-builder-search-params/index.js +0 -38
  154. package/packages/_rsc/src/functions/get-content/ab-testing.js +0 -99
  155. package/packages/_rsc/src/functions/get-content/generate-content-url.js +0 -55
  156. package/packages/_rsc/src/functions/get-content/generate-content-url.test.js +0 -31
  157. package/packages/_rsc/src/functions/get-content/index.js +0 -65
  158. package/packages/_rsc/src/functions/get-fetch.js +0 -14
  159. package/packages/_rsc/src/functions/get-global-this.js +0 -18
  160. package/packages/_rsc/src/functions/get-processed-block.js +0 -59
  161. package/packages/_rsc/src/functions/get-processed-block.test.js +0 -32
  162. package/packages/_rsc/src/functions/get-react-native-block-styles.js +0 -33
  163. package/packages/_rsc/src/functions/if-target.js +0 -15
  164. package/packages/_rsc/src/functions/is-browser.js +0 -6
  165. package/packages/_rsc/src/functions/is-editing.js +0 -7
  166. package/packages/_rsc/src/functions/is-iframe.js +0 -7
  167. package/packages/_rsc/src/functions/is-previewing.js +0 -14
  168. package/packages/_rsc/src/functions/on-change.js +0 -27
  169. package/packages/_rsc/src/functions/on-change.test.js +0 -19
  170. package/packages/_rsc/src/functions/register-component.js +0 -68
  171. package/packages/_rsc/src/functions/register.js +0 -29
  172. package/packages/_rsc/src/functions/sanitize-react-native-block-styles.js +0 -66
  173. package/packages/_rsc/src/functions/set-editor-settings.js +0 -15
  174. package/packages/_rsc/src/functions/set.js +0 -11
  175. package/packages/_rsc/src/functions/set.test.js +0 -16
  176. package/packages/_rsc/src/functions/track.js +0 -124
  177. package/packages/_rsc/src/functions/transform-block-properties.js +0 -6
  178. package/packages/_rsc/src/functions/transform-block.js +0 -6
  179. package/packages/_rsc/src/helpers/ab-tests.js +0 -16
  180. package/packages/_rsc/src/helpers/cookie.js +0 -81
  181. package/packages/_rsc/src/helpers/css.js +0 -34
  182. package/packages/_rsc/src/helpers/flatten.js +0 -34
  183. package/packages/_rsc/src/helpers/localStorage.js +0 -35
  184. package/packages/_rsc/src/helpers/nullable.js +0 -4
  185. package/packages/_rsc/src/helpers/sessionId.js +0 -52
  186. package/packages/_rsc/src/helpers/time.js +0 -5
  187. package/packages/_rsc/src/helpers/url.js +0 -13
  188. package/packages/_rsc/src/helpers/url.test.js +0 -21
  189. package/packages/_rsc/src/helpers/uuid.js +0 -13
  190. package/packages/_rsc/src/helpers/visitorId.js +0 -34
  191. package/packages/_rsc/src/index-helpers/blocks-exports.js +0 -22
  192. package/packages/_rsc/src/index-helpers/top-of-file.js +0 -2
  193. package/packages/_rsc/src/index.js +0 -14
  194. package/packages/_rsc/src/scripts/init-editing.js +0 -93
  195. package/packages/_rsc/src/types/builder-content.js +0 -0
  196. package/packages/_rsc/src/types/can-track.js +0 -0
  197. package/packages/_rsc/src/types/components.js +0 -0
  198. package/packages/_rsc/src/types/deep-partial.js +0 -0
  199. package/packages/_rsc/src/types/element.js +0 -0
  200. package/packages/_rsc/src/types/targets.js +0 -0
  201. package/packages/_rsc/src/types/typescript.js +0 -0
@@ -5,16 +5,16 @@ import { getBlockComponentOptions } from "../../functions/get-block-component-op
5
5
  import { getBlockProperties } from "../../functions/get-block-properties.js";
6
6
  import { getBlockTag } from "../../functions/get-block-tag.js";
7
7
  import { getProcessedBlock } from "../../functions/get-processed-block.js";
8
- import BlockStyles from "./block-styles.js";
8
+ import BlockStyles from "./block-styles";
9
9
  import {
10
10
  getComponent,
11
11
  getRepeatItemData,
12
12
  isEmptyHtmlElement,
13
13
  } from "./render-block.helpers.js";
14
- import RenderRepeatedBlock from "./render-repeated-block.js";
14
+ import RenderRepeatedBlock from "./render-repeated-block";
15
15
  import { TARGET } from "../../constants/target.js";
16
16
  import { extractTextStyles } from "../../functions/extract-text-styles.js";
17
- import RenderComponent from "./render-component.js";
17
+ import RenderComponent from "./render-component";
18
18
  import { getReactNativeBlockStyles } from "../../functions/get-react-native-block-styles.js";
19
19
 
20
20
  export default function RenderBlock(props) {
@@ -40,10 +40,30 @@ export default function RenderBlock(props) {
40
40
  });
41
41
  }
42
42
 
43
+ function proxyState() {
44
+ if (typeof Proxy === "undefined") {
45
+ console.error(
46
+ "no Proxy available in this environment, cannot proxy state."
47
+ );
48
+ return props.context.state;
49
+ }
50
+ const useState = new Proxy(props.context.state, {
51
+ set: (obj, prop, value) => {
52
+ // set the value on the state object, so that the event handler instantly gets the update.
53
+ obj[prop] = value;
54
+
55
+ // set the value in the context, so that the rest of the app gets the update.
56
+ props.context.setState?.(obj);
57
+ return true;
58
+ },
59
+ });
60
+ return useState;
61
+ }
62
+
43
63
  function actions() {
44
64
  return getBlockActions({
45
65
  block: useBlock(),
46
- state: props.context.state,
66
+ state: proxyState(),
47
67
  context: props.context.context,
48
68
  });
49
69
  }
@@ -125,6 +145,7 @@ export default function RenderBlock(props) {
125
145
  state: props.context.state,
126
146
  content: props.context.content,
127
147
  context: props.context.context,
148
+ setState: props.context.setState,
128
149
  registeredComponents: props.context.registeredComponents,
129
150
  inheritedStyles: getInheritedTextStyles(),
130
151
  };
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- import BlockStyles from "./block-styles.js";
3
- import RenderBlock from "./render-block.js";
2
+ import BlockStyles from "./block-styles";
3
+ import RenderBlock from "./render-block";
4
4
 
5
5
  export default function RenderComponent(props) {
6
6
  const ComponentRefRef = props.componentRef;
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { useContext } from "react";
3
3
  import BuilderContext from "../../context/builder.context.js";
4
- import RenderBlock from "./render-block.js";
4
+ import RenderBlock from "./render-block";
5
5
 
6
6
  export default function RenderRepeatedBlock(props) {
7
7
  return (
@@ -9,6 +9,7 @@ export default function RenderRepeatedBlock(props) {
9
9
  value={{
10
10
  content: props.repeatContext.content,
11
11
  state: props.repeatContext.state,
12
+ setState: props.repeatContext.setState,
12
13
  context: props.repeatContext.context,
13
14
  apiKey: props.repeatContext.apiKey,
14
15
  registeredComponents: props.repeatContext.registeredComponents,
@@ -2,8 +2,8 @@ import * as React from "react";
2
2
  import { useContext } from "react";
3
3
  import BuilderContext from "../context/builder.context.js";
4
4
  import { isEditing } from "../functions/is-editing.js";
5
- import BlockStyles from "./render-block/block-styles.js";
6
- import RenderBlock from "./render-block/render-block.js";
5
+ import BlockStyles from "./render-block/block-styles";
6
+ import RenderBlock from "./render-block/render-block";
7
7
 
8
8
  export default function RenderBlocks(props) {
9
9
  function className() {
@@ -45,7 +45,7 @@ export default function RenderBlocks(props) {
45
45
  return (
46
46
  <>
47
47
  <div
48
- className={className() + " div-05727d92"}
48
+ className={className() + " div-297c34fa"}
49
49
  builder-path={props.path}
50
50
  builder-parent-id={props.parent}
51
51
  dataSet={{
@@ -79,7 +79,7 @@ export default function RenderBlocks(props) {
79
79
  </>
80
80
  ) : null}
81
81
  </div>
82
- <style>{`.div-05727d92 {
82
+ <style>{`.div-297c34fa {
83
83
  display: flex;
84
84
  flex-direction: column;
85
85
  align-items: stretch;
@@ -0,0 +1,57 @@
1
+ const getCssFromFont = (font) => {
2
+ var _a, _b;
3
+ const family = font.family + (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
4
+ const name = family.split(",")[0];
5
+ const url = (_b = font.fileUrl) != null ? _b : (_a = font == null ? void 0 : font.files) == null ? void 0 : _a.regular;
6
+ let str = "";
7
+ if (url && family && name) {
8
+ str += `
9
+ @font-face {
10
+ font-family: "${family}";
11
+ src: local("${name}"), url('${url}') format('woff2');
12
+ font-display: fallback;
13
+ font-weight: 400;
14
+ }
15
+ `.trim();
16
+ }
17
+ if (font.files) {
18
+ for (const weight in font.files) {
19
+ const isNumber = String(Number(weight)) === weight;
20
+ if (!isNumber) {
21
+ continue;
22
+ }
23
+ const weightUrl = font.files[weight];
24
+ if (weightUrl && weightUrl !== url) {
25
+ str += `
26
+ @font-face {
27
+ font-family: "${family}";
28
+ src: url('${weightUrl}') format('woff2');
29
+ font-display: fallback;
30
+ font-weight: ${weight};
31
+ }
32
+ `.trim();
33
+ }
34
+ }
35
+ }
36
+ return str;
37
+ };
38
+ const getFontCss = ({ customFonts }) => {
39
+ var _a;
40
+ return ((_a = customFonts == null ? void 0 : customFonts.map((font) => getCssFromFont(font))) == null ? void 0 : _a.join(" ")) || "";
41
+ };
42
+ const getCss = ({
43
+ cssCode,
44
+ contentId
45
+ }) => {
46
+ if (!cssCode) {
47
+ return "";
48
+ }
49
+ if (!contentId) {
50
+ return cssCode;
51
+ }
52
+ return (cssCode == null ? void 0 : cssCode.replace(/&/g, `div[builder-content-id="${contentId}"]`)) || "";
53
+ };
54
+ export {
55
+ getCss,
56
+ getFontCss
57
+ };
@@ -1,64 +1,21 @@
1
1
  import * as React from "react";
2
- import RenderInlinedStyles from "../../render-inlined-styles.js";
2
+ import { useState } from "react";
3
+ import RenderInlinedStyles from "../../render-inlined-styles";
4
+ import { getCss } from "./render-styles.helpers";
5
+ import { getFontCss } from "./render-styles.helpers";
3
6
 
4
7
  export default function RenderContentStyles(props) {
5
- function getCssFromFont(font) {
6
- // TODO: compute what font sizes are used and only load those.......
7
- const family =
8
- font.family +
9
- (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
10
- const name = family.split(",")[0];
11
- const url = font.fileUrl ?? font?.files?.regular;
12
- let str = "";
13
- if (url && family && name) {
14
- str += `
15
- @font-face {
16
- font-family: "${family}";
17
- src: local("${name}"), url('${url}') format('woff2');
18
- font-display: fallback;
19
- font-weight: 400;
20
- }
21
- `.trim();
22
- }
23
- if (font.files) {
24
- for (const weight in font.files) {
25
- const isNumber = String(Number(weight)) === weight;
26
- if (!isNumber) {
27
- continue;
28
- }
29
- // TODO: maybe limit number loaded
30
- const weightUrl = font.files[weight];
31
- if (weightUrl && weightUrl !== url) {
32
- str += `
33
- @font-face {
34
- font-family: "${family}";
35
- src: url('${weightUrl}') format('woff2');
36
- font-display: fallback;
37
- font-weight: ${weight};
38
- }
39
- `.trim();
40
- }
41
- }
42
- }
43
- return str;
44
- }
45
-
46
- function getFontCss({ customFonts }) {
47
- // TODO: flag for this
48
- // if (!builder.allowCustomFonts) {
49
- // return '';
50
- // }
51
- // TODO: separate internal data from external
52
- return customFonts?.map((font) => getCssFromFont(font))?.join(" ") || "";
53
- }
54
-
55
- function injectedStyles() {
56
- return `
57
- ${props.cssCode || ""}
8
+ const [injectedStyles, setInjectedStyles] = useState(
9
+ () => `
10
+ ${getCss({
11
+ cssCode: props.cssCode,
12
+ contentId: props.contentId,
13
+ })}
58
14
  ${getFontCss({
59
15
  customFonts: props.customFonts,
60
- })}`;
61
- }
16
+ })}
17
+ `
18
+ );
62
19
 
63
- return <RenderInlinedStyles styles={injectedStyles()} />;
20
+ return <RenderInlinedStyles styles={injectedStyles} />;
64
21
  }
@@ -1,4 +1,4 @@
1
- import { default as default2 } from "./render-content.js";
1
+ import { default as default2 } from "./render-content";
2
2
  export {
3
3
  default2 as default
4
4
  };
@@ -0,0 +1,48 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ const getContextStateInitialValue = ({
21
+ content,
22
+ data,
23
+ locale
24
+ }) => {
25
+ var _a, _b, _c;
26
+ const defaultValues = {};
27
+ (_b = (_a = content == null ? void 0 : content.data) == null ? void 0 : _a.inputs) == null ? void 0 : _b.forEach((input) => {
28
+ var _a2;
29
+ if (input.name && input.defaultValue !== void 0 && ((_a2 = content == null ? void 0 : content.data) == null ? void 0 : _a2.state) && content.data.state[input.name] === void 0) {
30
+ defaultValues[input.name] = input.defaultValue;
31
+ }
32
+ });
33
+ const stateToUse = __spreadValues(__spreadValues(__spreadValues({}, (_c = content == null ? void 0 : content.data) == null ? void 0 : _c.state), data), locale ? { locale } : {});
34
+ return __spreadValues(__spreadValues({}, defaultValues), stateToUse);
35
+ };
36
+ const getContentInitialValue = ({
37
+ content,
38
+ data
39
+ }) => {
40
+ return !content ? void 0 : __spreadProps(__spreadValues({}, content), {
41
+ data: __spreadValues(__spreadValues({}, content == null ? void 0 : content.data), data),
42
+ meta: content == null ? void 0 : content.meta
43
+ });
44
+ };
45
+ export {
46
+ getContentInitialValue,
47
+ getContextStateInitialValue
48
+ };
@@ -13,8 +13,8 @@ import {
13
13
  createRegisterComponentMessage,
14
14
  } from "../../functions/register-component.js";
15
15
  import { _track } from "../../functions/track/index.js";
16
- import RenderBlocks from "../render-blocks.js";
17
- import RenderContentStyles from "./components/render-styles.js";
16
+ import RenderBlocks from "../render-blocks";
17
+ import RenderContentStyles from "./components/render-styles";
18
18
  import builderContext from "../../context/builder.context.js";
19
19
  import {
20
20
  registerInsertMenu,
@@ -22,6 +22,10 @@ import {
22
22
  } from "../../scripts/init-editing.js";
23
23
  import { checkIsDefined } from "../../helpers/nullable.js";
24
24
  import { getInteractionPropertiesForEvent } from "../../functions/track/interaction.js";
25
+ import {
26
+ getContentInitialValue,
27
+ getContextStateInitialValue,
28
+ } from "./render-content.helpers.js";
25
29
 
26
30
  export default function RenderContent(props) {
27
31
  const elementRef = useRef(null);
@@ -29,56 +33,58 @@ export default function RenderContent(props) {
29
33
 
30
34
  const [overrideContent, setOverrideContent] = useState(() => null);
31
35
 
32
- function useContent() {
33
- if (!props.content && !overrideContent) {
34
- return undefined;
35
- }
36
- return {
37
- ...props.content,
38
- ...overrideContent,
36
+ const [useContent, setUseContent] = useState(() =>
37
+ getContentInitialValue({
38
+ content: props.content,
39
+ data: props.data,
40
+ })
41
+ );
42
+
43
+ function mergeNewContent(newContent) {
44
+ setUseContent({
45
+ ...useContent,
46
+ ...newContent,
39
47
  data: {
40
- ...props.content?.data,
41
- ...props.data,
42
- ...overrideContent?.data,
48
+ ...useContent?.data,
49
+ ...newContent?.data,
43
50
  },
44
51
  meta: {
45
- ...props.content?.meta,
46
- ...overrideContent?.meta,
52
+ ...useContent?.meta,
53
+ ...newContent?.meta,
47
54
  breakpoints:
48
- useBreakpoints ||
49
- overrideContent?.meta?.breakpoints ||
50
- props.content?.meta?.breakpoints,
55
+ newContent?.meta?.breakpoints || useContent?.meta?.breakpoints,
51
56
  },
52
- };
57
+ });
53
58
  }
54
59
 
55
- const [update, setUpdate] = useState(() => 0);
60
+ function setBreakpoints(breakpoints) {
61
+ setUseContent({
62
+ ...useContent,
63
+ meta: {
64
+ ...useContent?.meta,
65
+ breakpoints,
66
+ },
67
+ });
68
+ }
56
69
 
57
- const [useBreakpoints, setUseBreakpoints] = useState(() => null);
70
+ const [update, setUpdate] = useState(() => 0);
58
71
 
59
72
  const [canTrackToUse, setCanTrackToUse] = useState(() =>
60
73
  checkIsDefined(props.canTrack) ? props.canTrack : true
61
74
  );
62
75
 
63
- const [overrideState, setOverrideState] = useState(() => ({}));
76
+ const [contentState, setContentState] = useState(() =>
77
+ getContextStateInitialValue({
78
+ content: props.content,
79
+ data: props.data,
80
+ locale: props.locale,
81
+ })
82
+ );
64
83
 
65
- function contentState() {
66
- return {
67
- ...props.content?.data?.state,
68
- ...props.data,
69
- ...(props.locale
70
- ? {
71
- locale: props.locale,
72
- }
73
- : {}),
74
- ...overrideState,
75
- };
84
+ function setContextState(newState) {
85
+ setContentState(newState);
76
86
  }
77
87
 
78
- const [contextContext, setContextContext] = useState(
79
- () => props.context || {}
80
- );
81
-
82
88
  const [allRegisteredComponents, setAllRegisteredComponents] = useState(() =>
83
89
  [
84
90
  ...getDefaultRegisteredComponents(),
@@ -105,10 +111,12 @@ export default function RenderContent(props) {
105
111
  case "builder.configureSdk": {
106
112
  const messageContent = data.data;
107
113
  const { breakpoints, contentId } = messageContent;
108
- if (!contentId || contentId !== useContent?.()?.id) {
114
+ if (!contentId || contentId !== useContent?.id) {
109
115
  return;
110
116
  }
111
- setUseBreakpoints(breakpoints);
117
+ if (breakpoints) {
118
+ setBreakpoints(breakpoints);
119
+ }
112
120
  setForceReRenderCount(forceReRenderCount + 1); // This is a hack to force Qwik to re-render.
113
121
  break;
114
122
  }
@@ -121,7 +129,7 @@ export default function RenderContent(props) {
121
129
  messageContent.modelName;
122
130
  const contentData = messageContent.data;
123
131
  if (key === props.model) {
124
- setOverrideContent(contentData);
132
+ mergeNewContent(contentData);
125
133
  setForceReRenderCount(forceReRenderCount + 1); // This is a hack to force Qwik to re-render.
126
134
  }
127
135
 
@@ -137,12 +145,12 @@ export default function RenderContent(props) {
137
145
 
138
146
  function evaluateJsCode() {
139
147
  // run any dynamic JS code attached to content
140
- const jsCode = useContent?.()?.data?.jsCode;
148
+ const jsCode = useContent?.data?.jsCode;
141
149
  if (jsCode) {
142
150
  evaluate({
143
151
  code: jsCode,
144
- context: contextContext,
145
- state: contentState(),
152
+ context: props.context || {},
153
+ state: contentState,
146
154
  });
147
155
  }
148
156
  }
@@ -152,9 +160,9 @@ export default function RenderContent(props) {
152
160
  const [clicked, setClicked] = useState(() => false);
153
161
 
154
162
  function onClick(event) {
155
- if (useContent()) {
156
- const variationId = useContent?.()?.testVariationId;
157
- const contentId = useContent?.()?.id;
163
+ if (useContent) {
164
+ const variationId = useContent?.testVariationId;
165
+ const contentId = useContent?.id;
158
166
  _track({
159
167
  type: "click",
160
168
  canTrack: canTrackToUse,
@@ -174,8 +182,8 @@ export default function RenderContent(props) {
174
182
  return expression.replace(/{{([^}]+)}}/g, (_match, group) =>
175
183
  evaluate({
176
184
  code: group,
177
- context: contextContext,
178
- state: contentState(),
185
+ context: props.context || {},
186
+ state: contentState,
179
187
  })
180
188
  );
181
189
  }
@@ -184,11 +192,11 @@ export default function RenderContent(props) {
184
192
  fetch(url)
185
193
  .then((response) => response.json())
186
194
  .then((json) => {
187
- const newOverrideState = {
188
- ...overrideState,
195
+ const newState = {
196
+ ...contentState,
189
197
  [key]: json,
190
198
  };
191
- setOverrideState(newOverrideState);
199
+ setContextState(newState);
192
200
  })
193
201
  .catch((err) => {
194
202
  console.log("error fetching dynamic data", url, err);
@@ -196,7 +204,7 @@ export default function RenderContent(props) {
196
204
  }
197
205
 
198
206
  function runHttpRequests() {
199
- const requests = useContent?.()?.data?.httpRequests ?? {};
207
+ const requests = useContent?.data?.httpRequests ?? {};
200
208
  Object.entries(requests).forEach(([key, url]) => {
201
209
  if (url && (!httpReqsData[key] || isEditing())) {
202
210
  const evaluatedUrl = evalExpression(url);
@@ -213,7 +221,7 @@ export default function RenderContent(props) {
213
221
  window.dispatchEvent(
214
222
  new CustomEvent("builder:component:stateChange", {
215
223
  detail: {
216
- state: contentState(),
224
+ state: contentState,
217
225
  ref: {
218
226
  name: props.model,
219
227
  },
@@ -225,8 +233,7 @@ export default function RenderContent(props) {
225
233
 
226
234
  function shouldRenderContentStyles() {
227
235
  return Boolean(
228
- (useContent?.()?.data?.cssCode ||
229
- useContent?.()?.data?.customFonts?.length) &&
236
+ (useContent?.data?.cssCode || useContent?.data?.customFonts?.length) &&
230
237
  TARGET !== "reactNative"
231
238
  );
232
239
  }
@@ -265,9 +272,9 @@ export default function RenderContent(props) {
265
272
  emitStateUpdate
266
273
  );
267
274
  }
268
- if (useContent()) {
269
- const variationId = useContent?.()?.testVariationId;
270
- const contentId = useContent?.()?.id;
275
+ if (useContent) {
276
+ const variationId = useContent?.testVariationId;
277
+ const contentId = useContent?.id;
271
278
  _track({
272
279
  type: "impression",
273
280
  canTrack: canTrackToUse,
@@ -302,7 +309,7 @@ export default function RenderContent(props) {
302
309
  apiKey: props.apiKey,
303
310
  }).then((content) => {
304
311
  if (content) {
305
- setOverrideContent(content);
312
+ mergeNewContent(content);
306
313
  }
307
314
  });
308
315
  }
@@ -315,13 +322,13 @@ export default function RenderContent(props) {
315
322
 
316
323
  useEffect(() => {
317
324
  evaluateJsCode();
318
- }, [useContent?.()?.data?.jsCode, contentState()]);
325
+ }, [useContent?.data?.jsCode, contentState]);
319
326
  useEffect(() => {
320
327
  runHttpRequests();
321
- }, [useContent?.()?.data?.httpRequests]);
328
+ }, [useContent?.data?.httpRequests]);
322
329
  useEffect(() => {
323
330
  emitStateUpdate();
324
- }, [contentState()]);
331
+ }, [contentState]);
325
332
 
326
333
  useEffect(() => {
327
334
  return () => {
@@ -338,30 +345,32 @@ export default function RenderContent(props) {
338
345
  return (
339
346
  <builderContext.Provider
340
347
  value={{
341
- content: useContent(),
342
- state: contentState(),
343
- context: contextContext,
348
+ content: useContent,
349
+ state: contentState,
350
+ setState: setContextState,
351
+ context: props.context || {},
344
352
  apiKey: props.apiKey,
345
353
  registeredComponents: allRegisteredComponents,
346
354
  }}
347
355
  >
348
- {useContent() ? (
356
+ {useContent ? (
349
357
  <>
350
358
  <div
351
359
  ref={elementRef}
352
360
  onClick={(event) => onClick(event)}
353
- builder-content-id={useContent?.()?.id}
361
+ builder-content-id={useContent?.id}
354
362
  builder-model={props.model}
355
363
  >
356
364
  {shouldRenderContentStyles() ? (
357
365
  <RenderContentStyles
358
- cssCode={useContent?.()?.data?.cssCode}
359
- customFonts={useContent?.()?.data?.customFonts}
366
+ contentId={useContent?.id}
367
+ cssCode={useContent?.data?.cssCode}
368
+ customFonts={useContent?.data?.customFonts}
360
369
  />
361
370
  ) : null}
362
371
 
363
372
  <RenderBlocks
364
- blocks={useContent?.()?.data?.blocks}
373
+ blocks={useContent?.data?.blocks}
365
374
  key={forceReRenderCount}
366
375
  />
367
376
  </div>
@@ -16,9 +16,9 @@ export default function RenderInlinedStyles(props) {
16
16
 
17
17
  return (
18
18
  <>
19
- {TARGET === "svelte" ? (
19
+ {TARGET === "svelte" || TARGET === "qwik" ? (
20
20
  <>
21
- <div dangerouslySetInnerHTML={{ __html: injectedStyleScript() }} />
21
+ <TagRef dangerouslySetInnerHTML={{ __html: props.styles }} />
22
22
  </>
23
23
  ) : (
24
24
  <TagRef>{props.styles}</TagRef>