@builder.io/sdk-svelte 1.0.36 → 1.1.1

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 (114) hide show
  1. package/lib/browser/blocks/accordion/component-info.js +7 -1
  2. package/lib/browser/blocks/button/component-info.js +7 -1
  3. package/lib/browser/blocks/columns/component-info.js +7 -1
  4. package/lib/browser/blocks/custom-code/component-info.js +6 -0
  5. package/lib/browser/blocks/embed/component-info.js +6 -0
  6. package/lib/browser/blocks/form/form/component-info.js +7 -1
  7. package/lib/browser/blocks/form/input/component-info.js +6 -0
  8. package/lib/browser/blocks/form/select/component-info.js +6 -0
  9. package/lib/browser/blocks/form/submit-button/component-info.js +6 -0
  10. package/lib/browser/blocks/form/textarea/component-info.js +6 -0
  11. package/lib/browser/blocks/fragment/component-info.js +6 -0
  12. package/lib/browser/blocks/image/component-info.js +7 -1
  13. package/lib/browser/blocks/img/component-info.js +6 -0
  14. package/lib/browser/blocks/raw-text/component-info.js +6 -0
  15. package/lib/browser/blocks/section/component-info.js +6 -0
  16. package/lib/browser/blocks/slot/component-info.js +7 -1
  17. package/lib/browser/blocks/symbol/component-info.js +7 -1
  18. package/lib/browser/blocks/tabs/component-info.js +7 -1
  19. package/lib/browser/blocks/text/component-info.js +7 -0
  20. package/lib/browser/blocks/video/component-info.js +7 -1
  21. package/lib/browser/components/block/block.helpers.d.ts +8 -8
  22. package/lib/browser/components/block/block.helpers.js +39 -12
  23. package/lib/browser/components/content-variants/content-variants.svelte +2 -1
  24. package/lib/browser/components/content-variants/inlined-fns.d.ts +1 -1
  25. package/lib/browser/components/content-variants/inlined-fns.js +1 -1
  26. package/lib/browser/constants/sdk-version.d.ts +1 -1
  27. package/lib/browser/constants/sdk-version.js +1 -1
  28. package/lib/browser/functions/evaluate/choose-eval.js +4 -0
  29. package/lib/browser/types/components.d.ts +41 -0
  30. package/lib/edge/blocks/accordion/component-info.js +7 -1
  31. package/lib/edge/blocks/button/component-info.js +7 -1
  32. package/lib/edge/blocks/columns/component-info.js +7 -1
  33. package/lib/edge/blocks/custom-code/component-info.js +6 -0
  34. package/lib/edge/blocks/embed/component-info.js +6 -0
  35. package/lib/edge/blocks/form/form/component-info.js +7 -1
  36. package/lib/edge/blocks/form/input/component-info.js +6 -0
  37. package/lib/edge/blocks/form/select/component-info.js +6 -0
  38. package/lib/edge/blocks/form/submit-button/component-info.js +6 -0
  39. package/lib/edge/blocks/form/textarea/component-info.js +6 -0
  40. package/lib/edge/blocks/fragment/component-info.js +6 -0
  41. package/lib/edge/blocks/image/component-info.js +7 -1
  42. package/lib/edge/blocks/img/component-info.js +6 -0
  43. package/lib/edge/blocks/raw-text/component-info.js +6 -0
  44. package/lib/edge/blocks/section/component-info.js +6 -0
  45. package/lib/edge/blocks/slot/component-info.js +7 -1
  46. package/lib/edge/blocks/symbol/component-info.js +7 -1
  47. package/lib/edge/blocks/tabs/component-info.js +7 -1
  48. package/lib/edge/blocks/text/component-info.js +7 -0
  49. package/lib/edge/blocks/video/component-info.js +7 -1
  50. package/lib/edge/components/block/block.helpers.d.ts +8 -8
  51. package/lib/edge/components/block/block.helpers.js +39 -12
  52. package/lib/edge/components/content-variants/content-variants.svelte +2 -1
  53. package/lib/edge/components/content-variants/inlined-fns.d.ts +1 -1
  54. package/lib/edge/components/content-variants/inlined-fns.js +1 -1
  55. package/lib/edge/constants/sdk-version.d.ts +1 -1
  56. package/lib/edge/constants/sdk-version.js +1 -1
  57. package/lib/edge/functions/evaluate/choose-eval.js +4 -0
  58. package/lib/edge/types/components.d.ts +41 -0
  59. package/lib/node/blocks/accordion/component-info.js +7 -1
  60. package/lib/node/blocks/button/component-info.js +7 -1
  61. package/lib/node/blocks/columns/component-info.js +7 -1
  62. package/lib/node/blocks/custom-code/component-info.js +6 -0
  63. package/lib/node/blocks/embed/component-info.js +6 -0
  64. package/lib/node/blocks/form/form/component-info.js +7 -1
  65. package/lib/node/blocks/form/input/component-info.js +6 -0
  66. package/lib/node/blocks/form/select/component-info.js +6 -0
  67. package/lib/node/blocks/form/submit-button/component-info.js +6 -0
  68. package/lib/node/blocks/form/textarea/component-info.js +6 -0
  69. package/lib/node/blocks/fragment/component-info.js +6 -0
  70. package/lib/node/blocks/image/component-info.js +7 -1
  71. package/lib/node/blocks/img/component-info.js +6 -0
  72. package/lib/node/blocks/raw-text/component-info.js +6 -0
  73. package/lib/node/blocks/section/component-info.js +6 -0
  74. package/lib/node/blocks/slot/component-info.js +7 -1
  75. package/lib/node/blocks/symbol/component-info.js +7 -1
  76. package/lib/node/blocks/tabs/component-info.js +7 -1
  77. package/lib/node/blocks/text/component-info.js +7 -0
  78. package/lib/node/blocks/video/component-info.js +7 -1
  79. package/lib/node/components/block/block.helpers.d.ts +8 -8
  80. package/lib/node/components/block/block.helpers.js +39 -12
  81. package/lib/node/components/content-variants/content-variants.svelte +2 -1
  82. package/lib/node/components/content-variants/inlined-fns.d.ts +1 -1
  83. package/lib/node/components/content-variants/inlined-fns.js +1 -1
  84. package/lib/node/constants/sdk-version.d.ts +1 -1
  85. package/lib/node/constants/sdk-version.js +1 -1
  86. package/lib/node/functions/evaluate/choose-eval.js +4 -0
  87. package/lib/node/types/components.d.ts +41 -0
  88. package/package.json +1 -1
  89. package/src/blocks/accordion/component-info.ts +7 -1
  90. package/src/blocks/button/component-info.ts +7 -1
  91. package/src/blocks/columns/component-info.ts +7 -1
  92. package/src/blocks/custom-code/component-info.ts +6 -0
  93. package/src/blocks/embed/component-info.ts +6 -0
  94. package/src/blocks/form/form/component-info.ts +7 -1
  95. package/src/blocks/form/input/component-info.ts +6 -0
  96. package/src/blocks/form/select/component-info.ts +6 -0
  97. package/src/blocks/form/submit-button/component-info.ts +6 -0
  98. package/src/blocks/form/textarea/component-info.ts +6 -0
  99. package/src/blocks/fragment/component-info.ts +6 -0
  100. package/src/blocks/image/component-info.ts +7 -1
  101. package/src/blocks/img/component-info.ts +6 -0
  102. package/src/blocks/raw-text/component-info.ts +6 -0
  103. package/src/blocks/section/component-info.ts +6 -0
  104. package/src/blocks/slot/component-info.ts +7 -1
  105. package/src/blocks/symbol/component-info.ts +7 -1
  106. package/src/blocks/tabs/component-info.ts +7 -1
  107. package/src/blocks/text/component-info.ts +7 -0
  108. package/src/blocks/video/component-info.ts +7 -1
  109. package/src/components/block/block.helpers.ts +32 -12
  110. package/src/components/content-variants/content-variants.svelte +3 -1
  111. package/src/components/content-variants/inlined-fns.ts +1 -1
  112. package/src/constants/sdk-version.ts +1 -1
  113. package/src/functions/evaluate/choose-eval.ts +4 -0
  114. package/src/types/components.ts +46 -0
