@builder.io/sdk-solid 0.12.2 → 0.12.4

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.
@@ -1,46 +1,99 @@
1
1
  import { createComponent, spread, mergeProps, insert, effect, setAttribute, className, style, template, Dynamic, memo, use } from 'solid-js/web';
2
- import { createContext, Show, useContext, For, createSignal, onMount, createEffect, on } from 'solid-js';
2
+ import { createContext, useContext, Show, For, createSignal, onMount, createEffect, on } from 'solid-js';
3
3
  import { css } from 'solid-styled-components';
4
4
 
5
5
  // src/blocks/button/button.tsx
6
- var _tmpl$ = /* @__PURE__ */ template(`<a>`);
7
- var _tmpl$2 = /* @__PURE__ */ template(`<button>`);
8
- function Button(props) {
6
+
7
+ // src/components/dynamic-renderer/dynamic-renderer.helpers.ts
8
+ var EMPTY_HTML_ELEMENTS = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
9
+ var isEmptyElement = (tagName) => {
10
+ return typeof tagName === "string" && EMPTY_HTML_ELEMENTS.has(tagName.toLowerCase());
11
+ };
12
+
13
+ // src/components/dynamic-renderer/dynamic-renderer.tsx
14
+ function DynamicRenderer(props) {
9
15
  return createComponent(Show, {
10
16
  get fallback() {
11
- return (() => {
12
- const _el$2 = _tmpl$2();
13
- spread(_el$2, mergeProps({
14
- get ["class"]() {
15
- return props.attributes.class + " " + css({
16
- all: "unset"
17
- });
18
- }
19
- }, {}, () => props.attributes, {
20
- get style() {
21
- return props.attributes.style;
22
- }
23
- }), false, true);
24
- insert(_el$2, () => props.text);
25
- return _el$2;
26
- })();
17
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
18
+ get component() {
19
+ return props.TagName;
20
+ }
21
+ }));
27
22
  },
28
23
  get when() {
29
- return props.link;
24
+ return !isEmptyElement(props.TagName);
30
25
  },
31
26
  get children() {
32
- const _el$ = _tmpl$();
33
- spread(_el$, mergeProps({}, () => props.attributes, {
34
- get href() {
35
- return props.link;
27
+ return createComponent(Show, {
28
+ get fallback() {
29
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
30
+ get component() {
31
+ return props.TagName;
32
+ },
33
+ get children() {
34
+ return props.children;
35
+ }
36
+ }));
36
37
  },
37
- get target() {
38
- return props.openLinkInNewTab ? "_blank" : void 0;
38
+ get when() {
39
+ return typeof props.TagName === "string";
39
40
  },
40
- "role": "button"
41
- }), false, true);
42
- insert(_el$, () => props.text);
43
- return _el$;
41
+ get children() {
42
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
43
+ get component() {
44
+ return props.TagName;
45
+ },
46
+ get children() {
47
+ return props.children;
48
+ }
49
+ }));
50
+ }
51
+ });
52
+ }
53
+ });
54
+ }
55
+ var dynamic_renderer_default = DynamicRenderer;
56
+
57
+ // src/constants/target.ts
58
+ var TARGET = "solid";
59
+
60
+ // src/functions/get-class-prop-name.ts
61
+ var getClassPropName = () => {
62
+ switch (TARGET) {
63
+ case "react":
64
+ case "reactNative":
65
+ case "rsc":
66
+ return "className";
67
+ case "svelte":
68
+ case "vue":
69
+ case "solid":
70
+ case "qwik":
71
+ return "class";
72
+ }
73
+ };
74
+
75
+ // src/blocks/button/button.tsx
76
+ function Button(props) {
77
+ return createComponent(dynamic_renderer_default, {
78
+ get TagName() {
79
+ return props.link ? props.builderLinkComponent || "a" : "button";
80
+ },
81
+ get attributes() {
82
+ return {
83
+ ...props.attributes,
84
+ [getClassPropName()]: `${props.link ? "" : "builder-button"} ${props.attributes[getClassPropName()] || ""}`,
85
+ ...props.link ? {
86
+ href: props.link,
87
+ target: props.openLinkInNewTab ? "_blank" : void 0,
88
+ role: "link"
89
+ } : {
90
+ role: "button"
91
+ }
92
+ };
93
+ },
94
+ actionAttributes: {},
95
+ get children() {
96
+ return props.text;
44
97
  }
45
98
  });
46
99
  }
