@builder.io/sdk-solid 0.12.3 → 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/index.js CHANGED
@@ -1,45 +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 role=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 `builder-button ${props.attributes.class}`;
17
- }
18
- }, {}, () => props.attributes, {
19
- get style() {
20
- return props.attributes.style;
21
- }
22
- }), false, true);
23
- insert(_el$2, () => props.text);
24
- return _el$2;
25
- })();
18
+ return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
19
+ get component() {
20
+ return props.TagName;
21
+ }
22
+ }));
26
23
  },
27
24
  get when() {
28
- return props.link;
25
+ return !isEmptyElement(props.TagName);
29
26
  },
30
27
  get children() {
31
- const _el$ = _tmpl$();
32
- spread(_el$, mergeProps({}, () => props.attributes, {
33
- get href() {
34
- 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
+ }));
35
38
  },
36
- get target() {
37
- return props.openLinkInNewTab ? "_blank" : void 0;
39
+ get when() {
40
+ return typeof props.TagName === "string";
38
41
  },
39
- "role": "button"
40
- }), false, true);
41
- insert(_el$, () => props.text);
42
- 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;
43
98
  }
44
99
  });
45
100
  }
@@ -85,9 +140,6 @@ function isBrowser() {
85
140
  return typeof window !== "undefined" && typeof document !== "undefined";
86
141
  }
87
142
 
88
- // src/constants/target.ts
89
- var TARGET = "solid";
90
-
91
143
  // src/functions/is-iframe.ts
92
144
  function isIframe() {
93
145
  return isBrowser() && window.self !== window.top;
@@ -597,10 +649,10 @@ var createCssClass = ({
597
649
  return cssClass;
598
650
  }
599
651
  };
600
- var _tmpl$3 = /* @__PURE__ */ template(`<style>`);
652
+ var _tmpl$ = /* @__PURE__ */ template(`<style>`);
601
653
  function InlinedStyles(props) {
602
654
  return (() => {
603
- const _el$ = _tmpl$3();
655
+ const _el$ = _tmpl$();
604
656
  effect((_p$) => {
605
657
  const _v$ = props.styles, _v$2 = props.id;
606
658
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -726,6 +778,38 @@ function getBlockActions(options) {
726
778
  return obj;
727
779
  }
728
780
 
781
+ // src/functions/transform-style-property.ts
782
+ function transformStyleProperty({
783
+ style
784
+ }) {
785
+ return style;
786
+ }
787
+
788
+ // src/functions/get-style.ts
789
+ var getStyle = ({
790
+ block,
791
+ context
792
+ }) => {
793
+ return mapStyleObjToStrIfNeeded(transformStyleProperty({
794
+ style: block.style || {},
795
+ context,
796
+ block
797
+ }));
798
+ };
799
+ function mapStyleObjToStrIfNeeded(style) {
800
+ switch (TARGET) {
801
+ case "svelte":
802
+ case "vue":
803
+ case "solid":
804
+ return convertStyleMapToCSSArray(style).join(" ");
805
+ case "qwik":
806
+ case "reactNative":
807
+ case "react":
808
+ case "rsc":
809
+ return style;
810
+ }
811
+ }
812
+
729
813
  // src/functions/transform-block-properties.ts
730
814
  function transformBlockProperties({
731
815
  properties
@@ -747,8 +831,11 @@ function getBlockProperties({
747
831
  ...extractRelevantRootBlockProperties(block),
748
832
  ...block.properties,
749
833
  "builder-id": block.id,
750
- style: block.style ? getStyleAttribute(block.style) : void 0,
751
- class: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
834
+ style: getStyle({
835
+ block,
836
+ context
837
+ }),
838
+ [getClassPropName()]: [block.id, "builder-block", block.class, block.properties?.class].filter(Boolean).join(" ")
752
839
  };
753
840
  return transformBlockProperties({
754
841
  properties,
@@ -756,69 +843,6 @@ function getBlockProperties({
756
843
  block
757
844
  });
758
845
  }
759
- function getStyleAttribute(style) {
760
- switch (TARGET) {
761
- case "svelte":
762
- case "vue":
763
- case "solid":
764
- return convertStyleMapToCSSArray(style).join(" ");
765
- case "qwik":
766
- case "reactNative":
767
- case "react":
768
- case "rsc":
769
- return style;
770
- }
771
- }
772
-
773
- // src/components/dynamic-renderer/dynamic-renderer.helpers.ts
774
- var EMPTY_HTML_ELEMENTS = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
775
- var isEmptyElement = (tagName) => {
776
- return typeof tagName === "string" && EMPTY_HTML_ELEMENTS.has(tagName.toLowerCase());
777
- };
778
-
779
- // src/components/dynamic-renderer/dynamic-renderer.tsx
780
- function DynamicRenderer(props) {
781
- return createComponent(Show, {
782
- get fallback() {
783
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
784
- get component() {
785
- return props.TagName;
786
- }
787
- }));
788
- },
789
- get when() {
790
- return !isEmptyElement(props.TagName);
791
- },
792
- get children() {
793
- return createComponent(Show, {
794
- get fallback() {
795
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
796
- get component() {
797
- return props.TagName;
798
- },
799
- get children() {
800
- return props.children;
801
- }
802
- }));
803
- },
804
- get when() {
805
- return typeof props.TagName === "string";
806
- },
807
- get children() {
808
- return createComponent(Dynamic, mergeProps(() => props.attributes, () => props.actionAttributes, {
809
- get component() {
810
- return props.TagName;
811
- },
812
- get children() {
813
- return props.children;
814
- }
815
- }));
816
- }
817
- });
818
- }
819
- });
820
- }
821
- var dynamic_renderer_default = DynamicRenderer;
822
846
 
823
847
  // src/components/block/components/block-wrapper.tsx
824
848
  function BlockWrapper(props) {
@@ -921,6 +945,7 @@ function ComponentRef(props) {
921
945
  builderBlock: props.builderBlock,
922
946
  context: props.context,
923
947
  componentRef: props.componentRef,
948
+ linkComponent: props.linkComponent,
924
949
  includeBlockProps: props.includeBlockProps,
925
950
  isInteractive: props.isInteractive,
926
951
  contextValue: props.context
@@ -945,6 +970,9 @@ function ComponentRef(props) {
945
970
  },
946
971
  get registeredComponents() {
947
972
  return props.registeredComponents;
973
+ },
974
+ get linkComponent() {
975
+ return props.linkComponent;
948
976
  }
949
977
  });
950
978
  }
@@ -971,6 +999,9 @@ function RepeatedBlock(props) {
971
999
  },
972
1000
  get registeredComponents() {
973
1001
  return props.registeredComponents;
1002
+ },
1003
+ get linkComponent() {
1004
+ return props.linkComponent;
974
1005
  }
975
1006
  });
976
1007
  }