@@ -119,5 +119,11 @@ export const componentInfo = {
119
119
  options.set('items', []);
120
120
  }
121
121
  }
122
- }]
122
+ }],
123
+ shouldReceiveBuilderProps: {
124
+ builderBlock: true,
125
+ builderContext: true,
126
+ builderComponents: true,
127
+ builderLinkComponent: true
128
+ }
123
129
  };
@@ -30,5 +30,11 @@ export const componentInfo = {
30
30
  friendlyName: 'Open link in new tab'
31
31
  }],
32
32
  static: true,
33
- noWrap: true
33
+ noWrap: true,
34
+ shouldReceiveBuilderProps: {
35
+ builderBlock: false,
36
+ builderContext: false,
37
+ builderComponents: false,
38
+ builderLinkComponent: true
39
+ }
34
40
  };
@@ -215,5 +215,11 @@ export const componentInfo = {
215
215
  defaultValue: false,
216
216
  helperText: 'When stacking columns for mobile devices, reverse the ordering',
217
217
  advanced: true
218
- }]
218
+ }],
219
+ shouldReceiveBuilderProps: {
220
+ builderBlock: true,
221
+ builderContext: true,
222
+ builderComponents: true,
223
+ builderLinkComponent: true
224
+ }
219
225
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Custom Code',
3
9
  static: true,