@@ -87,9 +140,6 @@ function isBrowser() {
87
140
  return typeof window !== "undefined" && typeof document !== "undefined";
88
141
  }
89
142
 
90
- // src/constants/target.ts
91
- var TARGET = "solid";
92
-
93
143
  // src/functions/is-iframe.ts
94
144
  function isIframe() {
95
145
  return isBrowser() && window.self !== window.top;
@@ -481,10 +531,10 @@ var createCssClass = ({
481
531
  return cssClass;
482
532
  }
483
533
  };
484
- var _tmpl$3 = /* @__PURE__ */ template(`<style>`);
534
+ var _tmpl$ = /* @__PURE__ */ template(`<style>`);
485
535
  function InlinedStyles(props) {
486
536
  return (() => {
487
- const _el$ = _tmpl$3();
537
+ const _el$ = _tmpl$();
488
538
  effect((_p$) => {
489
539
  const _v$ = props.styles, _v$2 = props.id;
490
540
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -518,7 +568,7 @@ function BlockStyles(props) {
518
568
  }
519
569
  return true;
520
570
  }
521
- function css5() {
571
+ function css4() {
522
572
  const processedBlock = getProcessedBlock({
523
573
  block: props.block,
524
574
  localState: props.context.localState,
@@ -555,12 +605,12 @@ function BlockStyles(props) {
555
605
  }
556
606
  return createComponent(Show, {
557
607
  get when() {
558
- return memo(() => !!(TARGET !== "reactNative" && css5()))() && canShowBlock();
608
+ return memo(() => !!(TARGET !== "reactNative" && css4()))() && canShowBlock();
559
609
  },
560
610
  get children() {
561
611
  return createComponent(inlined_styles_default, {
562
612
  get styles() {
563
- return css5();
613
+ return css4();
564
614
  }
565
615
  });
566
616
  }
@@ -610,6 +660,38 @@ function getBlockActions(options) {
610
660
  return obj;
611
661
  }
612
662
 
663
+ // src/functions/transform-style-property.ts
664
+ function transformStyleProperty({
665
+ style
666
+ }) {
667
+ return style;
668
+ }
669
+
670
+ // src/functions/get-style.ts
671
+ var getStyle = ({
672
+ block,
673
+ context
674
+ }) => {
675
+ return mapStyleObjToStrIfNeeded(transformStyleProperty({
676
+ style: block.style || {},
677
+ context,
678
+ block
679
+ }));
680
+ };
681
+ function mapStyleObjToStrIfNeeded(style) {
682
+ switch (TARGET) {
683
+ case "svelte":
684
+ case "vue":
685
+ case "solid":
686
+ return convertStyleMapToCSSArray(style).join(" ");
687
+ case "qwik":
688
+ case "reactNative":
689
+ case "react":
690
+ case "rsc":
691
+ return style;
692
+ }
693
+ }
694
+
613
695
  // src/functions/transform-block-properties.ts
614
696
  function transformBlockProperties({
615
697
  properties
@@ -631,8 +713,11 @@ function getBlockProperties({
631
713
  ...extractRelevantRootBlockProperties(block),
632
714
  ...block.properties,
633
715
  "builder-id": block.id,
634
- style: block.style ? getStyleAttribute(block.style) : void 0,
635
- class: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
716
+ style: getStyle({
717
+ block,
718
+ context
719
+ }),
720
+ [getClassPropName()]: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
636
721
  };
637
722
  return transformBlockProperties({
638
723
  properties,
@@ -640,69 +725,6 @@ function getBlockProperties({
640
725
  block
641
726
  });
642
727
  }
643
- function getStyleAttribute(style) {
644
- switch (TARGET) {
645
- case "svelte":
646
- case "vue":
647
- case "solid":
648
- return convertStyleMapToCSSArray(style).join(" ");
649
- case "qwik":
650
- case "reactNative":
651
- case "react":
652
- case "rsc":
653
- return style;
654
- }
655
- }
656
-
657
- // src/components/dynamic-renderer/dynamic-renderer.helpers.ts
658
- var EMPTY_HTML_ELEMENTS = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
659
- var isEmptyElement = (tagName) => {
660
- return typeof tagName === "string" && EMPTY_HTML_ELEMENTS.has(tagName.toLowerCase());
661
- };
662
-
663
- // src/components/dynamic-renderer/dynamic-renderer.tsx
664
- function DynamicRenderer(props) {
665
- return createComponent(Show, {
666
- get fallback() {
667
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
668
- get component() {
669
- return props.TagName;
670
- }
671
- }));
672
- },
673
- get when() {
674
- return !isEmptyElement(props.TagName);
675
- },
676
- get children() {
677
- return createComponent(Show, {
678
- get fallback() {
679
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
680
- get component() {
681
- return props.TagName;
682
- },
683
- get children() {
684
- return props.children;
685
- }
686
- }));
687
- },
688
- get when() {
689
- return typeof props.TagName === "string";
690
- },
691
- get children() {
692
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
693
- get component() {
694
- return props.TagName;
695
- },
696
- get children() {
697
- return props.children;
698
- }
699
- }));
700
- }
701
- });
702
- }
703
- });
704
- }
705
- var dynamic_renderer_default = DynamicRenderer;
706
728
 
707
729
  // src/components/block/components/block-wrapper.tsx
708
730
  function BlockWrapper(props) {
@@ -805,6 +827,7 @@ function ComponentRef(props) {
805
827
  builderBlock: props.builderBlock,
806
828
  context: props.context,
807
829
  componentRef: props.componentRef,
830
+ linkComponent: props.linkComponent,
808
831
  includeBlockProps: props.includeBlockProps,
809
832
  isInteractive: props.isInteractive,
810
833
  contextValue: props.context
@@ -829,6 +852,9 @@ function ComponentRef(props) {
829
852
  },
830
853
  get registeredComponents() {
831
854
  return props.registeredComponents;
855
+ },
856
+ get linkComponent() {
857
+ return props.linkComponent;
832
858
  }
833
859
  });
834
860
  }
@@ -855,6 +881,9 @@ function RepeatedBlock(props) {
855
881
  },
856
882
  get registeredComponents() {
857
883
  return props.registeredComponents;
884
+ },
885
+ get linkComponent() {
886
+ return props.linkComponent;
858
887
  }
859
888
  });
860
889
  }
@@ -889,6 +918,10 @@ function Block(props) {
889
918
  });
890
919
  }