@@ -1005,6 +1036,10 @@ function Block(props) {
1005
1036
  });
1006
1037
  }
1007
1038
  function Tag() {
1039
+ const shouldUseLink = props.block.tagName === "a" || processedBlock().properties?.href || processedBlock().href;
1040
+ if (shouldUseLink) {
1041
+ return props.linkComponent || "a";
1042
+ }
1008
1043
  return props.block.tagName || "div";
1009
1044
  }
1010
1045
  function canShowBlock() {
@@ -1028,11 +1063,15 @@ function Block(props) {
1028
1063
  componentOptions: {
1029
1064
  ...getBlockComponentOptions(processedBlock()),
1030
1065
  builderContext: props.context,
1066
+ ...blockComponent()?.name === "Core:Button" || blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
1067
+ builderLinkComponent: props.linkComponent
1068
+ } : {},
1031
1069
  ...blockComponent()?.name === "Symbol" || blockComponent()?.name === "Columns" ? {
1032
1070
  builderComponents: props.registeredComponents
1033
1071
  } : {}
1034
1072
  },
1035
1073
  context: childrenContext(),
1074
+ linkComponent: props.linkComponent,
1036
1075
  registeredComponents: props.registeredComponents,
1037
1076
  builderBlock: processedBlock(),
1038
1077
  includeBlockProps: blockComponent()?.noWrap === true,
@@ -1069,6 +1108,9 @@ function Block(props) {
1069
1108
  get registeredComponents() {
1070
1109
  return componentRefProps().registeredComponents;
1071
1110
  },
1111
+ get linkComponent() {
1112
+ return componentRefProps().linkComponent;
1113
+ },
1072
1114
  get builderBlock() {
1073
1115
  return componentRefProps().builderBlock;
1074
1116
  },
@@ -1102,6 +1144,9 @@ function Block(props) {
1102
1144
  },
1103
1145
  get registeredComponents() {
1104
1146
  return props.registeredComponents;
1147
+ },
1148
+ get linkComponent() {
1149
+ return props.linkComponent;
1105
1150
  }
1106
1151
  });
