@builder.io/sdk-svelte 0.0.1-0 → 0.0.1-11

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 (97) hide show
  1. package/README.md +15 -0
  2. package/package.json +16 -4
  3. package/src/blocks/{button.svelte → button/button.svelte} +29 -18
  4. package/src/blocks/button/component-info.js +41 -0
  5. package/src/blocks/{columns.svelte → columns/columns.svelte} +22 -14
  6. package/src/blocks/columns/component-info.js +217 -0
  7. package/src/blocks/custom-code/component-info.js +31 -0
  8. package/src/blocks/custom-code/custom-code.svelte +64 -0
  9. package/src/blocks/embed/component-info.js +24 -0
  10. package/src/blocks/embed/embed.svelte +63 -0
  11. package/src/blocks/form/component-info.js +262 -0
  12. package/src/blocks/{form.svelte → form/form.svelte} +49 -16
  13. package/src/blocks/fragment/component-info.js +11 -0
  14. package/src/blocks/{fragment.svelte → fragment/fragment.svelte} +5 -2
  15. package/src/blocks/image/component-info.js +104 -0
  16. package/src/blocks/{image.svelte → image/image.svelte} +27 -9
  17. package/src/blocks/img/component-info.js +20 -0
  18. package/src/blocks/{img.svelte → img/img.svelte} +5 -2
  19. package/src/blocks/input/component-info.js +74 -0
  20. package/src/blocks/{input.svelte → input/input.svelte} +5 -2
  21. package/src/blocks/raw-text/component-info.js +16 -0
  22. package/src/blocks/{raw-text.svelte → raw-text/raw-text.svelte} +4 -1
  23. package/src/blocks/section/component-info.js +49 -0
  24. package/src/blocks/{section.svelte → section/section.svelte} +4 -1
  25. package/src/blocks/select/component-info.js +59 -0
  26. package/src/blocks/{select.svelte → select/select.svelte} +10 -3
  27. package/src/blocks/submit-button/component-info.js +28 -0
  28. package/src/blocks/{submit-button.svelte → submit-button/submit-button.svelte} +4 -1
  29. package/src/blocks/symbol/component-info.js +43 -0
  30. package/src/blocks/symbol/symbol.svelte +54 -0
  31. package/src/blocks/text/component-info.js +24 -0
  32. package/src/blocks/{text.svelte → text/text.svelte} +4 -1
  33. package/src/blocks/textarea/component-info.js +47 -0
  34. package/src/blocks/{textarea.svelte → textarea/textarea.svelte} +4 -1
  35. package/src/blocks/video/component-info.js +106 -0
  36. package/src/blocks/{video.svelte → video/video.svelte} +4 -1
  37. package/src/components/error-boundary.svelte +4 -1
  38. package/src/components/render-block/block-styles.svelte +51 -0
  39. package/src/components/render-block/render-block.helpers.js +23 -0
  40. package/src/components/render-block/render-block.svelte +182 -0
  41. package/src/components/render-blocks.svelte +18 -6
  42. package/src/components/render-content/components/render-styles.svelte +8 -13
  43. package/src/components/render-content/index.js +4 -0
  44. package/src/components/render-content/render-content.svelte +210 -174
  45. package/src/components/render-inlined-styles.svelte +51 -0
  46. package/src/constants/builder-registered-components.js +45 -0
  47. package/src/constants/device-sizes.js +4 -11
  48. package/src/constants/target.js +3 -10
  49. package/src/context/builder.context.js +6 -31
  50. package/src/functions/evaluate.js +8 -31
  51. package/src/functions/event-handler-name.js +3 -10
  52. package/src/functions/fast-clone.js +4 -0
  53. package/src/functions/get-block-actions.js +6 -29
  54. package/src/functions/get-block-component-options.js +3 -9
  55. package/src/functions/get-block-properties.js +3 -9
  56. package/src/functions/get-block-styles.js +6 -27
  57. package/src/functions/get-block-tag.js +3 -10
  58. package/src/functions/get-builder-search-params/fn.test.js +3 -21
  59. package/src/functions/get-builder-search-params/index.js +4 -11
  60. package/src/functions/get-content/fn.test.js +3 -21
  61. package/src/functions/get-content/index.js +8 -28
  62. package/src/functions/get-fetch.js +31 -32
  63. package/src/functions/get-global-this.js +3 -10
  64. package/src/functions/get-processed-block.js +9 -30
  65. package/src/functions/get-processed-block.test.js +2 -20
  66. package/src/functions/if-target.js +5 -28
  67. package/src/functions/is-browser.js +3 -10
  68. package/src/functions/is-editing.js +5 -28
  69. package/src/functions/is-iframe.js +5 -28
  70. package/src/functions/is-previewing.js +7 -30
  71. package/src/functions/on-change.js +4 -11
  72. package/src/functions/on-change.test.js +4 -22
  73. package/src/functions/previewing-model-name.js +5 -28
  74. package/src/functions/register-component.js +32 -36
  75. package/src/functions/register.js +5 -28
  76. package/src/functions/set-editor-settings.js +5 -28
  77. package/src/functions/set.js +3 -10
  78. package/src/functions/set.test.js +4 -22
  79. package/src/functions/track.js +8 -31
  80. package/src/functions/transform-block.js +3 -10
  81. package/src/index-helpers/blocks-exports.js +19 -42
  82. package/src/index-helpers/top-of-file.js +3 -10
  83. package/src/index.js +10 -32
  84. package/src/scripts/init-editing.js +72 -81
  85. package/src/types/builder-block.js +0 -3
  86. package/src/types/builder-content.js +0 -3
  87. package/src/types/components.js +0 -0
  88. package/src/types/deep-partial.js +0 -3
  89. package/src/types/element.js +0 -0
  90. package/src/types/targets.js +0 -3
  91. package/src/types/typescript.js +0 -3
  92. package/src/blocks/custom-code.svelte +0 -63
  93. package/src/blocks/embed.svelte +0 -62
  94. package/src/blocks/symbol.svelte +0 -55
  95. package/src/components/block-styles.svelte +0 -23
  96. package/src/components/render-block.svelte +0 -121
  97. package/src/functions/macro-eval.js +0 -12