891
920
  function Tag() {
921
+ const shouldUseLink = props.block.tagName === "a" || processedBlock().properties?.href || processedBlock().href;
922
+ if (shouldUseLink) {
923
+ return props.linkComponent || "a";
924
+ }
892
925
  return props.block.tagName || "div";
893
926
  }
894
927
  function canShowBlock() {
@@ -912,11 +945,15 @@ function Block(props) {
912
945
  componentOptions: {
913
946
  ...getBlockComponentOptions(processedBlock()),
914
947
  builderContext: props.context,
948
+ ...blockComponent()?.name === "Core:Button" || blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
949
+ builderLinkComponent: props.linkComponent
950
+ } : {},
915
951
  ...blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
916
952
  builderComponents: props.registeredComponents
917
953
  } : {}
918
954
  },
919
955
  context: childrenContext(),
956
+ linkComponent: props.linkComponent,
920
957
  registeredComponents: props.registeredComponents,
921
958
  builderBlock: processedBlock(),
922
959
  includeBlockProps: blockComponent()?.noWrap === true,
@@ -953,6 +990,9 @@ function Block(props) {
953
990
  get registeredComponents() {
954
991
  return componentRefProps().registeredComponents;
955
992
  },
993
+ get linkComponent() {
994
+ return componentRefProps().linkComponent;
995
+ },
956
996
  get builderBlock() {
957
997
  return componentRefProps().builderBlock;
958
998
  },
@@ -986,6 +1026,9 @@ function Block(props) {
986
1026
  },
987
1027
  get registeredComponents() {
988
1028
  return props.registeredComponents;
1029
+ },
1030
+ get linkComponent() {
1031
+ return props.linkComponent;
989
1032
  }
990
1033
  });
991
1034
  }
