@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.
package/lib/node/dev.jsx CHANGED
@@ -291,6 +291,19 @@ function flattenState({
291
291
  });
292
292
  }
293
293
 
294
+ // src/constants/sdk-name.ts
295
+ var SDK_NAME_FOR_TARGET = (() => {
296
+ switch (TARGET) {
297
+ case "rsc":
298
+ return "react-nextjs";
299
+ case "reactNative":
300
+ return "react-native";
301
+ default:
302
+ return TARGET;
303
+ }
304
+ })();
305
+ var SDK_NAME = `@builder.io/sdk-${SDK_NAME_FOR_TARGET}`;
306
+
294
307
  // src/functions/fast-clone.ts
295
308
  var fastClone = (obj) => JSON.parse(JSON.stringify(obj));
296
309
 
@@ -372,6 +385,7 @@ if (typeof output === 'object' && output !== null) {
372
385
  };
373
386
  var IVM_INSTANCE = null;
374
387
  var IVM_CONTEXT = null;
388
+ var SHOULD_MENTION_INITIALIZE_SCRIPT = SDK_NAME === "@builder.io/sdk-react-nextjs" || SDK_NAME === "@builder.io/sdk-react";
375
389
  var getIvm = () => {
376
390
  try {
377
391
  if (IVM_INSTANCE)
@@ -382,14 +396,15 @@ var getIvm = () => {
382
396
  } catch (error2) {
383
397
  logger.error("isolated-vm import error.", error2);
384
398
  }
385
- throw new Error(`${MSG_PREFIX}could not import \`isolated-vm\` module for safe script execution on Node server.
399
+ const ERROR_MESSAGE = `${MSG_PREFIX}could not import \`isolated-vm\` module for safe script execution on a Node server.
386
400
 
387
- In certain Node environments, the SDK requires additional initialization steps. This can be achieved by
388
- importing and calling \`initializeNodeRuntime()\` from "@builder.io/sdk-react/node/init". This must be done in
389
- a server-only execution path within your application.
401
+ SOLUTION: In a server-only execution path within your application, do one of the following:
402
+
403
+ ${SHOULD_MENTION_INITIALIZE_SCRIPT ? '- import and call `initializeNodeRuntime()` from "${SDK_NAME}/node/init".' : ""}
404
+ - add the following import: \`await import('isolated-vm')\`.
390
405
 
391
- Please see the documentation for more information: https://builder.io/c/docs/integration-tips#enabling-data-bindings-in-node-environments
392
- `);
406
+ For more information, visit https://builder.io/c/docs/integration-tips#enabling-data-bindings-in-node-environments`;
407
+ throw new Error(ERROR_MESSAGE);
393
408
  };
394
409
  function setIsolateContext(options = {
395
410
  memoryLimit: 128
@@ -928,25 +943,56 @@ var getRepeatItemData = ({
928
943
  }));
929
944
  return repeatArray;
930
945
  };
946
+ var applyDefaults = (shouldReceiveBuilderProps) => {
947
+ return {
948
+ // once we bump to a major version, toggle this to `false`.
949
+ builderBlock: true,
950
+ // once we bump to a major version, toggle this to `false`.
951
+ builderContext: true,
952
+ builderComponents: false,
953
+ builderLinkComponent: false,
954
+ ...shouldReceiveBuilderProps
955
+ };
956
+ };
931
957
  var provideLinkComponent = (block, linkComponent) => {
932
- return block && (block.isRSC && TARGET === "rsc" || ["Core:Button", "Symbol", "Columns", "Form:Form", "Builder: Tabs", "Builder:Accordion"].includes(block.name)) ? {
958
+ if (!block)
959
+ return {};
960
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderLinkComponent;
961
+ if (!shouldReceiveProp)
962
+ return {};
963
+ return {
933
964
  builderLinkComponent: linkComponent
934
- } : {};
965
+ };
935
966
  };
936
967
  var provideRegisteredComponents = (block, registeredComponents) => {
937
- return block && (block.isRSC && TARGET === "rsc" || ["Symbol", "Columns", "Form:Form", "Builder: Tabs", "Builder:Accordion"].includes(block.name)) ? {
968
+ if (!block)
969
+ return {};
970
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderComponents;
971
+ if (!shouldReceiveProp)
972
+ return {};
973
+ return {
938
974
  builderComponents: registeredComponents
939
- } : {};
975
+ };
940
976
  };
941
977
  var provideBuilderBlock = (block, builderBlock) => {
942
- return block && (block.isRSC && TARGET === "rsc" || TARGET === "reactNative" && block.name === "Text" || ["Builder:Accordion", "Columns", "Form:Form", "Builder: Tabs", "Symbol", "Image", "Video"].includes(block.name)) ? {
978
+ if (!block)
979
+ return {};
980
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderBlock;
981
+ if (!shouldReceiveProp)
982
+ return {};
983
+ return {
943
984
  builderBlock
944
- } : {};
985
+ };
945
986
  };
946
987
  var provideBuilderContext = (block, context) => {
947
- return block && (block.isRSC && TARGET === "rsc" || ["Builder:Accordion", "Columns", "Form:Form", "Builder: Tabs", "Symbol", "Slot"].includes(block.name)) ? {
988
+ if (!block)
989
+ return {};
990
+ const shouldReceiveProp = applyDefaults(block.shouldReceiveBuilderProps).builderContext;
991
+ if (!shouldReceiveProp)
992
+ return {};
993
+ return {
948
994
  builderContext: context
949
- } : {};
995
+ };
950
996
  };
951
997
 
952
998
  // src/components/block/components/block-styles.tsx
@@ -1845,10 +1891,16 @@ function SectionComponent(props) {
1845
1891
  var section_default = SectionComponent;
1846
1892
 
1847
1893
  // src/blocks/symbol/symbol.tsx
1848
- import { onMount as onMount5, on as on3, createEffect as createEffect3, createMemo as createMemo19, createSignal as createSignal19 } from "solid-js";
1894
+ import { onMount as onMount5, on as on4, createEffect as createEffect4, createMemo as createMemo19, createSignal as createSignal19 } from "solid-js";
1849
1895
 
1850
1896
  // src/components/content-variants/content-variants.tsx
1851
- import { Show as Show14, For as For9, onMount as onMount4, createSignal as createSignal18, createMemo as createMemo18 } from "solid-js";
1897
+ import {
1898
+ Show as Show14,
1899
+ For as For9,
1900
+ onMount as onMount4,
1901
+ createMemo as createMemo18,
1902
+ createSignal as createSignal18
1903
+ } from "solid-js";
1852
1904
 
1853
1905
  // src/helpers/url.ts
1854
1906
  var getTopLevelDomain = (host) => {
@@ -2166,7 +2218,13 @@ var componentInfo = {
2166
2218
  options.set("items", []);
2167
2219
  }
2168
2220
  }
2169
- }]
2221
+ }],
2222
+ shouldReceiveBuilderProps: {
2223
+ builderBlock: true,
2224
+ builderContext: true,
2225
+ builderComponents: true,
2226
+ builderLinkComponent: true
2227
+ }
2170
2228
  };
