@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.
package/lib/node/dev.js CHANGED
@@ -1,47 +1,100 @@
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
  import { createRequire } from 'node:module';
5
5
 
6
6
  // src/blocks/button/button.tsx
7
- var _tmpl$ = /* @__PURE__ */ template(`<a>`);
8
- var _tmpl$2 = /* @__PURE__ */ template(`<button>`);
9
- function Button(props) {
7
+
8
+ // src/components/dynamic-renderer/dynamic-renderer.helpers.ts
9
+ var EMPTY_HTML_ELEMENTS = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
10
+ var isEmptyElement = (tagName) => {
11
+ return typeof tagName === "string" && EMPTY_HTML_ELEMENTS.has(tagName.toLowerCase());
12
+ };
13
+
14
+ // src/components/dynamic-renderer/dynamic-renderer.tsx
15
+ function DynamicRenderer(props) {
10
16
  return createComponent(Show, {
11
17
  get fallback() {
12
- return (() => {
13
- const _el$2 = _tmpl$2();
14
- spread(_el$2, mergeProps({
15
- get ["class"]() {
16
- return props.attributes.class + " " + css({
17
- all: "unset"
18
- });
19
- }
20
- }, {}, () => props.attributes, {
21
- get style() {
22
- return props.attributes.style;
23
- }
24
- }), false, true);
25
- insert(_el$2, () => props.text);
26
- return _el$2;
27
- })();
18
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
19
+ get component() {
20
+ return props.TagName;
21
+ }
22
+ }));
28
23
  },
29
24
  get when() {
30
- return props.link;
25
+ return !isEmptyElement(props.TagName);
31
26
  },
32
27
  get children() {
33
- const _el$ = _tmpl$();
34
- spread(_el$, mergeProps({}, () => props.attributes, {
35
- get href() {
36
- return props.link;
28
+ return createComponent(Show, {
29
+ get fallback() {
30
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
31
+ get component() {
32
+ return props.TagName;
33
+ },
34
+ get children() {
35
+ return props.children;
36
+ }
37
+ }));
37
38
  },
38
- get target() {
39
- return props.openLinkInNewTab ? "_blank" : void 0;
39
+ get when() {
40
+ return typeof props.TagName === "string";
40
41
  },
41
- "role": "button"
42
- }), false, true);
43
- insert(_el$, () => props.text);
44
- return _el$;
42
+ get children() {
43
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
44
+ get component() {
45
+ return props.TagName;
46
+ },
47
+ get children() {
48
+ return props.children;
49
+ }
50
+ }));
51
+ }
52
+ });
53
+ }
54
+ });
55
+ }
56
+ var dynamic_renderer_default = DynamicRenderer;
57
+
58
+ // src/constants/target.ts
59
+ var TARGET = "solid";
60
+
61
+ // src/functions/get-class-prop-name.ts
62
+ var getClassPropName = () => {
63
+ switch (TARGET) {
64
+ case "react":
65
+ case "reactNative":
66
+ case "rsc":
67
+ return "className";
68
+ case "svelte":
69
+ case "vue":
70
+ case "solid":
71
+ case "qwik":
72
+ return "class";
73
+ }
74
+ };
75
+
76
+ // src/blocks/button/button.tsx
77
+ function Button(props) {
78
+ return createComponent(dynamic_renderer_default, {
79
+ get TagName() {
80
+ return props.link ? props.builderLinkComponent || "a" : "button";
81
+ },
82
+ get attributes() {
83
+ return {
84
+ ...props.attributes,
85
+ [getClassPropName()]: `${props.link ? "" : "builder-button"} ${props.attributes[getClassPropName()] || ""}`,
86
+ ...props.link ? {
87
+ href: props.link,
88
+ target: props.openLinkInNewTab ? "_blank" : void 0,
89
+ role: "link"
90
+ } : {
91
+ role: "button"
92
+ }
93
+ };
94
+ },
95
+ actionAttributes: {},
96
+ get children() {
97
+ return props.text;
45
98
  }
46
99
  });
47
100
  }
@@ -88,9 +141,6 @@ function isBrowser() {
88
141
  return typeof window !== "undefined" && typeof document !== "undefined";
89
142
  }
90
143
 
