@builder.io/sdk-react 0.1.4 → 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 (181) hide show
  1. package/dist/react/blocks/button/button.js +2 -2
  2. package/dist/react/blocks/columns/columns.js +4 -4
  3. package/dist/react/blocks/form/form.js +2 -2
  4. package/dist/react/blocks/image/image.js +6 -6
  5. package/dist/react/components/render-block/render-block.js +18 -1
  6. package/dist/react/components/render-block/render-repeated-block.js +1 -0
  7. package/dist/react/components/render-blocks.js +2 -2
  8. package/dist/react/components/render-content/components/render-styles.helpers.js +51 -0
  9. package/dist/react/components/render-content/components/render-styles.js +12 -54
  10. package/dist/react/components/render-content/render-content.helpers.js +38 -0
  11. package/dist/react/components/render-content/render-content.js +65 -62
  12. package/dist/react/components/render-content/render-content.types.js +1 -0
  13. package/dist/react/constants/builder-registered-components.js +7 -7
  14. package/dist/react/context/builder.context.js +2 -0
  15. package/dist/react/index-helpers/blocks-exports.js +10 -10
  16. package/dist/react/types/input.js +1 -0
  17. package/dist/rsc/blocks/button/button.js +2 -2
  18. package/dist/rsc/blocks/columns/columns.js +4 -4
  19. package/dist/rsc/blocks/form/form.js +2 -2
  20. package/dist/rsc/blocks/image/image.js +6 -6
  21. package/dist/rsc/components/render-block/render-block.js +18 -1
  22. package/dist/rsc/components/render-block/render-repeated-block.js +1 -0
  23. package/dist/rsc/components/render-blocks.js +2 -2
  24. package/dist/rsc/components/render-content/builder-editing.js +47 -4
  25. package/dist/rsc/components/render-content/components/render-styles.helpers.js +51 -0
  26. package/dist/rsc/components/render-content/components/render-styles.js +11 -54
  27. package/dist/rsc/components/render-content/render-content.helpers.js +38 -0
  28. package/dist/rsc/components/render-content/render-content.js +43 -38
  29. package/dist/rsc/components/render-content/render-content.types.js +1 -0
  30. package/dist/rsc/constants/builder-registered-components.js +7 -7
  31. package/dist/rsc/context/builder.context.js +2 -0
  32. package/dist/rsc/index-helpers/blocks-exports.js +10 -10
  33. package/dist/rsc/types/input.js +1 -0
  34. package/package.json +1 -1
  35. package/packages/react/src/blocks/button/button.jsx +2 -2
  36. package/packages/react/src/blocks/columns/columns.jsx +4 -4
  37. package/packages/react/src/blocks/form/form.jsx +2 -2
  38. package/packages/react/src/blocks/image/image.jsx +6 -6
  39. package/packages/react/src/components/render-block/render-block.jsx +22 -1
  40. package/packages/react/src/components/render-block/render-repeated-block.jsx +1 -0
  41. package/packages/react/src/components/render-blocks.jsx +2 -2
  42. package/packages/react/src/components/render-content/components/render-styles.helpers.js +57 -0
  43. package/packages/react/src/components/render-content/components/render-styles.jsx +13 -56
  44. package/packages/react/src/components/render-content/render-content.helpers.js +48 -0
  45. package/packages/react/src/components/render-content/render-content.jsx +76 -67
  46. package/packages/{_rsc/src/components/render-block/types.js → react/src/components/render-content/render-content.types.js} +0 -0
  47. package/packages/react/src/constants/builder-registered-components.js +7 -7
  48. package/packages/react/src/context/builder.context.js +2 -0
  49. package/packages/react/src/index-helpers/blocks-exports.js +18 -18
  50. package/packages/{_rsc/src/context/types.js → react/src/types/input.js} +0 -0
  51. package/packages/rsc/src/blocks/button/button.jsx +2 -2
  52. package/packages/rsc/src/blocks/columns/columns.jsx +4 -4
  53. package/packages/rsc/src/blocks/form/form.jsx +2 -2
  54. package/packages/rsc/src/blocks/image/image.jsx +6 -6
  55. package/packages/rsc/src/components/render-block/render-block.jsx +21 -1
  56. package/packages/rsc/src/components/render-block/render-repeated-block.jsx +1 -0
  57. package/packages/rsc/src/components/render-blocks.jsx +2 -2
  58. package/packages/rsc/src/components/render-content/builder-editing.jsx +61 -4
  59. package/packages/rsc/src/components/render-content/components/render-styles.helpers.js +57 -0
  60. package/packages/rsc/src/components/render-content/components/render-styles.jsx +10 -56
  61. package/packages/rsc/src/components/render-content/render-content.helpers.js +48 -0
  62. package/packages/rsc/src/components/render-content/render-content.jsx +46 -37
  63. package/packages/{_rsc/src/functions/get-content/types.js → rsc/src/components/render-content/render-content.types.js} +0 -0
  64. package/packages/rsc/src/constants/builder-registered-components.js +7 -7
  65. package/packages/rsc/src/context/builder.context.js +2 -0
  66. package/packages/rsc/src/index-helpers/blocks-exports.js +18 -18
  67. package/packages/{_rsc/src/types/builder-block.js → rsc/src/types/input.js} +0 -0
  68. package/packages/_rsc/src/blocks/BaseText.jsx +0 -10
  69. package/packages/_rsc/src/blocks/button/button.jsx +0 -29
  70. package/packages/_rsc/src/blocks/button/component-info.js +0 -41
  71. package/packages/_rsc/src/blocks/columns/columns.jsx +0 -172
  72. package/packages/_rsc/src/blocks/columns/component-info.js +0 -242
  73. package/packages/_rsc/src/blocks/custom-code/component-info.js +0 -31
  74. package/packages/_rsc/src/blocks/custom-code/custom-code.jsx +0 -55
  75. package/packages/_rsc/src/blocks/embed/component-info.js +0 -44
  76. package/packages/_rsc/src/blocks/embed/embed.jsx +0 -43
  77. package/packages/_rsc/src/blocks/embed/helpers.js +0 -9
  78. package/packages/_rsc/src/blocks/form/component-info.js +0 -262
  79. package/packages/_rsc/src/blocks/form/form.jsx +0 -259
  80. package/packages/_rsc/src/blocks/fragment/component-info.js +0 -11
  81. package/packages/_rsc/src/blocks/fragment/fragment.jsx +0 -7
  82. package/packages/_rsc/src/blocks/image/component-info.js +0 -151
  83. package/packages/_rsc/src/blocks/image/image.helpers.js +0 -48
  84. package/packages/_rsc/src/blocks/image/image.jsx +0 -124
  85. package/packages/_rsc/src/blocks/img/component-info.js +0 -20
  86. package/packages/_rsc/src/blocks/img/img.jsx +0 -19
  87. package/packages/_rsc/src/blocks/input/component-info.js +0 -74
  88. package/packages/_rsc/src/blocks/input/input.jsx +0 -21
  89. package/packages/_rsc/src/blocks/raw-text/component-info.js +0 -16
  90. package/packages/_rsc/src/blocks/raw-text/raw-text.jsx +0 -12
  91. package/packages/_rsc/src/blocks/section/component-info.js +0 -49
  92. package/packages/_rsc/src/blocks/section/section.jsx +0 -29
  93. package/packages/_rsc/src/blocks/select/component-info.js +0 -59
  94. package/packages/_rsc/src/blocks/select/select.jsx +0 -22
  95. package/packages/_rsc/src/blocks/submit-button/component-info.js +0 -28
  96. package/packages/_rsc/src/blocks/submit-button/submit-button.jsx +0 -11
  97. package/packages/_rsc/src/blocks/symbol/component-info.js +0 -43
  98. package/packages/_rsc/src/blocks/symbol/symbol.jsx +0 -56
  99. package/packages/_rsc/src/blocks/text/component-info.js +0 -24
  100. package/packages/_rsc/src/blocks/text/text.jsx +0 -12
  101. package/packages/_rsc/src/blocks/textarea/component-info.js +0 -47
  102. package/packages/_rsc/src/blocks/textarea/textarea.jsx +0 -15
  103. package/packages/_rsc/src/blocks/util.js +0 -8
  104. package/packages/_rsc/src/blocks/video/component-info.js +0 -106
  105. package/packages/_rsc/src/blocks/video/video.jsx +0 -61
  106. package/packages/_rsc/src/components/render-block/block-styles.jsx +0 -72
  107. package/packages/_rsc/src/components/render-block/render-block.helpers.js +0 -23
  108. package/packages/_rsc/src/components/render-block/render-block.jsx +0 -251
  109. package/packages/_rsc/src/components/render-block/render-component-with-context.jsx +0 -38
  110. package/packages/_rsc/src/components/render-block/render-component.jsx +0 -37
  111. package/packages/_rsc/src/components/render-block/render-repeated-block.jsx +0 -36
  112. package/packages/_rsc/src/components/render-blocks.jsx +0 -90
  113. package/packages/_rsc/src/components/render-content/builder-editing.jsx +0 -7
  114. package/packages/_rsc/src/components/render-content/components/render-styles.jsx +0 -70
  115. package/packages/_rsc/src/components/render-content/index.js +0 -4
  116. package/packages/_rsc/src/components/render-content/render-content.jsx +0 -259
  117. package/packages/_rsc/src/components/render-inlined-styles.jsx +0 -33
  118. package/packages/_rsc/src/constants/builder-registered-components.js +0 -54
  119. package/packages/_rsc/src/constants/device-sizes.js +0 -48
  120. package/packages/_rsc/src/constants/target.js +0 -4
  121. package/packages/_rsc/src/context/builder.context.js +0 -11
  122. package/packages/_rsc/src/functions/camel-to-kebab-case.js +0 -4
  123. package/packages/_rsc/src/functions/evaluate.js +0 -6
  124. package/packages/_rsc/src/functions/event-handler-name.js +0 -7
  125. package/packages/_rsc/src/functions/extract-text-styles.js +0 -22
  126. package/packages/_rsc/src/functions/fast-clone.js +0 -4
  127. package/packages/_rsc/src/functions/get-block-actions-handler.js +0 -11
  128. package/packages/_rsc/src/functions/get-block-actions.js +0 -18
  129. package/packages/_rsc/src/functions/get-block-component-options.js +0 -28
  130. package/packages/_rsc/src/functions/get-block-properties.js +0 -50
  131. package/packages/_rsc/src/functions/get-block-tag.js +0 -6
  132. package/packages/_rsc/src/functions/get-builder-search-params/fn.test.js +0 -13
  133. package/packages/_rsc/src/functions/get-builder-search-params/index.js +0 -38
  134. package/packages/_rsc/src/functions/get-content/ab-testing.js +0 -99
  135. package/packages/_rsc/src/functions/get-content/generate-content-url.js +0 -55
  136. package/packages/_rsc/src/functions/get-content/generate-content-url.test.js +0 -31
  137. package/packages/_rsc/src/functions/get-content/index.js +0 -65
  138. package/packages/_rsc/src/functions/get-fetch.js +0 -14
  139. package/packages/_rsc/src/functions/get-global-this.js +0 -18
  140. package/packages/_rsc/src/functions/get-processed-block.js +0 -59
  141. package/packages/_rsc/src/functions/get-processed-block.test.js +0 -32
  142. package/packages/_rsc/src/functions/get-react-native-block-styles.js +0 -33
  143. package/packages/_rsc/src/functions/if-target.js +0 -15
  144. package/packages/_rsc/src/functions/is-browser.js +0 -6
  145. package/packages/_rsc/src/functions/is-editing.js +0 -7
  146. package/packages/_rsc/src/functions/is-iframe.js +0 -7
  147. package/packages/_rsc/src/functions/is-previewing.js +0 -14
  148. package/packages/_rsc/src/functions/on-change.js +0 -27
  149. package/packages/_rsc/src/functions/on-change.test.js +0 -19
  150. package/packages/_rsc/src/functions/register-component.js +0 -68
  151. package/packages/_rsc/src/functions/register.js +0 -29
  152. package/packages/_rsc/src/functions/sanitize-react-native-block-styles.js +0 -66
  153. package/packages/_rsc/src/functions/set-editor-settings.js +0 -15
  154. package/packages/_rsc/src/functions/set.js +0 -11
  155. package/packages/_rsc/src/functions/set.test.js +0 -16
  156. package/packages/_rsc/src/functions/track.js +0 -124
  157. package/packages/_rsc/src/functions/transform-block-properties.js +0 -6
  158. package/packages/_rsc/src/functions/transform-block.js +0 -6
  159. package/packages/_rsc/src/helpers/ab-tests.js +0 -16
  160. package/packages/_rsc/src/helpers/cookie.js +0 -81
  161. package/packages/_rsc/src/helpers/css.js +0 -34
  162. package/packages/_rsc/src/helpers/flatten.js +0 -34
  163. package/packages/_rsc/src/helpers/localStorage.js +0 -35
  164. package/packages/_rsc/src/helpers/nullable.js +0 -4
  165. package/packages/_rsc/src/helpers/sessionId.js +0 -52
  166. package/packages/_rsc/src/helpers/time.js +0 -5
  167. package/packages/_rsc/src/helpers/url.js +0 -13
  168. package/packages/_rsc/src/helpers/url.test.js +0 -21
  169. package/packages/_rsc/src/helpers/uuid.js +0 -13
  170. package/packages/_rsc/src/helpers/visitorId.js +0 -34
  171. package/packages/_rsc/src/index-helpers/blocks-exports.js +0 -22
  172. package/packages/_rsc/src/index-helpers/top-of-file.js +0 -2
  173. package/packages/_rsc/src/index.js +0 -14
  174. package/packages/_rsc/src/scripts/init-editing.js +0 -93
  175. package/packages/_rsc/src/types/builder-content.js +0 -0
  176. package/packages/_rsc/src/types/can-track.js +0 -0
  177. package/packages/_rsc/src/types/components.js +0 -0
  178. package/packages/_rsc/src/types/deep-partial.js +0 -0
  179. package/packages/_rsc/src/types/element.js +0 -0
  180. package/packages/_rsc/src/types/targets.js +0 -0
  181. package/packages/_rsc/src/types/typescript.js +0 -0
