@builder.io/sdk-vue 0.0.1-41 → 0.0.1-45

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 (195) hide show
  1. package/README.md +18 -0
  2. package/nuxt.js +1 -1
  3. package/nuxt2/src/blocks/button.vue +21 -20
  4. package/nuxt2/src/blocks/columns.vue +119 -119
  5. package/nuxt2/src/blocks/custom-code.vue +22 -22
  6. package/nuxt2/src/blocks/embed.vue +17 -17
  7. package/nuxt2/src/blocks/form.vue +145 -145
  8. package/nuxt2/src/blocks/fragment.vue +3 -3
  9. package/nuxt2/src/blocks/image.vue +71 -63
  10. package/nuxt2/src/blocks/img.vue +13 -13
  11. package/nuxt2/src/blocks/input.vue +52 -52
  12. package/nuxt2/src/blocks/raw-text.vue +12 -7
  13. package/nuxt2/src/blocks/section.vue +19 -19
  14. package/nuxt2/src/blocks/select.vue +17 -17
  15. package/nuxt2/src/blocks/submit-button.vue +15 -15
  16. package/nuxt2/src/blocks/symbol.vue +9 -9
  17. package/nuxt2/src/blocks/text.vue +11 -11
  18. package/nuxt2/src/blocks/textarea.vue +19 -19
  19. package/nuxt2/src/blocks/video.vue +61 -63
  20. package/nuxt2/src/components/error-boundary.vue +3 -1
  21. package/nuxt2/src/components/render-block.vue +21 -18
  22. package/nuxt2/src/components/render-blocks.vue +18 -13
  23. package/nuxt2/src/components/render-content.vue +47 -29
  24. package/nuxt2/src/constants/device-sizes.js +10 -9
  25. package/nuxt2/src/context/builder.context.js +3 -2
  26. package/nuxt2/src/functions/evaluate.js +42 -12
  27. package/{nuxt/src/context/builder.context.js → nuxt2/src/functions/event-handler-name.js} +4 -3
  28. package/nuxt2/src/functions/get-block-actions.js +37 -16
  29. package/nuxt2/src/functions/get-block-component-options.js +18 -8
  30. package/nuxt2/src/functions/get-block-properties.js +26 -10
  31. package/nuxt2/src/functions/get-block-styles.js +3 -2
  32. package/nuxt2/src/functions/get-block-tag.js +4 -3
  33. package/nuxt2/src/functions/get-content.js +80 -27
  34. package/nuxt2/src/functions/get-content.test.js +95 -0
  35. package/nuxt2/src/functions/get-fetch.js +29 -10
  36. package/nuxt2/src/functions/get-global-this.js +7 -6
  37. package/nuxt2/src/functions/get-processed-block.js +43 -16
  38. package/nuxt2/src/functions/get-processed-block.test.js +45 -20
  39. package/nuxt2/src/functions/get-target.js +4 -3
  40. package/nuxt2/src/functions/if-target.js +3 -2
  41. package/nuxt2/src/functions/is-browser.js +31 -8
  42. package/nuxt2/src/functions/is-editing.js +30 -8
  43. package/nuxt2/src/functions/is-iframe.js +26 -7
  44. package/nuxt2/src/functions/is-previewing.js +28 -9
  45. package/nuxt2/src/functions/is-react-native.js +4 -3
  46. package/nuxt2/src/functions/macro-eval.js +4 -4
  47. package/nuxt2/src/functions/name-event-handlers.js +15 -0
  48. package/nuxt2/src/functions/on-change.js +6 -5
  49. package/nuxt2/src/functions/on-change.test.js +50 -19
  50. package/nuxt2/src/functions/previewing-model-name.js +27 -8
  51. package/nuxt2/src/functions/register-component.js +62 -29
  52. package/nuxt2/src/functions/register.js +32 -13
  53. package/nuxt2/src/functions/set-editor-settings.js +29 -10
  54. package/nuxt2/src/functions/set.js +16 -4
  55. package/nuxt2/src/functions/set.test.js +38 -19
  56. package/nuxt2/src/functions/track.js +34 -12
  57. package/{nuxt/src/functions/get-block-styles.js → nuxt2/src/functions/transform-block.js} +5 -4
  58. package/nuxt2/src/index.js +31 -11
  59. package/nuxt2/src/scripts/init-editing.js +88 -43
  60. package/nuxt2/src/types/builder-block.js +2 -1
  61. package/nuxt2/src/types/builder-content.js +2 -1
  62. package/nuxt2/src/types/deep-partial.js +2 -1
  63. package/package.json +1 -1
  64. package/vue2/src/components/error-boundary.vue +3 -1
  65. package/vue2/src/constants/device-sizes.js +10 -9
  66. package/vue2/src/context/builder.context.js +3 -2
  67. package/vue2/src/functions/evaluate.js +42 -12
  68. package/{nuxt/src/functions/get-block-tag.js → vue2/src/functions/event-handler-name.js} +4 -5
  69. package/vue2/src/functions/get-block-actions.js +37 -16
  70. package/vue2/src/functions/get-block-component-options.js +18 -8
  71. package/vue2/src/functions/get-block-properties.js +26 -10
  72. package/vue2/src/functions/get-block-styles.js +3 -2
  73. package/vue2/src/functions/get-block-tag.js +4 -3
  74. package/vue2/src/functions/get-content.js +80 -27
  75. package/vue2/src/functions/get-content.test.js +95 -0
  76. package/vue2/src/functions/get-fetch.js +29 -10
  77. package/vue2/src/functions/get-global-this.js +7 -6
  78. package/vue2/src/functions/get-processed-block.js +43 -16
  79. package/vue2/src/functions/get-processed-block.test.js +45 -20
  80. package/vue2/src/functions/get-target.js +4 -3
  81. package/vue2/src/functions/if-target.js +3 -2
  82. package/vue2/src/functions/is-browser.js +31 -8
  83. package/vue2/src/functions/is-editing.js +30 -8
  84. package/vue2/src/functions/is-iframe.js +26 -7
  85. package/vue2/src/functions/is-previewing.js +28 -9
  86. package/vue2/src/functions/is-react-native.js +4 -3
  87. package/vue2/src/functions/macro-eval.js +4 -4
  88. package/vue2/src/functions/name-event-handlers.js +15 -0
  89. package/vue2/src/functions/on-change.js +6 -5
  90. package/vue2/src/functions/on-change.test.js +50 -19
  91. package/vue2/src/functions/previewing-model-name.js +27 -8
  92. package/vue2/src/functions/register-component.js +62 -29
  93. package/vue2/src/functions/register.js +32 -13
  94. package/vue2/src/functions/set-editor-settings.js +29 -10
  95. package/vue2/src/functions/set.js +16 -4
  96. package/vue2/src/functions/set.test.js +38 -19
  97. package/vue2/src/functions/track.js +34 -12
  98. package/{nuxt/src/functions/macro-eval.js → vue2/src/functions/transform-block.js} +5 -3
  99. package/vue2/src/index.js +31 -11
  100. package/vue2/src/scripts/init-editing.js +88 -43
  101. package/vue2/src/types/builder-block.js +2 -1
  102. package/vue2/src/types/builder-content.js +2 -1
  103. package/vue2/src/types/deep-partial.js +2 -1
  104. package/vue3/src/components/error-boundary.vue +3 -1
  105. package/vue3/src/constants/device-sizes.js +10 -9
  106. package/vue3/src/context/builder.context.js +3 -2
  107. package/vue3/src/functions/evaluate.js +42 -12
  108. package/vue3/src/functions/event-handler-name.js +12 -0
  109. package/vue3/src/functions/get-block-actions.js +37 -16
  110. package/vue3/src/functions/get-block-component-options.js +18 -8
  111. package/vue3/src/functions/get-block-properties.js +26 -10
  112. package/vue3/src/functions/get-block-styles.js +3 -2
  113. package/vue3/src/functions/get-block-tag.js +4 -3
  114. package/vue3/src/functions/get-content.js +80 -27
  115. package/vue3/src/functions/get-content.test.js +95 -0
  116. package/vue3/src/functions/get-fetch.js +29 -10
  117. package/vue3/src/functions/get-global-this.js +7 -6
  118. package/vue3/src/functions/get-processed-block.js +43 -16
  119. package/vue3/src/functions/get-processed-block.test.js +45 -20
  120. package/vue3/src/functions/get-target.js +4 -3
  121. package/vue3/src/functions/if-target.js +3 -2
  122. package/vue3/src/functions/is-browser.js +31 -8
  123. package/vue3/src/functions/is-editing.js +30 -8
  124. package/vue3/src/functions/is-iframe.js +26 -7
  125. package/vue3/src/functions/is-previewing.js +28 -9
  126. package/vue3/src/functions/is-react-native.js +4 -3
  127. package/vue3/src/functions/macro-eval.js +4 -4
  128. package/vue3/src/functions/name-event-handlers.js +15 -0
  129. package/vue3/src/functions/on-change.js +6 -5
  130. package/vue3/src/functions/on-change.test.js +50 -19
  131. package/vue3/src/functions/previewing-model-name.js +27 -8
  132. package/vue3/src/functions/register-component.js +62 -29
  133. package/vue3/src/functions/register.js +32 -13
  134. package/vue3/src/functions/set-editor-settings.js +29 -10
  135. package/vue3/src/functions/set.js +16 -4
  136. package/vue3/src/functions/set.test.js +38 -19
  137. package/vue3/src/functions/track.js +34 -12
  138. package/{nuxt/src/functions/get-target.js → vue3/src/functions/transform-block.js} +5 -4
  139. package/vue3/src/index.js +31 -11
  140. package/vue3/src/scripts/init-editing.js +88 -43
  141. package/vue3/src/types/builder-block.js +2 -1
  142. package/vue3/src/types/builder-content.js +2 -1
  143. package/vue3/src/types/deep-partial.js +2 -1
  144. package/nuxt/src/blocks/button.vue +0 -18
  145. package/nuxt/src/blocks/columns.vue +0 -54
  146. package/nuxt/src/blocks/custom-code.vue +0 -79
  147. package/nuxt/src/blocks/embed.vue +0 -60
  148. package/nuxt/src/blocks/form.vue +0 -314
  149. package/nuxt/src/blocks/fragment.vue +0 -10
  150. package/nuxt/src/blocks/image.vue +0 -100
  151. package/nuxt/src/blocks/img.vue +0 -29
  152. package/nuxt/src/blocks/input.vue +0 -31
  153. package/nuxt/src/blocks/raw-text.vue +0 -27
  154. package/nuxt/src/blocks/section.vue +0 -21
  155. package/nuxt/src/blocks/select.vue +0 -28
  156. package/nuxt/src/blocks/submit-button.vue +0 -12
  157. package/nuxt/src/blocks/symbol.vue +0 -24
  158. package/nuxt/src/blocks/text.vue +0 -10
  159. package/nuxt/src/blocks/textarea.vue +0 -16
  160. package/nuxt/src/blocks/video.vue +0 -39
  161. package/nuxt/src/components/block-styles.vue +0 -34
  162. package/nuxt/src/components/error-boundary.vue +0 -15
  163. package/nuxt/src/components/render-block.vue +0 -116
  164. package/nuxt/src/components/render-blocks.vue +0 -75
  165. package/nuxt/src/components/render-content.vue +0 -212
  166. package/nuxt/src/constants/device-sizes.js +0 -46
  167. package/nuxt/src/functions/evaluate.js +0 -42
  168. package/nuxt/src/functions/get-block-actions.js +0 -45
  169. package/nuxt/src/functions/get-block-component-options.js +0 -29
  170. package/nuxt/src/functions/get-block-properties.js +0 -46
  171. package/nuxt/src/functions/get-content.js +0 -139
  172. package/nuxt/src/functions/get-fetch.js +0 -35
  173. package/nuxt/src/functions/get-global-this.js +0 -25
  174. package/nuxt/src/functions/get-processed-block.js +0 -65
  175. package/nuxt/src/functions/get-processed-block.test.js +0 -44
  176. package/nuxt/src/functions/if-target.js +0 -13
  177. package/nuxt/src/functions/is-browser.js +0 -30
  178. package/nuxt/src/functions/is-editing.js +0 -30
  179. package/nuxt/src/functions/is-iframe.js +0 -30
  180. package/nuxt/src/functions/is-previewing.js +0 -37
  181. package/nuxt/src/functions/is-react-native.js +0 -13
  182. package/nuxt/src/functions/on-change.js +0 -34
  183. package/nuxt/src/functions/on-change.test.js +0 -38
  184. package/nuxt/src/functions/previewing-model-name.js +0 -34
  185. package/nuxt/src/functions/register-component.js +0 -73
  186. package/nuxt/src/functions/register.js +0 -52
  187. package/nuxt/src/functions/set-editor-settings.js +0 -38
  188. package/nuxt/src/functions/set.js +0 -18
  189. package/nuxt/src/functions/set.test.js +0 -35
  190. package/nuxt/src/functions/track.js +0 -41
  191. package/nuxt/src/index.js +0 -27
  192. package/nuxt/src/scripts/init-editing.js +0 -77
  193. package/nuxt/src/types/builder-block.js +0 -3
  194. package/nuxt/src/types/builder-content.js +0 -3
  195. package/nuxt/src/types/deep-partial.js +0 -3