1107
1152
  }
@@ -1121,6 +1166,9 @@ function Block(props) {
1121
1166
  get context() {
1122
1167
  return props.context;
1123
1168
  },
1169
+ get linkComponent() {
1170
+ return props.linkComponent;
1171
+ },
1124
1172
  get children() {
1125
1173
  return [createComponent(component_ref_default, {
1126
1174
  get componentRef() {
@@ -1138,6 +1186,9 @@ function Block(props) {
1138
1186
  get registeredComponents() {
1139
1187
  return componentRefProps().registeredComponents;
1140
1188
  },
1189
+ get linkComponent() {
1190
+ return componentRefProps().linkComponent;
1191
+ },
1141
1192
  get builderBlock() {
1142
1193
  return componentRefProps().builderBlock;
1143
1194
  },
@@ -1163,6 +1214,9 @@ function Block(props) {
1163
1214
  },
1164
1215
  get registeredComponents() {
1165
1216
  return props.registeredComponents;
1217
+ },
1218
+ get linkComponent() {
1219
+ return props.linkComponent;
1166
1220
  }
1167
1221
  });
1168
1222
  }
@@ -1275,6 +1329,9 @@ function Blocks(props) {
1275
1329
  return block.id;
1276
1330
  },
1277
1331
  block,
1332
+ get linkComponent() {
1333
+ return props.linkComponent;
1334
+ },
1278
1335
  get context() {
1279
1336
  return props.context || builderContext;
1280
1337
  },
@@ -1292,7 +1349,7 @@ function Blocks(props) {
1292
1349
  var blocks_default = Blocks;
1293
1350
 
1294
1351
  // src/blocks/columns/columns.tsx
1295
- var _tmpl$4 = /* @__PURE__ */ template(`<div>`);
1352
+ var _tmpl$2 = /* @__PURE__ */ template(`<div>`);
1296
1353
  function Columns(props) {
1297
1354
  const [gutterSize, setGutterSize] = createSignal(typeof props.space === "number" ? props.space || 0 : 20);
1298
1355
  const [cols, setCols] = createSignal(props.columns || []);
@@ -1333,7 +1390,13 @@ function Columns(props) {
1333
1390
  const mobileWidth = "100%";
1334
1391
  const mobileMarginLeft = 0;
1335
1392
  const marginLeftKey = "margin-left";
1393
+ const sharedStyles = {
1394
+ display: "flex",
1395
+ flexDirection: "column",
1396
+ alignItems: "stretch"
1397
+ };
1336
1398
  return {
1399
+ ...sharedStyles,
1337
1400
  width,
1338
1401
  [marginLeftKey]: gutterPixels,
1339
1402
  "--column-width-mobile": getMobileStyle({
@@ -1386,7 +1449,7 @@ function Columns(props) {
1386
1449
  `;
1387
1450
  }
1388
1451
  return (() => {
1389
- const _el$ = _tmpl$4();
1452
+ const _el$ = _tmpl$2();
1390
1453
  spread(_el$, mergeProps({
1391
1454
  get ["class"]() {
1392
1455
  return `builder-columns ${props.builderBlock.id}-breakpoints ` + css({
@@ -1414,52 +1477,56 @@ function Columns(props) {
1414
1477
  },
1415
1478
  children: (column, _index) => {
1416
1479
  const index = _index();
1417
- return (() => {
1418
- const _el$2 = _tmpl$4();
1419
- spread(_el$2, mergeProps({
1420
- get ["class"]() {
1421
- return "builder-column " + css({
1422
- display: "flex",
1423
- flexDirection: "column",
1424
- alignItems: "stretch"
1425
- });
1426
- },
1427
- get style() {
1428
- return columnCssVars(index);
1429
- }
1430
- }, {}, {
1431
- "key": index
1432
- }), false, true);
1433
- insert(_el$2, createComponent(blocks_default, {
1434
- path: `component.options.columns.${index}.blocks`,
1435
- get parent() {
1436
- return props.builderBlock.id;
1437
- },
1438
- styleProp: {
1439
- flexGrow: "1"
1440
- },
1441
- get context() {
1442
- return props.builderContext;
1443
- },
1444
- get registeredComponents() {
1445
- return props.builderComponents;
1446
- },
1447
- get blocks() {
1448
- return column.blocks;
1449
- }
1450
- }));
1451
- return _el$2;
1452
- })();
1480
+ return createComponent(dynamic_renderer_default, {
1481
+ key: index,
1482
+ get TagName() {
1483
+ return column.link ? props.builderLinkComponent || "a" : "div";
1484
+ },
1485
+ actionAttributes: {},
1486
+ get attributes() {
1487
+ return {
1488
+ ...{},
1489
+ ...column.link ? {
1490
+ href: column.link
1491
+ } : {},
1492
+ [getClassPropName()]: "builder-column",
1493
+ style: mapStyleObjToStrIfNeeded(columnCssVars(index))
1494
+ };
1495
+ },
1496
+ get children() {
1497
+ return createComponent(blocks_default, {
1498
+ path: `component.options.columns.${index}.blocks`,
1499
+ get parent() {
1500
+ return props.builderBlock.id;
1501
+ },
1502
+ styleProp: {
1503
+ flexGrow: "1"
1504
+ },
1505
+ get context() {
1506
+ return props.builderContext;
1507
+ },
1508
+ get registeredComponents() {
1509
+ return props.builderComponents;
1510
+ },
1511
+ get linkComponent() {
1512
+ return props.builderLinkComponent;
1513
+ },
1514
+ get blocks() {
1515
+ return column.blocks;
1516
+ }
1517
+ });
1518
+ }
1519
+ });
1453
1520
  }
1454
1521
  }), null);
1455
1522
  return _el$;
1456
1523
  })();
1457
1524
  }
1458
1525
  var columns_default = Columns;
1459
- var _tmpl$5 = /* @__PURE__ */ template(`<span>`);
1526
+ var _tmpl$3 = /* @__PURE__ */ template(`<span>`);
1460
1527
  function FragmentComponent(props) {
1461
1528
  return (() => {
1462
- const _el$ = _tmpl$5();
1529
+ const _el$ = _tmpl$3();
1463
1530
  insert(_el$, () => props.children);
1464
1531
  return _el$;
1465
1532
  })();
@@ -1514,7 +1581,7 @@ function getSrcSet(url) {
1514
1581
  }
1515
1582
 
1516
1583
  // src/blocks/image/image.tsx
1517
- var _tmpl$6 = /* @__PURE__ */ template(`<source type=image/webp>`);
1584
+ var _tmpl$4 = /* @__PURE__ */ template(`<source type=image/webp>`);
1518
1585
  var _tmpl$22 = /* @__PURE__ */ template(`<picture><img loading=lazy>`);
1519
1586
  var _tmpl$32 = /* @__PURE__ */ template(`<div>`);
1520
1587
  function Image(props) {
@@ -1560,7 +1627,7 @@ function Image(props) {
1560
1627
  return webpSrcSet();
1561
1628
  },
1562
1629
  get children() {
1563
- const _el$2 = _tmpl$6();
1630
+ const _el$2 = _tmpl$4();
1564
1631
  effect(() => setAttribute(_el$2, "srcset", webpSrcSet()));
1565
1632
  return _el$2;
1566
1633
  }
@@ -1642,10 +1709,10 @@ function Image(props) {
1642
1709
  })];
1643
1710
  }
1644
1711
  var image_default = Image;
1645
- var _tmpl$7 = /* @__PURE__ */ template(`<section>`);
1712
+ var _tmpl$5 = /* @__PURE__ */ template(`<section>`);
1646
1713
  function SectionComponent(props) {
1647
1714
  return (() => {
1648
- const _el$ = _tmpl$7();
1715
+ const _el$ = _tmpl$5();
1649
1716
  spread(_el$, mergeProps({}, () => props.attributes, {
1650
1717
  get style() {
1651
1718
  return {
@@ -2139,7 +2206,7 @@ var componentInfo3 = {
2139
2206
  advanced: true
2140
2207
  }]
2141
2208
  };
2142
- var _tmpl$8 = /* @__PURE__ */ template(`<div>`);
2209
+ var _tmpl$6 = /* @__PURE__ */ template(`<div>`);
2143
2210
  function CustomCode(props) {
2144
2211
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2145
2212
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2173,7 +2240,7 @@ function CustomCode(props) {
2173
2240
  }
2174
2241
  });
2175
2242
  return (() => {
2176
- const _el$ = _tmpl$8();
2243
+ const _el$ = _tmpl$6();
2177
2244
  const _ref$ = elementRef;
2178
2245
  typeof _ref$ === "function" ? use(_ref$, _el$) : elementRef = _el$;
2179
2246
  effect((_p$) => {
@@ -2233,7 +2300,7 @@ var SCRIPT_MIME_TYPES = ["text/javascript", "application/javascript", "applicati
2233
2300
  var isJsScript = (script) => SCRIPT_MIME_TYPES.includes(script.type);
2234
2301
 
2235
2302
  // src/blocks/embed/embed.tsx
2236
- var _tmpl$9 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2303
+ var _tmpl$7 = /* @__PURE__ */ template(`<div class=builder-embed>`);
2237
2304
  function Embed(props) {
2238
2305
  const [scriptsInserted, setScriptsInserted] = createSignal([]);
2239
2306
  const [scriptsRun, setScriptsRun] = createSignal([]);
@@ -2268,7 +2335,7 @@ function Embed(props) {
2268
2335
  }
2269
2336
  createEffect(on(() => [elem, ranInitFn()], onUpdateFn_0));
2270
2337
  return (() => {
2271
- const _el$ = _tmpl$9();
2338
+ const _el$ = _tmpl$7();
2272
2339
  const _ref$ = elem;
2273
2340
  typeof _ref$ === "function" ? use(_ref$, _el$) : elem = _el$;
2274
2341
  effect(() => _el$.innerHTML = props.content);
@@ -2424,10 +2491,10 @@ var componentInfo7 = {
2424
2491
  noWrap: true,
2425
2492
  static: true
2426
2493
  };
2427
- var _tmpl$10 = /* @__PURE__ */ template(`<img>`);
2494
+ var _tmpl$8 = /* @__PURE__ */ template(`<img>`);
2428
2495
  function ImgComponent(props) {
2429
2496
  return (() => {
2430
- const _el$ = _tmpl$10();
2497
+ const _el$ = _tmpl$8();
2431
2498
  spread(_el$, mergeProps({
2432
2499
  get style() {
2433
2500
  return {
@@ -2507,10 +2574,10 @@ var componentInfo9 = {
2507
2574
  defaultValue: "children"
2508
2575
  }]
2509
2576
  };
2510
- var _tmpl$11 = /* @__PURE__ */ template(`<div>`);
2577
+ var _tmpl$9 = /* @__PURE__ */ template(`<div>`);
2511
2578
  function Slot(props) {
2512
2579
  return (() => {
2513
- const _el$ = _tmpl$11();
2580
+ const _el$ = _tmpl$9();
2514
2581
  _el$.style.setProperty("pointer-events", "auto");
2515
2582
  spread(_el$, mergeProps(() => !props.builderContext.context?.symbolId && {
2516
2583
  "builder-slot": props.name
@@ -2590,10 +2657,10 @@ var componentInfo11 = {
2590
2657
  textAlign: "center"
2591
2658
  }
2592
2659
  };
2593
- var _tmpl$12 = /* @__PURE__ */ template(`<div class=builder-text>`);
2660
+ var _tmpl$10 = /* @__PURE__ */ template(`<div class=builder-text>`);
2594
2661
  function Text(props) {
2595
2662
  return (() => {
2596
- const _el$ = _tmpl$12();
2663
+ const _el$ = _tmpl$10();
2597
2664
  _el$.style.setProperty("outline", "none");
2598
2665
  effect(() => _el$.innerHTML = props.text?.toString() || "");
2599
2666
  return _el$;
@@ -2684,7 +2751,7 @@ var componentInfo12 = {
2684
2751
  advanced: true
2685
2752
  }]
2686
2753
  };
2687
- var _tmpl$13 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2754
+ var _tmpl$11 = /* @__PURE__ */ template(`<source type=video/mp4>`);
2688
2755
  var _tmpl$23 = /* @__PURE__ */ template(`<div>`);
2689
2756
  var _tmpl$33 = /* @__PURE__ */ template(`<div><video class=builder-video>`);
2690
2757
  function Video(props) {
@@ -2747,7 +2814,7 @@ function Video(props) {
2747
2814
  return !props.lazyLoad;
2748
2815
  },
2749
2816
  get children() {
2750
- const _el$3 = _tmpl$13();
2817
+ const _el$3 = _tmpl$11();
2751
2818
  effect(() => setAttribute(_el$3, "src", props.video));
2752
2819
  return _el$3;
2753
2820
  }
@@ -2909,10 +2976,10 @@ var getUpdateVariantVisibilityScript = ({
2909
2976
  }) => `window.${UPDATE_VARIANT_VISIBILITY_SCRIPT_FN_NAME}(
2910
2977
  "${variationId}", "${contentId}", ${isHydrationTarget}
2911
2978
  )`;
2912
- var _tmpl$14 = /* @__PURE__ */ template(`<script>`);
2979
+ var _tmpl$12 = /* @__PURE__ */ template(`<script>`);
2913
2980
  function InlinedScript(props) {
2914
2981
  return (() => {
2915
- const _el$ = _tmpl$14();
2982
+ const _el$ = _tmpl$12();
2916
2983
  effect((_p$) => {
2917
2984
  const _v$ = props.scriptStr, _v$2 = props.id || "";
2918
2985
  _v$ !== _p$._v$ && (_el$.innerHTML = _p$._v$ = _v$);
@@ -3414,7 +3481,7 @@ var getInteractionPropertiesForEvent = (event) => {
3414
3481
  };
3415
3482
 
3416
3483
  // src/constants/sdk-version.ts
3417
- var SDK_VERSION = "0.12.3";
3484
+ var SDK_VERSION = "0.12.4";
3418
3485
 
3419
3486
  // src/functions/register.ts
3420
3487
  var registry = {};
@@ -4101,6 +4168,9 @@ function ContentComponent(props) {
4101
4168
  get contentWrapperProps() {
4102
4169
  return props.contentWrapperProps;
4103
4170
  },
4171
+ get linkComponent() {
4172
+ return props.linkComponent;
4173
+ },
4104
4174
  get trustedHosts() {
4105
4175
  return props.trustedHosts;
4106
4176
  }
@@ -4143,6 +4213,9 @@ function ContentComponent(props) {
4143
4213
  },
4144
4214
  get registeredComponents() {
4145
4215
  return registeredComponents();
4216
+ },
4217
+ get linkComponent() {
4218
+ return props.linkComponent;
4146
4219
  }
4147
4220
  })];
4148
4221
  }
@@ -4236,6 +4309,9 @@ function ContentVariants(props) {
4236
4309
  get customComponents() {
4237
4310
  return props.customComponents;
4238
4311
  },
4312
+ get linkComponent() {
4313
+ return props.linkComponent;
4314
+ },
4239
4315
  get canTrack() {
4240
4316
  return props.canTrack;
4241
4317
  },
@@ -4293,6 +4369,9 @@ function ContentVariants(props) {
4293
4369
  get customComponents() {
4294
4370
  return props.customComponents;
4295
4371
  },
4372
+ get linkComponent() {
4373
+ return props.linkComponent;
4374
+ },
4296
4375
  get canTrack() {
4297
4376
  return props.canTrack;
4298
4377
  },
@@ -4352,11 +4431,11 @@ var fetchSymbolContent = async ({
4352
4431
  };
4353
4432
 
4354
4433
  // src/blocks/symbol/symbol.tsx
4355
- var _tmpl$15 = /* @__PURE__ */ template(`<div>`);
4434
+ var _tmpl$13 = /* @__PURE__ */ template(`<div>`);
4356
4435
  function Symbol(props) {
4357
4436
  const [contentToUse, setContentToUse] = createSignal(props.symbol?.content);
4358
4437
  function className() {
4359
- 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(" ");
4438
+ 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(" ");
4360
4439
  }
4361
4440
  function setContent() {
4362
4441
  if (contentToUse())
@@ -4378,7 +4457,7 @@ function Symbol(props) {
4378
4457
  }
4379
4458
  createEffect(on(() => [props.symbol], onUpdateFn_0));
4380
4459
  return (() => {
4381
- const _el$ = _tmpl$15();
4460
+ const _el$ = _tmpl$13();
4382
4461
  spread(_el$, mergeProps({
4383
4462
  get ["class"]() {
4384
4463
  return className();
@@ -4413,6 +4492,9 @@ function Symbol(props) {
4413
4492
  },
4414
4493
  get content() {
4415
4494
  return contentToUse();
4495
+ },
4496
+ get linkComponent() {
4497
+ return props.builderLinkComponent;
4416
4498
  }
4417
4499
  }));
4418
4500
  return _el$;