@@ -1,29 +0,0 @@
1
- import * as React from "react";
2
-
3
- export default function Button(props) {
4
- const _context = { ...props["_context"] };
5
-
6
- return (
7
- <>
8
- {props.link ? (
9
- <>
10
- <a
11
- role="button"
12
- {...props.attributes}
13
- href={props.link}
14
- target={props.openLinkInNewTab ? "_blank" : undefined}
15
- >
16
- {props.text}
17
- </a>
18
- </>
19
- ) : (
20
- <button className="button-12870b9c" {...props.attributes}>
21
- {props.text}
22
- </button>
23
- )}
24
- <style>{`.button-12870b9c {
25
- all: unset;
26
- }`}</style>
27
- </>
28
- );
29
- }
@@ -1,41 +0,0 @@
1
- const componentInfo = {
2
- name: "Core:Button",
3
- builtIn: true,
4
- image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F81a15681c3e74df09677dfc57a615b13",
5
- defaultStyles: {
6
- appearance: "none",
7
- paddingTop: "15px",
8
- paddingBottom: "15px",
9
- paddingLeft: "25px",
10
- paddingRight: "25px",
11
- backgroundColor: "#000000",
12
- color: "white",
13
- borderRadius: "4px",
14
- textAlign: "center",
15
- cursor: "pointer"
16
- },
17
- inputs: [
18
- {
19
- name: "text",
20
- type: "text",
21
- defaultValue: "Click me!",
22
- bubble: true
23
- },
24
- {
25
- name: "link",
26
- type: "url",
27
- bubble: true
28
- },
29
- {
30
- name: "openLinkInNewTab",
31
- type: "boolean",
32
- defaultValue: false,
33
- friendlyName: "Open link in new tab"
34
- }
35
- ],
36
- static: true,
37
- noWrap: true
38
- };
39
- export {
40
- componentInfo
41
- };
@@ -1,172 +0,0 @@
1
- import * as React from "react";
2
- import RenderBlocks from "../../components/render-blocks.js";
3
- import { getSizesForBreakpoints } from "../../constants/device-sizes";
4
- import RenderInlinedStyles from "../../components/render-inlined-styles.js";
5
- import { TARGET } from "../../constants/target.js";
6
- import { convertStyleMapToCSS } from "../../helpers/css";
7
-
8
- export default function Columns(props) {
9
- const _context = { ...props["_context"] };
10
-
11
- const state = {
12
- getGutterSize() {
13
- return typeof props.space === "number" ? props.space || 0 : 20;
14
- },
15
- getColumns() {
16
- return props.columns || [];
17
- },
18
- getWidth(index) {
19
- const columns = state.getColumns();
20
- return columns[index]?.width || 100 / columns.length;
21
- },
22
- getColumnCssWidth(index) {
23
- const columns = state.getColumns();
24
- const gutterSize = state.getGutterSize();
25
- const subtractWidth =
26
- (gutterSize * (columns.length - 1)) / columns.length;
27
- return `calc(${state.getWidth(index)}% - ${subtractWidth}px)`;
28
- },
29
- maybeApplyForTablet(prop) {
30
- const _stackColumnsAt = props.stackColumnsAt || "tablet";
31
- return _stackColumnsAt === "tablet" ? prop : "inherit";
32
- },
33
- get columnsCssVars() {
34
- const flexDir =
35
- props.stackColumnsAt === "never"
36
- ? "inherit"
37
- : props.reverseColumnsWhenStacked
38
- ? "column-reverse"
39
- : "column";
40
- return {
41
- "--flex-dir": flexDir,
42
- "--flex-dir-tablet": state.maybeApplyForTablet(flexDir),
43
- };
44
- },
45
- get columnCssVars() {
46
- const width = "100%";
47
- const marginLeft = "0";
48
- return {
49
- "--column-width": width,
50
- "--column-margin-left": marginLeft,
51
- "--column-width-tablet": state.maybeApplyForTablet(width),
52
- "--column-margin-left-tablet": state.maybeApplyForTablet(marginLeft),
53
- };
54
- },
55
- getWidthForBreakpointSize(size) {
56
- const breakpointSizes = getSizesForBreakpoints(
57
- props.customBreakpoints || {}
58
- );
59
- return breakpointSizes[size].max;
60
- },
61
- get columnStyleObjects() {
62
- return {
63
- columns: {
64
- small: {
65
- flexDirection: "var(--flex-dir)",
66
- alignItems: "stretch",
67
- },
68
- medium: {
69
- flexDirection: "var(--flex-dir-tablet)",
70
- alignItems: "stretch",
71
- },
72
- },
73
- column: {
74
- small: {
75
- width: "var(--column-width) !important",
76
- marginLeft: "var(--column-margin-left) !important",
77
- },
78
- medium: {
79
- width: "var(--column-width-tablet) !important",
80
- marginLeft: "var(--column-margin-left-tablet) !important",
81
- },
82
- },
83
- };
84
- },
85
- get columnsStyles() {
86
- return `
87
- @media (max-width: ${state.getWidthForBreakpointSize("medium")}px) {
88
- .${props.builderBlock.id}-breakpoints {
89
- ${convertStyleMapToCSS(state.columnStyleObjects.columns.medium)}
90
- }
91
-
92
- .${props.builderBlock.id}-breakpoints > .builder-column {
93
- ${convertStyleMapToCSS(state.columnStyleObjects.column.medium)}
94
- }
95
- }
96
-
97
- @media (max-width: ${state.getWidthForBreakpointSize("small")}px) {
98
- .${props.builderBlock.id}-breakpoints {
99
- ${convertStyleMapToCSS(state.columnStyleObjects.columns.small)}
100
- }
101
-
102
- .${props.builderBlock.id}-breakpoints > .builder-column {
103
- ${convertStyleMapToCSS(state.columnStyleObjects.column.small)}
104
- }
105
- },
106
- `;
107
- },
108
- get reactNativeColumnsStyles() {
109
- return this.columnStyleObjects.columns.small;
110
- },
111
- get reactNativeColumnStyles() {
112
- return this.columnStyleObjects.column.small;
113
- },
114
- };
115
-
116
- return (
117
- <>
118
- <div
119
- className={
120
- `builder-columns ${props.builderBlock.id}-breakpoints` +
121
- " div-540739f0"
122
- }
123
- style={{
124
- ...(TARGET === "reactNative" ? state.reactNativeColumnsStyles : {}),
125
- ...state.columnsCssVars,
126
- }}
127
- >
128
- {TARGET !== "reactNative" ? (
129
- <>
130
- <RenderInlinedStyles
131
- styles={state.columnsStyles}
132
- _context={_context}
133
- />
134
- </>
135
- ) : null}
136
-
137
- {props.columns?.map((column, index) => (
138
- <div
139
- className="builder-column div-540739f0-2"
140
- style={{
141
- width: state.getColumnCssWidth(index),
142
- marginLeft: `${index === 0 ? 0 : state.getGutterSize()}px`,
143
- ...(TARGET === "reactNative"
144
- ? state.reactNativeColumnStyles
145
- : {}),
146
- ...state.columnCssVars,
147
- }}
148
- key={index}
149
- >
150
- <RenderBlocks
151
- blocks={column.blocks}
152
- path={`component.options.columns.${index}.blocks`}
153
- parent={props.builderBlock.id}
154
- styleProp={{
155
- flexGrow: "1",
156
- }}
157
- _context={_context}
158
- />
159
- </div>
160
- ))}
161
- </div>
162
- <style>{`.div-540739f0 {
163
- display: flex;
164
- line-height: normal;
165
- }.div-540739f0-2 {
166
- display: flex;
167
- flex-direction: column;
168
- align-items: stretch;
169
- }`}</style>
170
- </>
171
- );
172
- }
@@ -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
- };