4
10
  requiredPermissions: ['editCode'],
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Embed',
3
9
  static: true,
4
10
  inputs: [{
@@ -228,5 +228,11 @@ export const componentInfo = {
228
228
  text: 'Submit'
229
229
  }
230
230
  }
231
- }]
231
+ }],
232
+ shouldReceiveBuilderProps: {
233
+ builderBlock: true,
234
+ builderContext: true,
235
+ builderComponents: true,
236
+ builderLinkComponent: true
237
+ }
232
238
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:Input',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fad6f37889d9e40bbbbc72cdb5875d6ca',
4
10
  inputs: [{
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:Select',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F83acca093fb24aaf94dee136e9a4b045',
4
10
  defaultStyles: {
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:SubmitButton',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fdf2820ffed1f4349a94c40b3221f5b98',
4
10
  defaultStyles: {
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:TextArea',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Ff74a2f3de58c4c3e939204e5b6b8f6c3',
4
10
  inputs: [{
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Fragment',
3
9
  static: true,
4
10
  hidden: true,
@@ -123,5 +123,11 @@ export const componentInfo = {
123
123
  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",
124
124
  advanced: true,
125
125
  defaultValue: 0.7041
126
- }]
126
+ }],
127
+ shouldReceiveBuilderProps: {
128
+ builderBlock: true,
129
+ builderContext: false,
130
+ builderComponents: false,
131
+ builderLinkComponent: false
132
+ }
127
133
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  // friendlyName?
3
9
  name: 'Raw:Img',
4
10
  hideFromInsertMenu: true,
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Builder:RawText',
3
9
  hideFromInsertMenu: true,
4
10
  inputs: [{
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Core:Section',
3
9
  static: true,
4
10
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F682efef23ace49afac61748dd305c70a',
@@ -10,5 +10,11 @@ export const componentInfo = {
10
10
  type: 'string',
11
11
  required: true,
12
12
  defaultValue: 'children'
13
- }]
13
+ }],
14
+ shouldReceiveBuilderProps: {
15
+ builderBlock: false,
16
+ builderContext: true,
17
+ builderComponents: false,
18
+ builderLinkComponent: false
19
+ }
14
20
  };
@@ -30,5 +30,11 @@ export const componentInfo = {
30
30
  name: 'useChildren',
31
31
  hideFromUI: true,
32
32
  type: 'boolean'
33
- }]
33
+ }],
34
+ shouldReceiveBuilderProps: {
35
+ builderBlock: true,
36
+ builderContext: true,
37
+ builderComponents: true,
38
+ builderLinkComponent: true
39
+ }
34
40
  };
