@builder.io/sdk-svelte 0.2.3 → 0.4.0

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 (94) hide show
  1. package/package/--package.json +10 -5
  2. package/package/CHANGELOG.md +17 -0
  3. package/package/blocks/columns/columns.svelte +1 -1
  4. package/package/blocks/symbol/symbol.svelte +1 -1
  5. package/package/components/render-block/block-styles.svelte +3 -1
  6. package/package/components/render-block/render-block.helpers.d.ts +0 -1
  7. package/package/components/render-block/render-block.helpers.js +8 -20
  8. package/package/components/render-block/render-block.svelte +25 -19
  9. package/package/components/render-block/render-repeated-block.svelte +3 -2
  10. package/package/components/render-content/components/render-styles.svelte +1 -1
  11. package/package/components/render-content/render-content.svelte +99 -10
  12. package/package/components/render-content/render-content.svelte.d.ts +5 -0
  13. package/package/components/render-content/render-content.types.d.ts +11 -2
  14. package/package/components/render-content/wrap-component-ref.d.ts +6 -0
  15. package/package/components/render-content/wrap-component-ref.js +6 -0
  16. package/package/components/render-content-variants/helpers.d.ts +17 -0
  17. package/package/components/render-content-variants/helpers.js +182 -0
  18. package/package/components/render-content-variants/render-content-variants.svelte +70 -0
  19. package/package/components/render-content-variants/render-content-variants.svelte.d.ts +23 -0
  20. package/package/components/render-inlined-styles.svelte +3 -15
  21. package/package/components/render-inlined-styles.svelte.d.ts +2 -0
  22. package/package/constants/sdk-version.d.ts +1 -0
  23. package/package/constants/sdk-version.js +1 -0
  24. package/package/context/builder.context.d.ts +3 -2
  25. package/package/context/builder.context.js +3 -2
  26. package/package/context/types.d.ts +17 -2
  27. package/package/functions/evaluate.d.ts +4 -3
  28. package/package/functions/evaluate.js +23 -2
  29. package/package/functions/evaluate.test.d.ts +1 -0
  30. package/package/functions/evaluate.test.js +17 -0
  31. package/package/functions/get-block-actions-handler.d.ts +1 -1
  32. package/package/functions/get-block-actions-handler.js +3 -1
  33. package/package/functions/get-block-actions.d.ts +1 -1
  34. package/package/functions/get-content/generate-content-url.js +2 -2
  35. package/package/functions/get-content/generate-content-url.test.js +15 -0
  36. package/package/functions/get-content/index.d.ts +7 -2
  37. package/package/functions/get-content/index.js +43 -20
  38. package/package/functions/get-content/types.d.ts +6 -0
  39. package/package/functions/get-processed-block.d.ts +2 -2
  40. package/package/functions/get-processed-block.js +16 -4
  41. package/package/functions/get-processed-block.test.js +3 -1
  42. package/package/helpers/ab-tests.d.ts +8 -7
  43. package/package/helpers/ab-tests.js +103 -4
  44. package/package/helpers/canTrack.d.ts +1 -0
  45. package/package/helpers/canTrack.js +2 -0
  46. package/package/helpers/cookie.d.ts +7 -3
  47. package/package/helpers/cookie.js +9 -6
  48. package/package/helpers/logger.d.ts +1 -0
  49. package/package/helpers/logger.js +1 -0
  50. package/package/index-helpers/blocks-exports.d.ts +1 -1
  51. package/package/index-helpers/blocks-exports.js +1 -1
  52. package/package/index.d.ts +8 -7
  53. package/package/index.js +6 -7
  54. package/package/scripts/init-editing.d.ts +1 -0
  55. package/package/scripts/init-editing.js +2 -0
  56. package/package/types/builder-content.d.ts +1 -3
  57. package/package.json +4 -8
  58. package/src/blocks/columns/columns.svelte +1 -5
  59. package/src/blocks/symbol/symbol.svelte +1 -1
  60. package/src/components/render-block/block-styles.svelte +3 -1
  61. package/src/components/render-block/render-block.helpers.ts +9 -31
  62. package/src/components/render-block/render-block.svelte +24 -19
  63. package/src/components/render-block/render-repeated-block.svelte +3 -2
  64. package/src/components/render-content/components/render-styles.svelte +1 -1
  65. package/src/components/render-content/render-content.svelte +101 -10
  66. package/src/components/render-content/render-content.types.ts +11 -2
  67. package/src/components/render-content/wrap-component-ref.ts +6 -0
  68. package/src/components/render-content-variants/helpers.ts +245 -0
  69. package/src/components/render-content-variants/render-content-variants.svelte +83 -0
  70. package/src/components/render-inlined-styles.svelte +3 -16
  71. package/src/constants/sdk-version.ts +1 -0
  72. package/src/context/builder.context.ts +3 -2
  73. package/src/context/types.ts +17 -2
  74. package/src/functions/evaluate.test.ts +21 -0
  75. package/src/functions/evaluate.ts +46 -4
  76. package/src/functions/get-block-actions-handler.ts +7 -2
  77. package/src/functions/get-block-actions.ts +4 -1
  78. package/src/functions/get-content/generate-content-url.test.ts +17 -0
  79. package/src/functions/get-content/generate-content-url.ts +2 -1
  80. package/src/functions/get-content/index.ts +57 -26
  81. package/src/functions/get-content/types.ts +7 -0
  82. package/src/functions/get-processed-block.test.ts +3 -1
  83. package/src/functions/get-processed-block.ts +28 -6
  84. package/src/helpers/ab-tests.ts +164 -11
  85. package/src/helpers/canTrack.ts +4 -0
  86. package/src/helpers/cookie.ts +16 -11
  87. package/src/helpers/logger.ts +1 -0
  88. package/src/index-helpers/blocks-exports.ts +1 -1
  89. package/src/index.ts +17 -8
  90. package/src/scripts/init-editing.ts +3 -0
  91. package/src/types/builder-content.ts +1 -3
  92. package/package/functions/get-content/ab-testing.d.ts +0 -5
  93. package/package/functions/get-content/ab-testing.js +0 -78
  94. package/src/functions/get-content/ab-testing.ts +0 -132
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@builder.io/sdk-svelte",
3
3
  "description": "Builder.io SDK for Svelte",
