@builder.io/sdk-react-native 0.4.4 → 0.4.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 (174) hide show
  1. package/dist/blocks/columns/columns.js +2 -2
  2. package/dist/blocks/symbol/symbol.js +8 -6
  3. package/dist/components/block/block.helpers.js +113 -0
  4. package/dist/components/block/block.js +171 -0
  5. package/dist/components/block/components/block-styles.js +95 -0
  6. package/dist/components/block/components/component.js +41 -0
  7. package/dist/components/block/components/repeated-block.js +40 -0
  8. package/dist/components/block/types.js +1 -0
  9. package/dist/components/blocks/blocks-wrapper.js +66 -0
  10. package/dist/components/blocks/blocks.js +41 -0
  11. package/dist/components/content/components/content-styles.helpers.js +55 -0
  12. package/dist/components/content/components/content-styles.js +61 -0
  13. package/dist/components/content/components/enable-editor.js +313 -0
  14. package/dist/components/content/content.helpers.js +42 -0
  15. package/dist/components/content/content.js +127 -0
  16. package/dist/components/content/content.types.js +1 -0
  17. package/dist/components/content/index.js +8 -0
  18. package/dist/components/content/wrap-component-ref.js +5 -0
  19. package/dist/components/content-variants/content-variants.js +73 -0
  20. package/dist/components/content-variants/helpers.js +139 -0
  21. package/dist/components/inlined-script.js +32 -0
  22. package/dist/components/{render-inlined-styles.js → inlined-styles.js} +2 -2
  23. package/dist/components/render-block/block-styles.js +2 -2
  24. package/dist/components/render-content/components/render-styles.js +2 -2
  25. package/dist/components/render-content/render-content.js +10 -8
  26. package/dist/components/render-content-variants/helpers.js +49 -20
  27. package/dist/components/render-content-variants/render-content-variants.js +29 -24
  28. package/dist/components/render-content-variants/render-content-variants.types.js +1 -0
  29. package/dist/constants/sdk-version.js +1 -1
  30. package/dist/helpers/ab-tests.js +3 -0
  31. package/dist/types/builder-props.js +1 -0
  32. package/dist/types/enforced-partials.js +1 -0
  33. package/package.json +1 -1
  34. package/src/blocks/columns/columns.jsx +2 -2
  35. package/src/blocks/symbol/symbol.jsx +8 -5
  36. package/src/components/inlined-script.jsx +18 -0
  37. package/src/components/{render-inlined-styles.jsx → inlined-styles.jsx} +2 -2
  38. package/src/components/render-block/block-styles.jsx +2 -2
  39. package/src/components/render-content/components/render-styles.jsx +2 -2
  40. package/src/components/render-content/render-content.jsx +8 -6
  41. package/src/components/render-content-variants/helpers.js +49 -20
  42. package/src/components/render-content-variants/render-content-variants.jsx +57 -35
  43. package/src/components/render-content-variants/render-content-variants.types.js +0 -0
  44. package/src/constants/sdk-version.js +1 -1
  45. package/src/helpers/ab-tests.js +3 -0
  46. package/src/types/enforced-partials.js +0 -0
  47. package/dist/blocks/BaseText.d.ts +0 -6
  48. package/dist/blocks/button/button.d.ts +0 -9
  49. package/dist/blocks/button/component-info.d.ts +0 -2
  50. package/dist/blocks/columns/columns.d.ts +0 -16
  51. package/dist/blocks/columns/component-info.d.ts +0 -2
  52. package/dist/blocks/custom-code/component-info.d.ts +0 -2
  53. package/dist/blocks/custom-code/custom-code.d.ts +0 -5
  54. package/dist/blocks/embed/component-info.d.ts +0 -2
  55. package/dist/blocks/embed/embed.d.ts +0 -5
  56. package/dist/blocks/embed/helpers.d.ts +0 -1
  57. package/dist/blocks/form/component-info.d.ts +0 -2
  58. package/dist/blocks/form/form.d.ts +0 -28
  59. package/dist/blocks/fragment/component-info.d.ts +0 -2
  60. package/dist/blocks/fragment/fragment.d.ts +0 -8
  61. package/dist/blocks/image/component-info.d.ts +0 -2
  62. package/dist/blocks/image/image.d.ts +0 -17
  63. package/dist/blocks/image/image.helpers.d.ts +0 -1
  64. package/dist/blocks/img/component-info.d.ts +0 -2
  65. package/dist/blocks/img/img.d.ts +0 -11
  66. package/dist/blocks/input/component-info.d.ts +0 -2
  67. package/dist/blocks/input/input.d.ts +0 -12
  68. package/dist/blocks/raw-text/component-info.d.ts +0 -2
  69. package/dist/blocks/raw-text/raw-text.d.ts +0 -5
  70. package/dist/blocks/section/component-info.d.ts +0 -2
  71. package/dist/blocks/section/section.d.ts +0 -9
  72. package/dist/blocks/select/component-info.d.ts +0 -2
  73. package/dist/blocks/select/select.d.ts +0 -13
  74. package/dist/blocks/submit-button/component-info.d.ts +0 -2
  75. package/dist/blocks/submit-button/submit-button.d.ts +0 -7
  76. package/dist/blocks/symbol/component-info.d.ts +0 -2
  77. package/dist/blocks/symbol/symbol.d.ts +0 -21
  78. package/dist/blocks/text/component-info.d.ts +0 -2
  79. package/dist/blocks/text/text.d.ts +0 -7
  80. package/dist/blocks/textarea/component-info.d.ts +0 -2
  81. package/dist/blocks/textarea/textarea.d.ts +0 -10
  82. package/dist/blocks/util.d.ts +0 -4
  83. package/dist/blocks/video/component-info.d.ts +0 -2
  84. package/dist/blocks/video/video.d.ts +0 -31
  85. package/dist/components/render-block/block-styles.d.ts +0 -9
  86. package/dist/components/render-block/render-block.d.ts +0 -9
  87. package/dist/components/render-block/render-block.helpers.d.ts +0 -12
  88. package/dist/components/render-block/render-component.d.ts +0 -17
  89. package/dist/components/render-block/render-repeated-block.d.ts +0 -9
  90. package/dist/components/render-block/types.d.ts +0 -6
  91. package/dist/components/render-blocks.d.ts +0 -10
  92. package/dist/components/render-content/builder-editing.d.ts +0 -3
  93. package/dist/components/render-content/components/render-styles.d.ts +0 -9
  94. package/dist/components/render-content/components/render-styles.helpers.d.ts +0 -15
  95. package/dist/components/render-content/index.d.ts +0 -1
  96. package/dist/components/render-content/render-content.d.ts +0 -4
  97. package/dist/components/render-content/render-content.helpers.d.ts +0 -7
  98. package/dist/components/render-content/render-content.types.d.ts +0 -38
  99. package/dist/components/render-content/wrap-component-ref.d.ts +0 -6
  100. package/dist/components/render-content-variants/helpers.d.ts +0 -17
  101. package/dist/components/render-content-variants/render-content-variants.d.ts +0 -5
  102. package/dist/components/render-inlined-styles.d.ts +0 -7
  103. package/dist/constants/builder-registered-components.d.ts +0 -6
  104. package/dist/constants/device-sizes.d.ts +0 -13
  105. package/dist/constants/sdk-version.d.ts +0 -1
  106. package/dist/constants/target.d.ts +0 -3
  107. package/dist/context/builder.context.d.ts +0 -3
  108. package/dist/context/types.d.ts +0 -35
  109. package/dist/functions/camel-to-kebab-case.d.ts +0 -1
  110. package/dist/functions/evaluate.d.ts +0 -7
  111. package/dist/functions/evaluate.test.d.ts +0 -1
  112. package/dist/functions/event-handler-name.d.ts +0 -1
  113. package/dist/functions/extract-text-styles.d.ts +0 -4
  114. package/dist/functions/fast-clone.d.ts +0 -4
  115. package/dist/functions/get-block-actions-handler.d.ts +0 -8
  116. package/dist/functions/get-block-actions.d.ts +0 -9
  117. package/dist/functions/get-block-component-options.d.ts +0 -2
  118. package/dist/functions/get-block-properties.d.ts +0 -2
  119. package/dist/functions/get-builder-search-params/fn.test.d.ts +0 -1
  120. package/dist/functions/get-builder-search-params/index.d.ts +0 -12
  121. package/dist/functions/get-content/generate-content-url.d.ts +0 -2
  122. package/dist/functions/get-content/generate-content-url.test.d.ts +0 -1
  123. package/dist/functions/get-content/index.d.ts +0 -16
  124. package/dist/functions/get-content/types.d.ts +0 -51
  125. package/dist/functions/get-fetch.d.ts +0 -1
  126. package/dist/functions/get-processed-block.d.ts +0 -10
  127. package/dist/functions/get-processed-block.test.d.ts +0 -1
  128. package/dist/functions/get-react-native-block-styles.d.ts +0 -7
  129. package/dist/functions/if-target.d.ts +0 -7
  130. package/dist/functions/is-browser.d.ts +0 -1
  131. package/dist/functions/is-editing.d.ts +0 -1
  132. package/dist/functions/is-iframe.d.ts +0 -1
  133. package/dist/functions/is-previewing.d.ts +0 -1
  134. package/dist/functions/on-change.d.ts +0 -7
  135. package/dist/functions/on-change.test.d.ts +0 -1
  136. package/dist/functions/register-component.d.ts +0 -14
  137. package/dist/functions/register.d.ts +0 -16
  138. package/dist/functions/sanitize-react-native-block-styles.d.ts +0 -3
  139. package/dist/functions/set-editor-settings.d.ts +0 -4
  140. package/dist/functions/set.d.ts +0 -7
  141. package/dist/functions/set.test.d.ts +0 -1
  142. package/dist/functions/track/helpers.d.ts +0 -5
  143. package/dist/functions/track/index.d.ts +0 -51
  144. package/dist/functions/track/interaction.d.ts +0 -13
  145. package/dist/functions/transform-block-properties.d.ts +0 -3
  146. package/dist/functions/transform-block.d.ts +0 -2
  147. package/dist/helpers/ab-tests.d.ts +0 -9
  148. package/dist/helpers/canTrack.d.ts +0 -1
  149. package/dist/helpers/cookie.d.ts +0 -9
  150. package/dist/helpers/css.d.ts +0 -7
  151. package/dist/helpers/flatten.d.ts +0 -6
  152. package/dist/helpers/localStorage.d.ts +0 -9
  153. package/dist/helpers/logger.d.ts +0 -6
  154. package/dist/helpers/nullable.d.ts +0 -2
  155. package/dist/helpers/sessionId.d.ts +0 -6
  156. package/dist/helpers/time.d.ts +0 -1
  157. package/dist/helpers/url.d.ts +0 -6
  158. package/dist/helpers/url.test.d.ts +0 -1
  159. package/dist/helpers/uuid.d.ts +0 -8
  160. package/dist/helpers/visitorId.d.ts +0 -6
  161. package/dist/index-helpers/blocks-exports.d.ts +0 -8
  162. package/dist/index-helpers/top-of-file.d.ts +0 -1
  163. package/dist/index.d.ts +0 -15
  164. package/dist/scripts/init-editing.d.ts +0 -6
  165. package/dist/types/api-version.d.ts +0 -2
  166. package/dist/types/builder-block.d.ts +0 -66
  167. package/dist/types/builder-content.d.ts +0 -44
  168. package/dist/types/can-track.d.ts +0 -3
  169. package/dist/types/components.d.ts +0 -105
  170. package/dist/types/deep-partial.d.ts +0 -3
  171. package/dist/types/element.d.ts +0 -59
  172. package/dist/types/input.d.ts +0 -121
  173. package/dist/types/targets.d.ts +0 -3
  174. package/dist/types/typescript.d.ts +0 -5
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFontCss = exports.getCss = void 0;
4
+ const getCssFromFont = (font) => {
5
+ var _a, _b;
6
+ const family = font.family + (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
7
+ const name = family.split(",")[0];
8
+ const url = (_b = font.fileUrl) != null ? _b : (_a = font == null ? void 0 : font.files) == null ? void 0 : _a.regular;
9
+ let str = "";
10
+ if (url && family && name) {
11
+ str += `
12
+ @font-face {
13
+ font-family: "${family}";
14
+ src: local("${name}"), url('${url}') format('woff2');
15
+ font-display: fallback;
16
+ font-weight: 400;
17
+ }
18
+ `.trim();
19
+ }
20
+ if (font.files) {
21
+ for (const weight in font.files) {
22
+ const isNumber = String(Number(weight)) === weight;
23
+ if (!isNumber) {
24
+ continue;
25
+ }
26
+ const weightUrl = font.files[weight];
27
+ if (weightUrl && weightUrl !== url) {
28
+ str += `
29
+ @font-face {
30
+ font-family: "${family}";
31
+ src: url('${weightUrl}') format('woff2');
32
+ font-display: fallback;
33
+ font-weight: ${weight};
34
+ }
35
+ `.trim();
36
+ }
37
+ }
38
+ }
39
+ return str;
40
+ };
41
+ const getFontCss = ({ customFonts }) => {
42
+ var _a;
43
+ return ((_a = customFonts == null ? void 0 : customFonts.map((font) => getCssFromFont(font))) == null ? void 0 : _a.join(" ")) || "";
44
+ };
45
+ exports.getFontCss = getFontCss;
46
+ const getCss = ({ cssCode, contentId }) => {
47
+ if (!cssCode) {
48
+ return "";
49
+ }
50
+ if (!contentId) {
51
+ return cssCode;
52
+ }
53
+ return (cssCode == null ? void 0 : cssCode.replace(/&/g, `div[builder-content-id="${contentId}"]`)) || "";
54
+ };
55
+ exports.getCss = getCss;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ const React = __importStar(require("react"));
31
+ const react_native_1 = require("react-native");
32
+ const react_1 = require("react");
33
+ const inlined_styles_1 = __importDefault(require("../../inlined-styles"));
34
+ const content_styles_helpers_1 = require("./content-styles.helpers");
35
+ const content_styles_helpers_2 = require("./content-styles.helpers");
36
+ function ContentStyles(props) {
37
+ const [injectedStyles, setInjectedStyles] = (0, react_1.useState)(() => `
38
+ ${(0, content_styles_helpers_1.getCss)({
39
+ cssCode: props.cssCode,
40
+ contentId: props.contentId,
41
+ })}
42
+ ${(0, content_styles_helpers_2.getFontCss)({
43
+ customFonts: props.customFonts,
44
+ })}
45
+
46
+ .builder-text > p:first-of-type, .builder-text > .builder-paragraph:first-of-type {
47
+ margin: 0;
48
+ }
49
+ .builder-text > p, .builder-text > .builder-paragraph {
50
+ color: inherit;
51
+ line-height: inherit;
52
+ letter-spacing: inherit;
53
+ font-weight: inherit;
54
+ font-size: inherit;
55
+ text-align: inherit;
56
+ font-family: inherit;
57
+ }
58
+ `.trim());
59
+ return React.createElement(inlined_styles_1.default, { styles: injectedStyles });
60
+ }
61
+ exports.default = ContentStyles;
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ const React = __importStar(require("react"));
31
+ const react_native_1 = require("react-native");
32
+ const react_1 = require("react");
33
+ const evaluate_js_1 = require("../../../functions/evaluate.js");
34
+ const index_js_1 = require("../../../functions/get-content/index.js");
35
+ const get_fetch_js_1 = require("../../../functions/get-fetch.js");
36
+ const is_browser_js_1 = require("../../../functions/is-browser.js");
37
+ const is_editing_js_1 = require("../../../functions/is-editing.js");
38
+ const is_previewing_js_1 = require("../../../functions/is-previewing.js");
39
+ const register_component_js_1 = require("../../../functions/register-component.js");
40
+ const index_js_2 = require("../../../functions/track/index.js");
41
+ const builder_context_js_1 = __importDefault(require("../../../context/builder.context.js"));
42
+ const init_editing_js_1 = require("../../../scripts/init-editing.js");
43
+ const nullable_js_1 = require("../../../helpers/nullable.js");
44
+ const interaction_js_1 = require("../../../functions/track/interaction.js");
45
+ const target_js_1 = require("../../../constants/target.js");
46
+ const logger_js_1 = require("../../../helpers/logger.js");
47
+ function EnableEditor(props) {
48
+ var _a, _b, _c, _d, _e;
49
+ const elementRef = (0, react_1.useRef)(null);
50
+ const [forceReRenderCount, setForceReRenderCount] = (0, react_1.useState)(() => 0);
51
+ function mergeNewContent(newContent) {
52
+ var _a, _b, _c, _d, _e;
53
+ props.builderContextSignal.content = {
54
+ ...props.builderContextSignal.content,
55
+ ...newContent,
56
+ data: {
57
+ ...(_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.data,
58
+ ...newContent === null || newContent === void 0 ? void 0 : newContent.data,
59
+ },
60
+ meta: {
61
+ ...(_b = props.builderContextSignal.content) === null || _b === void 0 ? void 0 : _b.meta,
62
+ ...newContent === null || newContent === void 0 ? void 0 : newContent.meta,
63
+ breakpoints: ((_c = newContent === null || newContent === void 0 ? void 0 : newContent.meta) === null || _c === void 0 ? void 0 : _c.breakpoints) ||
64
+ ((_e = (_d = props.builderContextSignal.content) === null || _d === void 0 ? void 0 : _d.meta) === null || _e === void 0 ? void 0 : _e.breakpoints),
65
+ },
66
+ };
67
+ }
68
+ const [canTrackToUse, setCanTrackToUse] = (0, react_1.useState)(() => (0, nullable_js_1.checkIsDefined)(props.canTrack) ? props.canTrack : true);
69
+ function processMessage(event) {
70
+ var _a;
71
+ const { data } = event;
72
+ if (data) {
73
+ switch (data.type) {
74
+ case "builder.configureSdk": {
75
+ const messageContent = data.data;
76
+ const { breakpoints, contentId } = messageContent;
77
+ if (!contentId ||
78
+ contentId !== ((_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.id)) {
79
+ return;
80
+ }
81
+ if (breakpoints) {
82
+ mergeNewContent({
83
+ meta: {
84
+ breakpoints,
85
+ },
86
+ });
87
+ }
88
+ setForceReRenderCount(forceReRenderCount + 1); // This is a hack to force Qwik to re-render.
89
+ break;
90
+ }
91
+ case "builder.contentUpdate": {
92
+ const messageContent = data.data;
93
+ const key = messageContent.key ||
94
+ messageContent.alias ||
95
+ messageContent.entry ||
96
+ messageContent.modelName;
97
+ const contentData = messageContent.data;
98
+ if (key === props.model) {
99
+ mergeNewContent(contentData);
100
+ setForceReRenderCount(forceReRenderCount + 1); // This is a hack to force Qwik to re-render.
101
+ }
102
+ break;
103
+ }
104
+ case "builder.patchUpdates": {
105
+ // TODO
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ function evaluateJsCode() {
112
+ var _a, _b;
113
+ // run any dynamic JS code attached to content
114
+ const jsCode = (_b = (_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.jsCode;
115
+ if (jsCode) {
116
+ (0, evaluate_js_1.evaluate)({
117
+ code: jsCode,
118
+ context: props.context || {},
119
+ localState: undefined,
120
+ rootState: props.builderContextSignal.rootState,
121
+ rootSetState: props.builderContextSignal.rootSetState,
122
+ });
123
+ }
124
+ }
125
+ const [httpReqsData, setHttpReqsData] = (0, react_1.useState)(() => ({}));
126
+ const [clicked, setClicked] = (0, react_1.useState)(() => false);
127
+ function onClick(event) {
128
+ var _a, _b;
129
+ if (props.builderContextSignal.content) {
130
+ const variationId = (_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.testVariationId;
131
+ const contentId = (_b = props.builderContextSignal.content) === null || _b === void 0 ? void 0 : _b.id;
132
+ (0, index_js_2._track)({
133
+ type: "click",
134
+ canTrack: canTrackToUse,
135
+ contentId,
136
+ apiKey: props.apiKey,
137
+ variationId: variationId !== contentId ? variationId : undefined,
138
+ ...(0, interaction_js_1.getInteractionPropertiesForEvent)(event),
139
+ unique: !clicked,
140
+ });
141
+ }
142
+ if (!clicked) {
143
+ setClicked(true);
144
+ }
145
+ }
146
+ function evalExpression(expression) {
147
+ return expression.replace(/{{([^}]+)}}/g, (_match, group) => (0, evaluate_js_1.evaluate)({
148
+ code: group,
149
+ context: props.context || {},
150
+ localState: undefined,
151
+ rootState: props.builderContextSignal.rootState,
152
+ rootSetState: props.builderContextSignal.rootSetState,
153
+ }));
154
+ }
155
+ function handleRequest({ url, key }) {
156
+ (0, get_fetch_js_1.fetch)(url)
157
+ .then((response) => response.json())
158
+ .then((json) => {
159
+ var _a, _b;
160
+ const newState = {
161
+ ...props.builderContextSignal.rootState,
162
+ [key]: json,
163
+ };
164
+ (_b = (_a = props.builderContextSignal).rootSetState) === null || _b === void 0 ? void 0 : _b.call(_a, newState);
165
+ httpReqsData[key] = true;
166
+ })
167
+ .catch((err) => {
168
+ console.error("error fetching dynamic data", url, err);
169
+ });
170
+ }
171
+ function runHttpRequests() {
172
+ var _a, _b, _c;
173
+ const requests = (_c = (_b = (_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.httpRequests) !== null && _c !== void 0 ? _c : {};
174
+ Object.entries(requests).forEach(([key, url]) => {
175
+ if (url && (!httpReqsData[key] || (0, is_editing_js_1.isEditing)())) {
176
+ const evaluatedUrl = evalExpression(url);
177
+ handleRequest({
178
+ url: evaluatedUrl,
179
+ key,
180
+ });
181
+ }
182
+ });
183
+ }
184
+ function emitStateUpdate() {
185
+ if ((0, is_editing_js_1.isEditing)()) {
186
+ window.dispatchEvent(new CustomEvent("builder:component:stateChange", {
187
+ detail: {
188
+ state: props.builderContextSignal.rootState,
189
+ ref: {
190
+ name: props.model,
191
+ },
192
+ },
193
+ }));
194
+ }
195
+ }
196
+ (0, react_1.useEffect)(() => {
197
+ var _a, _b;
198
+ if (!props.apiKey) {
199
+ logger_js_1.logger.error("No API key provided to `RenderContent` component. This can cause issues. Please provide an API key using the `apiKey` prop.");
200
+ }
201
+ if ((0, is_browser_js_1.isBrowser)()) {
202
+ if ((0, is_editing_js_1.isEditing)()) {
203
+ setForceReRenderCount(forceReRenderCount + 1);
204
+ (0, init_editing_js_1.registerInsertMenu)();
205
+ (0, init_editing_js_1.setupBrowserForEditing)({
206
+ ...(props.locale
207
+ ? {
208
+ locale: props.locale,
209
+ }
210
+ : {}),
211
+ ...(props.includeRefs
212
+ ? {
213
+ includeRefs: props.includeRefs,
214
+ }
215
+ : {}),
216
+ ...(props.enrich
217
+ ? {
218
+ enrich: props.enrich,
219
+ }
220
+ : {}),
221
+ });
222
+ Object.values(props.builderContextSignal.registeredComponents).forEach((registeredComponent) => {
223
+ var _a;
224
+ const message = (0, register_component_js_1.createRegisterComponentMessage)(registeredComponent);
225
+ (_a = window.parent) === null || _a === void 0 ? void 0 : _a.postMessage(message, "*");
226
+ });
227
+ window.addEventListener("message", processMessage);
228
+ window.addEventListener("builder:component:stateChangeListenerActivated", emitStateUpdate);
229
+ }
230
+ if (props.builderContextSignal.content) {
231
+ const variationId = (_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.testVariationId;
232
+ const contentId = (_b = props.builderContextSignal.content) === null || _b === void 0 ? void 0 : _b.id;
233
+ (0, index_js_2._track)({
234
+ type: "impression",
235
+ canTrack: canTrackToUse,
236
+ contentId,
237
+ apiKey: props.apiKey,
238
+ variationId: variationId !== contentId ? variationId : undefined,
239
+ });
240
+ }
241
+ // override normal content in preview mode
242
+ if ((0, is_previewing_js_1.isPreviewing)()) {
243
+ const searchParams = new URL(location.href).searchParams;
244
+ const searchParamPreviewModel = searchParams.get("builder.preview");
245
+ const searchParamPreviewId = searchParams.get(`builder.preview.${searchParamPreviewModel}`);
246
+ const previewApiKey = searchParams.get("apiKey") || searchParams.get("builder.space");
247
+ /**
248
+ * Make sure that:
249
+ * - the preview model name is the same as the one we're rendering, since there can be multiple models rendered * at the same time, e.g. header/page/footer. * - the API key is the same, since we don't want to preview content from other organizations.
250
+ * - if there is content, that the preview ID is the same as that of the one we receive.
251
+ *
252
+ * TO-DO: should we only update the state when there is a change?
253
+ **/
254
+ if (searchParamPreviewModel === props.model &&
255
+ previewApiKey === props.apiKey &&
256
+ (!props.content || searchParamPreviewId === props.content.id)) {
257
+ (0, index_js_1.getContent)({
258
+ model: props.model,
259
+ apiKey: props.apiKey,
260
+ apiVersion: props.apiVersion,
261
+ }).then((content) => {
262
+ if (content) {
263
+ mergeNewContent(content);
264
+ }
265
+ });
266
+ }
267
+ }
268
+ evaluateJsCode();
269
+ runHttpRequests();
270
+ emitStateUpdate();
271
+ }
272
+ }, []);
273
+ (0, react_1.useEffect)(() => {
274
+ if (props.content) {
275
+ mergeNewContent(props.content);
276
+ }
277
+ }, [props.content]);
278
+ (0, react_1.useEffect)(() => {
279
+ evaluateJsCode();
280
+ }, [
281
+ (_b = (_a = props.builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.jsCode,
282
+ props.builderContextSignal.rootState,
283
+ ]);
284
+ (0, react_1.useEffect)(() => {
285
+ runHttpRequests();
286
+ }, [(_d = (_c = props.builderContextSignal.content) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.httpRequests]);
287
+ (0, react_1.useEffect)(() => {
288
+ emitStateUpdate();
289
+ }, [props.builderContextSignal.rootState]);
290
+ (0, react_1.useEffect)(() => {
291
+ return () => {
292
+ if ((0, is_browser_js_1.isBrowser)()) {
293
+ window.removeEventListener("message", processMessage);
294
+ window.removeEventListener("builder:component:stateChangeListenerActivated", emitStateUpdate);
295
+ }
296
+ };
297
+ }, []);
298
+ return (React.createElement(builder_context_js_1.default.Provider, { value: props.builderContextSignal }, props.builderContextSignal.content ? (React.createElement(React.Fragment, null,
299
+ React.createElement(react_native_1.View, { ref: elementRef, onClick: (event) => onClick(event), "builder-content-id": (_e = props.builderContextSignal.content) === null || _e === void 0 ? void 0 : _e.id, "builder-model": props.model, key: forceReRenderCount, ...(target_js_1.TARGET === "reactNative"
300
+ ? {
301
+ dataSet: {
302
+ // currently, we can't set the actual ID here. // we don't need it right now, we just need to identify content divs for testing.
303
+ "builder-content-id": "",
304
+ },
305
+ }
306
+ : {}), ...(props.hideContent
307
+ ? {
308
+ hidden: true,
309
+ "aria-hidden": true,
310
+ }
311
+ : {}) }, props.children))) : null));
312
+ }
313
+ exports.default = EnableEditor;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContextStateInitialValue = exports.getContentInitialValue = void 0;
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ const getContextStateInitialValue = ({ content, data, locale }) => {
24
+ var _a, _b, _c;
25
+ const defaultValues = {};
26
+ (_b = (_a = content == null ? void 0 : content.data) == null ? void 0 : _a.inputs) == null ? void 0 : _b.forEach((input) => {
27
+ var _a2;
28
+ 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) {
29
+ defaultValues[input.name] = input.defaultValue;
30
+ }
31
+ });
32
+ const stateToUse = __spreadValues(__spreadValues(__spreadValues({}, (_c = content == null ? void 0 : content.data) == null ? void 0 : _c.state), data), locale ? { locale } : {});
33
+ return __spreadValues(__spreadValues({}, defaultValues), stateToUse);
34
+ };
35
+ exports.getContextStateInitialValue = getContextStateInitialValue;
36
+ const getContentInitialValue = ({ content, data }) => {
37
+ return !content ? void 0 : __spreadProps(__spreadValues({}, content), {
38
+ data: __spreadValues(__spreadValues({}, content == null ? void 0 : content.data), data),
39
+ meta: content == null ? void 0 : content.meta
40
+ });
41
+ };
42
+ exports.getContentInitialValue = getContentInitialValue;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ const React = __importStar(require("react"));
31
+ const react_native_1 = require("react-native");
32
+ const react_1 = require("react");
33
+ const builder_registered_components_js_1 = require("../../constants/builder-registered-components.js");
34
+ const register_component_js_1 = require("../../functions/register-component.js");
35
+ const blocks_1 = __importDefault(require("../blocks/blocks"));
36
+ const content_styles_1 = __importDefault(require("./components/content-styles"));
37
+ const content_helpers_js_1 = require("./content.helpers.js");
38
+ const target_js_1 = require("../../constants/target.js");
39
+ const helpers_js_1 = require("../content-variants/helpers.js");
40
+ const wrap_component_ref_js_1 = require("./wrap-component-ref.js");
41
+ const enable_editor_1 = __importDefault(require("./components/enable-editor"));
42
+ function Content(props) {
43
+ var _a, _b, _c, _d, _e, _f, _g;
44
+ const [scriptStr, setScriptStr] = (0, react_1.useState)(() => {
45
+ var _a;
46
+ return (0, helpers_js_1.getRenderContentScriptString)({
47
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain
48
+ contentId: (_a = props.content) === null || _a === void 0 ? void 0 : _a.id,
49
+ parentContentId: props.parentContentId,
50
+ });
51
+ });
52
+ function contentSetState(newRootState) {
53
+ builderContextSignal.rootState = newRootState;
54
+ }
55
+ const [customComps, setCustomComps] = (0, react_1.useState)(() => [
56
+ ...(0, builder_registered_components_js_1.getDefaultRegisteredComponents)(),
57
+ // While this `components` object is deprecated, we must maintain support for it.
58
+ // Since users are able to override our default components, we need to make sure that we do not break such
59
+ // existing usage.
60
+ // This is why we spread `components` after the default Builder.io components, but before the `props.customComponents`,
61
+ // which is the new standard way of providing custom components, and must therefore take precedence.
62
+ ...register_component_js_1.components,
63
+ ...(props.customComponents || []),
64
+ ].reduce((acc, info) => ({
65
+ ...acc,
66
+ [info.name]: info,
67
+ }), {}));
68
+ function customComponentsInfo() {
69
+ // TO-DO: fix once we remove `useStore<any>` hack in Qwik generator.
70
+ return Object.values(customComps).reduce((acc, { component: _, ...info }) => ({
71
+ ...acc,
72
+ [info.name]: info,
73
+ }), {});
74
+ }
75
+ function tempContextSignalSetter() {
76
+ return undefined;
77
+ }
78
+ const [builderContextSignal, setBuilderContextSignal] = (0, react_1.useState)(() => ({
79
+ content: (0, content_helpers_js_1.getContentInitialValue)({
80
+ content: props.content,
81
+ data: props.data,
82
+ }),
83
+ localState: undefined,
84
+ rootState: (0, content_helpers_js_1.getContextStateInitialValue)({
85
+ content: props.content,
86
+ data: props.data,
87
+ locale: props.locale,
88
+ }),
89
+ rootSetState: contentSetState,
90
+ context: props.context || {},
91
+ apiKey: props.apiKey,
92
+ apiVersion: props.apiVersion,
93
+ registeredComponents: [
94
+ ...(0, builder_registered_components_js_1.getDefaultRegisteredComponents)(),
95
+ // While this `components` object is deprecated, we must maintain support for it.
96
+ // Since users are able to override our default components, we need to make sure that we do not break such
97
+ // existing usage.
98
+ // This is why we spread `components` after the default Builder.io components, but before the `props.customComponents`,
99
+ // which is the new standard way of providing custom components, and must therefore take precedence.
100
+ ...register_component_js_1.components,
101
+ ...(props.customComponents || []),
102
+ ].reduce((acc, { component, ...curr }) => ({
103
+ ...acc,
104
+ [curr.name]: {
105
+ component: target_js_1.TARGET === "vue3" ? (0, wrap_component_ref_js_1.wrapComponentRef)(component) : component,
106
+ ...curr,
107
+ },
108
+ }), {}),
109
+ inheritedStyles: {},
110
+ }));
111
+ (0, react_1.useEffect)(() => {
112
+ if (!builderContextSignal.content) {
113
+ builderContextSignal.content = (0, content_helpers_js_1.getContentInitialValue)({
114
+ content: props.content,
115
+ data: props.data,
116
+ });
117
+ }
118
+ }, [props.content, props.data, props.locale]);
119
+ return (React.createElement(React.Fragment, null, builderContextSignal.content ? (React.createElement(React.Fragment, null,
120
+ React.createElement(enable_editor_1.default, { content: props.content, model: props.model, data: props.data, context: props.context, apiKey: props.apiKey, apiVersion: props.apiVersion, customComponents: customComponentsInfo(), canTrack: props.canTrack, locale: props.locale, includeRefs: props.includeRefs, enrich: props.enrich, classNameProp: props.classNameProp, hideContent: props.hideContent, parentContentId: props.parentContentId, isSsrAbTest: props.isSsrAbTest, builderContextSignal: builderContextSignal, setBuilderContextSignal: tempContextSignalSetter() },
121
+ props.isSsrAbTest ? (React.createElement(React.Fragment, null,
122
+ React.createElement(react_native_1.ScrollView, { dangerouslySetInnerHTML: { __html: scriptStr } }))) : null,
123
+ target_js_1.TARGET !== "reactNative" ? (React.createElement(React.Fragment, null,
124
+ React.createElement(content_styles_1.default, { contentId: (_a = builderContextSignal.content) === null || _a === void 0 ? void 0 : _a.id, cssCode: (_c = (_b = builderContextSignal.content) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.cssCode, customFonts: (_e = (_d = builderContextSignal.content) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.customFonts }))) : null,
125
+ React.createElement(blocks_1.default, { blocks: (_g = (_f = builderContextSignal.content) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.blocks, context: builderContextSignal, components: customComps })))) : null));
126
+ }
127
+ exports.default = Content;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = void 0;
7
+ const content_1 = __importDefault(require("./content"));
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return content_1.default; } });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapComponentRef = void 0;
4
+ const wrapComponentRef = (component) => component;
5
+ exports.wrapComponentRef = wrapComponentRef;