@@ -134,5 +134,11 @@ export const componentInfo = {
134
134
  label: 'Right',
135
135
  value: 'flex-end'
136
136
  }]
137
- }]
137
+ }],
138
+ shouldReceiveBuilderProps: {
139
+ builderBlock: true,
140
+ builderContext: true,
141
+ builderComponents: true,
142
+ builderLinkComponent: true
143
+ }
138
144
  };
@@ -1,4 +1,11 @@
1
+ import { TARGET } from '../../constants/target';
1
2
  export const componentInfo = {
3
+ shouldReceiveBuilderProps: {
4
+ builderBlock: TARGET === 'reactNative' ? true : false,
5
+ builderContext: false,
6
+ builderComponents: false,
7
+ builderLinkComponent: false
8
+ },
2
9
  name: 'Text',
3
10
  static: true,
4
11
  isRSC: true,
@@ -78,5 +78,11 @@ export const componentInfo = {
78
78
  helperText: 'Load this video "lazily" - as in only when a user scrolls near the video. Recommended for optmized performance and bandwidth consumption',
79
79
  defaultValue: true,
80
80
  advanced: true
81
- }]
81
+ }],
82
+ shouldReceiveBuilderProps: {
83
+ builderBlock: true,
84
+ builderContext: false,
85
+ builderComponents: false,
86
+ builderLinkComponent: false
87
+ }
82
88
  };
@@ -17,22 +17,22 @@ export declare const getInheritedStyles: ({ block, context }: {
17
17
  context: BuilderContextInterface;
18
18
  }) => Partial<CSSStyleDeclaration>;
19
19
  export declare const provideLinkComponent: (block: RegisteredComponent | null | undefined, linkComponent: any) => {
20
- builderLinkComponent: any;
21
- } | {
22
20
  builderLinkComponent?: undefined;
21
+ } | {
22
+ builderLinkComponent: any;
23
23
  };
24
24
  export declare const provideRegisteredComponents: (block: RegisteredComponent | null | undefined, registeredComponents: RegisteredComponents) => {
25
- builderComponents: RegisteredComponents;
26
- } | {
27
25
  builderComponents?: undefined;
26
+ } | {
27
+ builderComponents: RegisteredComponents;
28
28
  };
29
29
  export declare const provideBuilderBlock: (block: RegisteredComponent | null | undefined, builderBlock: BuilderBlock) => {
30
- builderBlock: BuilderBlock;
31
- } | {
32
30
  builderBlock?: undefined;
31
+ } | {
32
+ builderBlock: BuilderBlock;
33
33
  };
34
34
  export declare const provideBuilderContext: (block: RegisteredComponent | null | undefined, context: Writable<BuilderContextInterface>) => {
35
- builderContext: Writable<BuilderContextInterface>;
36
- } | {
37
35
  builderContext?: undefined;
36
+ } | {
37
+ builderContext: Writable<BuilderContextInterface>;
38
38
  };
@@ -1,4 +1,3 @@
1
- import { TARGET } from '../../constants/target';
2
1
  import { evaluate } from '../../functions/evaluate/index';
3
2
  import { extractTextStyles } from '../../functions/extract-text-styles';
4
3
  import { getProcessedBlock } from '../../functions/get-processed-block';
@@ -74,26 +73,54 @@ export const getInheritedStyles = ({ block, context }) => {
74
73
  }
75
74
  return extractTextStyles(style);
76
75
  };
