@builder.io/sdk-solid 2.0.25 → 2.0.28

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/dist/index.d.ts CHANGED
@@ -686,6 +686,10 @@ interface ContentVariantsPrps extends ExtraFrameworkProps {
686
686
  * Your API Key: needed to enable visual editing, and to dynamically fetch symbols (required).
687
687
  */
688
688
  apiKey: string;
689
+ /**
690
+ * Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
691
+ */
692
+ apiHost?: string;
689
693
  apiVersion?: ApiVersion;
690
694
  /**
691
695
  * An array of custom components to register (optional).
@@ -1012,6 +1016,10 @@ interface GetContentOptions {
1012
1016
  * Optional fetch options to be passed as the second argument to the `fetch` function.
1013
1017
  */
1014
1018
  fetchOptions?: object;
1019
+ /**
1020
+ * Sets the host of Builder API calls. (Defaults to global `https://cdn.builder.io`)
1021
+ */
1022
+ apiHost?: string;
1015
1023
  }
1016
1024
 
1017
1025
  type GetBuilderPropsOptions = (Omit<GetContentOptions, 'model'> & {
@@ -1,5 +1,5 @@
1
1
  import { delegateEvents, createComponent, spread, mergeProps, insert, effect, setAttribute, className, style, template, Dynamic, memo, use } from 'solid-js/web';
2
- import { createContext, useContext, Show, For, createSignal, createMemo, onMount, createEffect, on } from 'solid-js';
2
+ import { createContext, useContext, Show, For, createMemo, onMount, createSignal, createEffect, on } from 'solid-js';
3
3
 
4
4
  // src/blocks/button/button.tsx
5
5
 
@@ -1656,15 +1656,20 @@ var getColumnsClass = (id) => {
1656
1656
 
1657
1657
  // src/blocks/columns/columns.tsx
1658
1658
  var _tmpl$3 = /* @__PURE__ */ template(`<div>`);
1659
- var _tmpl$22 = /* @__PURE__ */ template(`<style>.div-46766f1c {
1659
+ var _tmpl$22 = /* @__PURE__ */ template(`<style>.div-a1dad3b8 {
1660
1660
  display: flex;
1661
1661
  line-height: normal;
1662
1662
  }`);
1663
1663
  function Columns(props) {
1664
- const [gutterSize, setGutterSize] = createSignal(typeof props.space === "number" ? props.space || 0 : 20);
1665
- const [cols, setCols] = createSignal(props.columns || []);
1666
- const [stackAt, setStackAt] = createSignal(props.stackColumnsAt || "tablet");
1667
- const [flexDir, setFlexDir] = createSignal(props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column");
1664
+ const gutterSize = createMemo(() => {
1665
+ return typeof props.space === "number" ? props.space || 0 : 20;
1666
+ });
1667
+ const cols = createMemo(() => {
1668
+ return props.columns || [];
1669
+ });
1670
+ const stackAt = createMemo(() => {
1671
+ return props.stackColumnsAt || "tablet";
1672
+ });
1668
1673
  function getTagName(column) {
1669
1674
  return column.link ? props.builderLinkComponent || "a" : "div";
1670
1675
  }
@@ -1688,6 +1693,9 @@ function Columns(props) {
1688
1693
  }) {
1689
1694
  return stackAt() === "never" ? desktopStyle : stackedStyle;
1690
1695
  }
1696
+ const flexDir = createMemo(() => {
1697
+ return props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column";
1698
+ });
1691
1699
  function columnsCssVars() {
1692
1700
  return {
1693
1701
  "--flex-dir": flexDir(),
@@ -1777,7 +1785,7 @@ function Columns(props) {
1777
1785
  const _el$ = _tmpl$3();
1778
1786
  spread(_el$, mergeProps({
1779
1787
  get ["class"]() {
1780
- return getColumnsClass(props.builderBlock?.id) + " div-46766f1c";
1788
+ return getColumnsClass(props.builderBlock?.id) + " div-a1dad3b8";
1781
1789
  },
1782
1790
  get style() {
1783
1791
  return columnsCssVars();
@@ -4766,7 +4774,7 @@ function getPreviewContent(_searchParams) {
4766
4774
  }
4767
4775
 
4768
4776
  // src/constants/sdk-version.ts
4769
- var SDK_VERSION = "2.0.25";
4777
+ var SDK_VERSION = "2.0.28";
4770
4778
 
4771
4779
  // src/helpers/sdk-headers.ts
4772
4780
  var getSdkHeaders = () => ({
@@ -4878,7 +4886,8 @@ var generateContentUrl = (options) => {
4878
4886
  cacheSeconds,
4879
4887
  staleCacheSeconds,
4880
4888
  sort,
4881
- includeUnpublished
4889
+ includeUnpublished,
4890
+ apiHost
4882
4891
  } = options;
4883
4892
  if (!apiKey) {
4884
4893
  throw new Error("Missing API key");
@@ -4887,7 +4896,8 @@ var generateContentUrl = (options) => {
4887
4896
  throw new Error(`Invalid apiVersion: expected 'v3', received '${apiVersion}'`);
4888
4897
  }
4889
4898
  const noTraverse = limit !== 1;
4890
- const url = new URL(`https://cdn.builder.io/api/${apiVersion}/content/${model}`);
4899
+ const baseUrl = apiHost || "https://cdn.builder.io";
4900
+ const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
4891
4901
  url.searchParams.set("apiKey", apiKey);
4892
4902
  url.searchParams.set("limit", String(limit));
4893
4903
  url.searchParams.set("noTraverse", String(noTraverse));
@@ -5175,7 +5185,10 @@ var createEvent = async ({
5175
5185
  ownerId: apiKey
5176
5186
  }
5177
5187
  });
5178
- async function _track(eventProps) {
5188
+ async function _track({
5189
+ apiHost,
5190
+ ...eventProps
5191
+ }) {
5179
5192
  if (!eventProps.apiKey) {
5180
5193
  logger.error("Missing API key for track call. Please provide your API key.");
5181
5194
  return;
@@ -5189,7 +5202,8 @@ async function _track(eventProps) {
5189
5202
  if (!(isBrowser() || TARGET === "reactNative")) {
5190
5203
  return;
5191
5204
  }
5192
- return fetch(`https://cdn.builder.io/api/v1/track`, {
5205
+ const baseUrl = apiHost || "https://cdn.builder.io";
5206
+ return fetch(`${baseUrl}/api/v1/track`, {
5193
5207
  method: "POST",
5194
5208
  body: JSON.stringify({
5195
5209
  events: [await createEvent(eventProps)]
@@ -5633,6 +5647,7 @@ function EnableEditor(props) {
5633
5647
  const variationId = props.builderContextSignal.content?.testVariationId;
5634
5648
  const contentId = props.builderContextSignal.content?.id;
5635
5649
  _track({
5650
+ apiHost: props.apiHost,
5636
5651
  type: "click",
5637
5652
  canTrack: getDefaultCanTrack(props.canTrack),
5638
5653
  contentId,
@@ -5692,7 +5707,7 @@ function EnableEditor(props) {
5692
5707
  emitStateUpdate();
5693
5708
  onMount(() => {
5694
5709
  if (isBrowser()) {
5695
- if (isEditing()) {
5710
+ if (isEditing() && !props.isNestedRender) {
5696
5711
  window.addEventListener("message", processMessage);
5697
5712
  registerInsertMenu();
5698
5713
  setupBrowserForEditing({
@@ -5718,6 +5733,7 @@ function EnableEditor(props) {
5718
5733
  const contentId = props.builderContextSignal.content?.id;
5719
5734
  const apiKeyProp = props.apiKey;
5720
5735
  _track({
5736
+ apiHost: props.apiHost,
5721
5737
  type: "impression",
5722
5738
  canTrack: true,
5723
5739
  contentId,
@@ -5966,6 +5982,9 @@ function ContentComponent(props) {
5966
5982
  },
5967
5983
  get children() {
5968
5984
  return createComponent(enable_editor_default, mergeProps({
5985
+ get apiHost() {
5986
+ return props.apiHost;
5987
+ },
5969
5988
  get nonce() {
5970
5989
  return props.nonce;
5971
5990
  },
@@ -6007,6 +6026,9 @@ function ContentComponent(props) {
6007
6026
  },
6008
6027
  get trustedHosts() {
6009
6028
  return props.trustedHosts;
6029
+ },
6030
+ get isNestedRender() {
6031
+ return props.isNestedRender;
6010
6032
  }
6011
6033
  }, {
6012
6034
  setBuilderContextSignal
@@ -6139,6 +6161,9 @@ function ContentVariants(props) {
6139
6161
  children: (variant, _index) => {
6140
6162
  _index();
6141
6163
  return createComponent(content_default, mergeProps({
6164
+ get apiHost() {
6165
+ return props.apiHost;
6166
+ },
6142
6167
  get isNestedRender() {
6143
6168
  return props.isNestedRender;
6144
6169
  },
@@ -6203,6 +6228,9 @@ function ContentVariants(props) {
6203
6228
  })];
6204
6229
  }
6205
6230
  }), createComponent(content_default, mergeProps({
6231
+ get apiHost() {
6232
+ return props.apiHost;
6233
+ },
6206
6234
  get nonce() {
6207
6235
  return props.nonce;
6208
6236
  },
@@ -75,7 +75,7 @@ function Button(props) {
75
75
  var button_default = Button;
76
76
 
77
77
  // src/blocks/columns/columns.tsx
78
- import { Show as Show7, For as For4, createSignal as createSignal7 } from "solid-js";
78
+ import { Show as Show7, For as For4, createMemo as createMemo7 } from "solid-js";
79
79
 
80
80
  // src/components/blocks/blocks.tsx
81
81
  import { useContext, Show as Show6, For as For3 } from "solid-js";
@@ -1449,14 +1449,15 @@ var getColumnsClass = (id) => {
1449
1449
 
1450
1450
  // src/blocks/columns/columns.tsx
1451
1451
  function Columns(props) {
1452
- const [gutterSize, setGutterSize] = createSignal7(
1453
- typeof props.space === "number" ? props.space || 0 : 20
1454
- );
1455
- const [cols, setCols] = createSignal7(props.columns || []);
1456
- const [stackAt, setStackAt] = createSignal7(props.stackColumnsAt || "tablet");
1457
- const [flexDir, setFlexDir] = createSignal7(
1458
- props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column"
1459
- );
1452
+ const gutterSize = createMemo7(() => {
1453
+ return typeof props.space === "number" ? props.space || 0 : 20;
1454
+ });
1455
+ const cols = createMemo7(() => {
1456
+ return props.columns || [];
1457
+ });
1458
+ const stackAt = createMemo7(() => {
1459
+ return props.stackColumnsAt || "tablet";
1460
+ });
1460
1461
  function getTagName(column) {
1461
1462
  return column.link ? props.builderLinkComponent || "a" : "div";
1462
1463
  }
@@ -1480,6 +1481,9 @@ function Columns(props) {
1480
1481
  }) {
1481
1482
  return stackAt() === "never" ? desktopStyle : stackedStyle;
1482
1483
  }
1484
+ const flexDir = createMemo7(() => {
1485
+ return props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column";
1486
+ });
1483
1487
  function columnsCssVars() {
1484
1488
  return {
1485
1489
  "--flex-dir": flexDir(),
@@ -1569,7 +1573,7 @@ function Columns(props) {
1569
1573
  }
1570
1574
  return <>
1571
1575
  <div
1572
- class={getColumnsClass(props.builderBlock?.id) + " div-46766f1c"}
1576
+ class={getColumnsClass(props.builderBlock?.id) + " div-a1dad3b8"}
1573
1577
  style={columnsCssVars()}
1574
1578
  {...{}}
1575
1579
  >
@@ -1598,7 +1602,7 @@ function Columns(props) {
1598
1602
  /></Dynamic_renderer_default>;
1599
1603
  }}</For4>
1600
1604
  </div>
1601
- <style>{`.div-46766f1c {
1605
+ <style>{`.div-a1dad3b8 {
1602
1606
  display: flex;
1603
1607
  line-height: normal;
1604
1608
  }`}</style>
@@ -4254,7 +4258,7 @@ function getPreviewContent(_searchParams) {
4254
4258
  }
4255
4259
 
4256
4260
  // src/constants/sdk-version.ts
4257
- var SDK_VERSION = "2.0.25";
4261
+ var SDK_VERSION = "2.0.28";
4258
4262
 
4259
4263
  // src/helpers/sdk-headers.ts
4260
4264
  var getSdkHeaders = () => ({
@@ -4366,7 +4370,8 @@ var generateContentUrl = (options) => {
4366
4370
  cacheSeconds,
4367
4371
  staleCacheSeconds,
4368
4372
  sort,
4369
- includeUnpublished
4373
+ includeUnpublished,
4374
+ apiHost
4370
4375
  } = options;
4371
4376
  if (!apiKey) {
4372
4377
  throw new Error("Missing API key");
@@ -4375,7 +4380,8 @@ var generateContentUrl = (options) => {
4375
4380
  throw new Error(`Invalid apiVersion: expected 'v3', received '${apiVersion}'`);
4376
4381
  }
4377
4382
  const noTraverse = limit !== 1;
4378
- const url = new URL(`https://cdn.builder.io/api/${apiVersion}/content/${model}`);
4383
+ const baseUrl = apiHost || "https://cdn.builder.io";
4384
+ const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
4379
4385
  url.searchParams.set("apiKey", apiKey);
4380
4386
  url.searchParams.set("limit", String(limit));
4381
4387
  url.searchParams.set("noTraverse", String(noTraverse));
@@ -4663,7 +4669,10 @@ var createEvent = async ({
4663
4669
  ownerId: apiKey
4664
4670
  }
4665
4671
  });
4666
- async function _track(eventProps) {
4672
+ async function _track({
4673
+ apiHost,
4674
+ ...eventProps
4675
+ }) {
4667
4676
  if (!eventProps.apiKey) {
4668
4677
  logger.error("Missing API key for track call. Please provide your API key.");
4669
4678
  return;
@@ -4677,7 +4686,8 @@ async function _track(eventProps) {
4677
4686
  if (!(isBrowser() || TARGET === "reactNative")) {
4678
4687
  return;
4679
4688
  }
4680
- return fetch(`https://cdn.builder.io/api/v1/track`, {
4689
+ const baseUrl = apiHost || "https://cdn.builder.io";
4690
+ return fetch(`${baseUrl}/api/v1/track`, {
4681
4691
  method: "POST",
4682
4692
  body: JSON.stringify({
4683
4693
  events: [await createEvent(eventProps)]
@@ -5120,6 +5130,7 @@ function EnableEditor(props) {
5120
5130
  const variationId = props.builderContextSignal.content?.testVariationId;
5121
5131
  const contentId = props.builderContextSignal.content?.id;
5122
5132
  _track({
5133
+ apiHost: props.apiHost,
5123
5134
  type: "click",
5124
5135
  canTrack: getDefaultCanTrack(props.canTrack),
5125
5136
  contentId,
@@ -5189,7 +5200,7 @@ function EnableEditor(props) {
5189
5200
  emitStateUpdate();
5190
5201
  onMount6(() => {
5191
5202
  if (isBrowser()) {
5192
- if (isEditing()) {
5203
+ if (isEditing() && !props.isNestedRender) {
5193
5204
  window.addEventListener("message", processMessage);
5194
5205
  registerInsertMenu();
5195
5206
  setupBrowserForEditing({
@@ -5220,6 +5231,7 @@ function EnableEditor(props) {
5220
5231
  const contentId = props.builderContextSignal.content?.id;
5221
5232
  const apiKeyProp = props.apiKey;
5222
5233
  _track({
5234
+ apiHost: props.apiHost,
5223
5235
  type: "impression",
5224
5236
  canTrack: true,
5225
5237
  contentId,
@@ -5459,6 +5471,7 @@ function ContentComponent(props) {
5459
5471
  registeredComponents: registeredComponents()
5460
5472
  }}
5461
5473
  ><Enable_editor_default
5474
+ apiHost={props.apiHost}
5462
5475
  nonce={props.nonce}
5463
5476
  content={props.content}
5464
5477
  data={props.data}
@@ -5473,6 +5486,7 @@ function ContentComponent(props) {
5473
5486
  contentWrapper={props.contentWrapper}
5474
5487
  contentWrapperProps={props.contentWrapperProps}
5475
5488
  trustedHosts={props.trustedHosts}
5489
+ isNestedRender={props.isNestedRender}
5476
5490
  {...{
5477
5491
  setBuilderContextSignal
5478
5492
  }}
@@ -5551,6 +5565,7 @@ function ContentVariants(props) {
5551
5565
  <For9 each={getVariants(props.content)}>{(variant, _index) => {
5552
5566
  const index = _index();
5553
5567
  return <Content_default
5568
+ apiHost={props.apiHost}
5554
5569
  isNestedRender={props.isNestedRender}
5555
5570
  key={variant.testVariationId}
5556
5571
  nonce={props.nonce}
@@ -5577,6 +5592,7 @@ function ContentVariants(props) {
5577
5592
  }}</For9>
5578
5593
  </Show15>
5579
5594
  <Content_default
5595
+ apiHost={props.apiHost}
5580
5596
  nonce={props.nonce}
5581
5597
  isNestedRender={props.isNestedRender}
5582
5598
  {...{}}
@@ -1,5 +1,5 @@
1
1
  import { delegateEvents, createComponent, spread, mergeProps, insert, effect, setAttribute, className, style, template, Dynamic, memo, use } from 'solid-js/web';
2
- import { createContext, useContext, Show, For, createSignal, createMemo, onMount, createEffect, on } from 'solid-js';
2
+ import { createContext, useContext, Show, For, createMemo, onMount, createSignal, createEffect, on } from 'solid-js';
3
3
 
4
4
  // src/blocks/button/button.tsx
5
5
 
@@ -1650,15 +1650,20 @@ var getColumnsClass = (id) => {
1650
1650
 
1651
1651
  // src/blocks/columns/columns.tsx
1652
1652
  var _tmpl$3 = /* @__PURE__ */ template(`<div>`);
1653
- var _tmpl$22 = /* @__PURE__ */ template(`<style>.div-46766f1c {
1653
+ var _tmpl$22 = /* @__PURE__ */ template(`<style>.div-a1dad3b8 {
1654
1654
  display: flex;
1655
1655
  line-height: normal;
1656
1656
  }`);
1657
1657
  function Columns(props) {
1658
- const [gutterSize, setGutterSize] = createSignal(typeof props.space === "number" ? props.space || 0 : 20);
1659
- const [cols, setCols] = createSignal(props.columns || []);
1660
- const [stackAt, setStackAt] = createSignal(props.stackColumnsAt || "tablet");
1661
- const [flexDir, setFlexDir] = createSignal(props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column");
1658
+ const gutterSize = createMemo(() => {
1659
+ return typeof props.space === "number" ? props.space || 0 : 20;
1660
+ });
1661
+ const cols = createMemo(() => {
1662
+ return props.columns || [];
1663
+ });
1664
+ const stackAt = createMemo(() => {
1665
+ return props.stackColumnsAt || "tablet";
1666
+ });
1662
1667
  function getTagName(column) {
1663
1668
  return column.link ? props.builderLinkComponent || "a" : "div";
1664
1669
  }
@@ -1682,6 +1687,9 @@ function Columns(props) {
1682
1687
  }) {
1683
1688
  return stackAt() === "never" ? desktopStyle : stackedStyle;
1684
1689
  }
1690
+ const flexDir = createMemo(() => {
1691
+ return props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column";
1692
+ });
1685
1693
  function columnsCssVars() {
1686
1694
  return {
1687
1695
  "--flex-dir": flexDir(),
@@ -1771,7 +1779,7 @@ function Columns(props) {
1771
1779
  const _el$ = _tmpl$3();
1772
1780
  spread(_el$, mergeProps({
1773
1781
  get ["class"]() {
1774
- return getColumnsClass(props.builderBlock?.id) + " div-46766f1c";
1782
+ return getColumnsClass(props.builderBlock?.id) + " div-a1dad3b8";
1775
1783
  },
1776
1784
  get style() {
1777
1785
  return columnsCssVars();
@@ -4756,7 +4764,7 @@ function getPreviewContent(_searchParams) {
4756
4764
  }
4757
4765
 
4758
4766
  // src/constants/sdk-version.ts
4759
- var SDK_VERSION = "2.0.25";
4767
+ var SDK_VERSION = "2.0.28";
4760
4768
 
4761
4769
  // src/helpers/sdk-headers.ts
4762
4770
  var getSdkHeaders = () => ({
@@ -4866,7 +4874,8 @@ var generateContentUrl = (options) => {
4866
4874
  cacheSeconds,
4867
4875
  staleCacheSeconds,
4868
4876
  sort,
4869
- includeUnpublished
4877
+ includeUnpublished,
4878
+ apiHost
4870
4879
  } = options;
4871
4880
  if (!apiKey) {
4872
4881
  throw new Error("Missing API key");
@@ -4875,7 +4884,8 @@ var generateContentUrl = (options) => {
4875
4884
  throw new Error(`Invalid apiVersion: expected 'v3', received '${apiVersion}'`);
4876
4885
  }
4877
4886
  const noTraverse = limit !== 1;
4878
- const url = new URL(`https://cdn.builder.io/api/${apiVersion}/content/${model}`);
4887
+ const baseUrl = apiHost || "https://cdn.builder.io";
4888
+ const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
4879
4889
  url.searchParams.set("apiKey", apiKey);
4880
4890
  url.searchParams.set("limit", String(limit));
4881
4891
  url.searchParams.set("noTraverse", String(noTraverse));
@@ -5161,7 +5171,10 @@ var createEvent = async ({
5161
5171
  ownerId: apiKey
5162
5172
  }
5163
5173
  });
5164
- async function _track(eventProps) {
5174
+ async function _track({
5175
+ apiHost,
5176
+ ...eventProps
5177
+ }) {
5165
5178
  if (!eventProps.apiKey) {
5166
5179
  logger.error("Missing API key for track call. Please provide your API key.");
5167
5180
  return;
@@ -5175,7 +5188,8 @@ async function _track(eventProps) {
5175
5188
  if (!(isBrowser() || TARGET === "reactNative")) {
5176
5189
  return;
5177
5190
  }
5178
- return fetch(`https://cdn.builder.io/api/v1/track`, {
5191
+ const baseUrl = apiHost || "https://cdn.builder.io";
5192
+ return fetch(`${baseUrl}/api/v1/track`, {
5179
5193
  method: "POST",
5180
5194
  body: JSON.stringify({
5181
5195
  events: [await createEvent(eventProps)]
@@ -5617,6 +5631,7 @@ function EnableEditor(props) {
5617
5631
  const variationId = props.builderContextSignal.content?.testVariationId;
5618
5632
  const contentId = props.builderContextSignal.content?.id;
5619
5633
  _track({
5634
+ apiHost: props.apiHost,
5620
5635
  type: "click",
5621
5636
  canTrack: getDefaultCanTrack(props.canTrack),
5622
5637
  contentId,
@@ -5675,7 +5690,7 @@ function EnableEditor(props) {
5675
5690
  emitStateUpdate();
5676
5691
  onMount(() => {
5677
5692
  if (isBrowser()) {
5678
- if (isEditing()) {
5693
+ if (isEditing() && !props.isNestedRender) {
5679
5694
  window.addEventListener("message", processMessage);
5680
5695
  registerInsertMenu();
5681
5696
  setupBrowserForEditing({
@@ -5701,6 +5716,7 @@ function EnableEditor(props) {
5701
5716
  const contentId = props.builderContextSignal.content?.id;
5702
5717
  const apiKeyProp = props.apiKey;
5703
5718
  _track({
5719
+ apiHost: props.apiHost,
5704
5720
  type: "impression",
5705
5721
  canTrack: true,
5706
5722
  contentId,
@@ -5949,6 +5965,9 @@ function ContentComponent(props) {
5949
5965
  },
5950
5966
  get children() {
5951
5967
  return createComponent(enable_editor_default, mergeProps({
5968
+ get apiHost() {
5969
+ return props.apiHost;
5970
+ },
5952
5971
  get nonce() {
5953
5972
  return props.nonce;
5954
5973
  },
@@ -5990,6 +6009,9 @@ function ContentComponent(props) {
5990
6009
  },
5991
6010
  get trustedHosts() {
5992
6011
  return props.trustedHosts;
6012
+ },
6013
+ get isNestedRender() {
6014
+ return props.isNestedRender;
5993
6015
  }
5994
6016
  }, {
5995
6017
  setBuilderContextSignal
@@ -6122,6 +6144,9 @@ function ContentVariants(props) {
6122
6144
  children: (variant, _index) => {
6123
6145
  _index();
6124
6146
  return createComponent(content_default, mergeProps({
6147
+ get apiHost() {
6148
+ return props.apiHost;
6149
+ },
6125
6150
  get isNestedRender() {
6126
6151
  return props.isNestedRender;
6127
6152
  },
@@ -6186,6 +6211,9 @@ function ContentVariants(props) {
6186
6211
  })];
6187
6212
  }
6188
6213
  }), createComponent(content_default, mergeProps({
6214
+ get apiHost() {
6215
+ return props.apiHost;
6216
+ },
6189
6217
  get nonce() {
6190
6218
  return props.nonce;
6191
6219
  },
@@ -75,7 +75,7 @@ function Button(props) {
75
75
  var button_default = Button;
76
76
 
77
77
  // src/blocks/columns/columns.tsx
78
- import { Show as Show7, For as For4, createSignal as createSignal7 } from "solid-js";
78
+ import { Show as Show7, For as For4, createMemo as createMemo7 } from "solid-js";
79
79
 
80
80
  // src/components/blocks/blocks.tsx
81
81
  import { useContext, Show as Show6, For as For3 } from "solid-js";
@@ -1443,14 +1443,15 @@ var getColumnsClass = (id) => {
1443
1443
 
1444
1444
  // src/blocks/columns/columns.tsx
1445
1445
  function Columns(props) {
1446
- const [gutterSize, setGutterSize] = createSignal7(
1447
- typeof props.space === "number" ? props.space || 0 : 20
1448
- );
1449
- const [cols, setCols] = createSignal7(props.columns || []);
1450
- const [stackAt, setStackAt] = createSignal7(props.stackColumnsAt || "tablet");
1451
- const [flexDir, setFlexDir] = createSignal7(
1452
- props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column"
1453
- );
1446
+ const gutterSize = createMemo7(() => {
1447
+ return typeof props.space === "number" ? props.space || 0 : 20;
1448
+ });
1449
+ const cols = createMemo7(() => {
1450
+ return props.columns || [];
1451
+ });
1452
+ const stackAt = createMemo7(() => {
1453
+ return props.stackColumnsAt || "tablet";
1454
+ });
1454
1455
  function getTagName(column) {
1455
1456
  return column.link ? props.builderLinkComponent || "a" : "div";
1456
1457
  }
@@ -1474,6 +1475,9 @@ function Columns(props) {
1474
1475
  }) {
1475
1476
  return stackAt() === "never" ? desktopStyle : stackedStyle;
1476
1477
  }
1478
+ const flexDir = createMemo7(() => {
1479
+ return props.stackColumnsAt === "never" ? "row" : props.reverseColumnsWhenStacked ? "column-reverse" : "column";
1480
+ });
1477
1481
  function columnsCssVars() {
1478
1482
  return {
1479
1483
  "--flex-dir": flexDir(),
@@ -1563,7 +1567,7 @@ function Columns(props) {
1563
1567
  }
1564
1568
  return <>
1565
1569
  <div
1566
- class={getColumnsClass(props.builderBlock?.id) + " div-46766f1c"}
1570
+ class={getColumnsClass(props.builderBlock?.id) + " div-a1dad3b8"}
1567
1571
  style={columnsCssVars()}
1568
1572
  {...{}}
1569
1573
  >
@@ -1592,7 +1596,7 @@ function Columns(props) {
1592
1596
  /></Dynamic_renderer_default>;
1593
1597
  }}</For4>
1594
1598
  </div>
1595
- <style>{`.div-46766f1c {
1599
+ <style>{`.div-a1dad3b8 {
1596
1600
  display: flex;
1597
1601
  line-height: normal;
1598
1602
  }`}</style>
@@ -4244,7 +4248,7 @@ function getPreviewContent(_searchParams) {
4244
4248
  }
4245
4249
 
4246
4250
  // src/constants/sdk-version.ts
4247
- var SDK_VERSION = "2.0.25";
4251
+ var SDK_VERSION = "2.0.28";
4248
4252
 
4249
4253
  // src/helpers/sdk-headers.ts
4250
4254
  var getSdkHeaders = () => ({
@@ -4354,7 +4358,8 @@ var generateContentUrl = (options) => {
4354
4358
  cacheSeconds,
4355
4359
  staleCacheSeconds,
4356
4360
  sort,
4357
- includeUnpublished
4361
+ includeUnpublished,
4362
+ apiHost
4358
4363
  } = options;
4359
4364
  if (!apiKey) {
4360
4365
  throw new Error("Missing API key");
@@ -4363,7 +4368,8 @@ var generateContentUrl = (options) => {
4363
4368
  throw new Error(`Invalid apiVersion: expected 'v3', received '${apiVersion}'`);
4364
4369
  }
4365
4370
  const noTraverse = limit !== 1;
4366
- const url = new URL(`https://cdn.builder.io/api/${apiVersion}/content/${model}`);
4371
+ const baseUrl = apiHost || "https://cdn.builder.io";
4372
+ const url = new URL(`${baseUrl}/api/${apiVersion}/content/${model}`);
4367
4373
  url.searchParams.set("apiKey", apiKey);
4368
4374
  url.searchParams.set("limit", String(limit));
4369
4375
  url.searchParams.set("noTraverse", String(noTraverse));
@@ -4649,7 +4655,10 @@ var createEvent = async ({
4649
4655
  ownerId: apiKey
4650
4656
  }
4651
4657
  });
4652
- async function _track(eventProps) {
4658
+ async function _track({
4659
+ apiHost,
4660
+ ...eventProps
4661
+ }) {
4653
4662
  if (!eventProps.apiKey) {
4654
4663
  logger.error("Missing API key for track call. Please provide your API key.");
4655
4664
  return;
@@ -4663,7 +4672,8 @@ async function _track(eventProps) {
4663
4672
  if (!(isBrowser() || TARGET === "reactNative")) {
4664
4673
  return;
4665
4674
  }
4666
- return fetch(`https://cdn.builder.io/api/v1/track`, {
4675
+ const baseUrl = apiHost || "https://cdn.builder.io";
4676
+ return fetch(`${baseUrl}/api/v1/track`, {
4667
4677
  method: "POST",
4668
4678
  body: JSON.stringify({
4669
4679
  events: [await createEvent(eventProps)]
@@ -5104,6 +5114,7 @@ function EnableEditor(props) {
5104
5114
  const variationId = props.builderContextSignal.content?.testVariationId;
5105
5115
  const contentId = props.builderContextSignal.content?.id;
5106
5116
  _track({
5117
+ apiHost: props.apiHost,
5107
5118
  type: "click",
5108
5119
  canTrack: getDefaultCanTrack(props.canTrack),
5109
5120
  contentId,
@@ -5172,7 +5183,7 @@ function EnableEditor(props) {
5172
5183
  emitStateUpdate();
5173
5184
  onMount6(() => {
5174
5185
  if (isBrowser()) {
5175
- if (isEditing()) {
5186
+ if (isEditing() && !props.isNestedRender) {
5176
5187
  window.addEventListener("message", processMessage);
5177
5188
  registerInsertMenu();
5178
5189
  setupBrowserForEditing({
@@ -5203,6 +5214,7 @@ function EnableEditor(props) {
5203
5214
  const contentId = props.builderContextSignal.content?.id;
5204
5215
  const apiKeyProp = props.apiKey;
5205
5216
  _track({
5217
+ apiHost: props.apiHost,
5206
5218
  type: "impression",
5207
5219
  canTrack: true,
5208
5220
  contentId,
@@ -5442,6 +5454,7 @@ function ContentComponent(props) {
5442
5454
  registeredComponents: registeredComponents()
5443
5455
  }}
5444
5456
  ><Enable_editor_default
5457
+ apiHost={props.apiHost}
5445
5458
  nonce={props.nonce}
5446
5459
  content={props.content}
5447
5460
  data={props.data}
@@ -5456,6 +5469,7 @@ function ContentComponent(props) {
5456
5469
  contentWrapper={props.contentWrapper}
5457
5470
  contentWrapperProps={props.contentWrapperProps}
5458
5471
  trustedHosts={props.trustedHosts}
5472
+ isNestedRender={props.isNestedRender}
5459
5473
  {...{
5460
5474
  setBuilderContextSignal
5461
5475
  }}
@@ -5534,6 +5548,7 @@ function ContentVariants(props) {
5534
5548
  <For9 each={getVariants(props.content)}>{(variant, _index) => {
5535
5549
  const index = _index();
5536
5550
  return <Content_default
5551
+ apiHost={props.apiHost}
5537
5552
  isNestedRender={props.isNestedRender}
5538
5553
  key={variant.testVariationId}
5539
5554
  nonce={props.nonce}
@@ -5560,6 +5575,7 @@ function ContentVariants(props) {
5560
5575
  }}</For9>
5561
5576
  </Show15>
5562
5577
  <Content_default
5578
+ apiHost={props.apiHost}
5563
5579
  nonce={props.nonce}
5564
5580
  isNestedRender={props.isNestedRender}
5565
5581
  {...{}}