2171
2229
 
2172
2230
  // src/blocks/accordion/accordion.tsx
@@ -2353,7 +2411,13 @@ var componentInfo2 = {
2353
2411
  friendlyName: "Open link in new tab"
2354
2412
  }],
2355
2413
  static: true,
2356
- noWrap: true
2414
+ noWrap: true,
2415
+ shouldReceiveBuilderProps: {
2416
+ builderBlock: false,
2417
+ builderContext: false,
2418
+ builderComponents: false,
2419
+ builderLinkComponent: true
2420
+ }
2357
2421
  };
2358
2422
 
2359
2423
  // src/blocks/columns/component-info.ts
@@ -2573,11 +2637,23 @@ var componentInfo3 = {
2573
2637
  defaultValue: false,
2574
2638
  helperText: "When stacking columns for mobile devices, reverse the ordering",
2575
2639
  advanced: true
2576
- }]
2640
+ }],
2641
+ shouldReceiveBuilderProps: {
2642
+ builderBlock: true,
2643
+ builderContext: true,
2644
+ builderComponents: true,
2645
+ builderLinkComponent: true
2646
+ }
2577
2647
  };
2578
2648
 
2579
2649
  // src/blocks/fragment/component-info.ts
2580
2650
  var componentInfo4 = {
2651
+ shouldReceiveBuilderProps: {
2652
+ builderBlock: false,
2653
+ builderContext: false,
2654
+ builderComponents: false,
2655
+ builderLinkComponent: false
2656
+ },
2581
2657
  name: "Fragment",
2582
2658
  static: true,
2583
2659
  hidden: true,
@@ -2710,11 +2786,23 @@ var componentInfo5 = {
2710
2786
  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",
2711
2787
  advanced: true,
2712
2788
  defaultValue: 0.7041
2713
- }]
2789
+ }],
2790
+ shouldReceiveBuilderProps: {
2791
+ builderBlock: true,
2792
+ builderContext: false,
2793
+ builderComponents: false,
2794
+ builderLinkComponent: false
2795
+ }
2714
2796
  };
