@builder.io/sdk-solid 1.0.35 → 1.1.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.
@@ -290,6 +290,19 @@ function flattenState({
290
290
  });
291
291
  }
292
292
 
293
+ // src/constants/sdk-name.ts
294
+ var SDK_NAME_FOR_TARGET = (() => {
295
+ switch (TARGET) {
296
+ case "rsc":
297
+ return "react-nextjs";
298
+ case "reactNative":
299
+ return "react-native";
300
+ default:
301
+ return TARGET;
302
+ }
303
+ })();
304
+ var SDK_NAME = `@builder.io/sdk-${SDK_NAME_FOR_TARGET}`;
305
+
293
306
  // src/functions/fast-clone.ts
294
307
  var fastClone = (obj) => JSON.parse(JSON.stringify(obj));
295
308
 
@@ -371,6 +384,7 @@ if (typeof output === 'object' && output !== null) {
371
384
  };
372
385
  var IVM_INSTANCE = null;
373
386
  var IVM_CONTEXT = null;
387
+ var SHOULD_MENTION_INITIALIZE_SCRIPT = SDK_NAME === "@builder.io/sdk-react-nextjs" || SDK_NAME === "@builder.io/sdk-react";
374
388
  var getIvm = () => {
375
389
  try {
376
390
  if (IVM_INSTANCE)
@@ -381,14 +395,15 @@ var getIvm = () => {
381
395
  } catch (error2) {
382
396
  logger.error("isolated-vm import error.", error2);
383
397
  }
384
- throw new Error(`${MSG_PREFIX}could not import \`isolated-vm\` module for safe script execution on Node server.
398
+ const ERROR_MESSAGE = `${MSG_PREFIX}could not import \`isolated-vm\` module for safe script execution on a Node server.
385
399
 
386
- In certain Node environments, the SDK requires additional initialization steps. This can be achieved by
387
- importing and calling \`initializeNodeRuntime()\` from "@builder.io/sdk-react/node/init". This must be done in
388
- a server-only execution path within your application.
400
+ SOLUTION: In a server-only execution path within your application, do one of the following:
401
+
402
+ ${SHOULD_MENTION_INITIALIZE_SCRIPT ? '- import and call `initializeNodeRuntime()` from "${SDK_NAME}/node/init".' : ""}
403
+ - add the following import: \`await import('isolated-vm')\`.
389
404
 
390
- Please see the documentation for more information: https://builder.io/c/docs/integration-tips#enabling-data-bindings-in-node-environments
391
- `);
405
+ For more information, visit https://builder.io/c/docs/integration-tips#enabling-data-bindings-in-node-environments`;
406
+ throw new Error(ERROR_MESSAGE);
392
407
  };
393
408
  function setIsolateContext(options = {
394
409
  memoryLimit: 128
@@ -922,25 +937,56 @@ var getRepeatItemData = ({
922
937
  }));
923
938
  return repeatArray;
924
939
  };
940
+ var applyDefaults = (shouldReceiveBuilderProps) => {
941
+ return {
942
+ // once we bump to a major version, toggle this to `false`.
943
+ builderBlock: true,
944
+ // once we bump to a major version, toggle this to `false`.
945
+ builderContext: true,
946
+ builderComponents: false,
947
+ builderLinkComponent: false,
948
+ ...shouldReceiveBuilderProps
949
+ };
950
+ };
925
951
  var provideLinkComponent = (block, linkComponent) => {
926
- return block && (block.isRSC && TARGET === "rsc" || ["Core:Button", "Symbol", "Columns", "Form:Form", "Builder: Tabs", "Builder:Accordion"].includes(block.name)) ? {
952
+ if (!block)
953
+ return {};
954
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderLinkComponent;
955
+ if (!shouldReceiveProp)
956
+ return {};
957
+ return {
927
958
  builderLinkComponent: linkComponent
928
- } : {};
959
+ };
929
960
  };
930
961
  var provideRegisteredComponents = (block, registeredComponents) => {
931
- return block && (block.isRSC && TARGET === "rsc" || ["Symbol", "Columns", "Form:Form", "Builder: Tabs", "Builder:Accordion"].includes(block.name)) ? {
962
+ if (!block)
963
+ return {};
964
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderComponents;
965
+ if (!shouldReceiveProp)
966
+ return {};
967
+ return {
932
968
  builderComponents: registeredComponents
933
- } : {};
969
+ };
934
970
  };
935
971
  var provideBuilderBlock = (block, builderBlock) => {
936
- return block && (block.isRSC && TARGET === "rsc" || TARGET === "reactNative" && block.name === "Text" || ["Builder:Accordion", "Columns", "Form:Form", "Builder: Tabs", "Symbol", "Image", "Video"].includes(block.name)) ? {
972
+ if (!block)
973
+ return {};
974
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderBlock;
975
+ if (!shouldReceiveProp)
976
+ return {};
977
+ return {
937
978
  builderBlock
938
- } : {};
979
+ };
939
980
  };
940
981
  var provideBuilderContext = (block, context) => {
941
- return block && (block.isRSC && TARGET === "rsc" || ["Builder:Accordion", "Columns", "Form:Form", "Builder: Tabs", "Symbol", "Slot"].includes(block.name)) ? {
982
+ if (!block)
983
+ return {};
984
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderContext;
985
+ if (!shouldReceiveProp)
986
+ return {};
987
+ return {
942
988
  builderContext: context
943
- } : {};
989
+ };
944
990
  };
945
991
 
946
992
  // src/components/block/components/block-styles.tsx
@@ -1838,10 +1884,16 @@ function SectionComponent(props) {
1838
1884
  var section_default = SectionComponent;
1839
1885
 
1840
1886
  // src/blocks/symbol/symbol.tsx
1841
- import { onMount as onMount5, on as on3, createEffect as createEffect3, createMemo as createMemo19, createSignal as createSignal19 } from "solid-js";
1887
+ import { onMount as onMount5, on as on4, createEffect as createEffect4, createMemo as createMemo19, createSignal as createSignal19 } from "solid-js";
1842
1888
 
1843
1889
  // src/components/content-variants/content-variants.tsx
1844
- import { Show as Show14, For as For9, onMount as onMount4, createSignal as createSignal18, createMemo as createMemo18 } from "solid-js";
1890
+ import {
1891
+ Show as Show14,
1892
+ For as For9,
1893
+ onMount as onMount4,
1894
+ createMemo as createMemo18,
1895
+ createSignal as createSignal18
1896
+ } from "solid-js";
1845
1897
 
1846
1898
  // src/helpers/url.ts
1847
1899
  var getTopLevelDomain = (host) => {
@@ -2159,7 +2211,13 @@ var componentInfo = {
2159
2211
  options.set("items", []);
2160
2212
  }
2161
2213
  }
2162
- }]
2214
+ }],
2215
+ shouldReceiveBuilderProps: {
2216
+ builderBlock: true,
2217
+ builderContext: true,
2218
+ builderComponents: true,
2219
+ builderLinkComponent: true
2220
+ }
2163
2221
  };