76
+ const applyDefaults = (shouldReceiveBuilderProps) => {
77
+ return {
78
+ // once we bump to a major version, toggle this to `false`.
79
+ builderBlock: true,
80
+ // once we bump to a major version, toggle this to `false`.
81
+ builderContext: true,
82
+ builderComponents: false,
83
+ builderLinkComponent: false,
84
+ ...shouldReceiveBuilderProps
85
+ };
86
+ };
77
87
  export const provideLinkComponent = (block, linkComponent) => {
78
- return block && (block.isRSC && TARGET === 'rsc' || ['Core:Button', 'Symbol', 'Columns', 'Form:Form', 'Builder: Tabs', 'Builder:Accordion'].includes(block.name)) ? {
88
+ if (!block)
89
+ return {};
90
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderLinkComponent;
91
+ if (!shouldReceiveProp)
92
+ return {};
93
+ return {
79
94
  builderLinkComponent: linkComponent
80
- } : {};
95
+ };
81
96
  };
82
97
  export const provideRegisteredComponents = (block, registeredComponents) => {
83
- return block && (block.isRSC && TARGET === 'rsc' || ['Symbol', 'Columns', 'Form:Form', 'Builder: Tabs', 'Builder:Accordion'].includes(block.name)) ? {
98
+ if (!block)
99
+ return {};
100
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderComponents;
101
+ if (!shouldReceiveProp)
102
+ return {};
103
+ return {
84
104
  builderComponents: registeredComponents
85
- } : {};
105
+ };
86
106
  };
87
107
  export const provideBuilderBlock = (block, builderBlock) => {
88
- /**
89
- * Our built-in components frequently make use of the block, so we provide all of it under `builderBlock`
90
- */
91
- return block && (block.isRSC && TARGET === 'rsc' || TARGET === 'reactNative' && block.name === 'Text' || ['Builder:Accordion', 'Columns', 'Form:Form', 'Builder: Tabs', 'Symbol', 'Image', 'Video'].includes(block.name)) ? {
108
+ if (!block)
109
+ return {};
110
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderBlock;
111
+ if (!shouldReceiveProp)
112
+ return {};
113
+ return {
92
114
  builderBlock
93
- } : {};
115
+ };
94
116
  };
95
117
  export const provideBuilderContext = (block, context) => {
96
- return block && (block.isRSC && TARGET === 'rsc' || ['Builder:Accordion', 'Columns', 'Form:Form', 'Builder: Tabs', 'Symbol', 'Slot'].includes(block.name)) ? {
118
+ if (!block)
119
+ return {};
120
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderContext;
121
+ if (!shouldReceiveProp)
122
+ return {};
123
+ return {
97
124
  builderContext: context
98
- } : {};
125
+ };
99
126
  };
@@ -1,6 +1,6 @@
1
1
  <script context="module"></script>
2
2
 
3
- <script>import { onMount } from "svelte";
3
+ <script>import { afterUpdate, onMount } from "svelte";
4
4
  import { TARGET } from "../../constants/target";
5
5
  import { handleABTestingSync } from "../../helpers/ab-tests";
6
6
  import { getDefaultCanTrack } from "../../helpers/canTrack";
@@ -57,6 +57,7 @@ onMount(() => {
57
57
  */
58
58
  shouldRenderVariants = false;
59
59
  });
60
+ afterUpdate(() => { });
60
61
  </script>
61
62
 