@@ -0,0 +1,262 @@
1
+ const componentInfo = {
2
+ name: "Form:Form",
3
+ builtIn: true,
4
+ defaults: {
5
+ responsiveStyles: {
6
+ large: {
7
+ marginTop: "15px",
8
+ paddingBottom: "15px"
9
+ }
10
+ }
11
+ },
12
+ image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fef36d2a846134910b64b88e6d18c5ca5",
13
+ inputs: [
14
+ {
15
+ name: "sendSubmissionsTo",
16
+ type: "string",
17
+ enum: [
18
+ {
19
+ label: "Send to email",
20
+ value: "email",
21
+ helperText: "Send form submissions to the email address of your choosing"
22
+ },
23
+ {
24
+ label: "Custom",
25
+ value: "custom",
26
+ helperText: "Handle where the form requests go manually with a little code, e.g. to your own custom backend"
27
+ }
28
+ ],
29
+ defaultValue: "email"
30
+ },
31
+ {
32
+ name: "sendSubmissionsToEmail",
33
+ type: "string",
34
+ required: true,
35
+ defaultValue: "your@email.com",
36
+ showIf: 'options.get("sendSubmissionsTo") === "email"'
37
+ },
38
+ {
39
+ name: "sendWithJs",
40
+ type: "boolean",
41
+ helperText: "Set to false to use basic html form action",
42
+ defaultValue: true,
43
+ showIf: 'options.get("sendSubmissionsTo") === "custom"'
44
+ },
45
+ {
46
+ name: "name",
47
+ type: "string",
48
+ defaultValue: "My form"
49
+ },
50
+ {
51
+ name: "action",
52
+ type: "string",
53
+ helperText: "URL to send the form data to",
54
+ showIf: 'options.get("sendSubmissionsTo") === "custom"'
55
+ },
56
+ {
57
+ name: "contentType",
58
+ type: "string",
59
+ defaultValue: "application/json",
60
+ advanced: true,
61
+ enum: [
62
+ "application/json",
63
+ "multipart/form-data",
64
+ "application/x-www-form-urlencoded"
65
+ ],
66
+ showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
67
+ },
68
+ {
69
+ name: "method",
70
+ type: "string",
71
+ showIf: 'options.get("sendSubmissionsTo") === "custom"',
72
+ defaultValue: "POST",
73
+ advanced: true
74
+ },
75
+ {
76
+ name: "previewState",
77
+ type: "string",
78
+ enum: ["unsubmitted", "sending", "success", "error"],
79
+ defaultValue: "unsubmitted",
80
+ helperText: 'Choose a state to edit, e.g. choose "success" to show what users see on success and edit the message',
81
+ showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
82
+ },
83
+ {
84
+ name: "successUrl",
85
+ type: "url",
86
+ helperText: "Optional URL to redirect the user to on form submission success",
87
+ showIf: 'options.get("sendSubmissionsTo") !== "zapier" && options.get("sendWithJs") === true'
88
+ },
89
+ {
90
+ name: "resetFormOnSubmit",
91
+ type: "boolean",
92
+ showIf: "options.get('sendSubmissionsTo') === 'custom' && options.get('sendWithJs') === true",
93
+ advanced: true
94
+ },
95
+ {
96
+ name: "successMessage",
97
+ type: "uiBlocks",
98
+ hideFromUI: true,
99
+ defaultValue: [
100
+ {
101
+ "@type": "@builder.io/sdk:Element",
102
+ responsiveStyles: {
103
+ large: {
104
+ marginTop: "10px"
105
+ }
106
+ },
107
+ component: {
108
+ name: "Text",
109
+ options: {
110
+ text: "<span>Thanks!</span>"
111
+ }
112
+ }
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ name: "validate",
118
+ type: "boolean",
119
+ defaultValue: true,
120
+ advanced: true
121
+ },
122
+ {
123
+ name: "errorMessagePath",
124
+ type: "text",
125
+ advanced: true,
126
+ helperText: 'Path to where to get the error message from in a JSON response to display to the user, e.g. "error.message" for a response like { "error": { "message": "this username is taken" }}'
127
+ },
128
+ {
129
+ name: "errorMessage",
130
+ type: "uiBlocks",
131
+ hideFromUI: true,
132
+ defaultValue: [
133
+ {
134
+ "@type": "@builder.io/sdk:Element",
135
+ responsiveStyles: {
136
+ large: {
137
+ marginTop: "10px"
138
+ }
139
+ },
140
+ bindings: {
141
+ "component.options.text": "state.formErrorMessage || block.component.options.text"
142
+ },
143
+ component: {
144
+ name: "Text",
145
+ options: {
146
+ text: "<span>Form submission error :( Please check your answers and try again</span>"
147
+ }
148
+ }
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ name: "sendingMessage",
154
+ type: "uiBlocks",
155
+ hideFromUI: true,
156
+ defaultValue: [
157
+ {
158
+ "@type": "@builder.io/sdk:Element",
159
+ responsiveStyles: {
160
+ large: {
161
+ marginTop: "10px"
162
+ }
163
+ },
164
+ component: {
165
+ name: "Text",
166
+ options: {
167
+ text: "<span>Sending...</span>"
168
+ }
169
+ }
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ name: "customHeaders",
175
+ type: "map",
176
+ valueType: {
177
+ type: "string"
178
+ },
179
+ advanced: true,
180
+ showIf: 'options.get("sendSubmissionsTo") === "custom" && options.get("sendWithJs") === true'
181
+ }
182
+ ],
183
+ noWrap: true,
184
+ canHaveChildren: true,
185
+ defaultChildren: [
186
+ {
187
+ "@type": "@builder.io/sdk:Element",
188
+ responsiveStyles: {
189
+ large: {
190
+ marginTop: "10px"
191
+ }
192
+ },
193
+ component: {
194
+ name: "Text",
195
+ options: {
196
+ text: "<span>Enter your name</span>"
197
+ }
198
+ }
199
+ },
200
+ {
201
+ "@type": "@builder.io/sdk:Element",
202
+ responsiveStyles: {
203
+ large: {
204
+ marginTop: "10px"
205
+ }
206
+ },
207
+ component: {
208
+ name: "Form:Input",
209
+ options: {
210
+ name: "name",
211
+ placeholder: "Jane Doe"
212
+ }
213
+ }
214
+ },
215
+ {
216
+ "@type": "@builder.io/sdk:Element",
217
+ responsiveStyles: {
218
+ large: {
219
+ marginTop: "10px"
220
+ }
221
+ },
222
+ component: {
223
+ name: "Text",
224
+ options: {
225
+ text: "<span>Enter your email</span>"
226
+ }
227
+ }
228
+ },
229
+ {
230
+ "@type": "@builder.io/sdk:Element",
231
+ responsiveStyles: {
232
+ large: {
233
+ marginTop: "10px"
234
+ }
235
+ },
236
+ component: {
237
+ name: "Form:Input",
238
+ options: {
239
+ name: "email",
240
+ placeholder: "jane@doe.com"
241
+ }
242
+ }
243
+ },
244
+ {
245
+ "@type": "@builder.io/sdk:Element",
246
+ responsiveStyles: {
247
+ large: {
248
+ marginTop: "10px"
249
+ }
250
+ },
251
+ component: {
252
+ name: "Form:SubmitButton",
253
+ options: {
254
+ text: "Submit"
255
+ }
256
+ }
257
+ }
258
+ ]
259
+ };
260
+ export {
261
+ componentInfo
262
+ };
@@ -3,10 +3,12 @@
3
3
 
4
4
 
5
5
 
6
- import RenderBlock, { } from '../components/render-block.lite';
6
+ import RenderBlock, { } from '../../components/render-block/render-block.svelte';
7
+ import { isEditing } from '../../functions/is-editing.js';
7
8
 
8
9
 
9
10
 
11
+
10
12
 
11
13
 
12
14
  export let formRef;
@@ -28,7 +30,7 @@ export let builderBlock;
28
30
  export let errorMessage;
29
31
  export let sendingMessage;
30
32
  export let successMessage;
31
-
33
+
32
34
  function onSubmit(event) {
33
35
  const sendWithJs = sendWithJs || sendSubmissionsTo === 'email';
34
36
 
@@ -134,7 +136,7 @@ if (sendSubmissionsTo === 'zapier') {
134
136
  }
135
137
  }
136
138
 
137
- state = 'sending';
139
+ formState = 'sending';
138
140
  const formUrl = `${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=${builder.apiKey}&to=${btoa(sendSubmissionsToEmail || '')}&name=${encodeURIComponent(name || '')}`;
139
141
  fetch(sendSubmissionsTo === 'email' ? formUrl : action
140
142
  /* TODO: throw error if no action URL */
@@ -168,7 +170,7 @@ if (sendSubmissionsTo === 'zapier') {
168
170
  }
169
171
 
170
172
  responseData = body;
171
- state = res.ok ? 'success' : 'error';
173
+ formState = res.ok ? 'success' : 'error';
172
174
 
173
175
  if (res.ok) {
174
176
  const submitSuccessEvent = new CustomEvent('submit:success', {
@@ -227,15 +229,17 @@ if (sendSubmissionsTo === 'zapier') {
227
229
  }
228
230
 
229
231
  responseData = err;
230
- state = 'error';
232
+ formState = 'error';
231
233
  });
232
234
  }
233
235
  }
234
236
  $: submissionState = () => {
235
- return Builder.isEditing && previewState || state;
237
+ return isEditing() && previewState || formState;
236
238
  };
237
239
 
238
- let state = 'unsubmitted';
240
+
241
+
242
+ let formState = 'unsubmitted';
239
243
  let responseData = null;
240
244
  let formErrorMessage = '';
241
245
 
@@ -248,31 +252,52 @@ let formErrorMessage = '';
248
252
 
249
253
  <form {...attributes} validate={validate} bind:this={formRef} action={!sendWithJs && action} method={method} name={name} on:submit="{event => onSubmit(event)}" >
250
254
 
255
+
251
256
  {#if builderBlock && builderBlock.children }
257
+
252
258
 
253
- {#each builderBlock?.children as block }<RenderBlock block={block} ></RenderBlock>{/each}
254
259
 
255
- {/if}
260
+ {#each builderBlock?.children as block, index }
261
+ <RenderBlock block={block} ></RenderBlock>
262
+ {/each}
263
+
264
+
265
+
266
+
267
+
268
+ {/if}
256
269
 
257
270
 
258
271
 
272
+
259
273
  {#if submissionState() === 'error' }
274
+
260
275
 
261
- <BuilderBlocks dataPath="errorMessage" blocks={errorMessage} ></BuilderBlocks>
276
+ <svelte:component dataPath="errorMessage" blocks={errorMessage} this={BuilderBlocks} ></svelte:component>
277
+
278
+
262
279
 
263
- {/if}
280
+
281
+ {/if}
264
282
 
265
283
 
266
284
 
285
+
267
286
  {#if submissionState() === 'sending' }
287
+
268
288
 
269
- <BuilderBlocks dataPath="sendingMessage" blocks={sendingMessage} ></BuilderBlocks>
289
+ <svelte:component dataPath="sendingMessage" blocks={sendingMessage} this={BuilderBlocks} ></svelte:component>
290
+
291
+
292
+
270
293
 
271
- {/if}
294
+ {/if}
272
295
 
273
296
 
274
297
 
298
+
275
299
  {#if submissionState() === 'error' && responseData }
300
+
276
301
 
277
302
  <pre class="builder-form-error-text pre" >
278
303
 
@@ -280,15 +305,23 @@ let formErrorMessage = '';
280
305
 
281
306
  </pre>
282
307
 
283
- {/if}
308
+
309
+
310
+
311
+ {/if}
284
312
 
285
313
 
286
314
 
315
+
287
316
  {#if submissionState() === 'success' }
317
+
288
318
 
289
- <BuilderBlocks dataPath="successMessage" blocks={successMessage} ></BuilderBlocks>
319
+ <svelte:component dataPath="successMessage" blocks={successMessage} this={BuilderBlocks} ></svelte:component>
320
+
321
+
322
+
290
323
 
291
- {/if}
324
+ {/if}
292
325
 
293
326
  </form>
294
327
 
@@ -0,0 +1,11 @@
1
+ const componentInfo = {
2
+ name: "Fragment",
3
+ static: true,
4
+ hidden: true,
5
+ builtIn: true,
6
+ canHaveChildren: true,
7
+ noWrap: true
8
+ };
9
+ export {
10
+ componentInfo
11
+ };
@@ -0,0 +1,104 @@
1
+ const componentInfo = {
2
+ name: "Image",
3
+ static: true,
4
+ builtIn: true,
5
+ 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",
6
+ defaultStyles: {
7
+ position: "relative",
8
+ minHeight: "20px",
9
+ minWidth: "20px",
10
+ overflow: "hidden"
11
+ },
12
+ canHaveChildren: true,
13
+ inputs: [
14
+ {
15
+ name: "image",
16
+ type: "file",
17
+ bubble: true,
18
+ allowedFileTypes: ["jpeg", "jpg", "png", "svg"],
19
+ required: true,
20
+ defaultValue: "https://cdn.builder.io/api/v1/image/assets%2Fpwgjf0RoYWbdnJSbpBAjXNRMe9F2%2Ffb27a7c790324294af8be1c35fe30f4d",
21
+ onChange: " const DEFAULT_ASPECT_RATIO = 0.7041; options.delete('srcset'); options.delete('noWebp'); function loadImage(url, timeout) { return new Promise((resolve, reject) => { const img = document.createElement('img'); let loaded = false; img.onload = () => { loaded = true; resolve(img); }; img.addEventListener('error', event => { console.warn('Image load failed', event.error); reject(event.error); }); img.src = url; setTimeout(() => { if (!loaded) { reject(new Error('Image load timed out')); } }, timeout); }); } function round(num) { return Math.round(num * 1000) / 1000; } const value = options.get('image'); const aspectRatio = options.get('aspectRatio'); // For SVG images - don't render as webp, keep them as SVG fetch(value) .then(res => res.blob()) .then(blob => { if (blob.type.includes('svg')) { options.set('noWebp', true); } }); if (value && (!aspectRatio || aspectRatio === DEFAULT_ASPECT_RATIO)) { return loadImage(value).then(img => { const possiblyUpdatedAspectRatio = options.get('aspectRatio'); if ( options.get('image') === value && (!possiblyUpdatedAspectRatio || possiblyUpdatedAspectRatio === DEFAULT_ASPECT_RATIO) ) { if (img.width && img.height) { options.set('aspectRatio', round(img.height / img.width)); options.set('height', img.height); options.set('width', img.width); } } }); }"
22
+ },
23
+ {
24
+ name: "backgroundSize",
25
+ type: "text",
26
+ defaultValue: "cover",
27
+ enum: [
28
+ {
29
+ label: "contain",
30
+ value: "contain",
31
+ helperText: "The image should never get cropped"
32
+ },
33
+ {
34
+ label: "cover",
35
+ value: "cover",
36
+ helperText: "The image should fill it's box, cropping when needed"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ name: "backgroundPosition",
42
+ type: "text",
43
+ defaultValue: "center",
44
+ enum: [
45
+ "center",
46
+ "top",
47
+ "left",
48
+ "right",
49
+ "bottom",
50
+ "top left",
51
+ "top right",
52
+ "bottom left",
53
+ "bottom right"
54
+ ]
55
+ },
56
+ {
57
+ name: "altText",
58
+ type: "string",
59
+ helperText: "Text to display when the user has images off"
60
+ },
61
+ {
62
+ name: "height",
63
+ type: "number",
64
+ hideFromUI: true
65
+ },
66
+ {
67
+ name: "width",
68
+ type: "number",
69
+ hideFromUI: true
70
+ },
71
+ {
72
+ name: "sizes",
73
+ type: "string",
74
+ hideFromUI: true
75
+ },
76
+ {
77
+ name: "srcset",
78
+ type: "string",
79
+ hideFromUI: true
80
+ },
81
+ {
82
+ name: "lazy",
83
+ type: "boolean",
84
+ defaultValue: true,
85
+ hideFromUI: true
86
+ },
87
+ {
88
+ name: "fitContent",
89
+ type: "boolean",
90
+ helperText: "When child blocks are provided, fit to them instead of using the image's aspect ratio",
91
+ defaultValue: true
92
+ },
93
+ {
94
+ name: "aspectRatio",
95
+ type: "number",
96
+ 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",
97
+ advanced: true,
98
+ defaultValue: 0.7041
99
+ }
100
+ ]
101
+ };
102
+ export {
103
+ componentInfo
104
+ };
@@ -6,23 +6,26 @@
6
6
 
7
7
 
8
8
 
9
+
9
10
 
10
11
 
11
12
  export let altText;
12
13
  export let backgroundSize;
13
- export let class;
14
+ export let className;
14
15
  export let image;
15
16
  export let srcset;
16
17
  export let sizes;
17
18
  export let aspectRatio;
18
19
  export let fitContent;
19
20
  export let builderBlock;
20
- export let children;
21
21
 
22
22
 
23
23
 
24
+
24
25
 
25
26
 
27
+
28
+
26
29
 
27
30
 
28
31
 
@@ -31,14 +34,14 @@ export let children;
31
34
 
32
35
  </script>
33
36
 
34
- <div class="div" >
37
+ <div >
35
38
 
36
39
  <picture >
37
40
 
38
- <img loading="lazy" class="img" alt={altText} aria-role={altText ? 'presentation' : undefined} style={{
41
+ <img loading="lazy" alt={altText} role={altText ? 'presentation' : undefined} style={{
39
42
  objectPosition: backgroundSize || 'center',
40
43
  objectFit: backgroundSize || 'cover'
41
- }} class={'builder-image' + (class ? ' ' + class : '')} src={image} srcset={srcset} sizes={sizes} />
44
+ }} class={'builder-image' + (className ? ' ' + className : '')} src={image} srcSet={srcset} sizes={sizes} />
42
45
 
43
46
 
44
47
  <source srcSet={srcset} />
@@ -46,24 +49,36 @@ objectFit: backgroundSize || 'cover'
46
49
  </picture>
47
50
 
48
51
 
49
- {#if aspectRatio && !(fitContent && builderBlock?.children?.length) }<div class="builder-image-sizer div-2" style={{
52
+
53
+ {#if aspectRatio && !(fitContent && builderBlock?.children?.length) }
54
+ <div class="builder-image-sizer div-2" style={{
50
55
  paddingTop: aspectRatio * 100 + '%'
51
56
  }} >
52
57
 
53
58
  {' '}
54
59
 
55
- </div>{/if}
60
+ </div>
61
+
62
+
63
+ {/if}
56
64
 
57
65
 
66
+
58
67
  {#if builderBlock?.children?.length && fitContent }
68
+
59
69
 
60
70
  <slot></slot>
61
71
 
62
- {/if}
72
+
73
+
74
+
75
+ {/if}
63
76
 
64
77
 
65
78
 
79
+
66
80
  {#if !fitContent }
81
+
67
82
 
68
83
  <div class="div-3" >
69
84
 
@@ -71,7 +86,10 @@ paddingTop: aspectRatio * 100 + '%'
71
86
 
72
87
  </div>
73
88
 
74
- {/if}
89
+
90
+
91
+
92
+ {/if}
75
93
 
76
94
  </div>
77
95
 
@@ -0,0 +1,20 @@
1
+ const componentInfo = {
2
+ name: "Raw:Img",
3
+ hideFromInsertMenu: true,
4
+ builtIn: true,
5
+ 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",
6
+ inputs: [
7
+ {
8
+ name: "image",
9
+ bubble: true,
10
+ type: "file",
11
+ allowedFileTypes: ["jpeg", "jpg", "png", "svg"],
12
+ required: true
13
+ }
14
+ ],
15
+ noWrap: true,
16
+ static: true
17
+ };
18
+ export {
19
+ componentInfo
20
+ };
@@ -3,10 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- import { isEditing } from '../functions/is-editing';
6
+ import { isEditing } from '../../functions/is-editing.js';
7
7
 
8
8
 
9
9
 
10
+
10
11
 
11
12
 
12
13
  export let backgroundSize;
@@ -14,11 +15,13 @@ export let backgroundPosition;
14
15
  export let attributes;
15
16
  export let imgSrc;
16
17
  export let altText;
17
-
18
+
18
19
 
19
20
 
20
21
 
21
22
 
23
+
24
+
22
25
 
23
26
 
24
27