package/README.md CHANGED
@@ -15,3 +15,21 @@ Add to your `nuxt.config.js`:
15
15
  ```js
16
16
  buildModules: ['@builder.io/sdk-vue/nuxt'];
17
17
  ```
18
+
19
+ Then register built in and custom components as seen [here](/examples/vue-nuxt/scripts/register-builder-components.js)
20
+
21
+ You can see a full example of using Builder.io + Nuxt [here](/examples/vue-nuxt)
22
+
23
+ ## Status
24
+
25
+ This SDK is currently in beta
26
+
27
+ Left to implement:
28
+
29
+ - SSR (Nuxt currently can't find the custom components on the server, looking into)
30
+ - Stacking columns on breakpoints
31
+ - "View current draft" logic
32
+ - "+ add block" button when starting a page (for now just drag your first block to the "layers" tab)
33
+ - Symbols
34
+ - Server side a/b testing
35
+ - "animations" tab and "data" tab
package/nuxt.js CHANGED
@@ -8,7 +8,7 @@ export default function () {
8
8
  );
9
9
  }
10
10
 
11
- this.nuxt.hook('components:dirs', dirs => {
11
+ this.nuxt.hook('components:dirs', (dirs) => {
12
12
  // Add ./components dir to the list
13
13
  dirs.push({
14
14
  path: join(__dirname, 'nuxt2/src/components'),
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <a
3
3
  v-bind="attributes"
4
+ role="button"
4
5
  v-if="link"
5
6
  :href="link"
6
7
  :target="openLinkInNewTab ? '_blank' : undefined"
@@ -10,39 +11,39 @@
10
11
  <span v-bind="attributes" v-else="">{{ text }}</span>
11
12
  </template>
12
13
  <script>
13
- import { registerComponent } from "@builder.io/sdk-vue";
14
+ import { registerComponent } from '../functions/register-component';
14
15
 
15
16
  export default registerComponent(
16
17
  {
17
- name: "builder-button",
18
+ name: 'builder-button',
18
19
 
19
- props: ["attributes", "text", "link", "openLinkInNewTab"],
20
+ props: ['attributes', 'text', 'link', 'openLinkInNewTab'],
20
21
  },
21
22
  {
22
- name: "Core:Button",
23
+ name: 'Core:Button',
23
24
  builtIn: true,
24
25
  image:
25
- "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F81a15681c3e74df09677dfc57a615b13",
26
+ 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F81a15681c3e74df09677dfc57a615b13',
26
27
  defaultStyles: {
27
- appearance: "none",
28
- paddingTop: "15px",
29
- paddingBottom: "15px",
30
- paddingLeft: "25px",
31
- paddingRight: "25px",
32
- backgroundColor: "#3898EC",
33
- color: "white",
34
- borderRadius: "4px",
35
- textAlign: "center",
36
- cursor: "pointer",
28
+ appearance: 'none',
29
+ paddingTop: '15px',
30
+ paddingBottom: '15px',
31
+ paddingLeft: '25px',
32
+ paddingRight: '25px',
33
+ backgroundColor: '#000000',
34
+ color: 'white',
35
+ borderRadius: '4px',
36
+ textAlign: 'center',
37
+ cursor: 'pointer',
37
38
  },
38
39
  inputs: [
39
- { name: "text", type: "text", defaultValue: "Click me!", bubble: true },
40
- { name: "link", type: "url", bubble: true },
40
+ { name: 'text', type: 'text', defaultValue: 'Click me!', bubble: true },
41
+ { name: 'link', type: 'url', bubble: true },
41
42
  {
42
- name: "openLinkInNewTab",
43
- type: "boolean",
43
+ name: 'openLinkInNewTab',
44
+ type: 'boolean',
44
45
  defaultValue: false,
45
- friendlyName: "Open link in new tab",
46
+ friendlyName: 'Open link in new tab',
46
47
  },
47
48
  ],
48
49
  static: true,
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="builder-columns div-1c8a5iyk9bu">
2
+ <div class="builder-columns div-38o6qlysr38">
3
3
  <div
4
- class="builder-column div-1c8a5iyk9bu-2"
4
+ class="builder-column div-38o6qlysr38-2"
5
5
  v-for="(column, index) in columns"
6
6
  :style="{
7
7
  width: getColumnCssWidth(index),
@@ -14,19 +14,19 @@
14
14
  </div>
15
15
  </template>
16
16
  <script>
17
- import RenderBlocks from "../components/render-blocks";
17
+ import RenderBlocks from '../components/render-blocks';
18
18
 
19
- import { registerComponent } from "@builder.io/sdk-vue";
19
+ import { registerComponent } from '../functions/register-component';
20
20
 
21
21
  export default registerComponent(
22
22
  {
23
- name: "builder-columns",
24
- components: { "render-blocks": async () => RenderBlocks },
25
- props: ["space", "columns"],
23
+ name: 'builder-columns',
24
+ components: { 'render-blocks': async () => RenderBlocks },
25
+ props: ['space', 'columns'],
26
26
 
27
27
  methods: {
28
28
  getGutterSize() {
29
- return typeof this.space === "number" ? this.space || 0 : 20;
29
+ return typeof this.space === 'number' ? this.space || 0 : 20;
30
30
  },
31
31
  getColumns() {
32
32
  return this.columns || [];
@@ -45,133 +45,133 @@ export default registerComponent(
45
45
  },
46
46
  },
47
47
  {
48
- name: "Columns",
48
+ name: 'Columns',
49
49
  builtIn: true,
50
50
  inputs: [
51
51
  {
52
- name: "columns",
53
- type: "array",
52
+ name: 'columns',
53
+ type: 'array',
54
54
  broadcast: true,
55
55
  subFields: [
56
56
  {
57
- name: "blocks",
58
- type: "array",
57
+ name: 'blocks',
58
+ type: 'array',
59
59
  hideFromUI: true,
60
60
  defaultValue: [
61
61
  {
62
- "@type": "@builder.io/sdk:Element",
62
+ '@type': '@builder.io/sdk:Element',
63
63
  responsiveStyles: {
64
64
  large: {
65
- display: "flex",
66
- flexDirection: "column",
67
- alignItems: "stretch",
68
- flexShrink: "0",
69
- position: "relative",
70
- marginTop: "30px",
71
- textAlign: "center",
72
- lineHeight: "normal",
73
- height: "auto",
74
- minHeight: "20px",
75
- minWidth: "20px",
76
- overflow: "hidden",
65
+ display: 'flex',
66
+ flexDirection: 'column',
67
+ alignItems: 'stretch',
68
+ flexShrink: '0',
69
+ position: 'relative',
70
+ marginTop: '30px',
71
+ textAlign: 'center',
72
+ lineHeight: 'normal',
73
+ height: 'auto',
74
+ minHeight: '20px',
75
+ minWidth: '20px',
76
+ overflow: 'hidden',
77
77
  },
78
78
  },
79
79
  component: {
80
- name: "Image",
80
+ name: 'Image',
81
81
  options: {
82
82
  image:
83
- "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
84
- backgroundPosition: "center",
85
- backgroundSize: "cover",
83
+ 'https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d',
84
+ backgroundPosition: 'center',
85
+ backgroundSize: 'cover',
86
86
  aspectRatio: 0.7004048582995948,
87
87
  },
88
88
  },
89
89
  },
90
90
  {
91
- "@type": "@builder.io/sdk:Element",
91
+ '@type': '@builder.io/sdk:Element',
92
92
  responsiveStyles: {
93
93
  large: {
94
- display: "flex",
95
- flexDirection: "column",
96
- alignItems: "stretch",
97
- flexShrink: "0",
98
- position: "relative",
99
- marginTop: "30px",
100
- textAlign: "center",
101
- lineHeight: "normal",
102
- height: "auto",
94
+ display: 'flex',
95
+ flexDirection: 'column',
96
+ alignItems: 'stretch',
97
+ flexShrink: '0',
98
+ position: 'relative',
99
+ marginTop: '30px',
100
+ textAlign: 'center',
101
+ lineHeight: 'normal',
102
+ height: 'auto',
103
103
  },
104
104
  },
105
105
  component: {
106
- name: "Text",
107
- options: { text: "<p>Enter some text...</p>" },
106
+ name: 'Text',
107
+ options: { text: '<p>Enter some text...</p>' },
108
108
  },
109
109
  },
110
110
  ],
111
111
  },
112
112
  {
113
- name: "width",
114
- type: "number",
113
+ name: 'width',
114
+ type: 'number',
115
115
  hideFromUI: true,
116
- helperText: "Width %, e.g. set to 50 to fill half of the space",
116
+ helperText: 'Width %, e.g. set to 50 to fill half of the space',
117
117
  },
118
118
  {
119
- name: "link",
120
- type: "url",
119
+ name: 'link',
120
+ type: 'url',
121
121
  helperText:
122
- "Optionally set a url that clicking this column will link to",
122
+ 'Optionally set a url that clicking this column will link to',
123
123
  },
124
124
  ],
125
125
  defaultValue: [
126
126
  {
127
127
  blocks: [
128
128
  {
129
- "@type": "@builder.io/sdk:Element",
129
+ '@type': '@builder.io/sdk:Element',
130
130
  responsiveStyles: {
131
131
  large: {
132
- display: "flex",
133
- flexDirection: "column",
134
- alignItems: "stretch",
135
- flexShrink: "0",
136
- position: "relative",
137
- marginTop: "30px",
138
- textAlign: "center",
139
- lineHeight: "normal",
140
- height: "auto",
141
- minHeight: "20px",
142
- minWidth: "20px",
143
- overflow: "hidden",
132
+ display: 'flex',
133
+ flexDirection: 'column',
134
+ alignItems: 'stretch',
135
+ flexShrink: '0',
136
+ position: 'relative',
137
+ marginTop: '30px',
138
+ textAlign: 'center',
139
+ lineHeight: 'normal',
140
+ height: 'auto',
141
+ minHeight: '20px',
142
+ minWidth: '20px',
143
+ overflow: 'hidden',
144
144
  },
145
145
  },
146
146
  component: {
147
- name: "Image",
147
+ name: 'Image',
148
148
  options: {
149
149
  image:
150
- "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
151
- backgroundPosition: "center",
152
- backgroundSize: "cover",
150
+ 'https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d',
151
+ backgroundPosition: 'center',
152
+ backgroundSize: 'cover',
153
153
  aspectRatio: 0.7004048582995948,
154
154
  },
155
155
  },
156
156
  },
157
157
  {
158
- "@type": "@builder.io/sdk:Element",
158
+ '@type': '@builder.io/sdk:Element',
159
159
  responsiveStyles: {
160
160
  large: {
161
- display: "flex",
162
- flexDirection: "column",
163
- alignItems: "stretch",
164
- flexShrink: "0",
165
- position: "relative",
166
- marginTop: "30px",
167
- textAlign: "center",
168
- lineHeight: "normal",
169
- height: "auto",
161
+ display: 'flex',
162
+ flexDirection: 'column',
163
+ alignItems: 'stretch',
164
+ flexShrink: '0',
165
+ position: 'relative',
166
+ marginTop: '30px',
167
+ textAlign: 'center',
168
+ lineHeight: 'normal',
169
+ height: 'auto',
170
170
  },
171
171
  },
172
172
  component: {
173
- name: "Text",
174
- options: { text: "<p>Enter some text...</p>" },
173
+ name: 'Text',
174
+ options: { text: '<p>Enter some text...</p>' },
175
175
  },
176
176
  },
177
177
  ],
@@ -179,52 +179,52 @@ export default registerComponent(
179
179
  {
180
180
  blocks: [
181
181
  {
182
- "@type": "@builder.io/sdk:Element",
182
+ '@type': '@builder.io/sdk:Element',
183
183
  responsiveStyles: {
184
184
  large: {
185
- display: "flex",
186
- flexDirection: "column",
187
- alignItems: "stretch",
188
- flexShrink: "0",
189
- position: "relative",
190
- marginTop: "30px",
191
- textAlign: "center",
192
- lineHeight: "normal",
193
- height: "auto",
194
- minHeight: "20px",
195
- minWidth: "20px",
196
- overflow: "hidden",
185
+ display: 'flex',
186
+ flexDirection: 'column',
187
+ alignItems: 'stretch',
188
+ flexShrink: '0',
189
+ position: 'relative',
190
+ marginTop: '30px',
191
+ textAlign: 'center',
192
+ lineHeight: 'normal',
193
+ height: 'auto',
194
+ minHeight: '20px',
195
+ minWidth: '20px',
196
+ overflow: 'hidden',
197
197
  },
198
198
  },
199
199
  component: {
200
- name: "Image",
200
+ name: 'Image',
201
201
  options: {
202
202
  image:
203
- "https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
204
- backgroundPosition: "center",
205
- backgroundSize: "cover",
203
+ 'https://builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d',
204
+ backgroundPosition: 'center',
205
+ backgroundSize: 'cover',
206
206
  aspectRatio: 0.7004048582995948,
207
207
  },
208
208
  },
209
209
  },
210
210
  {
211
- "@type": "@builder.io/sdk:Element",
211
+ '@type': '@builder.io/sdk:Element',
212
212
  responsiveStyles: {
213
213
  large: {
214
- display: "flex",
215
- flexDirection: "column",
216
- alignItems: "stretch",
217
- flexShrink: "0",
218
- position: "relative",
219
- marginTop: "30px",
220
- textAlign: "center",
221
- lineHeight: "normal",
222
- height: "auto",
214
+ display: 'flex',
215
+ flexDirection: 'column',
216
+ alignItems: 'stretch',
217
+ flexShrink: '0',
218
+ position: 'relative',
219
+ marginTop: '30px',
220
+ textAlign: 'center',
221
+ lineHeight: 'normal',
222
+ height: 'auto',
223
223
  },
224
224
  },
225
225
  component: {
226
- name: "Text",
227
- options: { text: "<p>Enter some text...</p>" },
226
+ name: 'Text',
227
+ options: { text: '<p>Enter some text...</p>' },
228
228
  },
229
229
  },
230
230
  ],
@@ -234,27 +234,27 @@ export default registerComponent(
234
234
  " function clearWidths() { columns.forEach(col => { col.delete('width'); }); } const columns = options.get('columns') as Array<map<string, any>>; if (Array.isArray(columns)) { const containsColumnWithWidth = !!columns.find(col => col.get('width')); if (containsColumnWithWidth) { const containsColumnWithoutWidth = !!columns.find(col => !col.get('width')); if (containsColumnWithoutWidth) { clearWidths(); } else { const sumWidths = columns.reduce((memo, col) => { return memo + col.get('width'); }, 0); const widthsDontAddUp = sumWidths !== 100; if (widthsDontAddUp) { clearWidths(); } } } } ",
235
235
  },
236
236
  {
237
- name: "space",
238
- type: "number",
237
+ name: 'space',
238
+ type: 'number',
239
239
  defaultValue: 20,
240
- helperText: "Size of gap between columns",
240
+ helperText: 'Size of gap between columns',
241
241
  advanced: true,
242
242
  },
243
243
  {
244
- name: "stackColumnsAt",
245
- type: "string",
246
- defaultValue: "tablet",
244
+ name: 'stackColumnsAt',
245
+ type: 'string',
246
+ defaultValue: 'tablet',
247
247
  helperText:
248
- "Convert horizontal columns to vertical at what device size",
249
- enum: ["tablet", "mobile", "never"],
248
+ 'Convert horizontal columns to vertical at what device size',
249
+ enum: ['tablet', 'mobile', 'never'],
250
250
  advanced: true,
251
251
  },
252
252
  {
253
- name: "reverseColumnsWhenStacked",
254
- type: "boolean",
253
+ name: 'reverseColumnsWhenStacked',
254
+ type: 'boolean',
255
255
  defaultValue: false,
256
256
  helperText:
257
- "When stacking columns for mobile devices, reverse the ordering",
257
+ 'When stacking columns for mobile devices, reverse the ordering',
258
258
  advanced: true,
259
259
  },
260
260
  ],
@@ -262,12 +262,12 @@ export default registerComponent(
262
262
  );
263
263
  </script>
264
264
  <style scoped>
265
- .div-1c8a5iyk9bu {
265
+ .div-38o6qlysr38 {
266
266
  display: flex;
267
267
  align-items: stretch;
268
268
  line-height: normal;
269
269
  }
270
- .div-1c8a5iyk9bu-2 {
270
+ .div-38o6qlysr38-2 {
271
271
  flex-grow: 1;
272
272
  }
273
273
  </style>
@@ -10,13 +10,13 @@
10
10
  ></div>
11
11
  </template>
12
12
  <script>
13
- import { registerComponent } from "@builder.io/sdk-vue";
13
+ import { registerComponent } from '../functions/register-component';
14
14
 
15
15
  export default registerComponent(
16
16
  {
17
- name: "builder-custom-code",
17
+ name: 'builder-custom-code',
18
18
 
19
- props: ["replaceNodes", "code"],
19
+ props: ['replaceNodes', 'code'],
20
20
 
21
21
  data: () => ({ scriptsInserted: [], scriptsRun: [] }),
22
22
 
@@ -27,9 +27,9 @@ export default registerComponent(
27
27
  methods: {
28
28
  findAndRunScripts() {
29
29
  // TODO: Move this function to standalone one in '@builder.io/utils'
30
- if (this.$refs.elem && typeof window !== "undefined") {
30
+ if (this.$refs.elem && typeof window !== 'undefined') {
31
31
  /** @type {HTMLScriptElement[]} */
32
- const scripts = this.$refs.elem.getElementsByTagName("script");
32
+ const scripts = this.$refs.elem.getElementsByTagName('script');
33
33
 
34
34
  for (let i = 0; i < scripts.length; i++) {
35
35
  const script = scripts[i];
@@ -40,16 +40,16 @@ export default registerComponent(
40
40
  }
41
41
 
42
42
  this.scriptsInserted.push(script.src);
43
- const newScript = document.createElement("script");
43
+ const newScript = document.createElement('script');
44
44
  newScript.async = true;
45
45
  newScript.src = script.src;
46
46
  document.head.appendChild(newScript);
47
47
  } else if (
48
48
  !script.type ||
49
49
  [
50
- "text/javascript",
51
- "application/javascript",
52
- "application/ecmascript",
50
+ 'text/javascript',
51
+ 'application/javascript',
52
+ 'application/ecmascript',
53
53
  ].includes(script.type)
54
54
  ) {
55
55
  if (this.scriptsRun.includes(script.innerText)) {
@@ -60,7 +60,7 @@ export default registerComponent(
60
60
  this.scriptsRun.push(script.innerText);
61
61
  new Function(script.innerText)();
62
62
  } catch (error) {
63
- console.warn("`CustomCode`: Error running script:", error);
63
+ console.warn('`CustomCode`: Error running script:', error);
64
64
  }
65
65
  }
66
66
  }
@@ -68,7 +68,7 @@ export default registerComponent(
68
68
  },
69
69
  _classStringToObject(str) {
70
70
  const obj = {};
71
- if (typeof str !== "string") {
71
+ if (typeof str !== 'string') {
72
72
  return obj;
73
73
  }
74
74
  const classNames = str.trim().split(/\s+/);
@@ -80,30 +80,30 @@ export default registerComponent(
80
80
  },
81
81
  },
82
82
  {
83
- name: "Custom Code",
83
+ name: 'Custom Code',
84
84
  static: true,
85
85
  builtIn: true,
86
- requiredPermissions: ["editCode"],
86
+ requiredPermissions: ['editCode'],
87
87
  inputs: [
88
88
  {
89
- name: "code",
90
- type: "html",
89
+ name: 'code',
90
+ type: 'html',
91
91
  required: true,
92
- defaultValue: "<p>Hello there, I am custom HTML code!</p>",
92
+ defaultValue: '<p>Hello there, I am custom HTML code!</p>',
93
93
  code: true,
94
94
  },
95
95
  {
96
- name: "replaceNodes",
97
- type: "boolean",
98
- helperText: "Preserve server rendered dom nodes",
96
+ name: 'replaceNodes',
97
+ type: 'boolean',
98
+ helperText: 'Preserve server rendered dom nodes',
99
99
  advanced: true,
100
100
  },
101
101
  {
102
- name: "scriptsClientOnly",
103
- type: "boolean",
102
+ name: 'scriptsClientOnly',
103
+ type: 'boolean',
104
104
  defaultValue: false,
105
105
  helperText:
106
- "Only print and run scripts on the client. Important when scripts influence DOM that could be replaced when client loads",
106
+ 'Only print and run scripts on the client. Important when scripts influence DOM that could be replaced when client loads',
107
107
  advanced: true,
108
108
  },
109
109
  ],