62
63
  {#if !isNestedRender && TARGET !== "reactNative"}
@@ -8,7 +8,7 @@
8
8
  */
9
9
  /**
10
10
  * For more information on how this works,
11
- * see our [SSR A/B Test Docs](https://github.com/BuilderIO/builder/tree/main/packages/sdks/src/SSR_AB_TEST.md)
11
+ * see our [SSR A/B Test Docs](https://github.com/BuilderIO/builder/tree/main/packages/sdks/docs/SSR_AB_TEST.md)
12
12
  */
13
13
  export declare const UPDATE_COOKIES_AND_STYLES_SCRIPT = "function updateCookiesAndStyles(contentId, variants, isHydrationTarget) {\n function getAndSetVariantId() {\n function setCookie(name, value, days) {\n let expires = '';\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = '; expires=' + date.toUTCString();\n }\n document.cookie = name + '=' + (value || '') + expires + '; path=/' + '; Secure; SameSite=None';\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const cookieName = `builder.tests.${contentId}`;\n const variantInCookie = getCookie(cookieName);\n const availableIDs = variants.map(vr => vr.id).concat(contentId);\n if (variantInCookie && availableIDs.includes(variantInCookie)) {\n return variantInCookie;\n }\n let n = 0;\n const random = Math.random();\n for (let i = 0; i < variants.length; i++) {\n const variant = variants[i];\n const testRatio = variant.testRatio;\n n += testRatio;\n if (random < n) {\n setCookie(cookieName, variant.id);\n return variant.id;\n }\n }\n setCookie(cookieName, contentId);\n return contentId;\n }\n const winningVariantId = getAndSetVariantId();\n const styleEl = document.currentScript?.previousElementSibling;\n if (isHydrationTarget) {\n styleEl.remove();\n const thisScriptEl = document.currentScript;\n thisScriptEl?.remove();\n } else {\n const newStyleStr = variants.concat({\n id: contentId\n }).filter(variant => variant.id !== winningVariantId).map(value => {\n return `.variant-${value.id} { display: none; }\n `;\n }).join('');\n styleEl.innerHTML = newStyleStr;\n }\n}";
14
14
  export declare const UPDATE_VARIANT_VISIBILITY_SCRIPT = "function updateVariantVisibility(variantContentId, defaultContentId, isHydrationTarget) {\n if (!navigator.cookieEnabled) {\n return;\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const cookieName = `builder.tests.${defaultContentId}`;\n const winningVariant = getCookie(cookieName);\n const parentDiv = document.currentScript?.parentElement;\n const isDefaultContent = variantContentId === defaultContentId;\n const isWinningVariant = winningVariant === variantContentId;\n if (isWinningVariant && !isDefaultContent) {\n parentDiv?.removeAttribute('hidden');\n parentDiv?.removeAttribute('aria-hidden');\n } else if (!isWinningVariant && isDefaultContent) {\n parentDiv?.setAttribute('hidden', 'true');\n parentDiv?.setAttribute('aria-hidden', 'true');\n }\n if (isHydrationTarget) {\n if (!isWinningVariant) {\n parentDiv?.remove();\n }\n const thisScriptEl = document.currentScript;\n thisScriptEl?.remove();\n }\n return;\n}";
@@ -8,7 +8,7 @@
8
8
  */
9
9
  /**
10
10
  * For more information on how this works,
11
- * see our [SSR A/B Test Docs](https://github.com/BuilderIO/builder/tree/main/packages/sdks/src/SSR_AB_TEST.md)
11
+ * see our [SSR A/B Test Docs](https://github.com/BuilderIO/builder/tree/main/packages/sdks/docs/SSR_AB_TEST.md)
12
12
  */
13
13
  export const UPDATE_COOKIES_AND_STYLES_SCRIPT = "function updateCookiesAndStyles(contentId, variants, isHydrationTarget) {\n function getAndSetVariantId() {\n function setCookie(name, value, days) {\n let expires = '';\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = '; expires=' + date.toUTCString();\n }\n document.cookie = name + '=' + (value || '') + expires + '; path=/' + '; Secure; SameSite=None';\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const cookieName = `builder.tests.${contentId}`;\n const variantInCookie = getCookie(cookieName);\n const availableIDs = variants.map(vr => vr.id).concat(contentId);\n if (variantInCookie && availableIDs.includes(variantInCookie)) {\n return variantInCookie;\n }\n let n = 0;\n const random = Math.random();\n for (let i = 0; i < variants.length; i++) {\n const variant = variants[i];\n const testRatio = variant.testRatio;\n n += testRatio;\n if (random < n) {\n setCookie(cookieName, variant.id);\n return variant.id;\n }\n }\n setCookie(cookieName, contentId);\n return contentId;\n }\n const winningVariantId = getAndSetVariantId();\n const styleEl = document.currentScript?.previousElementSibling;\n if (isHydrationTarget) {\n styleEl.remove();\n const thisScriptEl = document.currentScript;\n thisScriptEl?.remove();\n } else {\n const newStyleStr = variants.concat({\n id: contentId\n }).filter(variant => variant.id !== winningVariantId).map(value => {\n return `.variant-${value.id} { display: none; }\n `;\n }).join('');\n styleEl.innerHTML = newStyleStr;\n }\n}";
14
14
  export const UPDATE_VARIANT_VISIBILITY_SCRIPT = "function updateVariantVisibility(variantContentId, defaultContentId, isHydrationTarget) {\n if (!navigator.cookieEnabled) {\n return;\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const cookieName = `builder.tests.${defaultContentId}`;\n const winningVariant = getCookie(cookieName);\n const parentDiv = document.currentScript?.parentElement;\n const isDefaultContent = variantContentId === defaultContentId;\n const isWinningVariant = winningVariant === variantContentId;\n if (isWinningVariant && !isDefaultContent) {\n parentDiv?.removeAttribute('hidden');\n parentDiv?.removeAttribute('aria-hidden');\n } else if (!isWinningVariant && isDefaultContent) {\n parentDiv?.setAttribute('hidden', 'true');\n parentDiv?.setAttribute('aria-hidden', 'true');\n }\n if (isHydrationTarget) {\n if (!isWinningVariant) {\n parentDiv?.remove();\n }\n const thisScriptEl = document.currentScript;\n thisScriptEl?.remove();\n }\n return;\n}";
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "1.0.36";
1
+ export declare const SDK_VERSION = "1.1.1";
@@ -1 +1 @@
1
- export const SDK_VERSION = "1.0.36";
1
+ export const SDK_VERSION = "1.1.1";
@@ -1,3 +1,7 @@
1
+ /*
2
+ * THIS FILE IS EXPECTED TO EXIST WITH THIS EXACT NAME BY SUBSEQUENT BUNDLE STEPS THAT TRANSFORM IT.
3
+ * DO NOT RENAME THIS FILE.
4
+ */
1
5
  import { isBrowser } from '../is-browser';
2
6
  import { runInBrowser } from './browser-runtime/browser';
3
7
  /**
@@ -105,6 +105,47 @@ export interface ComponentInfo {
105
105
  */
106
106
  requiredPermissions?: Array<Permission>;
107
107
  hidden?: boolean;
108
+ /**
109
+ * When overriding built-in components, if you don't want any special behavior that
110
+ * the original has, set this to `true` to skip the default behavior
111
+ *
112
+ * Default behaviors include special "virtual options", such as a custom
113
+ * aspect ratio editor for Images, or a special column editor for Columns
114
+ *
115
+ * Learn more about overriding built-in components here: https://www.builder.io/c/docs/custom-components-overriding
116
+ */
117
+ override?: boolean;
118
+ /**
119
+ * Whether or not the component should receive SDK-related props.
120
+ */
121
+ shouldReceiveBuilderProps?: {
122
+ /**
123
+ * Whether or not the component should receive the `builderBlock` prop, containing the current Builder block being rendered.
124
+ *
125
+ * Defaults to `true`.
126
+ */
127
+ builderBlock?: boolean;
128
+ /**
129
+ * Whether or not the component should receive the `builderContext` prop, containing the current context.
130
+ * The Builder Context contains a lot of data relevant to the current `Content` render.
131
+ * You can see more information [here](https://github.com/BuilderIO/builder/blob/main/packages/sdks/src/context/types.ts).
132
+ *
133
+ * Defaults to `true`.
134
+ */
135
+ builderContext?: boolean;
136
+ /**
137
+ * Whether or not the component should receive the `builderComponents` array, containing the all registered components (custom and built-in).
138
+ *
139
+ * Defaults to `false`.
140
+ */
141
+ builderComponents?: boolean;
142
+ /**
143
+ * Whether or not the component should receive the `builderLinkComponent` prop, containing the custom link component provided to `Content`.
144
+ *
145
+ * Defaults to `false`.
146
+ */
147
+ builderLinkComponent?: boolean;
148
+ };
108
149
  }