2164
2222
 
2165
2223
  // src/blocks/accordion/accordion.tsx
@@ -2346,7 +2404,13 @@ var componentInfo2 = {
2346
2404
  friendlyName: "Open link in new tab"
2347
2405
  }],
2348
2406
  static: true,
2349
- noWrap: true
2407
+ noWrap: true,
2408
+ shouldReceiveBuilderProps: {
2409
+ builderBlock: false,
2410
+ builderContext: false,
2411
+ builderComponents: false,
2412
+ builderLinkComponent: true
2413
+ }
2350
2414
  };
2351
2415
 
2352
2416
  // src/blocks/columns/component-info.ts
@@ -2566,11 +2630,23 @@ var componentInfo3 = {
2566
2630
  defaultValue: false,
2567
2631
  helperText: "When stacking columns for mobile devices, reverse the ordering",
2568
2632
  advanced: true
2569
- }]
2633
+ }],
2634
+ shouldReceiveBuilderProps: {
2635
+ builderBlock: true,
2636
+ builderContext: true,
2637
+ builderComponents: true,
2638
+ builderLinkComponent: true
2639
+ }
2570
2640
  };
2571
2641
 
2572
2642
  // src/blocks/fragment/component-info.ts
2573
2643
  var componentInfo4 = {
2644
+ shouldReceiveBuilderProps: {
2645
+ builderBlock: false,
2646
+ builderContext: false,
2647
+ builderComponents: false,
2648
+ builderLinkComponent: false
2649
+ },
2574
2650
  name: "Fragment",
2575
2651
  static: true,
2576
2652
  hidden: true,
@@ -2702,11 +2778,23 @@ var componentInfo5 = {
2702
2778
  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",
2703
2779
  advanced: true,
2704
2780
  defaultValue: 0.7041
2705
- }]
2781
+ }],
2782
+ shouldReceiveBuilderProps: {
2783
+ builderBlock: true,
2784
+ builderContext: false,
2785
+ builderComponents: false,
2786
+ builderLinkComponent: false
2787
+ }
2706
2788
  };