91
- // src/constants/target.ts
92
- var TARGET = "solid";
93
-
94
144
  // src/functions/is-iframe.ts
95
145
  function isIframe() {
96
146
  return isBrowser() && window.self !== window.top;
@@ -605,10 +655,10 @@ var createCssClass = ({
605
655
  return cssClass;
606
656
  }
607
657
  };
608
- var _tmpl$3 = /* @__PURE__ */ template(`<style>`);
658
+ var _tmpl$ = /* @__PURE__ */ template(`<style>`);
609
659
  function InlinedStyles(props) {
610
660
  return (() => {
611
- const _el$ = _tmpl$3();
661
+ const _el$ = _tmpl$();
612
662
  effect((_p$) => {
613
663
  const _v$ = props.styles, _v$2 = props.id;
614
664
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -642,7 +692,7 @@ function BlockStyles(props) {
642
692
  }
643
693
  return true;
644
694
  }
645
- function css5() {
695
+ function css4() {
646
696
  const processedBlock = getProcessedBlock({
647
697
  block: props.block,
648
698
  localState: props.context.localState,
@@ -679,12 +729,12 @@ function BlockStyles(props) {
679
729
  }
680
730
  return createComponent(Show, {
681
731
  get when() {
682
- return memo(() => !!(TARGET !== "reactNative" && css5()))() && canShowBlock();
732
+ return memo(() => !!(TARGET !== "reactNative" && css4()))() && canShowBlock();
683
733
  },
684
734
  get children() {
685
735
  return createComponent(inlined_styles_default, {
686
736
  get styles() {
687
- return css5();
737
+ return css4();
688
738
  }
689
739
  });
690
740
  }
@@ -734,6 +784,38 @@ function getBlockActions(options) {
734
784
  return obj;
735
785
  }
736
786
 
787
+ // src/functions/transform-style-property.ts
788
+ function transformStyleProperty({
789
+ style
790
+ }) {
791
+ return style;
792
+ }
793
+
794
+ // src/functions/get-style.ts
795
+ var getStyle = ({
796
+ block,
797
+ context
798
+ }) => {
799
+ return mapStyleObjToStrIfNeeded(transformStyleProperty({
800
+ style: block.style || {},
801
+ context,
802
+ block
803
+ }));
804
+ };
805
+ function mapStyleObjToStrIfNeeded(style) {
806
+ switch (TARGET) {
807
+ case "svelte":
808
+ case "vue":
809
+ case "solid":
810
+ return convertStyleMapToCSSArray(style).join(" ");
811
+ case "qwik":
812
+ case "reactNative":
813
+ case "react":
814
+ case "rsc":
815
+ return style;
816
+ }
817
+ }
818
+
737
819
  // src/functions/transform-block-properties.ts
738
820
  function transformBlockProperties({
739
821
  properties
@@ -755,8 +837,11 @@ function getBlockProperties({
755
837
  ...extractRelevantRootBlockProperties(block),
756
838
  ...block.properties,
757
839
  "builder-id": block.id,
758
- style: block.style ? getStyleAttribute(block.style) : void 0,
759
- class: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
840
+ style: getStyle({
841
+ block,
842
+ context
843
+ }),
844
+ [getClassPropName()]: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
760
845
  };
761
846
  return transformBlockProperties({
762
847
  properties,
@@ -764,69 +849,6 @@ function getBlockProperties({
764
849
  block
765
850
  });
766
851
  }
767
- function getStyleAttribute(style) {
768
- switch (TARGET) {
769
- case "svelte":
770
- case "vue":
771
- case "solid":
772
- return convertStyleMapToCSSArray(style).join(" ");
773
- case "qwik":
774
- case "reactNative":
775
- case "react":
776
- case "rsc":
777
- return style;
778
- }
779
- }
780
-
781
- // src/components/dynamic-renderer/dynamic-renderer.helpers.ts
782
- var EMPTY_HTML_ELEMENTS = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
783
- var isEmptyElement = (tagName) => {
784
- return typeof tagName === "string" && EMPTY_HTML_ELEMENTS.has(tagName.toLowerCase());
785
- };
786
-
787
- // src/components/dynamic-renderer/dynamic-renderer.tsx
788
- function DynamicRenderer(props) {
789
- return createComponent(Show, {
790
- get fallback() {
791
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
792
- get component() {
793
- return props.TagName;
794
- }
795
- }));
796
- },
797
- get when() {
798
- return !isEmptyElement(props.TagName);
799
- },
800
- get children() {
801
- return createComponent(Show, {
802
- get fallback() {
803
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
804
- get component() {
805
- return props.TagName;
806
- },
807
- get children() {
808
- return props.children;
809
- }
810
- }));
811
- },
812
- get when() {
813
- return typeof props.TagName === "string";
814
- },
815
- get children() {
816
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
817
- get component() {
818
- return props.TagName;
819
- },
820
- get children() {
821
- return props.children;
822
- }
823
- }));
824
- }
825
- });
826
- }
827
- });
828
- }
829
- var dynamic_renderer_default = DynamicRenderer;
830
852
 
831
853
  // src/components/block/components/block-wrapper.tsx
832
854
  function BlockWrapper(props) {
@@ -929,6 +951,7 @@ function ComponentRef(props) {
929
951
  builderBlock: props.builderBlock,
930
952
  context: props.context,
931
953
  componentRef: props.componentRef,
954
+ linkComponent: props.linkComponent,
932
955
  includeBlockProps: props.includeBlockProps,
933
956
  isInteractive: props.isInteractive,
934
957
  contextValue: props.context
@@ -953,6 +976,9 @@ function ComponentRef(props) {
953
976
  },
954
977
  get registeredComponents() {
955
978
  return props.registeredComponents;
979
+ },
980
+ get linkComponent() {
981
+ return props.linkComponent;
956
982
  }
957
983
  });
958
984
  }
@@ -979,6 +1005,9 @@ function RepeatedBlock(props) {
979
1005
  },
980
1006
  get registeredComponents() {
981
1007
  return props.registeredComponents;
1008
+ },
1009
+ get linkComponent() {
1010
+ return props.linkComponent;
982
1011
  }
983
1012
  });
984
1013
  }
@@ -1013,6 +1042,10 @@ function Block(props) {
1013
1042
  });
1014
1043
  }
