@contentful/experiences-visual-editor-react 1.41.0-dev-20250612T0852-ddef0ff.0 → 1.41.0-dev-20250612T1337-f66b32d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1842,18 +1842,41 @@ const transformMedia = (asset, variables, resolveDesignValue, variableName, path
1842
1842
  return asset.fields.file?.url;
1843
1843
  };
1844
1844
 
1845
+ const isAsset = (value) => {
1846
+ return (null !== value &&
1847
+ typeof value === 'object' &&
1848
+ 'sys' in value &&
1849
+ value.sys?.type === 'Asset');
1850
+ };
1851
+ const isEntry = (value) => {
1852
+ return (null !== value &&
1853
+ typeof value === 'object' &&
1854
+ 'sys' in value &&
1855
+ value.sys?.type === 'Entry');
1856
+ };
1857
+
1845
1858
  function getResolvedEntryFromLink(entryOrAsset, path, entityStore) {
1846
- if (entryOrAsset.sys.type === 'Asset') {
1859
+ if (isAsset(entryOrAsset)) {
1847
1860
  return entryOrAsset;
1848
1861
  }
1862
+ else if (!isEntry(entryOrAsset)) {
1863
+ throw new Error(`Expected an Entry or Asset, but got: ${JSON.stringify(entryOrAsset)}`);
1864
+ }
1849
1865
  const value = get(entryOrAsset, path.split('/').slice(2, -1));
1850
- if (value?.sys.type !== 'Link') {
1851
- console.warn(`Expected a link to a reference, but got: ${JSON.stringify(value)}`);
1852
- return;
1866
+ let resolvedEntity;
1867
+ if (isAsset(value) || isEntry(value)) {
1868
+ // In some cases, reference fields are already resolved
1869
+ resolvedEntity = value;
1870
+ }
1871
+ else if (value?.sys.type === 'Link') {
1872
+ // Look up the reference in the entity store
1873
+ resolvedEntity = entityStore.getEntityFromLink(value);
1874
+ if (!resolvedEntity) {
1875
+ return;
1876
+ }
1853
1877
  }
1854
- //Look up the reference in the entity store
1855
- const resolvedEntity = entityStore.getEntityFromLink(value);
1856
- if (!resolvedEntity) {
1878
+ else {
1879
+ console.warn(`Expected a link to a reference, but got: ${JSON.stringify(value)}`);
1857
1880
  return;
1858
1881
  }
1859
1882
  //resolve any embedded links - we currently only support 2 levels deep
@@ -2108,10 +2131,13 @@ class EntityStoreBase {
2108
2131
  }
2109
2132
  entity = resolvedEntity;
2110
2133
  }
2111
- else {
2134
+ else if (isAsset(linkOrEntryOrAsset) || isEntry(linkOrEntryOrAsset)) {
2112
2135
  // We already have the complete entity in preview & delivery (resolved by the CMA client)
2113
2136
  entity = linkOrEntryOrAsset;
2114
2137
  }
2138
+ else {
2139
+ throw new Error(`Unexpected object when resolving entity: ${JSON.stringify(linkOrEntryOrAsset)}`);
2140
+ }
2115
2141
  return entity;
2116
2142
  }
2117
2143
  /**
@@ -2157,14 +2183,14 @@ class EntityStoreBase {
2157
2183
  };
2158
2184
  }
2159
2185
  addEntity(entity) {
2160
- if (this.isAsset(entity)) {
2186
+ if (isAsset(entity)) {
2161
2187
  this.assetMap.set(entity.sys.id, entity);
2162
2188
  }
2163
- else if (this.isEntry(entity)) {
2189
+ else if (isEntry(entity)) {
2164
2190
  this.entryMap.set(entity.sys.id, entity);
2165
2191
  }
2166
2192
  else {
2167
- console.warn('Attempted to add an entity that is neither Asset nor Entry:', entity);
2193
+ throw new Error(`Attempted to add an entity to the store that is neither Asset nor Entry: '${JSON.stringify(entity)}'`);
2168
2194
  }
2169
2195
  }
2170
2196
  async fetchAsset(id) {
@@ -2234,7 +2260,7 @@ class EntityStoreBase {
2234
2260
  resolvedFieldset.push([entityToResolveFieldsFrom, field, _localeQualifier]);
2235
2261
  entityToResolveFieldsFrom = entity; // we move up
2236
2262
  }
2237
- else if (this.isAsset(fieldValue) || this.isEntry(fieldValue)) {
2263
+ else if (isAsset(fieldValue) || isEntry(fieldValue)) {
2238
2264
  resolvedFieldset.push([entityToResolveFieldsFrom, field, _localeQualifier]);
2239
2265
  entityToResolveFieldsFrom = fieldValue; // we move up
2240
2266
  }
@@ -2270,18 +2296,6 @@ class EntityStoreBase {
2270
2296
  const [leafEntity] = resolvedFieldset[resolvedFieldset.length - 1];
2271
2297
  return leafEntity;
2272
2298
  }
2273
- isAsset(value) {
2274
- return (null !== value &&
2275
- typeof value === 'object' &&
2276
- 'sys' in value &&
2277
- value.sys?.type === 'Asset');
2278
- }
2279
- isEntry(value) {
2280
- return (null !== value &&
2281
- typeof value === 'object' &&
2282
- 'sys' in value &&
2283
- value.sys?.type === 'Entry');
2284
- }
2285
2299
  getEntity(type, id) {
2286
2300
  if (type === 'Asset') {
2287
2301
  return this.assetMap.get(id);
@@ -5507,7 +5521,7 @@ function useSingleColumn(node, resolveDesignValue) {
5507
5521
  return false;
5508
5522
  }
5509
5523
  const { cfWrapColumns } = parentNode.data.props;
5510
- if (cfWrapColumns.type !== 'DesignValue') {
5524
+ if (cfWrapColumns?.type !== 'DesignValue') {
5511
5525
  return false;
5512
5526
  }
5513
5527
  return resolveDesignValue(cfWrapColumns.valuesByBreakpoint);