4
- "version": "0.2.2",
4
+ "version": "0.4.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "package",
@@ -78,13 +78,18 @@
78
78
  "./components/render-content/render-content.helpers": "./components/render-content/render-content.helpers.js",
79
79
  "./components/render-content/render-content.svelte": "./components/render-content/render-content.svelte",
80
80
  "./components/render-content/render-content.types": "./components/render-content/render-content.types.js",
81
+ "./components/render-content/wrap-component-ref": "./components/render-content/wrap-component-ref.js",
82
+ "./components/render-content-variants/helpers": "./components/render-content-variants/helpers.js",
83
+ "./components/render-content-variants/render-content-variants.svelte": "./components/render-content-variants/render-content-variants.svelte",
81
84
  "./components/render-inlined-styles.svelte": "./components/render-inlined-styles.svelte",
82
85
  "./constants/builder-registered-components": "./constants/builder-registered-components.js",
83
86
  "./constants/device-sizes": "./constants/device-sizes.js",
87
+ "./constants/sdk-version": "./constants/sdk-version.js",
84
88
  "./constants/target": "./constants/target.js",
85
89
  "./context/builder.context": "./context/builder.context.js",
86
90
  "./context/types": "./context/types.js",
87
91
  "./functions/camel-to-kebab-case": "./functions/camel-to-kebab-case.js",
92
+ "./functions/evaluate.test": "./functions/evaluate.test.js",
88
93
  "./functions/evaluate": "./functions/evaluate.js",
89
94
  "./functions/event-handler-name": "./functions/event-handler-name.js",
90
95
  "./functions/extract-text-styles": "./functions/extract-text-styles.js",
@@ -95,7 +100,6 @@
95
100
  "./functions/get-block-properties": "./functions/get-block-properties.js",
96
101
  "./functions/get-builder-search-params/fn.test": "./functions/get-builder-search-params/fn.test.js",
97
102
  "./functions/get-builder-search-params": "./functions/get-builder-search-params/index.js",
98
- "./functions/get-content/ab-testing": "./functions/get-content/ab-testing.js",
99
103
  "./functions/get-content/generate-content-url.test": "./functions/get-content/generate-content-url.test.js",
100
104
  "./functions/get-content/generate-content-url": "./functions/get-content/generate-content-url.js",
101
105
  "./functions/get-content": "./functions/get-content/index.js",