2707
2789
 
2708
2790
  // src/blocks/section/component-info.ts
2709
2791
  var componentInfo6 = {
2792
+ shouldReceiveBuilderProps: {
2793
+ builderBlock: false,
2794
+ builderContext: false,
2795
+ builderComponents: false,
2796
+ builderLinkComponent: false
2797
+ },
2710
2798
  name: "Core:Section",
2711
2799
  static: true,
2712
2800
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F682efef23ace49afac61748dd305c70a",
@@ -2760,7 +2848,13 @@ var componentInfo7 = {
2760
2848
  type: "string",
2761
2849
  required: true,
2762
2850
  defaultValue: "children"
2763
- }]
2851
+ }],
2852
+ shouldReceiveBuilderProps: {
2853
+ builderBlock: false,
2854
+ builderContext: true,
2855
+ builderComponents: false,
2856
+ builderLinkComponent: false
2857
+ }
2764
2858
  };
2765
2859
 
2766
2860
  // src/blocks/slot/slot.tsx
@@ -2814,7 +2908,13 @@ var componentInfo8 = {
2814
2908
  name: "useChildren",
2815
2909
  hideFromUI: true,
2816
2910
  type: "boolean"
2817
- }]
2911
+ }],
2912
+ shouldReceiveBuilderProps: {
2913
+ builderBlock: true,
2914
+ builderContext: true,
2915
+ builderComponents: true,
2916
+ builderLinkComponent: true
2917
+ }
2818
2918
  };
2819
2919
 
2820
2920
  // src/blocks/tabs/component-info.ts
@@ -2954,7 +3054,13 @@ var componentInfo9 = {
2954
3054
  label: "Right",
2955
3055
  value: "flex-end"
2956
3056
  }]
2957
- }]
3057
+ }],
3058
+ shouldReceiveBuilderProps: {
3059
+ builderBlock: true,
3060
+ builderContext: true,
3061
+ builderComponents: true,
3062
+ builderLinkComponent: true
3063
+ }
2958
3064
  };
2959
3065
 
2960
3066
  // src/blocks/tabs/tabs.tsx
@@ -3014,6 +3120,12 @@ var tabs_default = Tabs;
3014
3120
 
3015
3121
  // src/blocks/text/component-info.ts
3016
3122
  var componentInfo10 = {
3123
+ shouldReceiveBuilderProps: {
3124
+ builderBlock: TARGET === "reactNative" ? true : false,
3125
+ builderContext: false,
3126
+ builderComponents: false,
3127
+ builderLinkComponent: false
3128
+ },
3017
3129
  name: "Text",
3018
3130
  static: true,
3019
3131
  isRSC: true,
@@ -3047,6 +3159,12 @@ var text_default = Text;
3047
3159
 
3048
3160
  // src/blocks/custom-code/component-info.ts
3049
3161
  var componentInfo11 = {
3162
+ shouldReceiveBuilderProps: {
3163
+ builderBlock: false,
3164
+ builderContext: false,
3165
+ builderComponents: false,
3166
+ builderLinkComponent: false
3167
+ },
3050
3168
  name: "Custom Code",
3051
3169
  static: true,
3052
3170
  requiredPermissions: ["editCode"],
@@ -3118,6 +3236,12 @@ var custom_code_default = CustomCode;
3118
3236
 
3119
3237
  // src/blocks/embed/component-info.ts
3120
3238
  var componentInfo12 = {
3239
+ shouldReceiveBuilderProps: {
3240
+ builderBlock: false,
3241
+ builderContext: false,
3242
+ builderComponents: false,
3243
+ builderLinkComponent: false
3244
+ },
3121
3245
  name: "Embed",
3122
3246
  static: true,
3123
3247
  inputs: [{
@@ -3434,7 +3558,13 @@ var componentInfo13 = {
3434
3558
  text: "Submit"
3435
3559
  }
3436
3560
  }
3437
- }]
3561
+ }],
3562
+ shouldReceiveBuilderProps: {
3563
+ builderBlock: true,
3564
+ builderContext: true,
3565
+ builderComponents: true,
3566
+ builderLinkComponent: true
3567
+ }
3438
3568
  };