109
150
  type Permission = 'read' | 'publish' | 'editCode' | 'editDesigns' | 'admin' | 'create';
110
151
  export {};
@@ -119,5 +119,11 @@ export const componentInfo = {
119
119
  options.set('items', []);
120
120
  }
121
121
  }
122
- }]
122
+ }],
123
+ shouldReceiveBuilderProps: {
124
+ builderBlock: true,
125
+ builderContext: true,
126
+ builderComponents: true,
127
+ builderLinkComponent: true
128
+ }
123
129
  };
@@ -30,5 +30,11 @@ export const componentInfo = {
30
30
  friendlyName: 'Open link in new tab'
31
31
  }],
32
32
  static: true,
33
- noWrap: true
33
+ noWrap: true,
34
+ shouldReceiveBuilderProps: {
35
+ builderBlock: false,
36
+ builderContext: false,
37
+ builderComponents: false,
38
+ builderLinkComponent: true
39
+ }
34
40
  };
@@ -215,5 +215,11 @@ export const componentInfo = {
215
215
  defaultValue: false,
216
216
  helperText: 'When stacking columns for mobile devices, reverse the ordering',
217
217
  advanced: true
218
- }]
218
+ }],
219
+ shouldReceiveBuilderProps: {
220
+ builderBlock: true,
221
+ builderContext: true,
222
+ builderComponents: true,
223
+ builderLinkComponent: true
224
+ }
219
225
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Custom Code',
3
9
  static: true,