@@ -124,6 +128,7 @@
124
128
  "./functions/transform-block-properties": "./functions/transform-block-properties.js",
125
129
  "./functions/transform-block": "./functions/transform-block.js",
126
130
  "./helpers/ab-tests": "./helpers/ab-tests.js",
131
+ "./helpers/canTrack": "./helpers/canTrack.js",
127
132
  "./helpers/cookie": "./helpers/cookie.js",
128
133
  "./helpers/css": "./helpers/css.js",
129
134
  "./helpers/flatten": "./helpers/flatten.js",
@@ -153,10 +158,10 @@
153
158
  "types": "./package/index.d.ts",
154
159
  "devDependencies": {
155
160
  "@sveltejs/adapter-auto": "1.0.0-next.71",
156
- "@sveltejs/kit": "^1.15.2",
161
+ "@sveltejs/kit": "^1.16.2",
157
162
  "@sveltejs/package": "1.0.0-next.1",
158
- "svelte": "^3.44.0",
159
- "svelte-check": "^2.7.1",
163
+ "svelte": "^3.59.1",
164
+ "svelte-check": "^3.3.2",
160
165
  "svelte-preprocess": "^4.10.6",
161
166
  "tslib": "^2.3.1",
162
167
  "typescript": "^4",
@@ -1,3 +1,20 @@
1
+ ### 0.4.0
2
+
3
+ - Feature: A/B tests are now rendered correctly during server-side rendering (SSR) when applicable. This behaviour is backwards compatible with previous versions.
4
+
5
+ ### 0.3.1
6
+
7
+ - Feature: Added SDK version to data sent to visual editor for improved debugging.
8
+ - Fix: Columns block: removed redundant margin-left in first column.
9
+
10
+ ### 0.3.0
11
+
12
+ - No Changes.
13
+
14
+ ### 0.2.3
15
+
16
+ - No Changes.
17
+
1
18
  ### 0.2.2
2
19
 
3
20
  - Fix: dynamic bindings for Link URLs.
@@ -43,7 +43,7 @@ function columnCssVars(index) {
43
43
  };
44
44
  }
45
45
  const width = getColumnCssWidth(index);
46
- const gutterPixels = `${gutterSize}px`;
46
+ const gutterPixels = `${gutter}px`;
47
47
  const mobileWidth = "100%";
48
48
  const mobileMarginLeft = 0;
