@builder.io/sdk-react 0.5.9 → 0.6.1

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 (322) hide show
  1. package/README.md +0 -4
  2. package/lib/browser/index.cjs +97 -0
  3. package/lib/browser/index.mjs +2598 -0
  4. package/lib/browser/server-entry-2e639417.js +2 -0
  5. package/lib/browser/server-entry-f7504f89.mjs +534 -0
  6. package/lib/browser/server-entry.cjs +1 -0
  7. package/lib/browser/server-entry.mjs +16 -0
  8. package/lib/edge/index.cjs +117 -0
  9. package/lib/edge/index.mjs +5042 -0
  10. package/lib/edge/server-entry-2e639417.js +2 -0
  11. package/lib/edge/server-entry-f7504f89.mjs +534 -0
  12. package/lib/edge/server-entry.cjs +1 -0
  13. package/lib/edge/server-entry.mjs +16 -0
  14. package/lib/node/index.cjs +97 -0
  15. package/lib/node/index.mjs +2598 -0
  16. package/lib/node/server-entry-2e639417.js +2 -0
  17. package/lib/node/server-entry-f7504f89.mjs +534 -0
  18. package/lib/node/server-entry.cjs +1 -0
  19. package/lib/node/server-entry.mjs +16 -0
  20. package/package.json +101 -11
  21. package/types/constants/sdk-version.d.ts +1 -0
  22. package/types/functions/deopt.d.ts +4 -0
  23. package/types/functions/evaluate/edge-runtime/edge-runtime.d.ts +2 -0
  24. package/types/functions/evaluate/edge-runtime/index.d.ts +1 -0
  25. package/types/functions/evaluate/placeholder-runtime.d.ts +2 -0
  26. package/{dist → types}/functions/fetch-builder-props.d.ts +2 -1
  27. package/{dist → types}/functions/get-content/index.d.ts +4 -5
  28. package/types/functions/is-edge-runtime.d.ts +4 -0
  29. package/{dist → types}/index-helpers/blocks-exports.d.ts +2 -2
  30. package/dist/blocks/BaseText.js +0 -9
  31. package/dist/blocks/button/button.js +0 -12
  32. package/dist/blocks/button/component-info.js +0 -34
  33. package/dist/blocks/columns/columns.js +0 -121
  34. package/dist/blocks/columns/component-info.js +0 -219
  35. package/dist/blocks/custom-code/component-info.js +0 -23
  36. package/dist/blocks/custom-code/custom-code.js +0 -51
  37. package/dist/blocks/embed/component-info.js +0 -39
  38. package/dist/blocks/embed/embed.js +0 -42
  39. package/dist/blocks/embed/helpers.js +0 -2
  40. package/dist/blocks/form/component-info.js +0 -232
  41. package/dist/blocks/form/form.js +0 -6
  42. package/dist/blocks/fragment/component-info.js +0 -7
  43. package/dist/blocks/fragment/fragment.js +0 -6
  44. package/dist/blocks/helpers.js +0 -40
  45. package/dist/blocks/image/component-info.js +0 -122
  46. package/dist/blocks/image/image.helpers.js +0 -47
  47. package/dist/blocks/image/image.js +0 -82
  48. package/dist/blocks/img/component-info.js +0 -15
  49. package/dist/blocks/img/img.js +0 -10
  50. package/dist/blocks/input/component-info.js +0 -46
  51. package/dist/blocks/input/input.js +0 -7
  52. package/dist/blocks/raw-text/component-info.js +0 -10
  53. package/dist/blocks/raw-text/raw-text.js +0 -6
  54. package/dist/blocks/section/component-info.js +0 -40
  55. package/dist/blocks/section/section.js +0 -17
  56. package/dist/blocks/select/component-info.js +0 -43
  57. package/dist/blocks/select/select.js +0 -7
  58. package/dist/blocks/submit-button/component-info.js +0 -26
  59. package/dist/blocks/submit-button/submit-button.js +0 -6
  60. package/dist/blocks/symbol/component-info.js +0 -34
  61. package/dist/blocks/symbol/symbol.helpers.js +0 -31
  62. package/dist/blocks/symbol/symbol.js +0 -45
  63. package/dist/blocks/text/component-info.js +0 -19
  64. package/dist/blocks/text/text.js +0 -8
  65. package/dist/blocks/textarea/component-info.js +0 -37
  66. package/dist/blocks/textarea/textarea.js +0 -6
  67. package/dist/blocks/video/component-info.js +0 -82
  68. package/dist/blocks/video/video.js +0 -50
  69. package/dist/components/block/block.helpers.js +0 -69
  70. package/dist/components/block/block.js +0 -94
  71. package/dist/components/block/components/block-styles.js +0 -65
  72. package/dist/components/block/components/block-wrapper.js +0 -36
  73. package/dist/components/block/components/component-ref/component-ref.helpers.js +0 -22
  74. package/dist/components/block/components/component-ref/component-ref.js +0 -23
  75. package/dist/components/block/components/interactive-element.js +0 -20
  76. package/dist/components/block/components/repeated-block.js +0 -11
  77. package/dist/components/block/types.js +0 -1
  78. package/dist/components/blocks/blocks-wrapper.js +0 -38
  79. package/dist/components/blocks/blocks.js +0 -17
  80. package/dist/components/content/components/enable-editor.js +0 -271
  81. package/dist/components/content/components/styles.helpers.js +0 -58
  82. package/dist/components/content/components/styles.js +0 -32
  83. package/dist/components/content/content.helpers.js +0 -30
  84. package/dist/components/content/content.js +0 -85
  85. package/dist/components/content/content.types.js +0 -1
  86. package/dist/components/content/index.js +0 -1
  87. package/dist/components/content/wrap-component-ref.js +0 -6
  88. package/dist/components/content-variants/content-variants.js +0 -52
  89. package/dist/components/content-variants/content-variants.types.js +0 -1
  90. package/dist/components/content-variants/helpers.js +0 -189
  91. package/dist/components/inlined-script.js +0 -6
  92. package/dist/components/inlined-styles.js +0 -6
  93. package/dist/constants/builder-registered-components.js +0 -60
  94. package/dist/constants/device-sizes.js +0 -45
  95. package/dist/constants/sdk-version.d.ts +0 -1
  96. package/dist/constants/sdk-version.js +0 -1
  97. package/dist/constants/target.js +0 -2
  98. package/dist/context/builder.context.js +0 -12
  99. package/dist/context/components.context.js +0 -2
  100. package/dist/context/types.js +0 -1
  101. package/dist/functions/apply-patch-with-mutation.js +0 -54
  102. package/dist/functions/camel-to-kebab-case.js +0 -1
  103. package/dist/functions/evaluate/browser-runtime/browser.js +0 -31
  104. package/dist/functions/evaluate/browser-runtime/index.js +0 -1
  105. package/dist/functions/evaluate/evaluate.js +0 -47
  106. package/dist/functions/evaluate/helpers.js +0 -10
  107. package/dist/functions/evaluate/index.js +0 -1
  108. package/dist/functions/evaluate/node-runtime/index.js +0 -1
  109. package/dist/functions/evaluate/non-node-runtime/acorn-interpreter.js +0 -3111
  110. package/dist/functions/evaluate/non-node-runtime/index.d.ts +0 -1
  111. package/dist/functions/evaluate/non-node-runtime/index.js +0 -2
  112. package/dist/functions/evaluate/non-node-runtime/non-node-runtime.d.ts +0 -2
  113. package/dist/functions/evaluate/non-node-runtime/non-node-runtime.js +0 -83
  114. package/dist/functions/event-handler-name.js +0 -4
  115. package/dist/functions/extract-text-styles.js +0 -22
  116. package/dist/functions/fast-clone.js +0 -4
  117. package/dist/functions/fetch-builder-props.js +0 -25
  118. package/dist/functions/get-block-actions-handler.js +0 -10
  119. package/dist/functions/get-block-actions.js +0 -28
  120. package/dist/functions/get-block-component-options.js +0 -10
  121. package/dist/functions/get-block-properties.js +0 -72
  122. package/dist/functions/get-builder-search-params/index.js +0 -38
  123. package/dist/functions/get-content/generate-content-url.js +0 -33
  124. package/dist/functions/get-content/index.js +0 -100
  125. package/dist/functions/get-content/types.js +0 -1
  126. package/dist/functions/get-fetch.js +0 -11
  127. package/dist/functions/get-global-this.js +0 -15
  128. package/dist/functions/get-processed-block.js +0 -46
  129. package/dist/functions/get-react-native-block-styles.js +0 -17
  130. package/dist/functions/is-browser.js +0 -3
  131. package/dist/functions/is-editing.js +0 -5
  132. package/dist/functions/is-iframe.js +0 -4
  133. package/dist/functions/is-non-node-server.d.ts +0 -4
  134. package/dist/functions/is-non-node-server.js +0 -8
  135. package/dist/functions/is-previewing.js +0 -11
  136. package/dist/functions/on-change.js +0 -28
  137. package/dist/functions/register-component.js +0 -38
  138. package/dist/functions/register.js +0 -27
  139. package/dist/functions/sanitize-react-native-block-styles.js +0 -61
  140. package/dist/functions/set-editor-settings.js +0 -12
  141. package/dist/functions/set.js +0 -14
  142. package/dist/functions/track/helpers.js +0 -51
  143. package/dist/functions/track/index.js +0 -71
  144. package/dist/functions/track/interaction.js +0 -53
  145. package/dist/functions/transform-block-properties.js +0 -5
  146. package/dist/functions/transform-block.js +0 -4
  147. package/dist/helpers/ab-tests.js +0 -122
  148. package/dist/helpers/canTrack.js +0 -2
  149. package/dist/helpers/cookie.js +0 -55
  150. package/dist/helpers/css.js +0 -27
  151. package/dist/helpers/flatten.js +0 -19
  152. package/dist/helpers/localStorage.js +0 -24
  153. package/dist/helpers/logger.js +0 -7
  154. package/dist/helpers/nullable.js +0 -1
  155. package/dist/helpers/preview-lru-cache/get.js +0 -3
  156. package/dist/helpers/preview-lru-cache/helpers.js +0 -0
  157. package/dist/helpers/preview-lru-cache/init.js +0 -6
  158. package/dist/helpers/preview-lru-cache/set.js +0 -5
  159. package/dist/helpers/preview-lru-cache/types.js +0 -0
  160. package/dist/helpers/sessionId.js +0 -30
  161. package/dist/helpers/time.js +0 -2
  162. package/dist/helpers/url.js +0 -15
  163. package/dist/helpers/uuid.js +0 -15
  164. package/dist/helpers/visitorId.js +0 -30
  165. package/dist/index-helpers/blocks-exports.js +0 -19
  166. package/dist/index-helpers/top-of-file.js +0 -4
  167. package/dist/index.js +0 -7
  168. package/dist/scripts/init-editing.js +0 -110
  169. package/dist/server-index.js +0 -10
  170. package/dist/types/api-version.js +0 -1
  171. package/dist/types/builder-block.js +0 -1
  172. package/dist/types/builder-content.js +0 -1
  173. package/dist/types/builder-props.js +0 -1
  174. package/dist/types/can-track.js +0 -1
  175. package/dist/types/components.js +0 -1
  176. package/dist/types/deep-partial.js +0 -1
  177. package/dist/types/element.js +0 -1
  178. package/dist/types/enforced-partials.js +0 -1
  179. package/dist/types/input.js +0 -1
  180. package/dist/types/targets.js +0 -1
  181. package/dist/types/typescript.js +0 -1
  182. /package/{dist → types}/blocks/BaseText.d.ts +0 -0
  183. /package/{dist → types}/blocks/button/button.d.ts +0 -0
  184. /package/{dist → types}/blocks/button/component-info.d.ts +0 -0
  185. /package/{dist → types}/blocks/columns/columns.d.ts +0 -0
  186. /package/{dist → types}/blocks/columns/component-info.d.ts +0 -0
  187. /package/{dist → types}/blocks/custom-code/component-info.d.ts +0 -0
  188. /package/{dist → types}/blocks/custom-code/custom-code.d.ts +0 -0
  189. /package/{dist → types}/blocks/embed/component-info.d.ts +0 -0
  190. /package/{dist → types}/blocks/embed/embed.d.ts +0 -0
  191. /package/{dist → types}/blocks/embed/helpers.d.ts +0 -0
  192. /package/{dist → types}/blocks/form/component-info.d.ts +0 -0
  193. /package/{dist → types}/blocks/form/form.d.ts +0 -0
  194. /package/{dist → types}/blocks/fragment/component-info.d.ts +0 -0
  195. /package/{dist → types}/blocks/fragment/fragment.d.ts +0 -0
  196. /package/{dist → types}/blocks/helpers.d.ts +0 -0
  197. /package/{dist → types}/blocks/image/component-info.d.ts +0 -0
  198. /package/{dist → types}/blocks/image/image.d.ts +0 -0
  199. /package/{dist → types}/blocks/image/image.helpers.d.ts +0 -0
  200. /package/{dist → types}/blocks/img/component-info.d.ts +0 -0
  201. /package/{dist → types}/blocks/img/img.d.ts +0 -0
  202. /package/{dist → types}/blocks/input/component-info.d.ts +0 -0
  203. /package/{dist → types}/blocks/input/input.d.ts +0 -0
  204. /package/{dist → types}/blocks/raw-text/component-info.d.ts +0 -0
  205. /package/{dist → types}/blocks/raw-text/raw-text.d.ts +0 -0
  206. /package/{dist → types}/blocks/section/component-info.d.ts +0 -0
  207. /package/{dist → types}/blocks/section/section.d.ts +0 -0
  208. /package/{dist → types}/blocks/select/component-info.d.ts +0 -0
  209. /package/{dist → types}/blocks/select/select.d.ts +0 -0
  210. /package/{dist → types}/blocks/submit-button/component-info.d.ts +0 -0
  211. /package/{dist → types}/blocks/submit-button/submit-button.d.ts +0 -0
  212. /package/{dist → types}/blocks/symbol/component-info.d.ts +0 -0
  213. /package/{dist → types}/blocks/symbol/symbol.d.ts +0 -0
  214. /package/{dist → types}/blocks/symbol/symbol.helpers.d.ts +0 -0
  215. /package/{dist → types}/blocks/text/component-info.d.ts +0 -0
  216. /package/{dist → types}/blocks/text/text.d.ts +0 -0
  217. /package/{dist → types}/blocks/textarea/component-info.d.ts +0 -0
  218. /package/{dist → types}/blocks/textarea/textarea.d.ts +0 -0
  219. /package/{dist → types}/blocks/video/component-info.d.ts +0 -0
  220. /package/{dist → types}/blocks/video/video.d.ts +0 -0
  221. /package/{dist → types}/components/block/block.d.ts +0 -0
  222. /package/{dist → types}/components/block/block.helpers.d.ts +0 -0
  223. /package/{dist → types}/components/block/components/block-styles.d.ts +0 -0
  224. /package/{dist → types}/components/block/components/block-wrapper.d.ts +0 -0
  225. /package/{dist → types}/components/block/components/component-ref/component-ref.d.ts +0 -0
  226. /package/{dist → types}/components/block/components/component-ref/component-ref.helpers.d.ts +0 -0
  227. /package/{dist → types}/components/block/components/interactive-element.d.ts +0 -0
  228. /package/{dist → types}/components/block/components/repeated-block.d.ts +0 -0
  229. /package/{dist → types}/components/block/types.d.ts +0 -0
  230. /package/{dist → types}/components/blocks/blocks-wrapper.d.ts +0 -0
  231. /package/{dist → types}/components/blocks/blocks.d.ts +0 -0
  232. /package/{dist → types}/components/content/components/enable-editor.d.ts +0 -0
  233. /package/{dist → types}/components/content/components/styles.d.ts +0 -0
  234. /package/{dist → types}/components/content/components/styles.helpers.d.ts +0 -0
  235. /package/{dist → types}/components/content/content.d.ts +0 -0
  236. /package/{dist → types}/components/content/content.helpers.d.ts +0 -0
  237. /package/{dist → types}/components/content/content.types.d.ts +0 -0
  238. /package/{dist → types}/components/content/index.d.ts +0 -0
  239. /package/{dist → types}/components/content/wrap-component-ref.d.ts +0 -0
  240. /package/{dist → types}/components/content-variants/content-variants.d.ts +0 -0
  241. /package/{dist → types}/components/content-variants/content-variants.types.d.ts +0 -0
  242. /package/{dist → types}/components/content-variants/helpers.d.ts +0 -0
  243. /package/{dist → types}/components/inlined-script.d.ts +0 -0
  244. /package/{dist → types}/components/inlined-styles.d.ts +0 -0
  245. /package/{dist → types}/constants/builder-registered-components.d.ts +0 -0
  246. /package/{dist → types}/constants/device-sizes.d.ts +0 -0
  247. /package/{dist → types}/constants/target.d.ts +0 -0
  248. /package/{dist → types}/context/builder.context.d.ts +0 -0
  249. /package/{dist → types}/context/components.context.d.ts +0 -0
  250. /package/{dist → types}/context/types.d.ts +0 -0
  251. /package/{dist → types}/functions/apply-patch-with-mutation.d.ts +0 -0
  252. /package/{dist → types}/functions/camel-to-kebab-case.d.ts +0 -0
  253. /package/{dist → types}/functions/evaluate/browser-runtime/browser.d.ts +0 -0
  254. /package/{dist → types}/functions/evaluate/browser-runtime/index.d.ts +0 -0
  255. /package/{dist/functions/evaluate/non-node-runtime → types/functions/evaluate/edge-runtime}/acorn-interpreter.d.ts +0 -0
  256. /package/{dist → types}/functions/evaluate/evaluate.d.ts +0 -0
  257. /package/{dist → types}/functions/evaluate/helpers.d.ts +0 -0
  258. /package/{dist → types}/functions/evaluate/index.d.ts +0 -0
  259. /package/{dist → types}/functions/evaluate/node-runtime/index.d.ts +0 -0
  260. /package/{dist → types}/functions/event-handler-name.d.ts +0 -0
  261. /package/{dist → types}/functions/extract-text-styles.d.ts +0 -0
  262. /package/{dist → types}/functions/fast-clone.d.ts +0 -0
  263. /package/{dist → types}/functions/get-block-actions-handler.d.ts +0 -0
  264. /package/{dist → types}/functions/get-block-actions.d.ts +0 -0
  265. /package/{dist → types}/functions/get-block-component-options.d.ts +0 -0
  266. /package/{dist → types}/functions/get-block-properties.d.ts +0 -0
  267. /package/{dist → types}/functions/get-builder-search-params/index.d.ts +0 -0
  268. /package/{dist → types}/functions/get-content/generate-content-url.d.ts +0 -0
  269. /package/{dist → types}/functions/get-content/types.d.ts +0 -0
  270. /package/{dist → types}/functions/get-fetch.d.ts +0 -0
  271. /package/{dist → types}/functions/get-global-this.d.ts +0 -0
  272. /package/{dist → types}/functions/get-processed-block.d.ts +0 -0
  273. /package/{dist → types}/functions/get-react-native-block-styles.d.ts +0 -0
  274. /package/{dist → types}/functions/is-browser.d.ts +0 -0
  275. /package/{dist → types}/functions/is-editing.d.ts +0 -0
  276. /package/{dist → types}/functions/is-iframe.d.ts +0 -0
  277. /package/{dist → types}/functions/is-previewing.d.ts +0 -0
  278. /package/{dist → types}/functions/on-change.d.ts +0 -0
  279. /package/{dist → types}/functions/register-component.d.ts +0 -0
  280. /package/{dist → types}/functions/register.d.ts +0 -0
  281. /package/{dist → types}/functions/sanitize-react-native-block-styles.d.ts +0 -0
  282. /package/{dist → types}/functions/set-editor-settings.d.ts +0 -0
  283. /package/{dist → types}/functions/set.d.ts +0 -0
  284. /package/{dist → types}/functions/track/helpers.d.ts +0 -0
  285. /package/{dist → types}/functions/track/index.d.ts +0 -0
  286. /package/{dist → types}/functions/track/interaction.d.ts +0 -0
  287. /package/{dist → types}/functions/transform-block-properties.d.ts +0 -0
  288. /package/{dist → types}/functions/transform-block.d.ts +0 -0
  289. /package/{dist → types}/helpers/ab-tests.d.ts +0 -0
  290. /package/{dist → types}/helpers/canTrack.d.ts +0 -0
  291. /package/{dist → types}/helpers/cookie.d.ts +0 -0
  292. /package/{dist → types}/helpers/css.d.ts +0 -0
  293. /package/{dist → types}/helpers/flatten.d.ts +0 -0
  294. /package/{dist → types}/helpers/localStorage.d.ts +0 -0
  295. /package/{dist → types}/helpers/logger.d.ts +0 -0
  296. /package/{dist → types}/helpers/nullable.d.ts +0 -0
  297. /package/{dist → types}/helpers/preview-lru-cache/get.d.ts +0 -0
  298. /package/{dist → types}/helpers/preview-lru-cache/helpers.d.ts +0 -0
  299. /package/{dist → types}/helpers/preview-lru-cache/init.d.ts +0 -0
  300. /package/{dist → types}/helpers/preview-lru-cache/set.d.ts +0 -0
  301. /package/{dist → types}/helpers/preview-lru-cache/types.d.ts +0 -0
  302. /package/{dist → types}/helpers/sessionId.d.ts +0 -0
  303. /package/{dist → types}/helpers/time.d.ts +0 -0
  304. /package/{dist → types}/helpers/url.d.ts +0 -0
  305. /package/{dist → types}/helpers/uuid.d.ts +0 -0
  306. /package/{dist → types}/helpers/visitorId.d.ts +0 -0
  307. /package/{dist → types}/index-helpers/top-of-file.d.ts +0 -0
  308. /package/{dist → types}/index.d.ts +0 -0
  309. /package/{dist → types}/scripts/init-editing.d.ts +0 -0
  310. /package/{dist → types}/server-index.d.ts +0 -0
  311. /package/{dist → types}/types/api-version.d.ts +0 -0
  312. /package/{dist → types}/types/builder-block.d.ts +0 -0
  313. /package/{dist → types}/types/builder-content.d.ts +0 -0
  314. /package/{dist → types}/types/builder-props.d.ts +0 -0
  315. /package/{dist → types}/types/can-track.d.ts +0 -0
  316. /package/{dist → types}/types/components.d.ts +0 -0
  317. /package/{dist → types}/types/deep-partial.d.ts +0 -0
  318. /package/{dist → types}/types/element.d.ts +0 -0
  319. /package/{dist → types}/types/enforced-partials.d.ts +0 -0
  320. /package/{dist → types}/types/input.d.ts +0 -0
  321. /package/{dist → types}/types/targets.d.ts +0 -0
  322. /package/{dist → types}/types/typescript.d.ts +0 -0
