@builder.io/sdk-react-native 0.0.1-49 → 0.0.1-51

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 (142) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/package.json +1 -1
  3. package/src/blocks/button/button.js +31 -0
  4. package/src/blocks/{button.lite.tsx → button/button.lite.tsx} +3 -3
  5. package/src/blocks/button/component-info.js +42 -0
  6. package/src/blocks/columns/columns.js +59 -0
  7. package/src/blocks/{columns.lite.tsx → columns/columns.lite.tsx} +22 -21
  8. package/src/blocks/columns/component-info.js +218 -0
  9. package/src/blocks/custom-code/component-info.js +32 -0
  10. package/src/blocks/custom-code/custom-code.js +50 -0
  11. package/src/blocks/{custom-code.lite.tsx → custom-code/custom-code.lite.tsx} +11 -11
  12. package/src/blocks/embed/component-info.js +25 -0
  13. package/src/blocks/embed/embed.js +50 -0
  14. package/src/blocks/{embed.lite.tsx → embed/embed.lite.tsx} +11 -11
  15. package/src/blocks/form/component-info.js +263 -0
  16. package/src/blocks/form/form.js +221 -0
  17. package/src/blocks/{form.lite.tsx → form/form.lite.tsx} +51 -50
  18. package/src/blocks/fragment/component-info.js +12 -0
  19. package/src/blocks/fragment/fragment.js +8 -0
  20. package/src/blocks/{fragment.lite.tsx → fragment/fragment.lite.tsx} +2 -2
  21. package/src/blocks/image/component-info.js +105 -0
  22. package/src/blocks/image/image.js +41 -0
  23. package/src/blocks/{image.lite.tsx → image/image.lite.tsx} +11 -11
  24. package/src/blocks/img/component-info.js +21 -0
  25. package/src/blocks/img/img.js +36 -0
  26. package/src/blocks/img/img.lite.tsx +18 -0
  27. package/src/blocks/input/component-info.js +75 -0
  28. package/src/blocks/input/input.js +36 -0
  29. package/src/blocks/{input.lite.tsx → input/input.lite.tsx} +4 -4
  30. package/src/blocks/raw-text/component-info.js +17 -0
  31. package/src/blocks/raw-text/raw-text.js +10 -0
  32. package/src/blocks/raw-text/raw-text.lite.tsx +6 -0
  33. package/src/blocks/section/component-info.js +50 -0
  34. package/src/blocks/section/section.js +31 -0
  35. package/src/blocks/{section.lite.tsx → section/section.lite.tsx} +3 -3
  36. package/src/blocks/select/component-info.js +60 -0
  37. package/src/blocks/select/select.js +36 -0
  38. package/src/blocks/{select.lite.tsx → select/select.lite.tsx} +4 -4
  39. package/src/blocks/submit-button/component-info.js +29 -0
  40. package/src/blocks/submit-button/submit-button.js +29 -0
  41. package/src/blocks/{submit-button.lite.tsx → submit-button/submit-button.lite.tsx} +2 -2
  42. package/src/blocks/symbol/component-info.js +43 -0
  43. package/src/blocks/symbol/symbol.js +68 -0
  44. package/src/blocks/symbol/symbol.lite.tsx +60 -0
  45. package/src/blocks/text/component-info.js +25 -0
  46. package/src/blocks/text/text.js +65 -0
  47. package/src/blocks/text/text.lite.tsx +6 -0
  48. package/src/blocks/textarea/component-info.js +48 -0
  49. package/src/blocks/textarea/textarea.js +32 -0
  50. package/src/blocks/{textarea.lite.tsx → textarea/textarea.lite.tsx} +2 -2
  51. package/src/blocks/video/component-info.js +107 -0
  52. package/src/blocks/video/video.js +33 -0
  53. package/src/blocks/{video.lite.tsx → video/video.lite.tsx} +5 -5
  54. package/src/components/error-boundary.js +9 -11
  55. package/src/components/error-boundary.lite.tsx +2 -2
  56. package/src/components/render-block/block-styles.js +29 -0
  57. package/src/components/render-block/block-styles.lite.tsx +35 -0
  58. package/src/components/render-block/render-block.helpers.js +24 -0
  59. package/src/components/render-block/render-block.js +116 -0
  60. package/src/components/render-block/render-block.lite.tsx +139 -0
  61. package/src/components/render-blocks.js +35 -61
  62. package/src/components/render-blocks.lite.tsx +11 -11
  63. package/src/components/render-content/components/render-styles.js +58 -0
  64. package/src/components/render-content/components/render-styles.lite.tsx +70 -0
  65. package/src/components/render-content/index.js +5 -0
  66. package/src/components/render-content/render-content.js +254 -0
  67. package/src/components/render-content/render-content.lite.tsx +283 -0
  68. package/src/components/render-inlined-styles.js +18 -0
  69. package/src/components/render-inlined-styles.lite.tsx +31 -0
  70. package/src/constants/builder-registered-components.js +27 -0
  71. package/src/constants/device-sizes.js +11 -8
  72. package/src/constants/target.js +5 -0
  73. package/src/context/builder.context.js +11 -3
  74. package/src/functions/evaluate.js +20 -20
  75. package/src/functions/event-handler-name.js +3 -1
  76. package/src/functions/fast-clone.js +5 -0
  77. package/src/functions/get-block-actions.js +17 -16
  78. package/src/functions/get-block-component-options.js +9 -16
  79. package/src/functions/get-block-properties.js +14 -18
  80. package/src/functions/get-block-styles.js +17 -34
  81. package/src/functions/get-block-tag.js +4 -2
  82. package/src/functions/get-builder-search-params/fn.test.js +6 -10
  83. package/src/functions/get-builder-search-params/index.js +6 -3
  84. package/src/functions/get-content/fn.test.js +15 -17
  85. package/src/functions/get-content/index.js +25 -42
  86. package/src/functions/get-fetch.js +32 -8
  87. package/src/functions/get-global-this.js +7 -5
  88. package/src/functions/get-processed-block.js +13 -17
  89. package/src/functions/get-processed-block.test.js +16 -27
  90. package/src/functions/if-target.js +14 -3
  91. package/src/functions/is-browser.js +4 -2
  92. package/src/functions/is-editing.js +5 -5
  93. package/src/functions/is-iframe.js +4 -2
  94. package/src/functions/is-previewing.js +6 -4
  95. package/src/functions/is-react-native.js +3 -1
  96. package/src/functions/macro-eval.js +5 -2
  97. package/src/functions/on-change.js +7 -4
  98. package/src/functions/on-change.test.js +9 -10
  99. package/src/functions/previewing-model-name.js +5 -3
  100. package/src/functions/register-component.js +33 -44
  101. package/src/functions/register.js +10 -8
  102. package/src/functions/set-editor-settings.js +7 -5
  103. package/src/functions/set.js +5 -14
  104. package/src/functions/set.test.js +13 -14
  105. package/src/functions/track.js +13 -7
  106. package/src/functions/transform-block.js +13 -17
  107. package/src/index-helpers/blocks-exports.js +9 -9
  108. package/src/index-helpers/top-of-file.js +1 -1
  109. package/src/index.js +10 -12
  110. package/src/scripts/init-editing.js +74 -88
  111. package/src/types/components.js +1 -0
  112. package/src/types/element.js +1 -0
  113. package/src/types/targets.js +1 -0
  114. package/src/types/typescript.js +1 -0
  115. package/src/blocks/button.js +0 -86
  116. package/src/blocks/columns.js +0 -293
  117. package/src/blocks/custom-code.js +0 -83
  118. package/src/blocks/embed.js +0 -77
  119. package/src/blocks/form.js +0 -521
  120. package/src/blocks/fragment.js +0 -21
  121. package/src/blocks/image.js +0 -165
  122. package/src/blocks/img.js +0 -64
  123. package/src/blocks/img.lite.tsx +0 -18
  124. package/src/blocks/input.js +0 -113
  125. package/src/blocks/raw-text.js +0 -17
  126. package/src/blocks/raw-text.lite.tsx +0 -6
  127. package/src/blocks/section.js +0 -84
  128. package/src/blocks/select.js +0 -91
  129. package/src/blocks/submit-button.js +0 -60
  130. package/src/blocks/symbol.js +0 -20
  131. package/src/blocks/symbol.lite.tsx +0 -20
  132. package/src/blocks/text.js +0 -100
  133. package/src/blocks/text.lite.tsx +0 -6
  134. package/src/blocks/textarea.js +0 -73
  135. package/src/blocks/video.js +0 -100
  136. package/src/components/block-styles.js +0 -5
  137. package/src/components/block-styles.lite.tsx +0 -6
  138. package/src/components/render-block.js +0 -164
  139. package/src/components/render-block.lite.tsx +0 -132
  140. package/src/components/render-content.js +0 -220
  141. package/src/components/render-content.lite.tsx +0 -206
  142. package/src/functions/get-target.js +0 -5