1015
1044
  function Tag() {
1045
+ const shouldUseLink = props.block.tagName === "a" || processedBlock().properties?.href || processedBlock().href;
1046
+ if (shouldUseLink) {
1047
+ return props.linkComponent || "a";
1048
+ }
1016
1049
  return props.block.tagName || "div";
1017
1050
  }
1018
1051
  function canShowBlock() {
@@ -1036,11 +1069,15 @@ function Block(props) {
1036
1069
  componentOptions: {
1037
1070
  ...getBlockComponentOptions(processedBlock()),
1038
1071
  builderContext: props.context,
1072
+ ...blockComponent()?.name === "Core:Button" || blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
1073
+ builderLinkComponent: props.linkComponent
1074
+ } : {},
1039
1075
  ...blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
1040
1076
  builderComponents: props.registeredComponents
1041
1077
  } : {}
1042
1078
  },
1043
1079
  context: childrenContext(),
1080
+ linkComponent: props.linkComponent,
1044
1081
  registeredComponents: props.registeredComponents,
1045
1082
  builderBlock: processedBlock(),
1046
1083
  includeBlockProps: blockComponent()?.noWrap === true,
@@ -1077,6 +1114,9 @@ function Block(props) {
1077
1114
  get registeredComponents() {
1078
1115
  return componentRefProps().registeredComponents;
1079
1116
  },
1117
+ get linkComponent() {
1118
+ return componentRefProps().linkComponent;
1119
+ },
1080
1120
  get builderBlock() {
1081
1121
  return componentRefProps().builderBlock;
1082
1122
  },
@@ -1110,6 +1150,9 @@ function Block(props) {
1110
1150
  },
1111
1151
  get registeredComponents() {
1112
1152
  return props.registeredComponents;
1153
+ },
1154
+ get linkComponent() {
1155
+ return props.linkComponent;
1113
1156
  }
1114
1157
  });
1115
1158
  }