4
10
  requiredPermissions: ['editCode'],
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Embed',
3
9
  static: true,
4
10
  inputs: [{
@@ -228,5 +228,11 @@ export const componentInfo = {
228
228
  text: 'Submit'
229
229
  }
230
230
  }
231
- }]
231
+ }],
232
+ shouldReceiveBuilderProps: {
233
+ builderBlock: true,
234
+ builderContext: true,
235
+ builderComponents: true,
236
+ builderLinkComponent: true
237
+ }
232
238
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:Input',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fad6f37889d9e40bbbbc72cdb5875d6ca',
4
10
  inputs: [{
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:Select',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F83acca093fb24aaf94dee136e9a4b045',
4
10
  defaultStyles: {
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:SubmitButton',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fdf2820ffed1f4349a94c40b3221f5b98',
4
10
  defaultStyles: {
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Form:TextArea',
3
9
  image: 'https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Ff74a2f3de58c4c3e939204e5b6b8f6c3',
4
10
  inputs: [{
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  name: 'Fragment',
3
9
  static: true,
4
10
  hidden: true,
@@ -123,5 +123,11 @@ export const componentInfo = {
123
123
  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",
124
124
  advanced: true,
125
125
  defaultValue: 0.7041
126
- }]
126
+ }],
127
+ shouldReceiveBuilderProps: {
128
+ builderBlock: true,
129
+ builderContext: false,
130
+ builderComponents: false,
131
+ builderLinkComponent: false
132
+ }
127
133
  };
@@ -1,4 +1,10 @@
1
1
  export const componentInfo = {
2
+ shouldReceiveBuilderProps: {
3
+ builderBlock: false,
4
+ builderContext: false,
5
+ builderComponents: false,
6
+ builderLinkComponent: false
7
+ },
2
8
  // friendlyName?
3
9
  name: 'Raw:Img',
4
10
  hideFromInsertMenu: true,