@builder.io/sdk-react-native 0.1.1 → 0.1.3

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 (183) hide show
  1. package/dist/blocks/BaseText.js +40 -0
  2. package/dist/blocks/button/button.js +39 -0
  3. package/dist/blocks/button/component-info.js +42 -0
  4. package/dist/blocks/columns/columns.js +149 -0
  5. package/dist/blocks/columns/component-info.js +244 -0
  6. package/dist/blocks/custom-code/component-info.js +32 -0
  7. package/dist/blocks/custom-code/custom-code.js +76 -0
  8. package/dist/blocks/embed/component-info.js +47 -0
  9. package/dist/blocks/embed/embed.js +67 -0
  10. package/dist/blocks/embed/helpers.js +10 -0
  11. package/dist/blocks/form/component-info.js +263 -0
  12. package/dist/blocks/form/form.js +232 -0
  13. package/dist/blocks/fragment/component-info.js +12 -0
  14. package/dist/blocks/fragment/fragment.js +36 -0
  15. package/dist/blocks/image/component-info.js +152 -0
  16. package/dist/blocks/image/image.helpers.js +49 -0
  17. package/dist/blocks/image/image.js +81 -0
  18. package/dist/blocks/img/component-info.js +21 -0
  19. package/dist/blocks/img/img.js +35 -0
  20. package/dist/blocks/input/component-info.js +75 -0
  21. package/dist/blocks/input/input.js +32 -0
  22. package/dist/blocks/raw-text/component-info.js +17 -0
  23. package/dist/blocks/raw-text/raw-text.js +31 -0
  24. package/dist/blocks/section/component-info.js +50 -0
  25. package/dist/blocks/section/section.js +49 -0
  26. package/dist/blocks/select/component-info.js +60 -0
  27. package/dist/blocks/select/select.js +38 -0
  28. package/dist/blocks/submit-button/component-info.js +29 -0
  29. package/dist/blocks/submit-button/submit-button.js +36 -0
  30. package/dist/blocks/symbol/component-info.js +44 -0
  31. package/dist/blocks/symbol/symbol.js +97 -0
  32. package/dist/blocks/text/component-info.js +25 -0
  33. package/dist/blocks/text/text.js +112 -0
  34. package/dist/blocks/textarea/component-info.js +48 -0
  35. package/dist/blocks/textarea/textarea.js +31 -0
  36. package/dist/blocks/util.js +9 -0
  37. package/dist/blocks/video/component-info.js +107 -0
  38. package/dist/blocks/video/video.js +81 -0
  39. package/dist/components/render-block/block-styles.js +79 -0
  40. package/dist/components/render-block/render-block.helpers.js +109 -0
  41. package/dist/components/render-block/render-block.js +154 -0
  42. package/dist/components/render-block/render-component-with-context.js +45 -0
  43. package/dist/components/render-block/render-component.js +50 -0
  44. package/dist/components/render-block/render-repeated-block.js +45 -0
  45. package/dist/components/render-block/types.js +1 -0
  46. package/dist/components/render-blocks.js +76 -0
  47. package/dist/components/render-content/builder-editing.js +31 -0
  48. package/dist/components/render-content/components/render-styles.js +91 -0
  49. package/dist/components/render-content/index.js +8 -0
  50. package/dist/components/render-content/render-content.js +325 -0
  51. package/dist/components/render-inlined-styles.js +42 -0
  52. package/dist/constants/builder-registered-components.js +46 -0
  53. package/dist/constants/device-sizes.js +49 -0
  54. package/dist/constants/target.js +5 -0
  55. package/dist/context/builder.context.js +13 -0
  56. package/dist/context/types.js +1 -0
  57. package/dist/functions/camel-to-kebab-case.js +5 -0
  58. package/dist/functions/evaluate.js +25 -0
  59. package/dist/functions/event-handler-name.js +8 -0
  60. package/dist/functions/extract-text-styles.js +23 -0
  61. package/dist/functions/fast-clone.js +5 -0
  62. package/dist/functions/get-block-actions-handler.js +12 -0
  63. package/dist/functions/get-block-actions.js +19 -0
  64. package/dist/functions/get-block-component-options.js +29 -0
  65. package/dist/functions/get-block-properties.js +51 -0
  66. package/dist/functions/get-block-tag.js +8 -0
  67. package/dist/functions/get-builder-search-params/fn.test.js +15 -0
  68. package/dist/functions/get-builder-search-params/index.js +39 -0
  69. package/dist/functions/get-content/ab-testing.js +89 -0
  70. package/dist/functions/get-content/generate-content-url.js +44 -0
  71. package/dist/functions/get-content/generate-content-url.test.js +33 -0
  72. package/dist/functions/get-content/index.js +68 -0
  73. package/dist/functions/get-content/types.js +1 -0
  74. package/dist/functions/get-fetch.js +15 -0
  75. package/dist/functions/get-global-this.js +19 -0
  76. package/dist/functions/get-processed-block.js +52 -0
  77. package/dist/functions/get-processed-block.test.js +34 -0
  78. package/dist/functions/get-react-native-block-styles.js +30 -0
  79. package/dist/functions/if-target.js +13 -0
  80. package/dist/functions/is-browser.js +7 -0
  81. package/dist/functions/is-editing.js +8 -0
  82. package/dist/functions/is-iframe.js +8 -0
  83. package/dist/functions/is-previewing.js +15 -0
  84. package/dist/functions/on-change.js +28 -0
  85. package/dist/functions/on-change.test.js +21 -0
  86. package/dist/functions/register-component.js +65 -0
  87. package/dist/functions/register.js +31 -0
  88. package/dist/functions/sanitize-react-native-block-styles.js +71 -0
  89. package/dist/functions/set-editor-settings.js +16 -0
  90. package/dist/functions/set.js +12 -0
  91. package/dist/functions/set.test.js +18 -0
  92. package/dist/functions/track/helpers.js +53 -0
  93. package/dist/functions/track/index.js +124 -0
  94. package/dist/functions/track/interaction.js +51 -0
  95. package/dist/functions/track.js +120 -0
  96. package/dist/functions/transform-block-properties.js +18 -0
  97. package/dist/functions/transform-block.js +38 -0
  98. package/dist/helpers/ab-tests.js +10 -0
  99. package/dist/helpers/cookie.js +70 -0
  100. package/dist/helpers/css.js +33 -0
  101. package/dist/helpers/flatten.js +35 -0
  102. package/dist/helpers/localStorage.js +31 -0
  103. package/dist/helpers/nullable.js +5 -0
  104. package/dist/helpers/sessionId.js +51 -0
  105. package/dist/helpers/time.js +6 -0
  106. package/dist/helpers/url.js +14 -0
  107. package/dist/helpers/url.test.js +23 -0
  108. package/dist/helpers/uuid.js +14 -0
  109. package/dist/helpers/visitorId.js +33 -0
  110. package/dist/index-helpers/blocks-exports.js +22 -0
  111. package/dist/index-helpers/top-of-file.js +3 -0
  112. package/dist/index.js +29 -0
  113. package/dist/scripts/init-editing.js +97 -0
  114. package/dist/types/builder-block.js +1 -0
  115. package/dist/types/builder-content.js +1 -0
  116. package/dist/types/can-track.js +1 -0
  117. package/dist/types/components.js +1 -0
  118. package/dist/types/deep-partial.js +1 -0
  119. package/dist/types/element.js +1 -0
  120. package/dist/types/targets.js +1 -0
  121. package/dist/types/typescript.js +1 -0
  122. package/package.json +13 -5
  123. package/src/blocks/BaseText.jsx +17 -0
  124. package/src/blocks/button/button.jsx +28 -0
  125. package/src/blocks/columns/{columns.js → columns.jsx} +59 -36
  126. package/src/blocks/custom-code/{custom-code.js → custom-code.jsx} +22 -15
  127. package/src/blocks/embed/{embed.js → embed.jsx} +12 -11
  128. package/src/blocks/form/form.jsx +251 -0
  129. package/src/blocks/fragment/fragment.jsx +11 -0
  130. package/src/blocks/image/image.jsx +78 -0
  131. package/src/blocks/img/img.jsx +18 -0
  132. package/src/blocks/input/input.jsx +20 -0
  133. package/src/blocks/raw-text/raw-text.jsx +6 -0
  134. package/src/blocks/section/section.jsx +29 -0
  135. package/src/blocks/select/select.jsx +24 -0
  136. package/src/blocks/submit-button/submit-button.jsx +11 -0
  137. package/src/blocks/symbol/symbol.jsx +86 -0
  138. package/src/blocks/text/text.jsx +100 -0
  139. package/src/blocks/textarea/textarea.jsx +14 -0
  140. package/src/blocks/video/video.jsx +70 -0
  141. package/src/components/render-block/block-styles.jsx +70 -0
  142. package/src/components/render-block/render-block.helpers.js +90 -0
  143. package/src/components/render-block/render-block.jsx +183 -0
  144. package/src/components/render-block/render-component.jsx +45 -0
  145. package/src/components/render-block/render-repeated-block.jsx +22 -0
  146. package/src/components/render-blocks.jsx +86 -0
  147. package/src/components/render-content/builder-editing.jsx +6 -0
  148. package/src/components/render-content/components/{render-styles.js → render-styles.jsx} +21 -14
  149. package/src/components/render-content/render-content.jsx +373 -0
  150. package/src/components/render-inlined-styles.jsx +29 -0
  151. package/src/functions/track/helpers.js +50 -0
  152. package/src/functions/{track.js → track/index.js} +10 -6
  153. package/src/functions/track/interaction.js +53 -0
  154. package/src/helpers/localStorage.js +1 -0
  155. package/src/helpers/sessionId.js +4 -1
  156. package/src/helpers/url.js +3 -0
  157. package/src/helpers/url.test.js +6 -0
  158. package/src/helpers/visitorId.js +1 -0
  159. package/src/index.js +1 -1
  160. package/src/blocks/BaseText.js +0 -31
  161. package/src/blocks/button/button.js +0 -36
  162. package/src/blocks/form/form.js +0 -222
  163. package/src/blocks/fragment/fragment.js +0 -9
  164. package/src/blocks/image/image.js +0 -55
  165. package/src/blocks/img/img.js +0 -33
  166. package/src/blocks/input/input.js +0 -36
  167. package/src/blocks/raw-text/raw-text.js +0 -10
  168. package/src/blocks/section/section.js +0 -41
  169. package/src/blocks/select/select.js +0 -37
  170. package/src/blocks/submit-button/submit-button.js +0 -27
  171. package/src/blocks/symbol/symbol.js +0 -73
  172. package/src/blocks/text/text.js +0 -67
  173. package/src/blocks/textarea/textarea.js +0 -32
  174. package/src/blocks/video/video.js +0 -55
  175. package/src/components/render-block/block-styles.js +0 -50
  176. package/src/components/render-block/render-block.js +0 -202
  177. package/src/components/render-block/render-component-with-context.js +0 -35
  178. package/src/components/render-block/render-component.js +0 -35
  179. package/src/components/render-block/render-repeated-block.js +0 -33
  180. package/src/components/render-blocks.js +0 -63
  181. package/src/components/render-content/builder-editing.js +0 -8
  182. package/src/components/render-content/render-content.js +0 -296
  183. package/src/components/render-inlined-styles.js +0 -17
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEventHandler = void 0;
4
+ const evaluate_js_1 = require("./evaluate.js");
5
+ const createEventHandler = (value, options) => (event) => (0, evaluate_js_1.evaluate)({
6
+ code: value,
7
+ context: options.context,
8
+ state: options.state,
9
+ event,
10
+ isExpression: false
11
+ });
12
+ exports.createEventHandler = createEventHandler;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockActions = void 0;
4
+ const event_handler_name_js_1 = require("./event-handler-name.js");
5
+ const get_block_actions_handler_js_1 = require("./get-block-actions-handler.js");
6
+ function getBlockActions(options) {
7
+ var _a;
8
+ const obj = {};
9
+ const optionActions = (_a = options.block.actions) != null ? _a : {};
10
+ for (const key in optionActions) {
11
+ if (!optionActions.hasOwnProperty(key)) {
12
+ continue;
13
+ }
14
+ const value = optionActions[key];
15
+ obj[(0, event_handler_name_js_1.getEventHandlerName)(key)] = (0, get_block_actions_handler_js_1.createEventHandler)(value, options);
16
+ }
17
+ return obj;
18
+ }
19
+ exports.getBlockActions = getBlockActions;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockComponentOptions = 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
+ function getBlockComponentOptions(block) {
24
+ var _a;
25
+ return __spreadProps(__spreadValues(__spreadValues({}, (_a = block.component) == null ? void 0 : _a.options), block.options), {
26
+ builderBlock: block
27
+ });
28
+ }
29
+ exports.getBlockComponentOptions = getBlockComponentOptions;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockProperties = 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 target_js_1 = require("../constants/target.js");
24
+ const css_js_1 = require("../helpers/css.js");
25
+ const transform_block_properties_js_1 = require("./transform-block-properties.js");
26
+ function getBlockProperties(block) {
27
+ var _a;
28
+ const properties = __spreadProps(__spreadValues({}, block.properties), {
29
+ "builder-id": block.id,
30
+ style: getStyleAttribute(block.style),
31
+ class: [block.id, "builder-block", block.class, (_a = block.properties) == null ? void 0 : _a.class].filter(Boolean).join(" ")
32
+ });
33
+ return (0, transform_block_properties_js_1.transformBlockProperties)(properties);
34
+ }
35
+ exports.getBlockProperties = getBlockProperties;
36
+ function getStyleAttribute(style) {
37
+ if (!style) {
38
+ return void 0;
39
+ }
40
+ switch (target_js_1.TARGET) {
41
+ case "svelte":
42
+ case "vue2":
43
+ case "vue3":
44
+ case "solid":
45
+ return (0, css_js_1.convertStyleMapToCSSArray)(style).join(" ");
46
+ case "qwik":
47
+ case "reactNative":
48
+ case "react":
49
+ return style;
50
+ }
51
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockTag = void 0;
4
+ const react_native_1 = require("react-native");
5
+ function getBlockTag(_block) {
6
+ return react_native_1.View;
7
+ }
8
+ exports.getBlockTag = getBlockTag;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const querystring = "someotherValue=jklsjfdal&abc=klfdjklgfds&builder.cachebust=true&builder.preview=page&builder.noCache=true&__builder_editing__=true&builder.overrides.page=037948e52eaf4743afed464f02c70da4&builder.overrides.037948e52eaf4743afed464f02c70da4=037948e52eaf4743afed464f02c70da4&builder.overrides.page%3A%2F=037948e52eaf4743afed464f02c70da4&preview_theme_id=128854393017";
5
+ const url = new URL(`localhost:3000/about-us?${querystring}`);
6
+ describe("Get Builder SearchParams", () => {
7
+ test("correctly converts URLSearchParams to object", () => {
8
+ const output = (0, _1.convertSearchParamsToQueryObject)(url.searchParams);
9
+ expect(output).toMatchSnapshot();
10
+ });
11
+ test("correctly extracts all builder params from a query object", () => {
12
+ const output = (0, _1.getBuilderSearchParams)((0, _1.convertSearchParamsToQueryObject)(url.searchParams));
13
+ expect(output).toMatchSnapshot();
14
+ });
15
+ });
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeSearchParams = exports.getBuilderSearchParamsFromWindow = exports.getBuilderSearchParams = exports.convertSearchParamsToQueryObject = void 0;
4
+ const is_browser_js_1 = require("../is-browser.js");
5
+ const BUILDER_SEARCHPARAMS_PREFIX = "builder.";
6
+ const BUILDER_OPTIONS_PREFIX = "options.";
7
+ const convertSearchParamsToQueryObject = (searchParams) => {
8
+ const options = {};
9
+ searchParams.forEach((value, key) => {
10
+ options[key] = value;
11
+ });
12
+ return options;
13
+ };
14
+ exports.convertSearchParamsToQueryObject = convertSearchParamsToQueryObject;
15
+ const getBuilderSearchParams = (_options) => {
16
+ if (!_options) {
17
+ return {};
18
+ }
19
+ const options = normalizeSearchParams(_options);
20
+ const newOptions = {};
21
+ Object.keys(options).forEach((key) => {
22
+ if (key.startsWith(BUILDER_SEARCHPARAMS_PREFIX)) {
23
+ const trimmedKey = key.replace(BUILDER_SEARCHPARAMS_PREFIX, "").replace(BUILDER_OPTIONS_PREFIX, "");
24
+ newOptions[trimmedKey] = options[key];
25
+ }
26
+ });
27
+ return newOptions;
28
+ };
29
+ exports.getBuilderSearchParams = getBuilderSearchParams;
30
+ const getBuilderSearchParamsFromWindow = () => {
31
+ if (!(0, is_browser_js_1.isBrowser)()) {
32
+ return {};
33
+ }
34
+ const searchParams = new URLSearchParams(window.location.search);
35
+ return getBuilderSearchParams(searchParams);
36
+ };
37
+ exports.getBuilderSearchParamsFromWindow = getBuilderSearchParamsFromWindow;
38
+ const normalizeSearchParams = (searchParams) => searchParams instanceof URLSearchParams ? convertSearchParamsToQueryObject(searchParams) : searchParams;
39
+ exports.normalizeSearchParams = normalizeSearchParams;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleABTesting = void 0;
4
+ var __async = (__this, __arguments, generator) => {
5
+ return new Promise((resolve, reject) => {
6
+ var fulfilled = (value) => {
7
+ try {
8
+ step(generator.next(value));
9
+ }
10
+ catch (e) {
11
+ reject(e);
12
+ }
13
+ };
14
+ var rejected = (value) => {
15
+ try {
16
+ step(generator.throw(value));
17
+ }
18
+ catch (e) {
19
+ reject(e);
20
+ }
21
+ };
22
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
23
+ step((generator = generator.apply(__this, __arguments)).next());
24
+ });
25
+ };
26
+ const ab_tests_js_1 = require("../../helpers/ab-tests.js");
27
+ const nullable_js_1 = require("../../helpers/nullable.js");
28
+ const checkIsBuilderContentWithVariations = (item) => (0, nullable_js_1.checkIsDefined)(item.id) && (0, nullable_js_1.checkIsDefined)(item.variations) && Object.keys(item.variations).length > 0;
29
+ const getRandomVariationId = ({ id, variations }) => {
30
+ var _a;
31
+ let n = 0;
32
+ const random = Math.random();
33
+ for (const id2 in variations) {
34
+ const testRatio = (_a = variations[id2]) == null ? void 0 : _a.testRatio;
35
+ n += testRatio;
36
+ if (random < n) {
37
+ return id2;
38
+ }
39
+ }
40
+ return id;
41
+ };
42
+ const getTestFields = ({ item, testGroupId }) => {
43
+ const variationValue = item.variations[testGroupId];
44
+ if (testGroupId === item.id || !variationValue) {
45
+ return {
46
+ testVariationId: item.id,
47
+ testVariationName: "Default"
48
+ };
49
+ }
50
+ else {
51
+ return {
52
+ data: variationValue.data,
53
+ testVariationId: variationValue.id,
54
+ testVariationName: variationValue.name || (variationValue.id === item.id ? "Default" : "")
55
+ };
56
+ }
57
+ };
58
+ const getContentVariation = (_0) => __async(void 0, [_0], function* ({ item, canTrack }) {
59
+ const testGroupId = yield (0, ab_tests_js_1.getContentVariationCookie)({
60
+ canTrack,
61
+ contentId: item.id
62
+ });
63
+ const testFields = testGroupId ? getTestFields({ item, testGroupId }) : void 0;
64
+ if (testFields) {
65
+ return testFields;
66
+ }
67
+ else {
68
+ const randomVariationId = getRandomVariationId({
69
+ variations: item.variations,
70
+ id: item.id
71
+ });
72
+ (0, ab_tests_js_1.setContentVariationCookie)({
73
+ contentId: item.id,
74
+ value: randomVariationId,
75
+ canTrack
76
+ }).catch((err) => {
77
+ console.error("could not store A/B test variation: ", err);
78
+ });
79
+ return getTestFields({ item, testGroupId: randomVariationId });
80
+ }
81
+ });
82
+ const handleABTesting = (_0) => __async(void 0, [_0], function* ({ item, canTrack }) {
83
+ if (!checkIsBuilderContentWithVariations(item)) {
84
+ return;
85
+ }
86
+ const variationValue = yield getContentVariation({ item, canTrack });
87
+ Object.assign(item, variationValue);
88
+ });
89
+ exports.handleABTesting = handleABTesting;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateContentUrl = void 0;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ const flatten_js_1 = require("../../helpers/flatten.js");
21
+ const index_js_1 = require("../get-builder-search-params/index.js");
22
+ const generateContentUrl = (options) => {
23
+ const { limit = 30, userAttributes, query, noTraverse = false, model, apiKey, includeRefs = true, locale } = options;
24
+ if (!apiKey) {
25
+ throw new Error("Missing API key");
26
+ }
27
+ const url = new URL(`https://cdn.builder.io/api/v2/content/${model}?apiKey=${apiKey}&limit=${limit}&noTraverse=${noTraverse}&includeRefs=${includeRefs}${locale ? `&locale=${locale}` : ""}`);
28
+ const queryOptions = __spreadValues(__spreadValues({}, (0, index_js_1.getBuilderSearchParamsFromWindow)()), (0, index_js_1.normalizeSearchParams)(options.options || {}));
29
+ const flattened = (0, flatten_js_1.flatten)(queryOptions);
30
+ for (const key in flattened) {
31
+ url.searchParams.set(key, String(flattened[key]));
32
+ }
33
+ if (userAttributes) {
34
+ url.searchParams.set("userAttributes", JSON.stringify(userAttributes));
35
+ }
36
+ if (query) {
37
+ const flattened2 = (0, flatten_js_1.flatten)({ query });
38
+ for (const key in flattened2) {
39
+ url.searchParams.set(key, JSON.stringify(flattened2[key]));
40
+ }
41
+ }
42
+ return url;
43
+ };
44
+ exports.generateContentUrl = generateContentUrl;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const generate_content_url_1 = require("./generate-content-url");
4
+ const testKey = "YJIGb4i01jvw0SRdL5Bt";
5
+ const testModel = "page";
6
+ const testId = "c1b81bab59704599b997574eb0736def";
7
+ const options = {
8
+ cachebust: "true",
9
+ noCache: "true",
10
+ "overrides.037948e52eaf4743afed464f02c70da4": "037948e52eaf4743afed464f02c70da4",
11
+ "overrides.page": "037948e52eaf4743afed464f02c70da4",
12
+ "overrides.page:/": "037948e52eaf4743afed464f02c70da4",
13
+ preview: "page"
14
+ };
15
+ describe("Generate Content URL", () => {
16
+ test("generates the proper value for a simple query", () => {
17
+ const output = (0, generate_content_url_1.generateContentUrl)({
18
+ apiKey: testKey,
19
+ model: testModel,
20
+ query: { id: testId }
21
+ });
22
+ expect(output).toMatchSnapshot();
23
+ });
24
+ test("Handles overrides correctly", () => {
25
+ const output = (0, generate_content_url_1.generateContentUrl)({
26
+ apiKey: testKey,
27
+ model: testModel,
28
+ query: { id: testId },
29
+ options
30
+ });
31
+ expect(output).toMatchSnapshot();
32
+ });
33
+ });
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContent = exports.getAllContent = 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
+ var __async = (__this, __arguments, generator) => {
24
+ return new Promise((resolve, reject) => {
25
+ var fulfilled = (value) => {
26
+ try {
27
+ step(generator.next(value));
28
+ }
29
+ catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var rejected = (value) => {
34
+ try {
35
+ step(generator.throw(value));
36
+ }
37
+ catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
42
+ step((generator = generator.apply(__this, __arguments)).next());
43
+ });
44
+ };
45
+ const get_fetch_js_1 = require("../get-fetch.js");
46
+ const ab_testing_js_1 = require("./ab-testing.js");
47
+ const generate_content_url_js_1 = require("./generate-content-url.js");
48
+ function getContent(options) {
49
+ return __async(this, null, function* () {
50
+ return (yield getAllContent(__spreadProps(__spreadValues({}, options), { limit: 1 }))).results[0] || null;
51
+ });
52
+ }
53
+ exports.getContent = getContent;
54
+ function getAllContent(options) {
55
+ return __async(this, null, function* () {
56
+ const url = (0, generate_content_url_js_1.generateContentUrl)(options);
57
+ const res = yield (0, get_fetch_js_1.fetch)(url.href);
58
+ const content = yield res.json();
59
+ const canTrack = options.canTrack !== false;
60
+ if (canTrack && Array.isArray(content.results)) {
61
+ for (const item of content.results) {
62
+ yield (0, ab_testing_js_1.handleABTesting)({ item, canTrack });
63
+ }
64
+ }
65
+ return content;
66
+ });
67
+ }
68
+ exports.getAllContent = getAllContent;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetch = void 0;
4
+ const get_global_this_js_1 = require("./get-global-this.js");
5
+ function getFetch() {
6
+ const globalFetch = (0, get_global_this_js_1.getGlobalThis)().fetch;
7
+ if (typeof globalFetch === "undefined") {
8
+ console.warn(`Builder SDK could not find a global fetch function. Make sure you have a polyfill for fetch in your project.
9
+ For more information, read https://github.com/BuilderIO/this-package-uses-fetch`);
10
+ throw new Error("Builder SDK could not find a global `fetch` function");
11
+ }
12
+ return globalFetch;
13
+ }
14
+ const fetch = getFetch();
15
+ exports.fetch = fetch;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGlobalThis = void 0;
4
+ function getGlobalThis() {
5
+ if (typeof globalThis !== "undefined") {
6
+ return globalThis;
7
+ }
8
+ if (typeof window !== "undefined") {
9
+ return window;
10
+ }
11
+ if (typeof global !== "undefined") {
12
+ return global;
13
+ }
14
+ if (typeof self !== "undefined") {
15
+ return self;
16
+ }
17
+ return globalThis;
18
+ }
19
+ exports.getGlobalThis = getGlobalThis;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProcessedBlock = 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 evaluate_js_1 = require("./evaluate.js");
24
+ const fast_clone_js_1 = require("./fast-clone.js");
25
+ const set_js_1 = require("./set.js");
26
+ const transform_block_js_1 = require("./transform-block.js");
27
+ const evaluateBindings = ({ block, context, state }) => {
28
+ if (!block.bindings) {
29
+ return block;
30
+ }
31
+ const copy = (0, fast_clone_js_1.fastClone)(block);
32
+ const copied = __spreadProps(__spreadValues({}, copy), {
33
+ properties: __spreadValues({}, copy.properties),
34
+ actions: __spreadValues({}, copy.actions)
35
+ });
36
+ for (const binding in block.bindings) {
37
+ const expression = block.bindings[binding];
38
+ const value = (0, evaluate_js_1.evaluate)({ code: expression, state, context });
39
+ (0, set_js_1.set)(copied, binding, value);
40
+ }
41
+ return copied;
42
+ };
43
+ function getProcessedBlock({ block, context, shouldEvaluateBindings, state }) {
44
+ const transformedBlock = (0, transform_block_js_1.transformBlock)(block);
45
+ if (shouldEvaluateBindings) {
46
+ return evaluateBindings({ block: transformedBlock, state, context });
47
+ }
48
+ else {
49
+ return transformedBlock;
50
+ }
51
+ }
52
+ exports.getProcessedBlock = getProcessedBlock;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const get_processed_block_js_1 = require("./get-processed-block.js");
4
+ test("Can process bindings", () => {
5
+ var _a, _b, _c, _d, _e, _f;
6
+ const block = {
7
+ "@type": "@builder.io/sdk:Element",
8
+ properties: {
9
+ foo: "bar"
10
+ },
11
+ bindings: {
12
+ "properties.foo": '"baz"',
13
+ "responsiveStyles.large.zIndex": "1 + 1",
14
+ "properties.test": "state.test",
15
+ "properties.block": `
16
+ const foo = 'bar';
17
+ return foo;
18
+ `,
19
+ "properties.isEditing": "builder.isEditing"
20
+ }
21
+ };
22
+ const processed = (0, get_processed_block_js_1.getProcessedBlock)({
23
+ block,
24
+ context: {},
25
+ state: { test: "hello" },
26
+ shouldEvaluateBindings: true
27
+ });
28
+ expect(processed).not.toEqual(block);
29
+ expect((_a = processed.properties) == null ? void 0 : _a.foo).toEqual("baz");
30
+ expect((_b = processed.properties) == null ? void 0 : _b.test).toEqual("hello");
31
+ expect((_c = processed.properties) == null ? void 0 : _c.block).toEqual("bar");
32
+ expect((_d = processed.properties) == null ? void 0 : _d.isEditing).toEqual(false);
33
+ expect((_f = (_e = processed.responsiveStyles) == null ? void 0 : _e.large) == null ? void 0 : _f.zIndex).toEqual(2);
34
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getReactNativeBlockStyles = void 0;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ const sanitize_react_native_block_styles_js_1 = require("./sanitize-react-native-block-styles.js");
21
+ function getReactNativeBlockStyles({ block, context, blockStyles }) {
22
+ const responsiveStyles = block.responsiveStyles;
23
+ if (!responsiveStyles) {
24
+ return {};
25
+ }
26
+ const styles = __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, context.inheritedStyles), responsiveStyles.large || {}), responsiveStyles.medium || {}), responsiveStyles.small || {}), blockStyles);
27
+ const newStyles = (0, sanitize_react_native_block_styles_js_1.sanitizeReactNativeBlockStyles)(styles);
28
+ return newStyles;
29
+ }
30
+ exports.getReactNativeBlockStyles = getReactNativeBlockStyles;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ifTarget = void 0;
4
+ const target_js_1 = require("../constants/target.js");
5
+ function ifTarget({ targets, doThing, elseThing }) {
6
+ if (target_js_1.TARGET && targets.includes(target_js_1.TARGET)) {
7
+ return doThing();
8
+ }
9
+ else {
10
+ return elseThing == null ? void 0 : elseThing();
11
+ }
12
+ }
13
+ exports.ifTarget = ifTarget;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBrowser = void 0;
4
+ function isBrowser() {
5
+ return typeof window !== "undefined" && typeof document !== "undefined";
6
+ }
7
+ exports.isBrowser = isBrowser;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEditing = void 0;
4
+ const is_iframe_js_1 = require("./is-iframe.js");
5
+ function isEditing() {
6
+ return (0, is_iframe_js_1.isIframe)() && window.location.search.indexOf("builder.frameEditing=") !== -1;
7
+ }
8
+ exports.isEditing = isEditing;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isIframe = void 0;
4
+ const is_browser_js_1 = require("./is-browser.js");
5
+ function isIframe() {
6
+ return (0, is_browser_js_1.isBrowser)() && window.self !== window.top;
7
+ }
8
+ exports.isIframe = isIframe;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPreviewing = void 0;
4
+ const is_browser_js_1 = require("./is-browser.js");
5
+ const is_editing_js_1 = require("./is-editing.js");
6
+ function isPreviewing() {
7
+ if (!(0, is_browser_js_1.isBrowser)()) {
8
+ return false;
9
+ }
10
+ if ((0, is_editing_js_1.isEditing)()) {
11
+ return false;
12
+ }
13
+ return Boolean(location.search.indexOf("builder.preview=") !== -1);
14
+ }
15
+ exports.isPreviewing = isPreviewing;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.onChangeProxySymbol = exports.onChange = void 0;
4
+ const onChangeProxySymbol = Symbol("onChangeProxySymbol");
5
+ exports.onChangeProxySymbol = onChangeProxySymbol;
6
+ function onChange(obj, cb) {
7
+ return new Proxy(obj, {
8
+ get(target, key) {
9
+ if (key === onChangeProxySymbol) {
10
+ return true;
11
+ }
12
+ const value = Reflect.get(target, key);
13
+ if (value && typeof value === "object") {
14
+ if (value[onChangeProxySymbol]) {
15
+ return value;
16
+ }
17
+ return onChange(value, cb);
18
+ }
19
+ return value;
20
+ },
21
+ set(target, key, value) {
22
+ const returnValue = Reflect.set(target, key, value);
23
+ cb();
24
+ return returnValue;
25
+ }
26
+ });
27
+ }
28
+ exports.onChange = onChange;