@builder.io/sdk-svelte 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 (41) hide show
  1. package/package/--package.json +5 -1
  2. package/package/CHANGELOG.md +8 -0
  3. package/package/components/render-block/render-block.helpers.js +1 -1
  4. package/package/components/render-block/render-block.svelte +18 -1
  5. package/package/components/render-block/render-component.svelte.d.ts +8 -1
  6. package/package/components/render-block/render-repeated-block.svelte +1 -0
  7. package/package/components/render-content/components/render-styles.helpers.d.ts +15 -0
  8. package/package/components/render-content/components/render-styles.helpers.js +59 -0
  9. package/package/components/render-content/components/render-styles.svelte +12 -54
  10. package/package/components/render-content/components/render-styles.svelte.d.ts +3 -8
  11. package/package/components/render-content/render-content.helpers.d.ts +7 -0
  12. package/package/components/render-content/render-content.helpers.js +30 -0
  13. package/package/components/render-content/render-content.svelte +90 -87
  14. package/package/components/render-content/render-content.svelte.d.ts +2 -17
  15. package/package/components/render-content/render-content.types.d.ts +27 -0
  16. package/package/components/render-content/render-content.types.js +1 -0
  17. package/package/constants/builder-registered-components.js +6 -6
  18. package/package/context/builder.context.d.ts +1 -0
  19. package/package/context/builder.context.js +1 -0
  20. package/package/context/types.d.ts +1 -0
  21. package/package/index-helpers/blocks-exports.d.ts +6 -6
  22. package/package/index-helpers/blocks-exports.js +6 -6
  23. package/package/types/builder-content.d.ts +1 -2
  24. package/package/types/input.d.ts +117 -0
  25. package/package/types/input.js +1 -0
  26. package/package.json +1 -1
  27. package/src/components/render-block/render-block.helpers.ts +1 -1
  28. package/src/components/render-block/render-block.svelte +25 -2
  29. package/src/components/render-block/render-component.svelte +9 -1
  30. package/src/components/render-block/render-repeated-block.svelte +1 -0
  31. package/src/components/render-content/components/render-styles.helpers.ts +79 -0
  32. package/src/components/render-content/components/render-styles.svelte +13 -64
  33. package/src/components/render-content/render-content.helpers.ts +48 -0
  34. package/src/components/render-content/render-content.svelte +99 -115
  35. package/src/components/render-content/render-content.types.ts +31 -0
  36. package/src/constants/builder-registered-components.ts +6 -6
  37. package/src/context/builder.context.ts +1 -0
  38. package/src/context/types.ts +1 -0
  39. package/src/index-helpers/blocks-exports.ts +6 -6
  40. package/src/types/builder-content.ts +1 -3
  41. package/src/types/input.ts +120 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@builder.io/sdk-svelte",
3
3
  "description": "Builder.io SDK for Svelte",
4
- "version": "0.1.3",
4
+ "version": "0.1.4",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "package",
@@ -72,9 +72,12 @@
72
72
  "./components/render-block/types": "./components/render-block/types.js",
73
73
  "./components/render-blocks.svelte": "./components/render-blocks.svelte",
74
74
  "./components/render-content/builder-editing.svelte": "./components/render-content/builder-editing.svelte",
75
+ "./components/render-content/components/render-styles.helpers": "./components/render-content/components/render-styles.helpers.js",
75
76
  "./components/render-content/components/render-styles.svelte": "./components/render-content/components/render-styles.svelte",
76
77
  "./components/render-content": "./components/render-content/index.js",
78
+ "./components/render-content/render-content.helpers": "./components/render-content/render-content.helpers.js",
77
79
  "./components/render-content/render-content.svelte": "./components/render-content/render-content.svelte",
80
+ "./components/render-content/render-content.types": "./components/render-content/render-content.types.js",
78
81
  "./components/render-inlined-styles.svelte": "./components/render-inlined-styles.svelte",
79
82
  "./constants/builder-registered-components": "./constants/builder-registered-components.js",