2715
2797
 
2716
2798
  // src/blocks/section/component-info.ts
2717
2799
  var componentInfo6 = {
2800
+ shouldReceiveBuilderProps: {
2801
+ builderBlock: false,
2802
+ builderContext: false,
2803
+ builderComponents: false,
2804
+ builderLinkComponent: false
2805
+ },
2718
2806
  name: "Core:Section",
2719
2807
  static: true,
2720
2808
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F682efef23ace49afac61748dd305c70a",
@@ -2768,7 +2856,13 @@ var componentInfo7 = {
2768
2856
  type: "string",
2769
2857
  required: true,
2770
2858
  defaultValue: "children"
2771
- }]
2859
+ }],
2860
+ shouldReceiveBuilderProps: {
2861
+ builderBlock: false,
2862
+ builderContext: true,
2863
+ builderComponents: false,
2864
+ builderLinkComponent: false
2865
+ }
2772
2866
  };
2773
2867
 
2774
2868
  // src/blocks/slot/slot.tsx
@@ -2822,7 +2916,13 @@ var componentInfo8 = {
2822
2916
  name: "useChildren",
2823
2917
  hideFromUI: true,
2824
2918
  type: "boolean"
2825
- }]
2919
+ }],
2920
+ shouldReceiveBuilderProps: {
2921
+ builderBlock: true,
2922
+ builderContext: true,
2923
+ builderComponents: true,
2924
+ builderLinkComponent: true
2925
+ }
2826
2926
  };
2827
2927
 
2828
2928
  // src/blocks/tabs/component-info.ts
@@ -2962,7 +3062,13 @@ var componentInfo9 = {
2962
3062
  label: "Right",
2963
3063
  value: "flex-end"
2964
3064
  }]
2965
- }]
3065
+ }],
3066
+ shouldReceiveBuilderProps: {
3067
+ builderBlock: true,
3068
+ builderContext: true,
3069
+ builderComponents: true,
3070
+ builderLinkComponent: true
3071
+ }
2966
3072
  };
2967
3073
 
2968
3074
  // src/blocks/tabs/tabs.tsx
@@ -3022,6 +3128,12 @@ var tabs_default = Tabs;
3022
3128
 
3023
3129
  // src/blocks/text/component-info.ts
3024
3130
  var componentInfo10 = {
3131
+ shouldReceiveBuilderProps: {
3132
+ builderBlock: TARGET === "reactNative" ? true : false,
3133
+ builderContext: false,
3134
+ builderComponents: false,
3135
+ builderLinkComponent: false
3136
+ },
3025
3137
  name: "Text",
3026
3138
  static: true,
3027
3139
  isRSC: true,
@@ -3055,6 +3167,12 @@ var text_default = Text;
3055
3167
 
3056
3168
  // src/blocks/custom-code/component-info.ts
3057
3169
  var componentInfo11 = {
3170
+ shouldReceiveBuilderProps: {
3171
+ builderBlock: false,
3172
+ builderContext: false,
3173
+ builderComponents: false,
3174
+ builderLinkComponent: false
3175
+ },
3058
3176
  name: "Custom Code",
3059
3177
  static: true,
3060
3178
  requiredPermissions: ["editCode"],
@@ -3127,6 +3245,12 @@ var custom_code_default = CustomCode;
3127
3245
 
3128
3246
  // src/blocks/embed/component-info.ts
3129
3247
  var componentInfo12 = {
3248
+ shouldReceiveBuilderProps: {
3249
+ builderBlock: false,
3250
+ builderContext: false,
3251
+ builderComponents: false,
3252
+ builderLinkComponent: false
3253
+ },
3130
3254
  name: "Embed",
3131
3255
  static: true,
3132
3256
  inputs: [{
@@ -3444,7 +3568,13 @@ var componentInfo13 = {
3444
3568
  text: "Submit"
3445
3569
  }
3446
3570
  }
3447
- }]
3571
+ }],
3572
+ shouldReceiveBuilderProps: {
3573
+ builderBlock: true,
3574
+ builderContext: true,
3575
+ builderComponents: true,
3576
+ builderLinkComponent: true
3577
+ }
3448
3578
  };