@@ -1005,6 +1048,9 @@ function Block(props) {
1005
1048
  get context() {
1006
1049
  return props.context;
1007
1050
  },
1051
+ get linkComponent() {
1052
+ return props.linkComponent;
1053
+ },
1008
1054
  get children() {
1009
1055
  return [createComponent(component_ref_default, {
1010
1056
  get componentRef() {
@@ -1022,6 +1068,9 @@ function Block(props) {
1022
1068
  get registeredComponents() {
1023
1069
  return componentRefProps().registeredComponents;
1024
1070
  },
1071
+ get linkComponent() {
1072
+ return componentRefProps().linkComponent;
1073
+ },
1025
1074
  get builderBlock() {
1026
1075
  return componentRefProps().builderBlock;
1027
1076
  },
@@ -1047,6 +1096,9 @@ function Block(props) {
1047
1096
  },
1048
1097
  get registeredComponents() {
1049
1098
  return props.registeredComponents;
1099
+ },
1100
+ get linkComponent() {
1101
+ return props.linkComponent;
1050
1102
  }
1051
1103
  });
1052
1104
  }
@@ -1159,6 +1211,9 @@ function Blocks(props) {
1159
1211
  return block.id;
1160
1212
  },
1161
1213
  block,
1214
+ get linkComponent() {
1215
+ return props.linkComponent;
1216
+ },
1162
1217
  get context() {
1163
1218
  return props.context || builderContext;
1164
1219
  },
@@ -1176,7 +1231,7 @@ function Blocks(props) {
1176
1231
  var blocks_default = Blocks;
1177
1232
 
1178
1233
  // src/blocks/columns/columns.tsx
1179
- var _tmpl$4 = /* @__PURE__ */ template(`<div>`);
1234
+ var _tmpl$2 = /* @__PURE__ */ template(`<div>`);
1180
1235
  function Columns(props) {
1181
1236
  const [gutterSize, setGutterSize] = createSignal(typeof props.space === "number" ? props.space || 0 : 20);
1182
1237
  const [cols, setCols] = createSignal(props.columns || []);
@@ -1217,7 +1272,13 @@ function Columns(props) {
1217
1272
  const mobileWidth = "100%";
1218
1273
  const mobileMarginLeft = 0;
1219
1274
  const marginLeftKey = "margin-left";
1275
+ const sharedStyles = {
1276
+ display: "flex",
1277
+ flexDirection: "column",
1278
+ alignItems: "stretch"
1279
+ };
1220
1280
  return {
1281
+ ...sharedStyles,
1221
1282
  width,
1222
1283
  [marginLeftKey]: gutterPixels,
1223
1284
  "--column-width-mobile": getMobileStyle({
@@ -1270,7 +1331,7 @@ function Columns(props) {
1270
1331
  `;
1271
1332
  }
1272
1333
  return (() => {
1273
- const _el$ = _tmpl$4();
1334
+ const _el$ = _tmpl$2();
1274
1335
  spread(_el$, mergeProps({
1275
1336
  get ["class"]() {
1276
1337
  return `builder-columns ${props.builderBlock.id}-breakpoints ` + css({
@@ -1298,52 +1359,56 @@ function Columns(props) {
1298
1359
  },
1299
1360
  children: (column, _index) => {
1300
1361
  const index = _index();
1301
- return (() => {
1302
- const _el$2 = _tmpl$4();
1303
- spread(_el$2, mergeProps({
1304
- get ["class"]() {
1305
- return "builder-column " + css({
1306
- display: "flex",
1307
- flexDirection: "column",
1308
- alignItems: "stretch"
1309
- });
1310
- },
1311
- get style() {
1312
- return columnCssVars(index);
1313
- }
1314
- }, {}, {
1315
- "key": index
1316
- }), false, true);
1317
- insert(_el$2, createComponent(blocks_default, {
1318
- path: `component.options.columns.${index}.blocks`,
1319
- get parent() {
1320
- return props.builderBlock.id;
1321
- },
1322
- styleProp: {
1323
- flexGrow: "1"
1324
- },
1325
- get context() {
1326
- return props.builderContext;
1327
- },
1328
- get registeredComponents() {
1329
- return props.builderComponents;
1330
- },
1331
- get blocks() {
1332
- return column.blocks;
1333
- }
1334
- }));
1335
- return _el$2;
1336
- })();
1362
+ return createComponent(dynamic_renderer_default, {
1363
+ key: index,
1364
+ get TagName() {
1365
+ return column.link ? props.builderLinkComponent || "a" : "div";
1366
+ },
1367
+ actionAttributes: {},
1368
+ get attributes() {
1369
+ return {
1370
+ ...{},
1371
+ ...column.link ? {
1372
+ href: column.link
1373
+ } : {},
1374
+ [getClassPropName()]: "builder-column",
1375
+ style: mapStyleObjToStrIfNeeded(columnCssVars(index))
1376
+ };
1377
+ },
1378
+ get children() {
1379
+ return createComponent(blocks_default, {
1380
+ path: `component.options.columns.${index}.blocks`,
1381
+ get parent() {
1382
+ return props.builderBlock.id;
1383
+ },
1384
+ styleProp: {
1385
+ flexGrow: "1"
1386
+ },
1387
+ get context() {
1388
+ return props.builderContext;
1389
+ },
1390
+ get registeredComponents() {
1391
+ return props.builderComponents;
1392
+ },
1393
+ get linkComponent() {
1394
+ return props.builderLinkComponent;
1395
+ },
1396
+ get blocks() {
1397
+ return column.blocks;
1398
+ }
1399
+ });
1400
+ }
1401
+ });
1337
1402
  }
1338
1403
  }), null);
1339
1404
  return _el$;
1340
1405
  })();
1341
1406
  }
1342
1407
  var columns_default = Columns;
1343
- var _tmpl$5 = /* @__PURE__ */ template(`<span>`);
1408
+ var _tmpl$3 = /* @__PURE__ */ template(`<span>`);
1344
1409
  function FragmentComponent(props) {
1345
1410
  return (() => {
1346
- const _el$ = _tmpl$5();
1411
+ const _el$ = _tmpl$3();
1347
1412
  insert(_el$, () => props.children);
1348
1413
  return _el$;
1349
1414
  })();
@@ -1398,7 +1463,7 @@ function getSrcSet(url) {
1398
1463
  }
1399
1464
 
1400
1465
  // src/blocks/image/image.tsx
1401
- var _tmpl$6 = /* @__PURE__ */ template(`<source type=image/webp>`);
1466
+ var _tmpl$4 = /* @__PURE__ */ template(`<source type=image/webp>`);
1402
1467
  var _tmpl$22 = /* @__PURE__ */ template(`<picture><img loading=lazy>`);
1403
1468
  var _tmpl$32 = /* @__PURE__ */ template(`<div>`);
1404
1469
  function Image(props) {
@@ -1445,7 +1510,7 @@ function Image(props) {
1445
1510
  return webpSrcSet();
1446
1511
  },
1447
1512
  get children() {
1448
- const _el$2 = _tmpl$6();
1513
+ const _el$2 = _tmpl$4();
1449
1514
  effect(() => setAttribute(_el$2, "srcset", webpSrcSet()));
1450
1515
  return _el$2;
1451
1516
  }
@@ -1527,10 +1592,10 @@ function Image(props) {
1527
1592
  })];
1528
1593
  }
1529
1594
  var image_default = Image;
1530
- var _tmpl$7 = /* @__PURE__ */ template(`<section>`);
1595
+ var _tmpl$5 = /* @__PURE__ */ template(`<section>`);
1531
1596
  function SectionComponent(props) {
1532
1597
  return (() => {
1533
- const _el$ = _tmpl$7();
1598
+ const _el$ = _tmpl$5();
1534
1599
  spread(_el$, mergeProps({}, () => props.attributes, {
1535
1600
  get style() {
1536
1601
  return {
@@ -2024,7 +2089,7 @@ var componentInfo3 = {
2024
2089
  advanced: true
2025
2090
  }]
2026
2091
  };
2027
- var _tmpl$8 = /* @__PURE__ */ template(`<div>`);
2092
+ var _tmpl$6 = /* @__PURE__ */ template(`<div>`);
2028
2093
  function CustomCode(props) {
2029
2094
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2030
2095
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2059,7 +2124,7 @@ function CustomCode(props) {
2059
2124
  }
2060
2125
  });
2061
2126
  return (() => {
2062
- const _el$ = _tmpl$8();
2127
+ const _el$ = _tmpl$6();
2063
2128
  const _ref$ = elementRef;
2064
2129
  typeof _ref$ === "function" ? use(_ref$, _el$) : elementRef = _el$;
2065
2130
  effect((_p$) => {
@@ -2119,7 +2184,7 @@ var SCRIPT_MIME_TYPES = ["text/javascript", "application/javascript", "applicati
2119
2184
  var isJsScript = (script) => SCRIPT_MIME_TYPES.includes(script.type);
2120
2185
 
2121
2186
  // src/blocks/embed/embed.tsx
2122
- var _tmpl$9 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2187
+ var _tmpl$7 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2123
2188
  function Embed(props) {
2124
2189
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2125
2190
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2155,7 +2220,7 @@ function Embed(props) {
2155
2220
  }
2156
2221
  createEffect(on(() => [elem, ranInitFn()], onUpdateFn_0));
2157
2222
  return (() => {
2158
- const _el$ = _tmpl$9();
2223
+ const _el$ = _tmpl$7();
2159
2224
  const _ref$ = elem;
2160
2225
  typeof _ref$ === "function" ? use(_ref$, _el$) : elem = _el$;
2161
2226
  effect(() => _el$.innerHTML = props.content);
@@ -2312,10 +2377,10 @@ var componentInfo7 = {
2312
2377
  noWrap: true,
2313
2378
  static: true
2314
2379
  };
2315
- var _tmpl$10 = /* @__PURE__ */ template(`<img>`);
2380
+ var _tmpl$8 = /* @__PURE__ */ template(`<img>`);
2316
2381
  function ImgComponent(props) {
2317
2382
  return (() => {
2318
- const _el$ = _tmpl$10();
2383
+ const _el$ = _tmpl$8();
2319
2384
  spread(_el$, mergeProps({
2320
2385
  get style() {
2321
2386
  return {
@@ -2395,10 +2460,10 @@ var componentInfo9 = {
2395
2460
  defaultValue: "children"
2396
2461
  }]
2397
2462
  };
2398
- var _tmpl$11 = /* @__PURE__ */ template(`<div>`);
2463
+ var _tmpl$9 = /* @__PURE__ */ template(`<div>`);
2399
2464
  function Slot(props) {
2400
2465
  return (() => {
2401
- const _el$ = _tmpl$11();
2466
+ const _el$ = _tmpl$9();
2402
2467
  _el$.style.setProperty("pointer-events", "auto");
2403
2468
  spread(_el$, mergeProps(() => !props.builderContext.context?.symbolId && {
2404
2469
  "builder-slot": props.name
@@ -2478,10 +2543,10 @@ var componentInfo11 = {
2478
2543
  textAlign: "center"
2479
2544
  }
2480
2545
  };
2481
- var _tmpl$12 = /* @__PURE__ */ template(`<div class=builder-text>`);
2546
+ var _tmpl$10 = /* @__PURE__ */ template(`<div class=builder-text>`);
2482
2547
  function Text(props) {
2483
2548
  return (() => {
2484
- const _el$ = _tmpl$12();
2549
+ const _el$ = _tmpl$10();
2485
2550
  _el$.style.setProperty("outline", "none");
2486
2551
  effect(() => _el$.innerHTML = props.text?.toString() || "");
2487
2552
  return _el$;
@@ -2572,7 +2637,7 @@ var componentInfo12 = {
2572
2637
  advanced: true
2573
2638
  }]
2574
2639
  };
2575
- var _tmpl$13 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2640
+ var _tmpl$11 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2576
2641
  var _tmpl$23 = /* @__PURE__ */ template(`<div>`);
2577
2642
  var _tmpl$33 = /* @__PURE__ */ template(`<div><video class=builder-video>`);
2578
2643
  function Video(props) {
@@ -2635,7 +2700,7 @@ function Video(props) {
2635
2700
  return !props.lazyLoad;
2636
2701
  },
2637
2702
  get children() {
2638
- const _el$3 = _tmpl$13();
2703
+ const _el$3 = _tmpl$11();
2639
2704
  effect(() => setAttribute(_el$3, "src", props.video));
2640
2705
  return _el$3;
2641
2706
  }
@@ -2797,10 +2862,10 @@ var getUpdateVariantVisibilityScript = ({
2797
2862
  }) => `window.${UPDATE_VARIANT_VISIBILITY_SCRIPT_FN_NAME}(
2798
2863
  "${variationId}", "${contentId}", ${isHydrationTarget}
2799
2864
  )`;
2800
- var _tmpl$14 = /* @__PURE__ */ template(`<script>`);
2865
+ var _tmpl$12 = /* @__PURE__ */ template(`<script>`);
2801
2866
  function InlinedScript(props) {
2802
2867
  return (() => {
2803
- const _el$ = _tmpl$14();
2868
+ const _el$ = _tmpl$12();
2804
2869
  effect((_p$) => {
2805
2870
  const _v$ = props.scriptStr, _v$2 = props.id || "";
2806
2871
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -3307,7 +3372,7 @@ var getInteractionPropertiesForEvent = (event) => {
3307
3372
  };
3308
3373
 
3309
3374
  // src/constants/sdk-version.ts
3310
- var SDK_VERSION = "0.12.2";
3375
+ var SDK_VERSION = "0.12.4";
3311
3376
 
3312
3377
  // src/functions/register.ts
3313
3378
  var registry = {};
@@ -3820,6 +3885,10 @@ ${getFontCss({
3820
3885
  customFonts: props.customFonts
3821
3886
  })}
3822
3887
 
3888
+ .builder-button {
3889
+ all: unset;
3890
+ }
3891
+
3823
3892
  .builder-text > p:first-of-type, .builder-text > .builder-paragraph:first-of-type {
3824
3893
  margin: 0;
3825
3894
  }
@@ -3992,6 +4061,9 @@ function ContentComponent(props) {
3992
4061
  get contentWrapperProps() {
3993
4062
  return props.contentWrapperProps;
3994
4063
  },
4064
+ get linkComponent() {
4065
+ return props.linkComponent;
4066
+ },
3995
4067
  get trustedHosts() {
3996
4068
  return props.trustedHosts;
3997
4069
  }
@@ -4034,6 +4106,9 @@ function ContentComponent(props) {
4034
4106
  },
4035
4107
  get registeredComponents() {
4036
4108
  return registeredComponents();
4109
+ },
4110
+ get linkComponent() {
4111
+ return props.linkComponent;
4037
4112
  }
4038
4113
  })];
4039
4114
  }
@@ -4127,6 +4202,9 @@ function ContentVariants(props) {
4127
4202
  get customComponents() {
4128
4203
  return props.customComponents;
4129
4204
  },
4205
+ get linkComponent() {
4206
+ return props.linkComponent;
4207
+ },
4130
4208
  get canTrack() {
4131
4209
  return props.canTrack;
4132
4210
  },
@@ -4184,6 +4262,9 @@ function ContentVariants(props) {
4184
4262
  get customComponents() {
4185
4263
  return props.customComponents;
4186
4264
  },
4265
+ get linkComponent() {
4266
+ return props.linkComponent;
4267
+ },
4187
4268
  get canTrack() {
4188
4269
  return props.canTrack;
4189
4270
  },
@@ -4243,11 +4324,11 @@ var fetchSymbolContent = async ({
4243
4324
  };
4244
4325
 
4245
4326
  // src/blocks/symbol/symbol.tsx
4246
- var _tmpl$15 = /* @__PURE__ */ template(`<div>`);
4327
+ var _tmpl$13 = /* @__PURE__ */ template(`<div>`);
4247
4328
  function Symbol(props) {
4248
4329
  const [contentToUse, setContentToUse] = createSignal(props.symbol?.content);
4249
4330
  function className() {
4250
- return [...[props.attributes.class], "builder-symbol", props.symbol?.inline ? "builder-inline-symbol" : void 0, props.symbol?.dynamic || props.dynamic ? "builder-dynamic-symbol" : void 0].filter(Boolean).join(" ");
4331
+ return [...[props.attributes[getClassPropName()]], "builder-symbol", props.symbol?.inline ? "builder-inline-symbol" : void 0, props.symbol?.dynamic || props.dynamic ? "builder-dynamic-symbol" : void 0].filter(Boolean).join(" ");
4251
4332
  }
4252
4333
  function setContent() {
4253
4334
  if (contentToUse())
@@ -4269,7 +4350,7 @@ function Symbol(props) {
4269
4350
  }
4270
4351
  createEffect(on(() => [props.symbol], onUpdateFn_0));
4271
4352
  return (() => {
4272
- const _el$ = _tmpl$15();
4353
+ const _el$ = _tmpl$13();
4273
4354
  spread(_el$, mergeProps({
4274
4355
  get ["class"]() {
4275
4356
  return className();
@@ -4304,6 +4385,9 @@ function Symbol(props) {
4304
4385
  },
4305
4386
  get content() {
4306
4387
  return contentToUse();
4388
+ },
4389
+ get linkComponent() {
4390
+ return props.builderLinkComponent;
4307
4391
  }
4308
4392
  }));
4309
4393
  return _el$;