80
83
  "./constants/device-sizes": "./constants/device-sizes.js",
@@ -142,6 +145,7 @@
142
145
  "./types/components": "./types/components.js",
143
146
  "./types/deep-partial": "./types/deep-partial.js",
144
147
  "./types/element": "./types/element.js",
148
+ "./types/input": "./types/input.js",
145
149
  "./types/targets": "./types/targets.js",
146
150
  "./types/typescript": "./types/typescript.js"
147
151
  },
@@ -1,3 +1,11 @@
1
+ ### 0.1.5
2
+
3
+ - Feature: Global CSS Nesting (`&` operator) support
4
+
5
+ ### 0.1.4
6
+
7
+ No Changes.
8
+
1
9
  ### 0.1.3
2
10
 
3
11
  - Support Heatmaps
@@ -26,7 +26,7 @@ export const isEmptyHtmlElement = (tagName) => {
26
26
  };
27
27
  export const getComponent = ({ block, context, }) => {
28
28
  const componentName = getProcessedBlock({
29
- block: block,
29
+ block,
30
30
  state: context.state,
31
31
  context: context.context,
32
32
  shouldEvaluateBindings: false,
@@ -43,10 +43,26 @@ $: useBlock = () => {
43
43
  shouldEvaluateBindings: true,
44
44
  });
45
45
  };
46
+ $: proxyState = () => {
47
+ if (typeof Proxy === "undefined") {
48
+ console.error("no Proxy available in this environment, cannot proxy state.");
49
+ return context.state;
50
+ }
51
+ const useState = new Proxy(context.state, {
52
+ set: (obj, prop, value) => {
53
+ // set the value on the state object, so that the event handler instantly gets the update.
54
+ obj[prop] = value;
55
+ // set the value in the context, so that the rest of the app gets the update.
56
+ context.setState?.(obj);
57
+ return true;
58
+ },
59
+ });
60
+ return useState;
61
+ };
46
62
  $: actions = () => {
47
63
  return getBlockActions({
48
64
  block: useBlock(),
49
- state: context.state,
65
+ state: proxyState(),
50
66
  context: context.context,
51
67
  });
52
68
  };
@@ -114,6 +130,7 @@ $: childrenContext = () => {
114
130
  state: context.state,
115
131
  content: context.content,
116
132
  context: context.context,
133
+ setState: context.setState,
117
134
  registeredComponents: context.registeredComponents,
118
135
  inheritedStyles: getInheritedTextStyles(),
119
136
  };
@@ -2,9 +2,16 @@ import { SvelteComponentTyped } from "svelte";
2
2
  import type { BuilderBlock } from "../../types/builder-block.js";
3
3
  import type { BuilderContextInterface } from "../../context/types.js";
4
4
  import type { Breakpoints } from "../../types/builder-content.js";
5
+ declare type ComponentOptions = {
6
+ [index: string]: any;
7
+ customBreakpoints?: Breakpoints;
8
+ attributes?: {
9
+ [index: string]: any;
10
+ };
11
+ };
5
12
  export interface RenderComponentProps {
6
13
  componentRef: any;
7
- componentOptions: any;
14
+ componentOptions: ComponentOptions;
8
15
  blockChildren: BuilderBlock[];
9
16
  context: BuilderContextInterface;
10
17
  customBreakpoints?: Breakpoints;
@@ -17,6 +17,7 @@ export let repeatContext;
17
17
  setContext(BuilderContext.key, {
18
18
  content: repeatContext.content,
19
19
  state: repeatContext.state,
20
+ setState: repeatContext.setState,
20
21
  context: repeatContext.context,
21
22
  apiKey: repeatContext.apiKey,
22
23
  registeredComponents: repeatContext.registeredComponents,
@@ -0,0 +1,15 @@
1
+ export interface CustomFont {
2
+ family?: string;
3
+ kind?: string;
4
+ fileUrl?: string;
5
+ files?: {
6
+ [key: string]: string;
7
+ };
8
+ }
9
+ export declare const getFontCss: ({ customFonts }: {
10
+ customFonts?: CustomFont[] | undefined;
11
+ }) => string;
12
+ export declare const getCss: ({ cssCode, contentId, }: {
13
+ cssCode?: string | undefined;
14
+ contentId?: string | undefined;
15
+ }) => string;
@@ -0,0 +1,59 @@
1
+ const getCssFromFont = (font) => {
2
+ // TODO: compute what font sizes are used and only load those.......
3
+ const family = font.family +
4
+ (font.kind && !font.kind.includes('#') ? ', ' + font.kind : '');
5
+ const name = family.split(',')[0];
6
+ const url = font.fileUrl ?? font?.files?.regular;
7
+ let str = '';
8
+ if (url && family && name) {
9
+ str += `
10
+ @font-face {
11
+ font-family: "${family}";
12
+ src: local("${name}"), url('${url}') format('woff2');
13
+ font-display: fallback;
14
+ font-weight: 400;
15
+ }
16
+ `.trim();
17
+ }
18
+ if (font.files) {
19
+ for (const weight in font.files) {
20
+ const isNumber = String(Number(weight)) === weight;
21
+ if (!isNumber) {
22
+ continue;
23
+ }
24
+ // TODO: maybe limit number loaded
25
+ const weightUrl = font.files[weight];
26
+ if (weightUrl && weightUrl !== url) {
27
+ str += `
28
+ @font-face {
29
+ font-family: "${family}";
30
+ src: url('${weightUrl}') format('woff2');
31
+ font-display: fallback;
32
+ font-weight: ${weight};
33
+ }
34
+ `.trim();
35
+ }
36
+ }
37
+ }
38
+ return str;
39
+ };
40
+ export const getFontCss = ({ customFonts }) => {
41
+ // TODO: flag for this
42
+ // if (!this.builder.allowCustomFonts) {
43
+ // return '';
44
+ // }
45
+ // TODO: separate internal data from external
46
+ return customFonts?.map((font) => getCssFromFont(font))?.join(' ') || '';
47
+ };
48
+ export const getCss = ({ cssCode, contentId, }) => {
49
+ if (!cssCode) {
50
+ return '';
51
+ }
52
+ if (!contentId) {
53
+ return cssCode;
54
+ }
55
+ // Allow using `&` in custom CSS code like @emotion
56
+ // E.g. `& .foobar { ... }` to scope CSS
57
+ // TODO: handle if '&' is within a string like `content: "&"`
58
+ return cssCode?.replace(/&/g, `div[builder-content-id="${contentId}"]`) || '';
59
+ };
@@ -1,62 +1,20 @@
1
1
  <script context="module"></script>
2
2
 
3
3
  <script>import RenderInlinedStyles from "../../render-inlined-styles.svelte";
4
+ import { getCss } from "./render-styles.helpers";
5
+ import { getFontCss } from "./render-styles.helpers";
4
6
  export let cssCode;
7
+ export let contentId;
5
8
  export let customFonts;
6
- function getCssFromFont(font) {
7
- // TODO: compute what font sizes are used and only load those.......
8
- const family = font.family +
9
- (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
10
- const name = family.split(",")[0];
11
- const url = font.fileUrl ?? font?.files?.regular;
12
- let str = "";
13
- if (url && family && name) {
14
- str += `
15
- @font-face {
16
- font-family: "${family}";
17
- src: local("${name}"), url('${url}') format('woff2');
18
- font-display: fallback;
19
- font-weight: 400;
20
- }
21
- `.trim();
22
- }
23
- if (font.files) {
24
- for (const weight in font.files) {
25
- const isNumber = String(Number(weight)) === weight;
26
- if (!isNumber) {
27
- continue;
28
- }
29
- // TODO: maybe limit number loaded
30
- const weightUrl = font.files[weight];
31
- if (weightUrl && weightUrl !== url) {
32
- str += `
33
- @font-face {
34
- font-family: "${family}";
35
- src: url('${weightUrl}') format('woff2');
36
- font-display: fallback;
37
- font-weight: ${weight};
38
- }
39
- `.trim();
40
- }
41
- }
42
- }
43
- return str;
44
- }
45
- function getFontCss({ customFonts }) {
46
- // TODO: flag for this
47
- // if (!this.builder.allowCustomFonts) {
48
- // return '';
49
- // }
50
- // TODO: separate internal data from external
51
- return (customFonts?.map((font) => this.getCssFromFont(font))?.join(" ") || "");
52
- }
53
- $: injectedStyles = () => {
54
- return `
55
- ${cssCode || ""}
9
+ let injectedStyles = `
10
+ ${getCss({
11
+ cssCode: cssCode,
12
+ contentId: contentId,
13
+ })}
56
14
  ${getFontCss({
57
- customFonts: customFonts,
58
- })}`;
59
- };
15
+ customFonts: customFonts,
16
+ })}
17
+ `;
60
18
  </script>
61
19
 
62
- <RenderInlinedStyles styles={injectedStyles()} />
20
+ <RenderInlinedStyles styles={injectedStyles} />
@@ -1,19 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- interface CustomFont {
3
- family?: string;
4
- kind?: string;
5
- fileUrl?: string;
6
- files?: {
7
- [key: string]: string;
8
- };
9
- }
2
+ import type { CustomFont } from "./render-styles.helpers";
10
3
  interface Props {
11
4
  cssCode?: string;
12
5
  customFonts?: CustomFont[];
6
+ contentId?: string;
13
7
  }
14
8
  declare const __propDef: {
15
9
  props: {
16
10
  cssCode: Props["cssCode"];
11
+ contentId: Props["contentId"];
17
12
  customFonts: Props["customFonts"];
18
13
  };
19
14
  events: {
@@ -0,0 +1,7 @@
1
+ import type { BuilderContent } from '../../types/builder-content';
2
+ import type { Nullable } from '../../types/typescript';
3
+ import type { RenderContentProps } from './render-content.types';
4
+ export declare const getContextStateInitialValue: ({ content, data, locale, }: Pick<RenderContentProps, 'content' | 'data' | 'locale'>) => {
5
+ [x: string]: unknown;
6
+ };
7
+ export declare const getContentInitialValue: ({ content, data, }: Pick<RenderContentProps, 'content' | 'data'>) => Nullable<BuilderContent>;
@@ -0,0 +1,30 @@
1
+ export const getContextStateInitialValue = ({ content, data, locale, }) => {
2
+ const defaultValues = {};
3
+ // set default values for content state inputs
4
+ content?.data?.inputs?.forEach((input) => {
5
+ if (input.name &&
6
+ input.defaultValue !== undefined &&
7
+ content?.data?.state &&
8
+ content.data.state[input.name] === undefined) {
9
+ defaultValues[input.name] = input.defaultValue;
10
+ }
11
+ });
12
+ const stateToUse = {
13
+ ...content?.data?.state,
14
+ ...data,
15
+ ...(locale ? { locale } : {}),
16
+ };
17
+ return { ...defaultValues, ...stateToUse };
18
+ };
19
+ export const getContentInitialValue = ({ content, data, }) => {
20
+ return !content
21
+ ? undefined
22
+ : {
23
+ ...content,
24
+ data: {
25
+ ...content?.data,
26
+ ...data,
27
+ },
28
+ meta: content?.meta,
29
+ };
30
+ };
@@ -17,32 +17,43 @@ import builderContext from "../../context/builder.context.js";
17
17
  import { registerInsertMenu, setupBrowserForEditing, } from "../../scripts/init-editing.js";
18
18
  import { checkIsDefined } from "../../helpers/nullable.js";
19
19
  import { getInteractionPropertiesForEvent } from "../../functions/track/interaction.js";
20
+ import { getContentInitialValue, getContextStateInitialValue, } from "./render-content.helpers.js";
20
21
  export let content;
21
22
  export let data;
22
23
  export let canTrack;
23
24
  export let locale;
24
- export let context;
25
25
  export let customComponents;
26
26
  export let model;
27
+ export let context;
27
28
  export let apiKey;
28
29
  export let includeRefs;
29
- setContext(builderContext.key, {
30
- get content() {
31
- return useContent();
32
- },
33
- get state() {
34
- return contentState();
35
- },
36
- get context() {
37
- return contextContext;
38
- },
39
- get apiKey() {
40
- return apiKey;
41
- },
42
- get registeredComponents() {
43
- return allRegisteredComponents;
44
- },
45
- });
30
+ function mergeNewContent(newContent) {
31
+ useContent = {
32
+ ...useContent,
33
+ ...newContent,
34
+ data: {
35
+ ...useContent?.data,
36
+ ...newContent?.data,
37
+ },
38
+ meta: {
39
+ ...useContent?.meta,
40
+ ...newContent?.meta,
41
+ breakpoints: newContent?.meta?.breakpoints || useContent?.meta?.breakpoints,
42
+ },
43
+ };
44
+ }
45
+ function setBreakpoints(breakpoints) {
46
+ useContent = {
47
+ ...useContent,
48
+ meta: {
49
+ ...useContent?.meta,
50
+ breakpoints,
51
+ },
52
+ };
53
+ }
54
+ function setContextState(newState) {
55
+ contentState = newState;
56
+ }
46
57
  function processMessage(event) {
47
58
  const { data } = event;
48
59
  if (data) {
@@ -50,10 +61,12 @@ function processMessage(event) {
50
61
  case "builder.configureSdk": {
51
62
  const messageContent = data.data;
52
63
  const { breakpoints, contentId } = messageContent;
53
- if (!contentId || contentId !== useContent?.()?.id) {
64
+ if (!contentId || contentId !== useContent?.id) {
54
65
  return;
55
66
  }
56
- useBreakpoints = breakpoints;
67
+ if (breakpoints) {
68
+ setBreakpoints(breakpoints);
69
+ }
57
70
  forceReRenderCount = forceReRenderCount + 1; // This is a hack to force Qwik to re-render.
58
71
  break;
59
72
  }
@@ -65,7 +78,7 @@ function processMessage(event) {
65
78
  messageContent.modelName;
66
79
  const contentData = messageContent.data;
67
80
  if (key === model) {
68
- overrideContent = contentData;
81
+ mergeNewContent(contentData);
69
82
  forceReRenderCount = forceReRenderCount + 1; // This is a hack to force Qwik to re-render.
70
83
  }
71
84
  break;
@@ -79,19 +92,19 @@ function processMessage(event) {
79
92
  }
80
93
  function evaluateJsCode() {
81
94
  // run any dynamic JS code attached to content
82
- const jsCode = useContent?.()?.data?.jsCode;
95
+ const jsCode = useContent?.data?.jsCode;
83
96
  if (jsCode) {
84
97
  evaluate({
85
98
  code: jsCode,
86
- context: contextContext,
87
- state: contentState(),
99
+ context: context || {},
100
+ state: contentState,
88
101
  });
89
102
  }
90
103
  }
91
104
  function onClick(event) {
92
- if (useContent()) {
93
- const variationId = useContent?.()?.testVariationId;
94
- const contentId = useContent?.()?.id;
105
+ if (useContent) {
106
+ const variationId = useContent?.testVariationId;
107
+ const contentId = useContent?.id;
95
108
  _track({
96
109
  type: "click",
97
110
  canTrack: canTrackToUse,
@@ -109,26 +122,26 @@ function onClick(event) {
109
122
  function evalExpression(expression) {
110
123
  return expression.replace(/{{([^}]+)}}/g, (_match, group) => evaluate({
111
124
  code: group,
112
- context: contextContext,
113
- state: contentState(),
125
+ context: context || {},
126
+ state: contentState,
114
127
  }));
115
128
  }
116
129
  function handleRequest({ url, key }) {
117
130
  fetch(url)
118
131
  .then((response) => response.json())
119
132
  .then((json) => {
120
- const newOverrideState = {
121
- ...overrideState,
133
+ const newState = {
134
+ ...contentState,
122
135
  [key]: json,
123
136
  };
124
- overrideState = newOverrideState;
137
+ setContextState(newState);
125
138
  })
126
139
  .catch((err) => {
127
140
  console.log("error fetching dynamic data", url, err);
128
141
  });
129
142
  }
130
143
  function runHttpRequests() {
131
- const requests = useContent?.()?.data?.httpRequests ?? {};
144
+ const requests = useContent?.data?.httpRequests ?? {};
132
145
  Object.entries(requests).forEach(([key, url]) => {
133
146
  if (url && (!httpReqsData[key] || isEditing())) {
134
147
  const evaluatedUrl = evalExpression(url);
@@ -143,7 +156,7 @@ function emitStateUpdate() {
143
156
  if (isEditing()) {
144
157
  window.dispatchEvent(new CustomEvent("builder:component:stateChange", {
145
158
  detail: {
146
- state: contentState(),
159
+ state: contentState,
147
160
  ref: {
148
161
  name: model,
149
162
  },
@@ -151,52 +164,24 @@ function emitStateUpdate() {
151
164
  }));
152
165
  }
153
166
  }
154
- $: useContent = () => {
155
- if (!content && !overrideContent) {
156
- return undefined;
157
- }
158
- return {
159
- ...content,
160
- ...overrideContent,
161
- data: {
162
- ...content?.data,
163
- ...data,
164
- ...overrideContent?.data,
165
- },
166
- meta: {
167
- ...content?.meta,
168
- ...overrideContent?.meta,
169
- breakpoints: useBreakpoints ||
170
- overrideContent?.meta?.breakpoints ||
171
- content?.meta?.breakpoints,
172
- },
173
- };
174
- };
175
- $: contentState = () => {
176
- return {
177
- ...content?.data?.state,
178
- ...data,
179
- ...(locale
180
- ? {
181
- locale: locale,
182
- }
183
- : {}),
184
- ...overrideState,
185
- };
186
- };
187
167
  $: shouldRenderContentStyles = () => {
188
- return Boolean((useContent?.()?.data?.cssCode ||
189
- useContent?.()?.data?.customFonts?.length) &&
168
+ return Boolean((useContent?.data?.cssCode || useContent?.data?.customFonts?.length) &&
190
169
  TARGET !== "reactNative");
191
170
  };
192
171
  let elementRef;
193
172
  let forceReRenderCount = 0;
194
173
  let overrideContent = null;
174
+ let useContent = getContentInitialValue({
175
+ content: content,
176
+ data: data,
177
+ });
195
178
  let update = 0;
196
- let useBreakpoints = null;
197
179
  let canTrackToUse = checkIsDefined(canTrack) ? canTrack : true;
198
- let overrideState = {};
199
- let contextContext = context || {};
180
+ let contentState = getContextStateInitialValue({
181
+ content: content,
182
+ data: data,
183
+ locale: locale,
184
+ });
200
185
  let allRegisteredComponents = [
201
186
  ...getDefaultRegisteredComponents(),
202
187
  // While this `components` object is deprecated, we must maintain support for it.
@@ -239,9 +224,9 @@ onMount(() => {
239
224
  window.addEventListener("message", processMessage);
240
225
  window.addEventListener("builder:component:stateChangeListenerActivated", emitStateUpdate);
241
226
  }
242
- if (useContent()) {
243
- const variationId = useContent?.()?.testVariationId;
244
- const contentId = useContent?.()?.id;
227
+ if (useContent) {
228
+ const variationId = useContent?.testVariationId;
229
+ const contentId = useContent?.id;
245
230
  _track({
246
231
  type: "impression",
247
232
  canTrack: canTrackToUse,
@@ -272,7 +257,7 @@ onMount(() => {
272
257
  apiKey: apiKey,
273
258
  }).then((content) => {
274
259
  if (content) {
275
- overrideContent = content;
260
+ mergeNewContent(content);
276
261
  }
277
262
  });
278
263
  }
@@ -285,15 +270,35 @@ onMount(() => {
285
270
  function onUpdateFn_0() {
286
271
  evaluateJsCode();
287
272
  }
288
- $: onUpdateFn_0(...[useContent?.()?.data?.jsCode, contentState()]);
273
+ $: onUpdateFn_0(...[useContent?.data?.jsCode, contentState]);
289
274
  function onUpdateFn_1() {
290
275
  runHttpRequests();
291
276
  }
292
- $: onUpdateFn_1(...[useContent?.()?.data?.httpRequests]);
277
+ $: onUpdateFn_1(...[useContent?.data?.httpRequests]);
293
278
  function onUpdateFn_2() {
294
279
  emitStateUpdate();
295
280
  }
296
- $: onUpdateFn_2(...[contentState()]);
281
+ $: onUpdateFn_2(...[contentState]);
282
+ setContext(builderContext.key, {
283
+ get content() {
284
+ return useContent;
285
+ },
286
+ get state() {
287
+ return contentState;
288
+ },
289
+ get setState() {
290
+ return setContextState;
291
+ },
292
+ get context() {
293
+ return context || {};
294
+ },
295
+ get apiKey() {
296
+ return apiKey;
297
+ },
298
+ get registeredComponents() {
299
+ return allRegisteredComponents;
300
+ },
301
+ });
297
302
  onDestroy(() => {
298
303
  if (isBrowser()) {
299
304
  window.removeEventListener("message", processMessage);
@@ -302,24 +307,22 @@ onDestroy(() => {
302
307
  });
303
308
  </script>
304
309
 
305
- {#if useContent()}
310
+ {#if useContent}
306
311
  <div
307
312
  bind:this={elementRef}
308
313
  on:click={(event) => {
309
314
  onClick(event);
310
315
  }}
311
- builder-content-id={useContent?.()?.id}
316
+ builder-content-id={useContent?.id}
312
317
  builder-model={model}
313
318
  >
314
319
  {#if shouldRenderContentStyles()}
315
320
  <RenderContentStyles
316
- cssCode={useContent?.()?.data?.cssCode}
317
- customFonts={useContent?.()?.data?.customFonts}
321
+ contentId={useContent?.id}
322
+ cssCode={useContent?.data?.cssCode}
323
+ customFonts={useContent?.data?.customFonts}
318
324
  />
319
325
  {/if}
320
- <RenderBlocks
321
- blocks={useContent?.()?.data?.blocks}
322
- key={forceReRenderCount}
323
- />
326
+ <RenderBlocks blocks={useContent?.data?.blocks} key={forceReRenderCount} />
324
327
  </div>
325
328
  {/if}
@@ -1,29 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { BuilderRenderContext, RegisteredComponent } from "../../context/types.js";
3
- import type { BuilderContent } from "../../types/builder-content.js";
4
- import type { Nullable } from "../../types/typescript.js";
5
- export declare type RenderContentProps = {
6
- content?: Nullable<BuilderContent>;
7
- model?: string;
8
- data?: {
9
- [key: string]: any;
10
- };
11
- context?: BuilderRenderContext;
12
- apiKey: string;
13
- customComponents?: RegisteredComponent[];
14
- canTrack?: boolean;
15
- locale?: string;
16
- includeRefs?: boolean;
17
- };
2
+ import type { RenderContentProps } from "./render-content.types.js";
18
3
  declare const __propDef: {
19
4
  props: {
20
5
  content: RenderContentProps["content"];
21
6
  data: RenderContentProps["data"];
22
7
  canTrack: RenderContentProps["canTrack"];
23
8
  locale: RenderContentProps["locale"];
24
- context: RenderContentProps["context"];
25
9
  customComponents: RenderContentProps["customComponents"];
26
10
  model: RenderContentProps["model"];
11
+ context: RenderContentProps["context"];
27
12
  apiKey: RenderContentProps["apiKey"];
28
13
  includeRefs: RenderContentProps["includeRefs"];
29
14
  };