3449
3579
 
3450
3580
  // src/blocks/form/form/form.tsx
@@ -3701,6 +3831,12 @@ var form_default = FormComponent;
3701
3831
 
3702
3832
  // src/blocks/form/input/component-info.ts
3703
3833
  var componentInfo14 = {
3834
+ shouldReceiveBuilderProps: {
3835
+ builderBlock: false,
3836
+ builderContext: false,
3837
+ builderComponents: false,
3838
+ builderLinkComponent: false
3839
+ },
3704
3840
  name: "Form:Input",
3705
3841
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fad6f37889d9e40bbbbc72cdb5875d6ca",
3706
3842
  inputs: [
@@ -3771,6 +3907,12 @@ var input_default = FormInputComponent;
3771
3907
 
3772
3908
  // src/blocks/form/select/component-info.ts
3773
3909
  var componentInfo15 = {
3910
+ shouldReceiveBuilderProps: {
3911
+ builderBlock: false,
3912
+ builderContext: false,
3913
+ builderComponents: false,
3914
+ builderLinkComponent: false
3915
+ },
3774
3916
  name: "Form:Select",
3775
3917
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2F83acca093fb24aaf94dee136e9a4b045",
3776
3918
  defaultStyles: {
@@ -3824,6 +3966,7 @@ function SelectComponent(props) {
3824
3966
  key={isEditing() && props.defaultValue ? props.defaultValue : "default-key"}
3825
3967
  defaultValue={props.defaultValue}
3826
3968
  name={props.name}
3969
+ required={props.required}
3827
3970
  ><For8 each={props.options}>{(option, _index) => {
3828
3971
  const index = _index();
3829
3972
  return <option key={`${option.name}-${index}`} value={option.value}>{option.name || option.value}</option>;
@@ -3833,6 +3976,12 @@ var select_default = SelectComponent;
3833
3976
 
3834
3977
  // src/blocks/form/submit-button/component-info.ts
3835
3978
  var componentInfo16 = {
3979
+ shouldReceiveBuilderProps: {
3980
+ builderBlock: false,
3981
+ builderContext: false,
3982
+ builderComponents: false,
3983
+ builderLinkComponent: false
3984
+ },
3836
3985
  name: "Form:SubmitButton",
3837
3986
  image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Fdf2820ffed1f4349a94c40b3221f5b98",
3838
3987
  defaultStyles: {
@@ -3865,8 +4014,73 @@ function SubmitButton(props) {
3865
4014
  }
3866
4015
  var submit_button_default = SubmitButton;
3867
4016
 
3868
- // src/blocks/img/component-info.ts
4017
+ // src/blocks/form/textarea/component-info.ts
3869
4018
  var componentInfo17 = {
4019
+ shouldReceiveBuilderProps: {
4020
+ builderBlock: false,
4021
+ builderContext: false,
4022
+ builderComponents: false,
4023
+ builderLinkComponent: false
4024
+ },
4025
+ name: "Form:TextArea",
4026
+ image: "https://cdn.builder.io/api/v1/image/assets%2FIsxPKMo2gPRRKeakUztj1D6uqed2%2Ff74a2f3de58c4c3e939204e5b6b8f6c3",
4027
+ inputs: [{
4028
+ advanced: true,
4029
+ name: "value",
4030
+ type: "string"
4031
+ }, {
4032
+ name: "name",
4033
+ type: "string",
4034
+ required: true,
4035
+ helperText: 'Every input in a form needs a unique name describing what it gets, e.g. "email"'
4036
+ }, {
4037
+ name: "defaultValue",
4038
+ type: "string"
4039
+ }, {
4040
+ name: "placeholder",
4041
+ type: "string",
4042
+ defaultValue: "Hello there"
4043
+ }, {
4044
+ name: "required",
4045
+ type: "boolean",
4046
+ defaultValue: false
4047
+ }],
4048
+ defaultStyles: {
4049
+ paddingTop: "10px",
4050
+ paddingBottom: "10px",
4051
+ paddingLeft: "10px",
4052
+ paddingRight: "10px",
4053
+ borderRadius: "3px",
4054
+ borderWidth: "1px",
4055
+ borderStyle: "solid",
4056
+ borderColor: "#ccc"
4057
+ },
4058
+ static: true,
4059
+ noWrap: true
4060
+ };
4061
+
4062
+ // src/blocks/form/textarea/textarea.tsx
4063
+ function Textarea(props) {
4064
+ return <><textarea
4065
+ {...{}}
4066
+ {...props.attributes}
4067
+ placeholder={props.placeholder}
4068
+ name={props.name}
4069
+ value={props.value}
4070
+ defaultValue={props.defaultValue}
4071
+ required={props.required}
4072
+ /></>;
4073
+ }
4074
+ var textarea_default = Textarea;
4075
+
4076
+ // src/blocks/img/component-info.ts
4077
+ var componentInfo18 = {
4078
+ shouldReceiveBuilderProps: {
4079
+ builderBlock: false,
4080
+ builderContext: false,
4081
+ builderComponents: false,
4082
+ builderLinkComponent: false
4083
+ },
3870
4084
  // friendlyName?
3871
4085
  name: "Raw:Img",
3872
4086
  hideFromInsertMenu: true,
@@ -3899,7 +4113,7 @@ function ImgComponent(props) {
3899
4113
  var img_default = ImgComponent;
3900
4114
 
3901
4115
  // src/blocks/video/component-info.ts
3902
- var componentInfo18 = {
4116
+ var componentInfo19 = {
3903
4117
  name: "Video",
3904
4118
  canHaveChildren: true,
3905
4119
  defaultStyles: {
@@ -3979,7 +4193,13 @@ var componentInfo18 = {
3979
4193
  helperText: 'Load this video "lazily" - as in only when a user scrolls near the video. Recommended for optmized performance and bandwidth consumption',
3980
4194
  defaultValue: true,
3981
4195
  advanced: true
3982
- }]
4196
+ }],
4197
+ shouldReceiveBuilderProps: {
4198
+ builderBlock: true,
4199
+ builderContext: false,
4200
+ builderComponents: false,
4201
+ builderLinkComponent: false
4202
+ }
3983
4203
  };
3984
4204
 
3985
4205
  // src/blocks/video/video.tsx
@@ -4088,12 +4308,15 @@ var getExtraComponents = () => [{
4088
4308
  }, {
4089
4309
  component: select_default,
4090
4310
  ...componentInfo15
4311
+ }, {
4312
+ component: textarea_default,
4313
+ ...componentInfo17
4091
4314
  }], {
4092
4315
  component: img_default,
4093
- ...componentInfo17
4316
+ ...componentInfo18
4094
4317
  }, {
4095
4318
  component: video_default,
4096
- ...componentInfo18
4319
+ ...componentInfo19
4097
4320
  }];
4098
4321
 
4099
4322
  // src/constants/builder-registered-components.ts
@@ -4713,7 +4936,7 @@ function isFromTrustedHost(trustedHosts, e) {
4713
4936
  }
4714
4937
 
4715
4938
  // src/constants/sdk-version.ts
4716
- var SDK_VERSION = "1.0.35";
4939
+ var SDK_VERSION = "1.1.0";
4717
4940
 
4718
4941
  // src/functions/register.ts
4719
4942
  var registry = {};
@@ -5613,7 +5836,7 @@ function Symbol(props) {
5613
5836
  function onUpdateFn_0() {
5614
5837
  setContent();
5615
5838
  }
5616
- createEffect3(on3(() => [onUpdateFn_0_props_symbol()], onUpdateFn_0));
5839
+ createEffect4(on4(() => [onUpdateFn_0_props_symbol()], onUpdateFn_0));
5617
5840
  return <><div class={className()} {...{}} {...props.attributes} {...{}}><Content_variants_default
5618
5841
  isNestedRender={true}
5619
5842
  apiVersion={props.builderContext.apiVersion}