3439
3569
 
3440
3570
  // src/blocks/form/form/form.tsx
@@ -3691,6 +3821,12 @@ var form_default = FormComponent;
3691
3821
 
3692
3822
  // src/blocks/form/input/component-info.ts
3693
3823
  var componentInfo14 = {
3824
+ shouldReceiveBuilderProps: {
3825
+ builderBlock: false,
3826
+ builderContext: false,
3827
+ builderComponents: false,
3828
+ builderLinkComponent: false
3829
+ },
3694
3830
  name: "Form:Input",
3695
3831
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fad6f37889d9e40bbbbc72cdb5875d6ca",
3696
3832
  inputs: [
@@ -3761,6 +3897,12 @@ var input_default = FormInputComponent;
3761
3897
 
3762
3898
  // src/blocks/form/select/component-info.ts
3763
3899
  var componentInfo15 = {
3900
+ shouldReceiveBuilderProps: {
3901
+ builderBlock: false,
3902
+ builderContext: false,
3903
+ builderComponents: false,
3904
+ builderLinkComponent: false
3905
+ },
3764
3906
  name: "Form:Select",
3765
3907
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F83acca093fb24aaf94dee136e9a4b045",
3766
3908
  defaultStyles: {
@@ -3814,6 +3956,7 @@ function SelectComponent(props) {
3814
3956
  key={isEditing() && props.defaultValue ? props.defaultValue : "default-key"}
3815
3957
  defaultValue={props.defaultValue}
3816
3958
  name={props.name}
3959
+ required={props.required}
3817
3960
  ><For8 each={props.options}>{(option, _index) => {
3818
3961
  const index = _index();
3819
3962
  return <option key={`${option.name}-${index}`} value={option.value}>{option.name || option.value}</option>;
@@ -3823,6 +3966,12 @@ var select_default = SelectComponent;
3823
3966
 
3824
3967
  // src/blocks/form/submit-button/component-info.ts
3825
3968
  var componentInfo16 = {
3969
+ shouldReceiveBuilderProps: {
3970
+ builderBlock: false,
3971
+ builderContext: false,
3972
+ builderComponents: false,
3973
+ builderLinkComponent: false
3974
+ },
3826
3975
  name: "Form:SubmitButton",
3827
3976
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fdf2820ffed1f4349a94c40b3221f5b98",
3828
3977
  defaultStyles: {
@@ -3855,8 +4004,73 @@ function SubmitButton(props) {
3855
4004
  }
3856
4005
  var submit_button_default = SubmitButton;
3857
4006
 
3858
- // src/blocks/img/component-info.ts
4007
+ // src/blocks/form/textarea/component-info.ts
3859
4008
  var componentInfo17 = {
4009
+ shouldReceiveBuilderProps: {
4010
+ builderBlock: false,
4011
+ builderContext: false,
4012
+ builderComponents: false,
4013
+ builderLinkComponent: false
4014
+ },
4015
+ name: "Form:TextArea",
4016
+ image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Ff74a2f3de58c4c3e939204e5b6b8f6c3",
4017
+ inputs: [{
4018
+ advanced: true,
4019
+ name: "value",
4020
+ type: "string"
4021
+ }, {
4022
+ name: "name",
4023
+ type: "string",
4024
+ required: true,
4025
+ helperText: 'Every input in a form needs a unique name describing what it gets, e.g. "email"'
4026
+ }, {
4027
+ name: "defaultValue",
4028
+ type: "string"
4029
+ }, {
4030
+ name: "placeholder",
4031
+ type: "string",
4032
+ defaultValue: "Hello there"
4033
+ }, {
4034
+ name: "required",
4035
+ type: "boolean",
4036
+ defaultValue: false
4037
+ }],
4038
+ defaultStyles: {
4039
+ paddingTop: "10px",
4040
+ paddingBottom: "10px",
4041
+ paddingLeft: "10px",
4042
+ paddingRight: "10px",
4043
+ borderRadius: "3px",
4044
+ borderWidth: "1px",
4045
+ borderStyle: "solid",
4046
+ borderColor: "#ccc"
4047
+ },
4048
+ static: true,
4049
+ noWrap: true
4050
+ };
4051
+
4052
+ // src/blocks/form/textarea/textarea.tsx
4053
+ function Textarea(props) {
4054
+ return <><textarea
4055
+ {...{}}
4056
+ {...props.attributes}
4057
+ placeholder={props.placeholder}
4058
+ name={props.name}
4059
+ value={props.value}
4060
+ defaultValue={props.defaultValue}
4061
+ required={props.required}
4062
+ /></>;
4063
+ }
4064
+ var textarea_default = Textarea;
4065
+
4066
+ // src/blocks/img/component-info.ts
4067
+ var componentInfo18 = {
4068
+ shouldReceiveBuilderProps: {
4069
+ builderBlock: false,
4070
+ builderContext: false,
4071
+ builderComponents: false,
4072
+ builderLinkComponent: false
4073
+ },
3860
4074
  // friendlyName?
3861
4075
  name: "Raw:Img",
3862
4076
  hideFromInsertMenu: true,
@@ -3889,7 +4103,7 @@ function ImgComponent(props) {
3889
4103
  var img_default = ImgComponent;
3890
4104
 
3891
4105
  // src/blocks/video/component-info.ts
3892
- var componentInfo18 = {
4106
+ var componentInfo19 = {
3893
4107
  name: "Video",
3894
4108
  canHaveChildren: true,
3895
4109
  defaultStyles: {
@@ -3969,7 +4183,13 @@ var componentInfo18 = {
3969
4183
  helperText: 'Load this video "lazily" - as in only when a user scrolls near the video. Recommended for optmized performance and bandwidth consumption',
3970
4184
  defaultValue: true,
3971
4185
  advanced: true
3972
- }]
4186
+ }],
4187
+ shouldReceiveBuilderProps: {
4188
+ builderBlock: true,
4189
+ builderContext: false,
4190
+ builderComponents: false,
4191
+ builderLinkComponent: false
4192
+ }
3973
4193
  };
3974
4194
 
3975
4195
  // src/blocks/video/video.tsx
@@ -4078,12 +4298,15 @@ var getExtraComponents = () => [{
4078
4298
  }, {
4079
4299
  component: select_default,
4080
4300
  ...componentInfo15
4301
+ }, {
4302
+ component: textarea_default,
4303
+ ...componentInfo17
4081
4304
  }], {
4082
4305
  component: img_default,
4083
- ...componentInfo17
4306
+ ...componentInfo18
4084
4307
  }, {
4085
4308
  component: video_default,
4086
- ...componentInfo18
4309
+ ...componentInfo19
4087
4310
  }];
4088
4311
 
4089
4312
  // src/constants/builder-registered-components.ts
@@ -4698,7 +4921,7 @@ function isFromTrustedHost(trustedHosts, e) {
4698
4921
  }
4699
4922
 
4700
4923
  // src/constants/sdk-version.ts
4701
- var SDK_VERSION = "1.0.35";
4924
+ var SDK_VERSION = "1.1.0";
4702
4925
 
4703
4926
  // src/functions/register.ts
4704
4927
  var registry = {};
@@ -5596,7 +5819,7 @@ function Symbol(props) {
5596
5819
  function onUpdateFn_0() {
5597
5820
  setContent();
5598
5821
  }
5599
- createEffect3(on3(() => [onUpdateFn_0_props_symbol()], onUpdateFn_0));
5822
+ createEffect4(on4(() => [onUpdateFn_0_props_symbol()], onUpdateFn_0));
5600
5823
  return <><div class={className()} {...{}} {...props.attributes} {...{}}><Content_variants_default
5601
5824
  isNestedRender={true}
5602
5825
  apiVersion={props.builderContext.apiVersion}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder.io/sdk-solid",
3
- "version": "1.0.35",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist",