@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
@@ -1,242 +0,0 @@
1
- import { serializeFn } from "../util.js";
2
- const componentInfo = {
3
- name: "Columns",
4
- builtIn: true,
5
- inputs: [
6
- {
7
- name: "columns",
8
- type: "array",
9
- broadcast: true,
10
- subFields: [
11
- {
12
- name: "blocks",
13
- type: "array",
14
- hideFromUI: true,
15
- defaultValue: [
16
- {
17
- "@type": "@builder.io/sdk:Element",
18
- responsiveStyles: {
19
- large: {
20
- display: "flex",
21
- flexDirection: "column",
22
- alignItems: "stretch",
23
- flexShrink: "0",
24
- position: "relative",
25
- marginTop: "30px",
26
- textAlign: "center",
27
- lineHeight: "normal",
28
- height: "auto",
29
- minHeight: "20px",
30
- minWidth: "20px",
31
- overflow: "hidden"
32
- }
33
- },
34
- component: {
35
- name: "Image",
36
- options: {
37
- image: "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
38
- backgroundPosition: "center",
39
- backgroundSize: "cover",
40
- aspectRatio: 0.7004048582995948
41
- }
42
- }
43
- },
44
- {
45
- "@type": "@builder.io/sdk:Element",
46
- responsiveStyles: {
47
- large: {
48
- display: "flex",
49
- flexDirection: "column",
50
- alignItems: "stretch",
51
- flexShrink: "0",
52
- position: "relative",
53
- marginTop: "30px",
54
- textAlign: "center",
55
- lineHeight: "normal",
56
- height: "auto"
57
- }
58
- },
59
- component: {
60
- name: "Text",
61
- options: {
62
- text: "<p>Enter some text...</p>"
63
- }
64
- }
65
- }
66
- ]
67
- },
68
- {
69
- name: "width",
70
- type: "number",
71
- hideFromUI: true,
72
- helperText: "Width %, e.g. set to 50 to fill half of the space"
73
- },
74
- {
75
- name: "link",
76
- type: "url",
77
- helperText: "Optionally set a url that clicking this column will link to"
78
- }
79
- ],
80
- defaultValue: [
81
- {
82
- blocks: [
83
- {
84
- "@type": "@builder.io/sdk:Element",
85
- responsiveStyles: {
86
- large: {
87
- display: "flex",
88
- flexDirection: "column",
89
- alignItems: "stretch",
90
- flexShrink: "0",
91
- position: "relative",
92
- marginTop: "30px",
93
- textAlign: "center",
94
- lineHeight: "normal",
95
- height: "auto",
96
- minHeight: "20px",
97
- minWidth: "20px",
98
- overflow: "hidden"
99
- }
100
- },
101
- component: {
102
- name: "Image",
103
- options: {
104
- image: "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
105
- backgroundPosition: "center",
106
- backgroundSize: "cover",
107
- aspectRatio: 0.7004048582995948
108
- }
109
- }
110
- },
111
- {
112
- "@type": "@builder.io/sdk:Element",
113
- responsiveStyles: {
114
- large: {
115
- display: "flex",
116
- flexDirection: "column",
117
- alignItems: "stretch",
118
- flexShrink: "0",
119
- position: "relative",
120
- marginTop: "30px",
121
- textAlign: "center",
122
- lineHeight: "normal",
123
- height: "auto"
124
- }
125
- },
126
- component: {
127
- name: "Text",
128
- options: {
129
- text: "<p>Enter some text...</p>"
130
- }
131
- }
132
- }
133
- ]
134
- },
135
- {
136
- blocks: [
137
- {
138
- "@type": "@builder.io/sdk:Element",
139
- responsiveStyles: {
140
- large: {
141
- display: "flex",
142
- flexDirection: "column",
143
- alignItems: "stretch",
144
- flexShrink: "0",
145
- position: "relative",
146
- marginTop: "30px",
147
- textAlign: "center",
148
- lineHeight: "normal",
149
- height: "auto",
150
- minHeight: "20px",
151
- minWidth: "20px",
152
- overflow: "hidden"
153
- }
154
- },
155
- component: {
156
- name: "Image",
157
- options: {
158
- image: "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
159
- backgroundPosition: "center",
160
- backgroundSize: "cover",
161
- aspectRatio: 0.7004048582995948
162
- }
163
- }
164
- },
165
- {
166
- "@type": "@builder.io/sdk:Element",
167
- responsiveStyles: {
168
- large: {
169
- display: "flex",
170
- flexDirection: "column",
171
- alignItems: "stretch",
172
- flexShrink: "0",
173
- position: "relative",
174
- marginTop: "30px",
175
- textAlign: "center",
176
- lineHeight: "normal",
177
- height: "auto"
178
- }
179
- },
180
- component: {
181
- name: "Text",
182
- options: {
183
- text: "<p>Enter some text...</p>"
184
- }
185
- }
186
- }
187
- ]
188
- }
189
- ],
190
- onChange: serializeFn((options) => {
191
- function clearWidths() {
192
- columns.forEach((col) => {
193
- col.delete("width");
194
- });
195
- }
196
- const columns = options.get("columns");
197
- if (Array.isArray(columns)) {
198
- const containsColumnWithWidth = !!columns.find((col) => col.get("width"));
199
- if (containsColumnWithWidth) {
200
- const containsColumnWithoutWidth = !!columns.find((col) => !col.get("width"));
201
- if (containsColumnWithoutWidth) {
202
- clearWidths();
203
- } else {
204
- const sumWidths = columns.reduce((memo, col) => {
205
- return memo + col.get("width");
206
- }, 0);
207
- const widthsDontAddUp = sumWidths !== 100;
208
- if (widthsDontAddUp) {
209
- clearWidths();
210
- }
211
- }
212
- }
213
- }
214
- })
215
- },
216
- {
217
- name: "space",
218
- type: "number",
219
- defaultValue: 20,
220
- helperText: "Size of gap between columns",
221
- advanced: true
222
- },
223
- {
224
- name: "stackColumnsAt",
225
- type: "string",
226
- defaultValue: "tablet",
227
- helperText: "Convert horizontal columns to vertical at what device size",
228
- enum: ["tablet", "mobile", "never"],
229
- advanced: true
230
- },
231
- {
232
- name: "reverseColumnsWhenStacked",
233
- type: "boolean",
234
- defaultValue: false,
235
- helperText: "When stacking columns for mobile devices, reverse the ordering",
236
- advanced: true
237
- }
238
- ]
239
- };
240
- export {
241
- componentInfo
242
- };
@@ -1,31 +0,0 @@
1
- const componentInfo = {
2
- name: "Custom Code",
3
- static: true,
4
- builtIn: true,
5
- requiredPermissions: ["editCode"],
6
- inputs: [
7
- {
8
- name: "code",
9
- type: "html",
10
- required: true,
11
- defaultValue: "<p>Hello there, I am custom HTML code!</p>",
12
- code: true
13
- },
14
- {
15
- name: "replaceNodes",
16
- type: "boolean",
17
- helperText: "Preserve server rendered dom nodes",
18
- advanced: true
19
- },
20
- {
21
- name: "scriptsClientOnly",
22
- type: "boolean",
23
- defaultValue: false,
24
- helperText: "Only print and run scripts on the client. Important when scripts influence DOM that could be replaced when client loads",
25
- advanced: true
26
- }
27
- ]
28
- };
29
- export {
30
- componentInfo
31
- };
@@ -1,55 +0,0 @@
1
- import * as React from "react";
2
-
3
- export default function CustomCode(props) {
4
- const _context = { ...props["_context"] };
5
-
6
- const state = {
7
- scriptsInserted: [],
8
- scriptsRun: [],
9
- findAndRunScripts() {
10
- // TODO: Move this function to standalone one in '@builder.io/utils'
11
- if (elem && elem.getElementsByTagName && typeof window !== "undefined") {
12
- const scripts = elem.getElementsByTagName("script");
13
- for (let i = 0; i < scripts.length; i++) {
14
- const script = scripts[i];
15
- if (script.src) {
16
- if (state.scriptsInserted.includes(script.src)) {
17
- continue;
18
- }
19
- state.scriptsInserted.push(script.src);
20
- const newScript = document.createElement("script");
21
- newScript.async = true;
22
- newScript.src = script.src;
23
- document.head.appendChild(newScript);
24
- } else if (
25
- !script.type ||
26
- [
27
- "text/javascript",
28
- "application/javascript",
29
- "application/ecmascript",
30
- ].includes(script.type)
31
- ) {
32
- if (state.scriptsRun.includes(script.innerText)) {
33
- continue;
34
- }
35
- try {
36
- state.scriptsRun.push(script.innerText);
37
- new Function(script.innerText)();
38
- } catch (error) {
39
- console.warn("`CustomCode`: Error running script:", error);
40
- }
41
- }
42
- }
43
- }
44
- },
45
- };
46
-
47
- return (
48
- <div
49
- className={
50
- "builder-custom-code" + (props.replaceNodes ? " replace-nodes" : "")
51
- }
52
- dangerouslySetInnerHTML={{ __html: props.code }}
53
- />
54
- );
55
- }
@@ -1,44 +0,0 @@
1
- import { serializeFn } from "../util.js";
2
- const componentInfo = {
3
- name: "Embed",
4
- static: true,
5
- builtIn: true,
6
- inputs: [
7
- {
8
- name: "url",
9
- type: "url",
10
- required: true,
11
- defaultValue: "",
12
- helperText: "e.g. enter a youtube url, google map, etc",
13
- onChange: serializeFn((options) => {
14
- const url = options.get("url");
15
- if (url) {
16
- options.set("content", "Loading...");
17
- const apiKey = "ae0e60e78201a3f2b0de4b";
18
- return fetch(`https://iframe.ly/api/iframely?url=${url}&api_key=${apiKey}`).then((res) => res.json()).then((data) => {
19
- if (options.get("url") === url) {
20
- if (data.html) {
21
- options.set("content", data.html);
22
- } else {
23
- options.set("content", "Invalid url, please try another");
24
- }
25
- }
26
- }).catch((_err) => {
27
- options.set("content", "There was an error embedding this URL, please try again or another URL");
28
- });
29
- } else {
30
- options.delete("content");
31
- }
32
- })
33
- },
34
- {
35
- name: "content",
36
- type: "html",
37
- defaultValue: '<div style="padding: 20px; text-align: center">(Choose an embed URL)<div>',
38
- hideFromUI: true
39
- }
40
- ]
41
- };
42
- export {
43
- componentInfo
44
- };
@@ -1,43 +0,0 @@
1
- import * as React from "react";
2
- import { isJsScript } from "./helpers.js";
3
-
4
- export default function Embed(props) {
5
- const _context = { ...props["_context"] };
6
-
7
- const state = {
8
- scriptsInserted: [],
9
- scriptsRun: [],
10
- ranInitFn: false,
11
- findAndRunScripts() {
12
- if (!elem || !elem.getElementsByTagName) return;
13
- const scripts = elem.getElementsByTagName("script");
14
- for (let i = 0; i < scripts.length; i++) {
15
- const script = scripts[i];
16
- if (script.src && !state.scriptsInserted.includes(script.src)) {
17
- state.scriptsInserted.push(script.src);
18
- const newScript = document.createElement("script");
19
- newScript.async = true;
20
- newScript.src = script.src;
21
- document.head.appendChild(newScript);
22
- } else if (
23
- isJsScript(script) &&
24
- !state.scriptsRun.includes(script.innerText)
25
- ) {
26
- try {
27
- state.scriptsRun.push(script.innerText);
28
- new Function(script.innerText)();
29
- } catch (error) {
30
- console.warn("`Embed`: Error running script:", error);
31
- }
32
- }
33
- }
34
- },
35
- };
36
-
37
- return (
38
- <div
39
- className="builder-embed"
40
- dangerouslySetInnerHTML={{ __html: props.content }}
41
- />
42
- );
43
- }
@@ -1,9 +0,0 @@
1
- const SCRIPT_MIME_TYPES = [
2
- "text/javascript",
3
- "application/javascript",
4
- "application/ecmascript"
5
- ];
6
- const isJsScript = (script) => SCRIPT_MIME_TYPES.includes(script.type);
7
- export {
8
- isJsScript
9
- };
@@ -1,262 +0,0 @@
1
- const componentInfo = {
2
- name: "Form:Form",
3
- builtIn: true,
4
- defaults: {
5
- responsiveStyles: {
6
- large: {
7
- marginTop: "15px",
8
- paddingBottom: "15px"
9
- }
10
- }
11
- },
12
- image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fef36d2a846134910b64b88e6d18c5ca5",
13
- inputs: [
14
- {
15
- name: "sendSubmissionsTo",
16
- type: "string",
17
- enum: [
18
- {
19
- label: "Send to email",
20
- value: "email",
21
- helperText: "Send form submissions to the email address of your choosing"
22
- },
23
- {
24
- label: "Custom",
25
- value: "custom",
26
- helperText: "Handle where the form requests go manually with a little code, e.g. to your own custom backend"
27
- }
28
- ],
29
- defaultValue: "email"
30
- },
31
- {
32
- name: "sendSubmissionsToEmail",
33
- type: "string",
34
- required: true,
35
- defaultValue: "your@email.com",
36
- showIf: 'options.get("sendSubmissionsTo") === "email"'
37
- },
38
- {
39
- name: "sendWithJs",
40
- type: "boolean",
41
- helperText: "Set to false to use basic html form action",
42
- defaultValue: true,
43
- showIf: 'options.get("sendSubmissionsTo") === "custom"'
44
- },
45
- {
46
- name: "name",
47
- type: "string",
48
- defaultValue: "My form"
49
- },
50
- {
51
- name: "action",
52
- type: "string",
53
- helperText: "URL to send the form data to",
54
- showIf: 'options.get("sendSubmissionsTo") === "custom"'
55
- },
56
- {
57
- name: "contentType",
58
- type: "string",
59
- defaultValue: "application/json",
60
- advanced: true,
61
- enum: [
62
- "application/json",
63
- "multipart/form-data",
64
- "application/x-www-form-urlencoded"
65
- ],
66
- showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
67
- },
68
- {
69
- name: "method",
70
- type: "string",
71
- showIf: 'options.get("sendSubmissionsTo") === "custom"',
72
- defaultValue: "POST",
73
- advanced: true
74
- },
75
- {
76
- name: "previewState",
77
- type: "string",
78
- enum: ["unsubmitted", "sending", "success", "error"],
79
- defaultValue: "unsubmitted",
80
- helperText: 'Choose a state to edit, e.g. choose "success" to show what users see on success and edit the message',
81
- showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
82
- },
83
- {
84
- name: "successUrl",
85
- type: "url",
86
- helperText: "Optional URL to redirect the user to on form submission success",
87
- showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
88
- },
89
- {
90
- name: "resetFormOnSubmit",
91
- type: "boolean",
92
- showIf: "options.get('sendSubmissionsTo') === 'custom' && options.get('sendWithJs') === true",
93
- advanced: true
94
- },
95
- {
96
- name: "successMessage",
97
- type: "uiBlocks",
98
- hideFromUI: true,
99
- defaultValue: [
100
- {
101
- "@type": "@builder.io/sdk:Element",
102
- responsiveStyles: {
103
- large: {
104
- marginTop: "10px"
105
- }
106
- },
107
- component: {
108
- name: "Text",
109
- options: {
110
- text: "<span>Thanks!</span>"
111
- }
112
- }
113
- }
114
- ]
115
- },
116
- {
117
- name: "validate",
118
- type: "boolean",
119
- defaultValue: true,
120
- advanced: true
121
- },
122
- {
123
- name: "errorMessagePath",
124
- type: "text",
125
- advanced: true,
126
- helperText: 'Path to where to get the error message from in a JSON response to display to the user, e.g. "error.message" for a response like { "error": { "message": "this username is taken" }}'
127
- },
128
- {
129
- name: "errorMessage",
130
- type: "uiBlocks",
131
- hideFromUI: true,
132
- defaultValue: [
133
- {
134
- "@type": "@builder.io/sdk:Element",
135
- responsiveStyles: {
136
- large: {
137
- marginTop: "10px"
138
- }
139
- },
140
- bindings: {
141
- "component.options.text": "state.formErrorMessage || block.component.options.text"
142
- },
143
- component: {
144
- name: "Text",
145
- options: {
146
- text: "<span>Form submission error :( Please check your answers and try again</span>"
147
- }
148
- }
149
- }
150
- ]
151
- },
152
- {
153
- name: "sendingMessage",
154
- type: "uiBlocks",
155
- hideFromUI: true,
156
- defaultValue: [
157
- {
158
- "@type": "@builder.io/sdk:Element",
159
- responsiveStyles: {
160
- large: {
161
- marginTop: "10px"
162
- }
163
- },
164
- component: {
165
- name: "Text",
166
- options: {
167
- text: "<span>Sending...</span>"
168
- }
169
- }
170
- }
171
- ]
172
- },
173
- {
174
- name: "customHeaders",
175
- type: "map",
176
- valueType: {
177
- type: "string"
178
- },
179
- advanced: true,
180
- showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
181
- }
182
- ],
183
- noWrap: true,
184
- canHaveChildren: true,
185
- defaultChildren: [
186
- {
187
- "@type": "@builder.io/sdk:Element",
188
- responsiveStyles: {
189
- large: {
190
- marginTop: "10px"
191
- }
192
- },
193
- component: {
194
- name: "Text",
195
- options: {
196
- text: "<span>Enter your name</span>"
197
- }
198
- }
199
- },
200
- {
201
- "@type": "@builder.io/sdk:Element",
202
- responsiveStyles: {
203
- large: {
204
- marginTop: "10px"
205
- }
206
- },
207
- component: {
208
- name: "Form:Input",
209
- options: {
210
- name: "name",
211
- placeholder: "Jane Doe"
212
- }
213
- }
214
- },
215
- {
216
- "@type": "@builder.io/sdk:Element",
217
- responsiveStyles: {
218
- large: {
219
- marginTop: "10px"
220
- }
221
- },
222
- component: {
223
- name: "Text",
224
- options: {
225
- text: "<span>Enter your email</span>"
226
- }
227
- }
228
- },
229
- {
230
- "@type": "@builder.io/sdk:Element",
231
- responsiveStyles: {
232
- large: {
233
- marginTop: "10px"
234
- }
235
- },
236
- component: {
237
- name: "Form:Input",
238
- options: {
239
- name: "email",
240
- placeholder: "jane@doe.com"
241
- }
242
- }
243
- },
244
- {
245
- "@type": "@builder.io/sdk:Element",
246
- responsiveStyles: {
247
- large: {
248
- marginTop: "10px"
249
- }
250
- },
251
- component: {
252
- name: "Form:SubmitButton",
253
- options: {
254
- text: "Submit"
255
- }
256
- }
257
- }
258
- ]
259
- };
260
- export {
261
- componentInfo
262
- };