49
49
  return {
@@ -104,7 +104,7 @@ $: onUpdateFn_0(...[symbol]);
104
104
  customComponents={Object.values(builderContext.registeredComponents)}
105
105
  data={{
106
106
  ...symbol?.data,
107
- ...builderContext.state,
107
+ ...builderContext.localState,
108
108
  ...contentToUse?.data?.state,
109
109
  }}
110
110
  model={symbol?.model}
@@ -11,7 +11,9 @@ export let context;
11
11
  $: useBlock = () => {
12
12
  return getProcessedBlock({
13
13
  block: block,
14
- state: context.state,
14
+ localState: context.localState,
15
+ rootState: context.rootState,
16
+ rootSetState: context.rootSetState,
15
17
  context: context.context,
16
18
  shouldEvaluateBindings: true,
17
19
  });
@@ -10,4 +10,3 @@ export declare const getRepeatItemData: ({ block, context, }: {
10
10
  block: BuilderBlock;
11
11
  context: BuilderContextInterface;
12
12
  }) => RepeatData[] | undefined;
13
- export declare const getProxyState: (context: BuilderContextInterface) => BuilderContextInterface['state'];
@@ -27,7 +27,9 @@ export const isEmptyHtmlElement = (tagName) => {
27
27
  export const getComponent = ({ block, context, }) => {
28
28
  const componentName = getProcessedBlock({
29
29
  block,
30
- state: context.state,
30
+ localState: context.localState,
31
+ rootState: context.rootState,
32
+ rootSetState: context.rootSetState,
31
33
  context: context.context,
32
34
  shouldEvaluateBindings: false,
33
35
  }).component?.name;
@@ -57,7 +59,9 @@ export const getRepeatItemData = ({ block, context, }) => {
57
59
  }
58
60
  const itemsArray = evaluate({
59
61
  code: repeat.collection,
60
- state: context.state,
62
+ localState: context.localState,
63
+ rootState: context.rootState,
64
+ rootSetState: context.rootSetState,
61
65
  context: context.context,
62
66
  });
63
67
  if (!Array.isArray(itemsArray)) {
@@ -68,8 +72,8 @@ export const getRepeatItemData = ({ block, context, }) => {
68
72
  const repeatArray = itemsArray.map((item, index) => ({
69
73
  context: {
70
74
  ...context,
71
- state: {
72
- ...context.state,
75
+ localState: {
76
+ ...context.localState,
73
77
  $index: index,
74
78
  $item: item,
75
79
  [itemNameToUse]: item,
@@ -80,19 +84,3 @@ export const getRepeatItemData = ({ block, context, }) => {
80
84
  }));
81
85
  return repeatArray;
82
86
  };
83
- export const getProxyState = (context) => {
84
- if (typeof Proxy === 'undefined') {
85
- console.error('no Proxy available in this environment, cannot proxy state.');
86
- return context.state;
87
- }
88
- const useState = new Proxy(context.state, {
89
- set: (obj, prop, value) => {
90
- // set the value on the state object, so that the event handler instantly gets the update.
91
- obj[prop] = value;
92
- // set the value in the context, so that the rest of the app gets the update.
93
- context.setState?.(obj);
94
- return true;
95
- },
96
- });
97
- return useState;
98
- };
@@ -5,7 +5,7 @@ import { getBlockComponentOptions } from "../../functions/get-block-component-op
5
5
  import { getBlockProperties } from "../../functions/get-block-properties.js";
6
6
  import { getProcessedBlock } from "../../functions/get-processed-block.js";
7
7
  import BlockStyles from "./block-styles.svelte";
8
- import { getComponent, getProxyState, getRepeatItemData, isEmptyHtmlElement, } from "./render-block.helpers.js";
8
+ import { getComponent, getRepeatItemData, isEmptyHtmlElement, } from "./render-block.helpers.js";
9
9
  import RenderRepeatedBlock from "./render-repeated-block.svelte";
10
10
  import { TARGET } from "../../constants/target.js";
11
11
  import { extractTextStyles } from "../../functions/extract-text-styles.js";
@@ -29,12 +29,20 @@ const setAttrs = (node, attrs = {}) => {
29
29
  };
30
30
  export let block;
31
31
  export let context;
32
+ $: repeatItem = () => {
33
+ return getRepeatItemData({
34
+ block: block,
35
+ context: context,
36
+ });
37
+ };
32
38
  $: useBlock = () => {
33
- return repeatItemData
39
+ return repeatItem()
34
40
  ? block
35
41
  : getProcessedBlock({
36
42
  block: block,
37
- state: context.state,
43
+ localState: context.localState,
44
+ rootState: context.rootState,
45
+ rootSetState: context.rootSetState,
38
46
  context: context.context,
39
47
  shouldEvaluateBindings: true,
40
48
  });
@@ -51,7 +59,9 @@ $: canShowBlock = () => {
51
59
  $: actions = () => {
52
60
  return getBlockActions({
53
61
  block: useBlock(),
54
- state: TARGET === "qwik" ? context.state : proxyState,
62
+ rootState: context.rootState,
63
+ rootSetState: context.rootSetState,
64
+ localState: context.localState,
55
65
  context: context.context,
56
66
  });
57
67
  };
@@ -77,7 +87,7 @@ $: childrenWithoutParentComponent = () => {
77
87
  * NOTE: We make sure not to render this if `repeatItemData` is non-null, because that means we are rendering an array of
78
88
  * blocks, and the children will be repeated within those blocks.
79
89
  */
80
- const shouldRenderChildrenOutsideRef = !component?.component && !repeatItemData;
90
+ const shouldRenderChildrenOutsideRef = !component?.component && !repeatItem();
81
91
  return shouldRenderChildrenOutsideRef ? useBlock().children ?? [] : [];
82
92
  };
83
93
  $: childrenContext = () => {
@@ -94,10 +104,11 @@ $: childrenContext = () => {
94
104
  return {
95
105
  apiKey: context.apiKey,
96
106
  apiVersion: context.apiVersion,
97
- state: context.state,
107
+ localState: context.localState,
108
+ rootState: context.rootState,
109
+ rootSetState: context.rootSetState,
98
110
  content: context.content,
99
111
  context: context.context,
100
- setState: context.setState,
101
112
  registeredComponents: context.registeredComponents,
102
113
  inheritedStyles: getInheritedTextStyles(),
103
114
  };
@@ -128,28 +139,23 @@ let component = getComponent({
128
139
  block: block,
129
140
  context: context,
130
141
  });
131
- let repeatItemData = getRepeatItemData({
132
- block: block,
133
- context: context,
134
- });
135
- let tag = block.tagName || "div";
136
- let proxyState = getProxyState(context);
142
+ let Tag = block.tagName || "div";
137
143
  </script>
138
144
 
139
145
  {#if canShowBlock()}
140
146
  {#if !component?.noWrap}
141
- {#if isEmptyHtmlElement(tag)}
142
- <svelte:element this={tag} {...attributes()} use:setAttrs={actions()} />
147
+ {#if isEmptyHtmlElement(Tag)}
148
+ <svelte:element this={Tag} {...attributes()} use:setAttrs={actions()} />
143
149
  {/if}
144
150
 
145
- {#if !isEmptyHtmlElement(tag) && repeatItemData}
146
- {#each repeatItemData as data, index (index)}
151
+ {#if !isEmptyHtmlElement(Tag) && repeatItem()}
152
+ {#each repeatItem() as data, index (index)}
147
153
  <RenderRepeatedBlock repeatContext={data.context} block={data.block} />
148
154
  {/each}
149
155
  {/if}
150
156
 
151
- {#if !isEmptyHtmlElement(tag) && !repeatItemData}
152
- <svelte:element this={tag} {...attributes()} use:setAttrs={actions()}>
157
+ {#if !isEmptyHtmlElement(Tag) && !repeatItem()}
158
+ <svelte:element this={Tag} {...attributes()} use:setAttrs={actions()}>
153
159
  <RenderComponent {...renderComponentProps()} />
154
160
 
155
161
  {#each childrenWithoutParentComponent() as child ("render-block-" + child.id)}
@@ -16,8 +16,9 @@ export let block;
16
16
  export let repeatContext;
17
17
  setContext(BuilderContext.key, {
18
18
  content: repeatContext.content,
19
- state: repeatContext.state,
20
- setState: repeatContext.setState,
19
+ localState: repeatContext.localState,
20
+ rootState: repeatContext.rootState,
21
+ rootSetState: repeatContext.rootSetState,
21
22
  context: repeatContext.context,
22
23
  apiKey: repeatContext.apiKey,
23
24
  registeredComponents: repeatContext.registeredComponents,
@@ -27,7 +27,7 @@ ${getFontCss({
27
27
  text-align: inherit;
28
28
  font-family: inherit;
29
29
  }
30
- `;
30
+ `.trim();
31
31
  </script>
32
32
 
33
33
  <RenderInlinedStyles styles={injectedStyles} />
@@ -17,6 +17,35 @@ import { getInteractionPropertiesForEvent } from "../../functions/track/interact
17
17
  import { getContentInitialValue, getContextStateInitialValue, } from "./render-content.helpers.js";
18
18
  import { TARGET } from "../../constants/target.js";
19
19
  import { logger } from "../../helpers/logger.js";
20
+ import { getRenderContentScriptString } from "../render-content-variants/helpers.js";
21
+ import { wrapComponentRef } from "./wrap-component-ref.js";
22
+ const isEvent = (attr) => attr.startsWith("on:");
23
+ const isNonEvent = (attr) => !attr.startsWith("on:");
24
+ const filterAttrs = (attrs = {}, filter) => {
25
+ const validAttr = {};
26
+ Object.keys(attrs).forEach((attr) => {
27
+ if (filter(attr)) {
28
+ validAttr[attr] = attrs[attr];
29
+ }
30
+ });
31
+ return validAttr;
32
+ };
33
+ const setAttrs = (node, attrs = {}) => {
34
+ const attrKeys = Object.keys(attrs);
35
+ const setup = (attr) => node.addEventListener(attr.substr(3), attrs[attr]);
36
+ const teardown = (attr) => node.removeEventListener(attr.substr(3), attrs[attr]);
37
+ attrKeys.map(setup);
38
+ return {
39
+ update(attrs = {}) {
40
+ const attrKeys = Object.keys(attrs);
41
+ attrKeys.map(teardown);
42
+ attrKeys.map(setup);
43
+ },
44
+ destroy() {
45
+ attrKeys.map(teardown);
46
+ },
47
+ };
48
+ };
20
49
  export let content;
21
50
  export let data;
22
51
  export let canTrack;
@@ -25,7 +54,12 @@ export let customComponents;
25
54
  export let model;
26
55
  export let context;
27
56
  export let apiKey;
57
+ export let parentContentId;
58
+ export let hideContent;
59
+ export let classNameProp;
60
+ export let isSsrAbTest;
28
61
  export let includeRefs;
62
+ export let enrich;
29
63
  export let apiVersion;
30
64
  function mergeNewContent(newContent) {
31
65
  useContent = {
@@ -51,8 +85,8 @@ function setBreakpoints(breakpoints) {
51
85
  },
52
86
  };
53
87
  }
54
- function setContextState(newState) {
55
- contentState = newState;
88
+ function contentSetState(newRootState) {
89
+ contentState = newRootState;
56
90
  }
57
91
  function processMessage(event) {
58
92
  const { data } = event;
@@ -97,7 +131,9 @@ function evaluateJsCode() {
97
131
  evaluate({
98
132
  code: jsCode,
99
133
  context: context || {},
100
- state: contentState,
134
+ localState: undefined,
135
+ rootState: contentState,
136
+ rootSetState: contentSetState,
101
137
  });
102
138
  }
103
139
  }
@@ -123,7 +159,9 @@ function evalExpression(expression) {
123
159
  return expression.replace(/{{([^}]+)}}/g, (_match, group) => evaluate({
124
160
  code: group,
125
161
  context: context || {},
126
- state: contentState,
162
+ localState: undefined,
163
+ rootState: contentState,
164
+ rootSetState: contentSetState,
127
165
  }));
128
166
  }
129
167
  function handleRequest({ url, key }) {
@@ -134,7 +172,7 @@ function handleRequest({ url, key }) {
134
172
  ...contentState,
135
173
  [key]: json,
136
174
  };
137
- setContextState(newState);
175
+ contentSetState(newState);
138
176
  })
139
177
  .catch((err) => {
140
178
  console.error("error fetching dynamic data", url, err);
@@ -187,12 +225,20 @@ let allRegisteredComponents = [
187
225
  // which is the new standard way of providing custom components, and must therefore take precedence.
188
226
  ...components,
189
227
  ...(customComponents || []),
190
- ].reduce((acc, curr) => ({
228
+ ].reduce((acc, { component, ...curr }) => ({
191
229
  ...acc,
192
- [curr.name]: curr,
230
+ [curr.name]: {
231
+ component: TARGET === "vue3" ? wrapComponentRef(component) : component,
232
+ ...curr,
233
+ },
193
234
  }), {});
194
235
  let httpReqsData = {};
195
236
  let clicked = false;
237
+ let scriptStr = getRenderContentScriptString({
238
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain
239
+ contentId: content?.id,
240
+ parentContentId: parentContentId,
241
+ });
196
242
  onMount(() => {
197
243
  if (!apiKey) {
198
244
  logger.error("No API key provided to `RenderContent` component. This can cause issues. Please provide an API key using the `apiKey` prop.");
@@ -212,6 +258,11 @@ onMount(() => {
212
258
  includeRefs: includeRefs,
213
259
  }
214
260
  : {}),
261
+ ...(enrich
262
+ ? {
263
+ enrich: enrich,
264
+ }
265
+ : {}),
215
266
  });
216
267
  Object.values(allRegisteredComponents).forEach((registeredComponent) => {
217
268
  const message = createRegisterComponentMessage(registeredComponent);
@@ -287,11 +338,14 @@ setContext(builderContext.key, {
287
338
  get content() {
288
339
  return useContent;
289
340
  },
290
- get state() {
341
+ get localState() {
342
+ return undefined;
343
+ },
344
+ get rootState() {
291
345
  return contentState;
292
346
  },
293
- get setState() {
294
- return setContextState;
347
+ get rootSetState() {
348
+ return TARGET === "qwik" ? undefined : contentSetState;
295
349
  },
296
350
  get context() {
297
351
  return context || {};
@@ -325,7 +379,42 @@ onDestroy(() => {
325
379
  }}
326
380
  builder-content-id={useContent?.id}
327
381
  builder-model={model}
382
+ {...filterAttrs(
383
+ TARGET === "reactNative"
384
+ ? {
385
+ dataSet: {
386
+ // currently, we can't set the actual ID here.
387
+ // we don't need it right now, we just need to identify content divs for testing.
388
+ "builder-content-id": "",
389
+ },
390
+ }
391
+ : {},
392
+ isNonEvent
393
+ )}
394
+ {...hideContent
395
+ ? {
396
+ hidden: true,
397
+ "aria-hidden": true,
398
+ }
399
+ : {}}
400
+ class={classNameProp}
401
+ use:setAttrs={filterAttrs(
402
+ TARGET === "reactNative"
403
+ ? {
404
+ dataSet: {
405
+ // currently, we can't set the actual ID here.
406
+ // we don't need it right now, we just need to identify content divs for testing.
407
+ "builder-content-id": "",
408
+ },
409
+ }
410
+ : {},
411
+ isEvent
412
+ )}
328
413
  >
414
+ {#if isSsrAbTest}
415
+ <svelte:element this={"script"}>{@html scriptStr}</svelte:element>
416
+ {/if}
417
+
329
418
  {#if TARGET !== "reactNative"}
330
419
  <RenderContentStyles
331
420
  contentId={useContent?.id}
@@ -10,7 +10,12 @@ declare const __propDef: {
10
10
  model: RenderContentProps["model"];
11
11
  context: RenderContentProps["context"];
12
12
  apiKey: RenderContentProps["apiKey"];
13
+ parentContentId: RenderContentProps["parentContentId"];
14
+ hideContent: RenderContentProps["hideContent"];
15
+ classNameProp: RenderContentProps["classNameProp"];
16
+ isSsrAbTest: RenderContentProps["isSsrAbTest"];
13
17
  includeRefs: RenderContentProps["includeRefs"];
18
+ enrich: RenderContentProps["enrich"];
14
19
  apiVersion: RenderContentProps["apiVersion"];
15
20
  };
16
21
  events: {
@@ -2,7 +2,7 @@ import type { BuilderRenderContext, RegisteredComponent, BuilderRenderState } fr
2
2
  import type { BuilderContent } from '../../types/builder-content';
3
3
  import type { Nullable } from '../../types/typescript';
4
4
  import type { ApiVersion } from '../../types/api-version';
5
- export type RenderContentProps = {
5
+ export interface RenderContentProps {
6
6
  content?: Nullable<BuilderContent>;
7
7
  model?: string;
8
8
  data?: {
@@ -14,8 +14,17 @@ export type RenderContentProps = {
14
14
  customComponents?: RegisteredComponent[];
15
15
  canTrack?: boolean;
16
16
  locale?: string;
17
+ /** @deprecated use `enrich` instead **/
17
18
  includeRefs?: boolean;
18
- };
19
+ enrich?: boolean;
20
+ /**
21
+ * TO-DO: improve qwik generator to not remap this name for non-HTML tags, then name it `className`
22
+ */
23
+ classNameProp?: string;
24
+ hideContent?: boolean;
25
+ parentContentId?: string;
26
+ isSsrAbTest?: boolean;
27
+ }
19
28
  export interface BuilderComponentStateChange {
20
29
  state: BuilderRenderState;
21
30
  ref: {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Apply target-specific transformations to the component reference.
3
+ *
4
+ * See overrides/* for examples.
5
+ */
6
+ export declare const wrapComponentRef: (component: any) => any;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Apply target-specific transformations to the component reference.
3
+ *
4
+ * See overrides/* for examples.
5
+ */
6
+ export const wrapComponentRef = (component) => component;
@@ -0,0 +1,17 @@
1
+ import type { Nullable } from '../../helpers/nullable';
2
+ import type { BuilderContent } from '../../types/builder-content';
3
+ export declare const getVariants: (content: Nullable<BuilderContent>) => import("../../types/builder-content").BuilderContentVariation[];
4
+ export declare const checkShouldRunVariants: ({ canTrack, content, }: {
5
+ canTrack: Nullable<boolean>;
6
+ content: Nullable<BuilderContent>;
7
+ }) => boolean;
8
+ type VariantData = {
9
+ id: string;
10
+ testRatio?: number;
11
+ };
12
+ export declare const getVariantsScriptString: (variants: VariantData[], contentId: string) => string;
13
+ export declare const getRenderContentScriptString: ({ parentContentId, contentId, }: {
14
+ contentId: string;
15
+ parentContentId: string;
16
+ }) => string;
17
+ export {};