@@ -1129,6 +1172,9 @@ function Block(props) {
1129
1172
  get context() {
1130
1173
  return props.context;
1131
1174
  },
1175
+ get linkComponent() {
1176
+ return props.linkComponent;
1177
+ },
1132
1178
  get children() {
1133
1179
  return [createComponent(component_ref_default, {
1134
1180
  get componentRef() {
@@ -1146,6 +1192,9 @@ function Block(props) {
1146
1192
  get registeredComponents() {
1147
1193
  return componentRefProps().registeredComponents;
1148
1194
  },
1195
+ get linkComponent() {
1196
+ return componentRefProps().linkComponent;
1197
+ },
1149
1198
  get builderBlock() {
1150
1199
  return componentRefProps().builderBlock;
1151
1200
  },
@@ -1171,6 +1220,9 @@ function Block(props) {
1171
1220
  },
1172
1221
  get registeredComponents() {
1173
1222
  return props.registeredComponents;
1223
+ },
1224
+ get linkComponent() {
1225
+ return props.linkComponent;
1174
1226
  }
1175
1227
  });
1176
1228
  }
@@ -1283,6 +1335,9 @@ function Blocks(props) {
1283
1335
  return block.id;
1284
1336
  },
1285
1337
  block,
1338
+ get linkComponent() {
1339
+ return props.linkComponent;
1340
+ },
1286
1341
  get context() {
1287
1342
  return props.context || builderContext;
1288
1343
  },
@@ -1300,7 +1355,7 @@ function Blocks(props) {
1300
1355
  var blocks_default = Blocks;
1301
1356
 
1302
1357
  // src/blocks/columns/columns.tsx
1303
- var _tmpl$4 = /* @__PURE__ */ template(`<div>`);
1358
+ var _tmpl$2 = /* @__PURE__ */ template(`<div>`);
1304
1359
  function Columns(props) {
1305
1360
  const [gutterSize, setGutterSize] = createSignal(typeof props.space === "number" ? props.space || 0 : 20);
1306
1361
  const [cols, setCols] = createSignal(props.columns || []);
@@ -1341,7 +1396,13 @@ function Columns(props) {
1341
1396
  const mobileWidth = "100%";
1342
1397
  const mobileMarginLeft = 0;
1343
1398
  const marginLeftKey = "margin-left";
1399
+ const sharedStyles = {
1400
+ display: "flex",
1401
+ flexDirection: "column",
1402
+ alignItems: "stretch"
1403
+ };
1344
1404
  return {
1405
+ ...sharedStyles,
1345
1406
  width,
1346
1407
  [marginLeftKey]: gutterPixels,
1347
1408
  "--column-width-mobile": getMobileStyle({
@@ -1394,7 +1455,7 @@ function Columns(props) {
1394
1455
  `;
1395
1456
  }
1396
1457
  return (() => {
1397
- const _el$ = _tmpl$4();
1458
+ const _el$ = _tmpl$2();
1398
1459
  spread(_el$, mergeProps({
1399
1460
  get ["class"]() {
1400
1461
  return `builder-columns ${props.builderBlock.id}-breakpoints ` + css({
@@ -1422,52 +1483,56 @@ function Columns(props) {
1422
1483
  },
1423
1484
  children: (column, _index) => {
1424
1485
  const index = _index();
1425
- return (() => {
1426
- const _el$2 = _tmpl$4();
1427
- spread(_el$2, mergeProps({
1428
- get ["class"]() {
1429
- return "builder-column " + css({
1430
- display: "flex",
1431
- flexDirection: "column",
1432
- alignItems: "stretch"
1433
- });
1434
- },
1435
- get style() {
1436
- return columnCssVars(index);
1437
- }
1438
- }, {}, {
1439
- "key": index
1440
- }), false, true);
1441
- insert(_el$2, createComponent(blocks_default, {
1442
- path: `component.options.columns.${index}.blocks`,
1443
- get parent() {
1444
- return props.builderBlock.id;
1445
- },
1446
- styleProp: {
1447
- flexGrow: "1"
1448
- },
1449
- get context() {
1450
- return props.builderContext;
1451
- },
1452
- get registeredComponents() {
1453
- return props.builderComponents;
1454
- },
1455
- get blocks() {
1456
- return column.blocks;
1457
- }
1458
- }));
1459
- return _el$2;
1460
- })();
1486
+ return createComponent(dynamic_renderer_default, {
1487
+ key: index,
1488
+ get TagName() {
1489
+ return column.link ? props.builderLinkComponent || "a" : "div";
1490
+ },
1491
+ actionAttributes: {},
1492
+ get attributes() {
1493
+ return {
1494
+ ...{},
1495
+ ...column.link ? {
1496
+ href: column.link
1497
+ } : {},
1498
+ [getClassPropName()]: "builder-column",
1499
+ style: mapStyleObjToStrIfNeeded(columnCssVars(index))
1500
+ };
1501
+ },
1502
+ get children() {
1503
+ return createComponent(blocks_default, {
1504
+ path: `component.options.columns.${index}.blocks`,
1505
+ get parent() {
1506
+ return props.builderBlock.id;
1507
+ },
1508
+ styleProp: {
1509
+ flexGrow: "1"
1510
+ },
1511
+ get context() {
1512
+ return props.builderContext;
1513
+ },
1514
+ get registeredComponents() {
1515
+ return props.builderComponents;
1516
+ },
1517
+ get linkComponent() {
1518
+ return props.builderLinkComponent;
1519
+ },
1520
+ get blocks() {
1521
+ return column.blocks;
1522
+ }
1523
+ });
1524
+ }
1525
+ });
1461
1526
  }
1462
1527
  }), null);
1463
1528
  return _el$;
1464
1529
  })();
1465
1530
  }
1466
1531
  var columns_default = Columns;
1467
- var _tmpl$5 = /* @__PURE__ */ template(`<span>`);
1532
+ var _tmpl$3 = /* @__PURE__ */ template(`<span>`);
1468
1533
  function FragmentComponent(props) {
1469
1534
  return (() => {
1470
- const _el$ = _tmpl$5();
1535
+ const _el$ = _tmpl$3();
1471
1536
  insert(_el$, () => props.children);
1472
1537
  return _el$;
1473
1538
  })();
@@ -1522,7 +1587,7 @@ function getSrcSet(url) {
1522
1587
  }
1523
1588
 
1524
1589
  // src/blocks/image/image.tsx
1525
- var _tmpl$6 = /* @__PURE__ */ template(`<source type=image/webp>`);
1590
+ var _tmpl$4 = /* @__PURE__ */ template(`<source type=image/webp>`);
1526
1591
  var _tmpl$22 = /* @__PURE__ */ template(`<picture><img loading=lazy>`);
1527
1592
  var _tmpl$32 = /* @__PURE__ */ template(`<div>`);
1528
1593
  function Image(props) {
@@ -1569,7 +1634,7 @@ function Image(props) {
1569
1634
  return webpSrcSet();
1570
1635
  },
1571
1636
  get children() {
1572
- const _el$2 = _tmpl$6();
1637
+ const _el$2 = _tmpl$4();
1573
1638
  effect(() => setAttribute(_el$2, "srcset", webpSrcSet()));
1574
1639
  return _el$2;
1575
1640
  }
@@ -1651,10 +1716,10 @@ function Image(props) {
1651
1716
  })];
1652
1717
  }
1653
1718
  var image_default = Image;
1654
- var _tmpl$7 = /* @__PURE__ */ template(`<section>`);
1719
+ var _tmpl$5 = /* @__PURE__ */ template(`<section>`);
1655
1720
  function SectionComponent(props) {
1656
1721
  return (() => {
1657
- const _el$ = _tmpl$7();
1722
+ const _el$ = _tmpl$5();
1658
1723
  spread(_el$, mergeProps({}, () => props.attributes, {
1659
1724
  get style() {
1660
1725
  return {
@@ -2148,7 +2213,7 @@ var componentInfo3 = {
2148
2213
  advanced: true
2149
2214
  }]
2150
2215
  };
2151
- var _tmpl$8 = /* @__PURE__ */ template(`<div>`);
2216
+ var _tmpl$6 = /* @__PURE__ */ template(`<div>`);
2152
2217
  function CustomCode(props) {
2153
2218
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2154
2219
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2183,7 +2248,7 @@ function CustomCode(props) {
2183
2248
  }
2184
2249
  });
2185
2250
  return (() => {
2186
- const _el$ = _tmpl$8();
2251
+ const _el$ = _tmpl$6();
2187
2252
  const _ref$ = elementRef;
2188
2253
  typeof _ref$ === "function" ? use(_ref$, _el$) : elementRef = _el$;
2189
2254
  effect((_p$) => {
@@ -2243,7 +2308,7 @@ var SCRIPT_MIME_TYPES = ["text/javascript", "application/javascript", "applicati
2243
2308
  var isJsScript = (script) => SCRIPT_MIME_TYPES.includes(script.type);
2244
2309
 
2245
2310
  // src/blocks/embed/embed.tsx
2246
- var _tmpl$9 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2311
+ var _tmpl$7 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2247
2312
  function Embed(props) {
2248
2313
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2249
2314
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2279,7 +2344,7 @@ function Embed(props) {
2279
2344
  }
2280
2345
  createEffect(on(() => [elem, ranInitFn()], onUpdateFn_0));
2281
2346
  return (() => {
2282
- const _el$ = _tmpl$9();
2347
+ const _el$ = _tmpl$7();
2283
2348
  const _ref$ = elem;
2284
2349
  typeof _ref$ === "function" ? use(_ref$, _el$) : elem = _el$;
2285
2350
  effect(() => _el$.innerHTML = props.content);
@@ -2436,10 +2501,10 @@ var componentInfo7 = {
2436
2501
  noWrap: true,
2437
2502
  static: true
2438
2503
  };
2439
- var _tmpl$10 = /* @__PURE__ */ template(`<img>`);
2504
+ var _tmpl$8 = /* @__PURE__ */ template(`<img>`);
2440
2505
  function ImgComponent(props) {
2441
2506
  return (() => {
2442
- const _el$ = _tmpl$10();
2507
+ const _el$ = _tmpl$8();
2443
2508
  spread(_el$, mergeProps({
2444
2509
  get style() {
2445
2510
  return {
@@ -2519,10 +2584,10 @@ var componentInfo9 = {
2519
2584
  defaultValue: "children"
2520
2585
  }]
2521
2586
  };
2522
- var _tmpl$11 = /* @__PURE__ */ template(`<div>`);
2587
+ var _tmpl$9 = /* @__PURE__ */ template(`<div>`);
2523
2588
  function Slot(props) {
2524
2589
  return (() => {
2525
- const _el$ = _tmpl$11();
2590
+ const _el$ = _tmpl$9();
2526
2591
  _el$.style.setProperty("pointer-events", "auto");
2527
2592
  spread(_el$, mergeProps(() => !props.builderContext.context?.symbolId && {
2528
2593
  "builder-slot": props.name
@@ -2602,10 +2667,10 @@ var componentInfo11 = {
2602
2667
  textAlign: "center"
2603
2668
  }
2604
2669
  };
2605
- var _tmpl$12 = /* @__PURE__ */ template(`<div class=builder-text>`);
2670
+ var _tmpl$10 = /* @__PURE__ */ template(`<div class=builder-text>`);
2606
2671
  function Text(props) {
2607
2672
  return (() => {
2608
- const _el$ = _tmpl$12();
2673
+ const _el$ = _tmpl$10();
2609
2674
  _el$.style.setProperty("outline", "none");
2610
2675
  effect(() => _el$.innerHTML = props.text?.toString() || "");
2611
2676
  return _el$;
@@ -2696,7 +2761,7 @@ var componentInfo12 = {
2696
2761
  advanced: true
2697
2762
  }]
2698
2763
  };
2699
- var _tmpl$13 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2764
+ var _tmpl$11 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2700
2765
  var _tmpl$23 = /* @__PURE__ */ template(`<div>`);
2701
2766
  var _tmpl$33 = /* @__PURE__ */ template(`<div><video class=builder-video>`);
2702
2767
  function Video(props) {
@@ -2759,7 +2824,7 @@ function Video(props) {
2759
2824
  return !props.lazyLoad;
2760
2825
  },
2761
2826
  get children() {
2762
- const _el$3 = _tmpl$13();
2827
+ const _el$3 = _tmpl$11();
2763
2828
  effect(() => setAttribute(_el$3, "src", props.video));
2764
2829
  return _el$3;
2765
2830
  }
@@ -2921,10 +2986,10 @@ var getUpdateVariantVisibilityScript = ({
2921
2986
  }) => `window.${UPDATE_VARIANT_VISIBILITY_SCRIPT_FN_NAME}(
2922
2987
  "${variationId}", "${contentId}", ${isHydrationTarget}
2923
2988
  )`;
2924
- var _tmpl$14 = /* @__PURE__ */ template(`<script>`);
2989
+ var _tmpl$12 = /* @__PURE__ */ template(`<script>`);
2925
2990
  function InlinedScript(props) {
2926
2991
  return (() => {
2927
- const _el$ = _tmpl$14();
2992
+ const _el$ = _tmpl$12();
2928
2993
  effect((_p$) => {
2929
2994
  const _v$ = props.scriptStr, _v$2 = props.id || "";
2930
2995
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -3431,7 +3496,7 @@ var getInteractionPropertiesForEvent = (event) => {
3431
3496
  };
3432
3497
 
3433
3498
  // src/constants/sdk-version.ts
3434
- var SDK_VERSION = "0.12.2";
3499
+ var SDK_VERSION = "0.12.4";
3435
3500
 
3436
3501
  // src/functions/register.ts
3437
3502
  var registry = {};
@@ -3944,6 +4009,10 @@ ${getFontCss({
3944
4009
  customFonts: props.customFonts
3945
4010
  })}
3946
4011
 
4012
+ .builder-button {
4013
+ all: unset;
4014
+ }
4015
+
3947
4016
  .builder-text > p:first-of-type, .builder-text > .builder-paragraph:first-of-type {
3948
4017
  margin: 0;
3949
4018
  }
@@ -4116,6 +4185,9 @@ function ContentComponent(props) {
4116
4185
  get contentWrapperProps() {
4117
4186
  return props.contentWrapperProps;
4118
4187
  },
4188
+ get linkComponent() {
4189
+ return props.linkComponent;
4190
+ },
4119
4191
  get trustedHosts() {
4120
4192
  return props.trustedHosts;
4121
4193
  }
@@ -4158,6 +4230,9 @@ function ContentComponent(props) {
4158
4230
  },
4159
4231
  get registeredComponents() {
4160
4232
  return registeredComponents();
4233
+ },
4234
+ get linkComponent() {
4235
+ return props.linkComponent;
4161
4236
  }
4162
4237
  })];
4163
4238
  }
@@ -4251,6 +4326,9 @@ function ContentVariants(props) {
4251
4326
  get customComponents() {
4252
4327
  return props.customComponents;
4253
4328
  },
4329
+ get linkComponent() {
4330
+ return props.linkComponent;
4331
+ },
4254
4332
  get canTrack() {
4255
4333
  return props.canTrack;
4256
4334
  },
@@ -4308,6 +4386,9 @@ function ContentVariants(props) {
4308
4386
  get customComponents() {
4309
4387
  return props.customComponents;
4310
4388
  },
4389
+ get linkComponent() {
4390
+ return props.linkComponent;
4391
+ },
4311
4392
  get canTrack() {
4312
4393
  return props.canTrack;
4313
4394
  },
@@ -4367,11 +4448,11 @@ var fetchSymbolContent = async ({
4367
4448
  };
4368
4449
 
4369
4450
  // src/blocks/symbol/symbol.tsx
4370
- var _tmpl$15 = /* @__PURE__ */ template(`<div>`);
4451
+ var _tmpl$13 = /* @__PURE__ */ template(`<div>`);
4371
4452
  function Symbol(props) {
4372
4453
  const [contentToUse, setContentToUse] = createSignal(props.symbol?.content);
4373
4454
  function className() {
4374
- 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(" ");
4455
+ 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(" ");
4375
4456
  }
4376
4457
  function setContent() {
4377
4458
  if (contentToUse())
@@ -4393,7 +4474,7 @@ function Symbol(props) {
4393
4474
  }
4394
4475
  createEffect(on(() => [props.symbol], onUpdateFn_0));
4395
4476
  return (() => {
4396
- const _el$ = _tmpl$15();
4477
+ const _el$ = _tmpl$13();
4397
4478
  spread(_el$, mergeProps({
4398
4479
  get ["class"]() {
4399
4480
  return className();
@@ -4428,6 +4509,9 @@ function Symbol(props) {
4428
4509
  },
4429
4510
  get content() {
4430
4511
  return contentToUse();
4512
+ },
4513
+ get linkComponent() {
4514
+ return props.builderLinkComponent;
4431
4515
  }
4432
4516
  }));
4433
4517
  return _el$;