@@ -1,51 +0,0 @@
1
- "use client";
2
- import * as React from "react";
3
- import { useState, useRef, useEffect } from "react";
4
- function CustomCode(props) {
5
- const elem = useRef(null);
6
- const [scriptsInserted, setScriptsInserted] = useState(() => []);
7
- const [scriptsRun, setScriptsRun] = useState(() => []);
8
- function findAndRunScripts() {
9
- // TODO: Move this function to standalone one in '@builder.io/utils'
10
- if (elem.current &&
11
- elem.current.getElementsByTagName &&
12
- typeof window !== "undefined") {
13
- const scripts = elem.current.getElementsByTagName("script");
14
- for (let i = 0; i < scripts.length; i++) {
15
- const script = scripts[i];
16
- if (script.src) {
17
- if (scriptsInserted.includes(script.src)) {
18
- continue;
19
- }
20
- scriptsInserted.push(script.src);
21
- const newScript = document.createElement("script");
22
- newScript.async = true;
23
- newScript.src = script.src;
24
- document.head.appendChild(newScript);
25
- }
26
- else if (!script.type ||
27
- [
28
- "text/javascript",
29
- "application/javascript",
30
- "application/ecmascript",
31
- ].includes(script.type)) {
32
- if (scriptsRun.includes(script.innerText)) {
33
- continue;
34
- }
35
- try {
36
- scriptsRun.push(script.innerText);
37
- new Function(script.innerText)();
38
- }
39
- catch (error) {
40
- console.warn("`CustomCode`: Error running script:", error);
41
- }
42
- }
43
- }
44
- }
45
- }
46
- useEffect(() => {
47
- findAndRunScripts();
48
- }, []);
49
- return (React.createElement("div", { ref: elem, className: "builder-custom-code" + (props.replaceNodes ? " replace-nodes" : ""), dangerouslySetInnerHTML: { __html: props.code } }));
50
- }
51
- export default CustomCode;
@@ -1,39 +0,0 @@
1
- export const componentInfo = {
2
- name: 'Embed',
3
- static: true,
4
- inputs: [{
5
- name: 'url',
6
- type: 'url',
7
- required: true,
8
- defaultValue: '',
9
- helperText: 'e.g. enter a youtube url, google map, etc',
10
- onChange: (options) => {
11
- const url = options.get('url');
12
- if (url) {
13
- options.set('content', 'Loading...');
14
- // TODO: get this out of here!
15
- const apiKey = 'ae0e60e78201a3f2b0de4b';
16
- return fetch(`https://iframe.ly/api/iframely?url=${url}&api_key=${apiKey}`).then(res => res.json()).then(data => {
17
- if (options.get('url') === url) {
18
- if (data.html) {
19
- options.set('content', data.html);
20
- }
21
- else {
22
- options.set('content', 'Invalid url, please try another');
23
- }
24
- }
25
- }).catch(_err => {
26
- options.set('content', 'There was an error embedding this URL, please try again or another URL');
27
- });
28
- }
29
- else {
30
- options.delete('content');
31
- }
32
- }
33
- }, {
34
- name: 'content',
35
- type: 'html',
36
- defaultValue: '<div style="padding: 20px; text-align: center">(Choose an embed URL)<div>',
37
- hideFromUI: true
38
- }]
39
- };
@@ -1,42 +0,0 @@
1
- "use client";
2
- import * as React from "react";
3
- import { useState, useRef, useEffect } from "react";
4
- import { isJsScript } from "./helpers.js";
5
- function Embed(props) {
6
- const elem = useRef(null);
7
- const [scriptsInserted, setScriptsInserted] = useState(() => []);
8
- const [scriptsRun, setScriptsRun] = useState(() => []);
9
- const [ranInitFn, setRanInitFn] = useState(() => false);
10
- function findAndRunScripts() {
11
- if (!elem.current || !elem.current.getElementsByTagName)
12
- return;
13
- const scripts = elem.current.getElementsByTagName("script");
14
- for (let i = 0; i < scripts.length; i++) {
15
- const script = scripts[i];
16
- if (script.src && !scriptsInserted.includes(script.src)) {
17
- 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
- }
23
- else if (isJsScript(script) && !scriptsRun.includes(script.innerText)) {
24
- try {
25
- scriptsRun.push(script.innerText);
26
- new Function(script.innerText)();
27
- }
28
- catch (error) {
29
- console.warn("`Embed`: Error running script:", error);
30
- }
31
- }
32
- }
33
- }
34
- useEffect(() => {
35
- if (elem.current && !ranInitFn) {
36
- setRanInitFn(true);
37
- findAndRunScripts();
38
- }
39
- }, [elem.current, ranInitFn]);
40
- return (React.createElement("div", { className: "builder-embed", ref: elem, dangerouslySetInnerHTML: { __html: props.content } }));
41
- }
42
- export default Embed;
@@ -1,2 +0,0 @@
1
- const SCRIPT_MIME_TYPES = ['text/javascript', 'application/javascript', 'application/ecmascript'];
2
- export const isJsScript = (script) => SCRIPT_MIME_TYPES.includes(script.type);
@@ -1,232 +0,0 @@
1
- export const componentInfo = {
2
- name: 'Form:Form',
3
- // editableTags: ['builder-form-error']
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
- name: 'sendSubmissionsTo',
15
- type: 'string',
16
- // TODO: save to builder data and user can download as csv
17
- // TODO: easy for mode too or computed add/remove fields form mode
18
- // so you can edit details and high level mode at same time...
19
- // Later - more integrations like mailchimp
20
- // /api/v1/form-submit?to=mailchimp
21
- enum: [{
22
- label: 'Send to email',
23
- value: 'email',
24
- helperText: 'Send form submissions to the email address of your choosing'
25
- }, {
26
- label: 'Custom',
27
- value: 'custom',
28
- helperText: 'Handle where the form requests go manually with a little code, e.g. to your own custom backend'
29
- }],
30
- defaultValue: 'email'
31
- }, {
32
- name: 'sendSubmissionsToEmail',
33
- type: 'string',
34
- required: true,
35
- // TODO: required: () => options.get("sendSubmissionsTo") === "email"
36
- defaultValue: 'your@email.com',
37
- showIf: 'options.get("sendSubmissionsTo") === "email"'
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
- name: 'name',
46
- type: 'string',
47
- defaultValue: 'My form'
48
- // advanced: true
49
- }, {
50
- name: 'action',
51
- type: 'string',
52
- helperText: 'URL to send the form data to',
53
- showIf: 'options.get("sendSubmissionsTo") === "custom"'
54
- }, {
55
- name: 'contentType',
56
- type: 'string',
57
- defaultValue: 'application/json',
58
- advanced: true,
59
- // TODO: do automatically if file input
60
- enum: ['application/json', 'multipart/form-data', 'application/x-www-form-urlencoded'],
61
- showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
62
- }, {
63
- name: 'method',
64
- type: 'string',
65
- showIf: 'options.get("sendSubmissionsTo") === "custom"',
66
- defaultValue: 'POST',
67
- advanced: true
68
- }, {
69
- name: 'previewState',
70
- type: 'string',
71
- // TODO: persist: false flag
72
- enum: ['unsubmitted', 'sending', 'success', 'error'],
73
- defaultValue: 'unsubmitted',
74
- helperText: 'Choose a state to edit, e.g. choose "success" to show what users see on success and edit the message',
75
- showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
76
- }, {
77
- name: 'successUrl',
78
- type: 'url',
79
- helperText: 'Optional URL to redirect the user to on form submission success',
80
- showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
81
- }, {
82
- name: 'resetFormOnSubmit',
83
- type: 'boolean',
84
- showIf: "options.get('sendSubmissionsTo') === 'custom' && options.get('sendWithJs') === true",
85
- advanced: true
86
- }, {
87
- name: 'successMessage',
88
- type: 'uiBlocks',
89
- hideFromUI: true,
90
- defaultValue: [{
91
- '@type': '@builder.io/sdk:Element',
92
- responsiveStyles: {
93
- large: {
94
- marginTop: '10px'
95
- }
96
- },
97
- component: {
98
- name: 'Text',
99
- options: {
100
- text: '<span>Thanks!</span>'
101
- }
102
- }
103
- }]
104
- }, {
105
- name: 'validate',
106
- type: 'boolean',
107
- defaultValue: true,
108
- advanced: true
109
- }, {
110
- name: 'errorMessagePath',
111
- type: 'text',
112
- advanced: true,
113
- 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" }}'
114
- }, {
115
- name: 'errorMessage',
116
- type: 'uiBlocks',
117
- hideFromUI: true,
118
- defaultValue: [{
119
- '@type': '@builder.io/sdk:Element',
120
- responsiveStyles: {
121
- large: {
122
- marginTop: '10px'
123
- }
124
- },
125
- bindings: {
126
- 'component.options.text': 'state.formErrorMessage || block.component.options.text'
127
- },
128
- component: {
129
- name: 'Text',
130
- options: {
131
- text: '<span>Form submission error :( Please check your answers and try again</span>'
132
- }
133
- }
134
- }]
135
- }, {
136
- name: 'sendingMessage',
137
- type: 'uiBlocks',
138
- hideFromUI: true,
139
- defaultValue: [{
140
- '@type': '@builder.io/sdk:Element',
141
- responsiveStyles: {
142
- large: {
143
- marginTop: '10px'
144
- }
145
- },
146
- component: {
147
- name: 'Text',
148
- options: {
149
- text: '<span>Sending...</span>'
150
- }
151
- }
152
- }]
153
- }, {
154
- name: 'customHeaders',
155
- type: 'map',
156
- valueType: {
157
- type: 'string'
158
- },
159
- advanced: true,
160
- showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
161
- }],
162
- noWrap: true,
163
- canHaveChildren: true,
164
- defaultChildren: [{
165
- '@type': '@builder.io/sdk:Element',
166
- responsiveStyles: {
167
- large: {
168
- marginTop: '10px'
169
- }
170
- },
171
- component: {
172
- name: 'Text',
173
- options: {
174
- text: '<span>Enter your name</span>'
175
- }
176
- }
177
- }, {
178
- '@type': '@builder.io/sdk:Element',
179
- responsiveStyles: {
180
- large: {
181
- marginTop: '10px'
182
- }
183
- },
184
- component: {
185
- name: 'Form:Input',
186
- options: {
187
- name: 'name',
188
- placeholder: 'Jane Doe'
189
- }
190
- }
191
- }, {
192
- '@type': '@builder.io/sdk:Element',
193
- responsiveStyles: {
194
- large: {
195
- marginTop: '10px'
196
- }
197
- },
198
- component: {
199
- name: 'Text',
200
- options: {
201
- text: '<span>Enter your email</span>'
202
- }
203
- }
204
- }, {
205
- '@type': '@builder.io/sdk:Element',
206
- responsiveStyles: {
207
- large: {
208
- marginTop: '10px'
209
- }
210
- },
211
- component: {
212
- name: 'Form:Input',
213
- options: {
214
- name: 'email',
215
- placeholder: 'jane@doe.com'
216
- }
217
- }
218
- }, {
219
- '@type': '@builder.io/sdk:Element',
220
- responsiveStyles: {
221
- large: {
222
- marginTop: '10px'
223
- }
224
- },
225
- component: {
226
- name: 'Form:SubmitButton',
227
- options: {
228
- text: 'Submit'
229
- }
230
- }
231
- }]
232
- };
@@ -1,6 +0,0 @@
1
- "use client";
2
- import * as React from "react";
3
- function FormComponent(props) {
4
- return React.createElement(React.Fragment, null);
5
- }
6
- export default FormComponent;
@@ -1,7 +0,0 @@
1
- export const componentInfo = {
2
- name: 'Fragment',
3
- static: true,
4
- hidden: true,
5
- canHaveChildren: true,
6
- noWrap: true
7
- };
@@ -1,6 +0,0 @@
1
- "use client";
2
- import * as React from "react";
3
- function FragmentComponent(props) {
4
- return React.createElement("span", null, props.children);
5
- }
6
- export default FragmentComponent;
@@ -1,40 +0,0 @@
1
- export function filterAttrs(attrs = {}, prefix, isEvent) {
2
- const result = {};
3
- for (const attr in attrs) {
4
- if (!attrs[attr])
5
- continue;
6
- if (isEvent && !attr.startsWith(prefix))
7
- continue;
8
- const eventName = isEvent ? attr.replace(prefix, '') : attr;
9
- result[eventName] = attrs[attr];
10
- }
11
- return result;
12
- }
13
- /**
14
- * Svelte SDK: workaround to dynamically provide event handlers to components/elements.
15
- * https://svelte.dev/repl/1246699e266f41218a8eeb45b9b58b54?version=3.24.1
16
- */
17
- export function setAttrs(node, attrs = {}) {
18
- const attrKeys = Object.keys(attrs);
19
- /**
20
- *
21
- * @param {string} attr
22
- */
23
- const setup = (attr) => node.addEventListener(attr, attrs[attr]);
24
- /**
25
- *
26
- * @param {string} attr
27
- */
28
- const teardown = (attr) => node.removeEventListener(attr, attrs[attr]);
29
- attrKeys.forEach(setup);
30
- return {
31
- update(attrs = {}) {
32
- const attrKeys = Object.keys(attrs);
33
- attrKeys.forEach(teardown);
34
- attrKeys.forEach(setup);
35
- },
36
- destroy() {
37
- attrKeys.forEach(teardown);
38
- }
39
- };
40
- }
@@ -1,122 +0,0 @@
1
- export const componentInfo = {
2
- name: 'Image',
3
- static: true,
4
- image: 'https://firebasestorage.googleapis.com/v0/b/builder-3b0a2.appspot.com/o/images%2Fbaseline-insert_photo-24px.svg?alt=media&token=4e5d0ef4-f5e8-4e57-b3a9-38d63a9b9dc4',
5
- defaultStyles: {
6
- position: 'relative',
7
- minHeight: '20px',
8
- minWidth: '20px',
9
- overflow: 'hidden'
10
- },
11
- canHaveChildren: true,
12
- inputs: [{
13
- name: 'image',
14
- type: 'file',
15
- bubble: true,
16
- allowedFileTypes: ['jpeg', 'jpg', 'png', 'svg'],
17
- required: true,
18
- defaultValue: 'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F72c80f114dc149019051b6852a9e3b7a',
19
- onChange: (options) => {
20
- const DEFAULT_ASPECT_RATIO = 0.7041;
21
- options.delete('srcset');
22
- options.delete('noWebp');
23
- function loadImage(url, timeout = 60000) {
24
- return new Promise((resolve, reject) => {
25
- const img = document.createElement('img');
26
- let loaded = false;
27
- img.onload = () => {
28
- loaded = true;
29
- resolve(img);
30
- };
31
- img.addEventListener('error', event => {
32
- console.warn('Image load failed', event.error);
33
- reject(event.error);
34
- });
35
- img.src = url;
36
- setTimeout(() => {
37
- if (!loaded) {
38
- reject(new Error('Image load timed out'));
39
- }
40
- }, timeout);
41
- });
42
- }
43
- function round(num) {
44
- return Math.round(num * 1000) / 1000;
45
- }
46
- const value = options.get('image');
47
- const aspectRatio = options.get('aspectRatio');
48
- // For SVG images - don't render as webp, keep them as SVG
49
- fetch(value).then(res => res.blob()).then(blob => {
50
- if (blob.type.includes('svg')) {
51
- options.set('noWebp', true);
52
- }
53
- });
54
- if (value && (!aspectRatio || aspectRatio === DEFAULT_ASPECT_RATIO)) {
55
- return loadImage(value).then(img => {
56
- const possiblyUpdatedAspectRatio = options.get('aspectRatio');
57
- if (options.get('image') === value && (!possiblyUpdatedAspectRatio || possiblyUpdatedAspectRatio === DEFAULT_ASPECT_RATIO)) {
58
- if (img.width && img.height) {
59
- options.set('aspectRatio', round(img.height / img.width));
60
- options.set('height', img.height);
61
- options.set('width', img.width);
62
- }
63
- }
64
- });
65
- }
66
- }
67
- }, {
68
- name: 'backgroundSize',
69
- type: 'text',
70
- defaultValue: 'cover',
71
- enum: [{
72
- label: 'contain',
73
- value: 'contain',
74
- helperText: 'The image should never get cropped'
75
- }, {
76
- label: 'cover',
77
- value: 'cover',
78
- helperText: "The image should fill it's box, cropping when needed"
79
- }]
80
- }, {
81
- name: 'backgroundPosition',
82
- type: 'text',
83
- defaultValue: 'center',
84
- enum: ['center', 'top', 'left', 'right', 'bottom', 'top left', 'top right', 'bottom left', 'bottom right']
85
- }, {
86
- name: 'altText',
87
- type: 'string',
88
- helperText: 'Text to display when the user has images off'
89
- }, {
90
- name: 'height',
91
- type: 'number',
92
- hideFromUI: true
93
- }, {
94
- name: 'width',
95
- type: 'number',
96
- hideFromUI: true
97
- }, {
98
- name: 'sizes',
99
- type: 'string',
100
- hideFromUI: true
101
- }, {
102
- name: 'srcset',
103
- type: 'string',
104
- hideFromUI: true
105
- }, {
106
- name: 'lazy',
107
- type: 'boolean',
108
- defaultValue: true,
109
- hideFromUI: true
110
- }, {
111
- name: 'fitContent',
112
- type: 'boolean',
113
- helperText: "When child blocks are provided, fit to them instead of using the image's aspect ratio",
114
- defaultValue: true
115
- }, {
116
- name: 'aspectRatio',
117
- type: 'number',
118
- helperText: "This is the ratio of height/width, e.g. set to 1.5 for a 300px wide and 200px tall photo. Set to 0 to not force the image to maintain it's aspect ratio",
119
- advanced: true,
120
- defaultValue: 0.7041
121
- }]
122
- };
@@ -1,47 +0,0 @@
1
- // Taken from (and modified) the shopify theme script repo
2
- // https://github.com/Shopify/theme-scripts/blob/bcfb471f2a57d439e2f964a1bb65b67708cc90c3/packages/theme-images/images.js#L59
3
- function removeProtocol(path) {
4
- return path.replace(/http(s)?:/, '');
5
- }
6
- function updateQueryParam(uri = '', key, value) {
7
- const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
8
- const separator = uri.indexOf('?') !== -1 ? '&' : '?';
9
- if (uri.match(re)) {
10
- return uri.replace(re, '$1' + key + '=' + encodeURIComponent(value) + '$2');
11
- }
12
- return uri + separator + key + '=' + encodeURIComponent(value);
13
- }
14
- function getShopifyImageUrl(src, size) {
15
- if (!src || !src?.match(/cdn\.shopify\.com/) || !size) {
16
- return src;
17
- }
18
- if (size === 'master') {
19
- return removeProtocol(src);
20
- }
21
- const match = src.match(/(_\d+x(\d+)?)?(\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\?v=\d+)?)/i);
22
- if (match) {
23
- const prefix = src.split(match[0]);
24
- const suffix = match[3];
25
- const useSize = size.match('x') ? size : `${size}x`;
26
- return removeProtocol(`${prefix[0]}_${useSize}${suffix}`);
27
- }
28
- return null;
29
- }
30
- export function getSrcSet(url) {
31
- if (!url) {
32
- return url;
33
- }
34
- const sizes = [100, 200, 400, 800, 1200, 1600, 2000];
35
- if (url.match(/builder\.io/)) {
36
- let srcUrl = url;
37
- const widthInSrc = Number(url.split('?width=')[1]);
38
- if (!isNaN(widthInSrc)) {
39
- srcUrl = `${srcUrl} ${widthInSrc}w`;
40
- }
41
- return sizes.filter(size => size !== widthInSrc).map(size => `${updateQueryParam(url, 'width', size)} ${size}w`).concat([srcUrl]).join(', ');
42
- }
43
- if (url.match(/cdn\.shopify\.com/)) {
44
- return sizes.map(size => [getShopifyImageUrl(url, `${size}x${size}`), size]).filter(([sizeUrl]) => !!sizeUrl).map(([sizeUrl, size]) => `${sizeUrl} ${size}w`).concat([url]).join(', ');
45
- }
46
- return url;
47
- }