@@ -1,206 +0,0 @@
1
- import * as React from 'react';
2
- import { View, StyleSheet, Image, Text } from 'react-native';
3
- import { useState, useContext, useEffect } from 'react';
4
- import { isBrowser } from '../functions/is-browser';
5
- import BuilderContext from '../context/builder.context.lite';
6
- import { track } from '../functions/track';
7
- import { ifTarget } from '../functions/if-target';
8
- import { onChange } from '../functions/on-change';
9
- import { isReactNative } from '../functions/is-react-native';
10
- import { isEditing } from '../functions/is-editing';
11
- import { isPreviewing } from '../functions/is-previewing';
12
- import { previewingModelName } from '../functions/previewing-model-name';
13
- import { getContent } from '../functions/get-content';
14
- import {
15
- convertSearchParamsToQueryObject,
16
- getBuilderSearchParams,
17
- } from '../functions/get-builder-search-params';
18
- import RenderBlocks from './render-blocks.lite';
19
-
20
- export default function RenderContent(props) {
21
- function useContent() {
22
- return overrideContent || props.content;
23
- }
24
-
25
- const [update, setUpdate] = useState(() => 0);
26
-
27
- const [state, setState] = useState(() => ({}));
28
-
29
- const [context, setContext] = useState(() => ({}));
30
-
31
- const [overrideContent, setOverrideContent] = useState(() => null);
32
-
33
- function getCssFromFont(font, data) {
34
- // TODO: compute what font sizes are used and only load those.......
35
- const family =
36
- font.family +
37
- (font.kind && !font.kind.includes('#') ? ', ' + font.kind : '');
38
- const name = family.split(',')[0];
39
- const url = font.fileUrl ?? font?.files?.regular;
40
- let str = '';
41
-
42
- if (url && family && name) {
43
- str += `
44
- @font-face {
45
- font-family: "${family}";
46
- src: local("${name}"), url('${url}') format('woff2');
47
- font-display: fallback;
48
- font-weight: 400;
49
- }
50
- `.trim();
51
- }
52
-
53
- if (font.files) {
54
- for (const weight in font.files) {
55
- const isNumber = String(Number(weight)) === weight;
56
-
57
- if (!isNumber) {
58
- continue;
59
- } // TODO: maybe limit number loaded
60
-
61
- const weightUrl = font.files[weight];
62
-
63
- if (weightUrl && weightUrl !== url) {
64
- str += `
65
- @font-face {
66
- font-family: "${family}";
67
- src: url('${weightUrl}') format('woff2');
68
- font-display: fallback;
69
- font-weight: ${weight};
70
- }
71
- `.trim();
72
- }
73
- }
74
- }
75
-
76
- return str;
77
- }
78
-
79
- function getFontCss(data) {
80
- // TODO: flag for this
81
- // if (!builder.allowCustomFonts) {
82
- // return '';
83
- // }
84
- // TODO: separate internal data from external
85
- return (
86
- data?.customFonts?.map((font) => getCssFromFont(font, data))?.join(' ') ||
87
- ''
88
- );
89
- }
90
-
91
- function processMessage(event) {
92
- const { data } = event;
93
-
94
- if (data) {
95
- switch (data.type) {
96
- case 'builder.contentUpdate': {
97
- const key =
98
- data.data.key ||
99
- data.data.alias ||
100
- data.data.entry ||
101
- data.data.modelName;
102
- const contentData = data.data.data; // oof
103
-
104
- if (key === props.model) {
105
- setOverrideContent(contentData);
106
- }
107
-
108
- break;
109
- }
110
-
111
- case 'builder.patchUpdates': {
112
- // TODO
113
- break;
114
- }
115
- }
116
- }
117
- }
118
-
119
- useEffect(() => {
120
- if (isBrowser()) {
121
- if (isEditing()) {
122
- window.addEventListener('message', processMessage);
123
- }
124
-
125
- if (useContent() && !isEditing()) {
126
- track('impression', {
127
- contentId: useContent().id,
128
- });
129
- }
130
-
131
- if (isPreviewing()) {
132
- if (props.model && previewingModelName() === props.model) {
133
- const currentUrl = new URL(location.href);
134
- const apiKey = currentUrl.searchParams.get('apiKey');
135
-
136
- if (apiKey) {
137
- getContent({
138
- model: props.model,
139
- apiKey,
140
- options: getBuilderSearchParams(
141
- convertSearchParamsToQueryObject(currentUrl.searchParams)
142
- ),
143
- }).then((content) => {
144
- if (content) {
145
- setOverrideContent(content);
146
- }
147
- });
148
- }
149
- }
150
- }
151
- }
152
- }, []);
153
-
154
- useEffect(() => {
155
- return () => {
156
- if (isBrowser()) {
157
- window.removeEventListener('message', processMessage);
158
- }
159
- };
160
- }, []);
161
-
162
- return (
163
- <BuilderContext.Provider
164
- value={{
165
- get content() {
166
- return useContent();
167
- },
168
-
169
- get state() {
170
- return state;
171
- },
172
-
173
- get context() {
174
- return context;
175
- },
176
- }}
177
- >
178
- {useContent() ? (
179
- <>
180
- <View
181
- onClick={(event) => {
182
- if (!isEditing()) {
183
- track('click', {
184
- contentId: useContent().id,
185
- });
186
- }
187
- }}
188
- data-builder-content-id={useContent?.()?.id}
189
- >
190
- {(useContent?.()?.data?.cssCode ||
191
- useContent?.()?.data?.customFonts?.length) &&
192
- !isReactNative() ? (
193
- <View>
194
- <Text>{useContent().data.cssCode}</Text>
195
-
196
- <Text>{getFontCss(useContent().data)}</Text>
197
- </View>
198
- ) : null}
199
-
200
- <RenderBlocks blocks={useContent?.()?.data?.blocks} />
201
- </View>
202
- </>
203
- ) : null}
204
- </BuilderContext.Provider>
205
- );
206
- }
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
- function getTarget(_) {
3
- return 'reactNative';
4
- }
5
- export { getTarget };