@contentful/field-editor-reference 6.12.1 → 6.13.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.
Files changed (27) hide show
  1. package/dist/cjs/__fixtures__/FakeSdk.js +6 -6
  2. package/dist/cjs/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +9 -15
  3. package/dist/cjs/assets/WrappedAssetCard/WrappedAssetCard.js +3 -4
  4. package/dist/cjs/assets/WrappedAssetCard/WrappedAssetLink.js +2 -3
  5. package/dist/cjs/common/EntityStore.js +102 -32
  6. package/dist/cjs/components/EntityStatusBadge/EntityStatusBadge.js +5 -6
  7. package/dist/cjs/components/LinkActions/CombinedLinkActions.js +2 -2
  8. package/dist/cjs/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +10 -22
  9. package/dist/cjs/entries/WrappedEntryCard/WrappedEntryCard.js +3 -4
  10. package/dist/cjs/resources/Cards/ResourceCard.spec.js +14 -11
  11. package/dist/esm/__fixtures__/FakeSdk.js +7 -7
  12. package/dist/esm/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +10 -16
  13. package/dist/esm/assets/WrappedAssetCard/WrappedAssetCard.js +3 -4
  14. package/dist/esm/assets/WrappedAssetCard/WrappedAssetLink.js +2 -3
  15. package/dist/esm/common/EntityStore.js +103 -33
  16. package/dist/esm/components/EntityStatusBadge/EntityStatusBadge.js +5 -6
  17. package/dist/esm/components/LinkActions/CombinedLinkActions.js +2 -2
  18. package/dist/esm/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +11 -18
  19. package/dist/esm/entries/WrappedEntryCard/WrappedEntryCard.js +3 -4
  20. package/dist/esm/resources/Cards/ResourceCard.spec.js +14 -11
  21. package/dist/types/assets/WrappedAssetCard/WrappedAssetCard.d.ts +4 -5
  22. package/dist/types/assets/WrappedAssetCard/WrappedAssetLink.d.ts +3 -4
  23. package/dist/types/common/EntityStore.d.ts +7 -2
  24. package/dist/types/common/customCardTypes.d.ts +7 -8
  25. package/dist/types/components/EntityStatusBadge/EntityStatusBadge.d.ts +4 -5
  26. package/dist/types/entries/WrappedEntryCard/WrappedEntryCard.d.ts +4 -5
  27. package/package.json +5 -5
@@ -57,8 +57,8 @@ function newReferenceEditorFakeSdk(props) {
57
57
  const sdk = {
58
58
  field,
59
59
  locales,
60
- cmaAdapter: (0, _fieldeditortestutils.createFakeCMAAdapter)({
61
- Entry: {
60
+ cma: {
61
+ entry: {
62
62
  get: async ({ entryId })=>{
63
63
  if (props?.fetchDelay) {
64
64
  await delay(props.fetchDelay);
@@ -75,7 +75,7 @@ function newReferenceEditorFakeSdk(props) {
75
75
  return Promise.reject({});
76
76
  }
77
77
  },
78
- Asset: {
78
+ asset: {
79
79
  get: async ({ assetId })=>{
80
80
  if (props?.fetchDelay) {
81
81
  await delay(props.fetchDelay);
@@ -92,7 +92,7 @@ function newReferenceEditorFakeSdk(props) {
92
92
  return Promise.reject({});
93
93
  }
94
94
  },
95
- Space: {
95
+ space: {
96
96
  get: async (params)=>{
97
97
  if (params.spaceId === _fixtures.spaces.indifferent.sys.id) {
98
98
  return _fixtures.spaces.indifferent;
@@ -100,7 +100,7 @@ function newReferenceEditorFakeSdk(props) {
100
100
  return Promise.reject({});
101
101
  }
102
102
  },
103
- ContentType: {
103
+ contentType: {
104
104
  get: async ({ contentTypeId })=>{
105
105
  if (contentTypeId === _fixtures.contentTypes.published.sys.id) {
106
106
  return _fixtures.contentTypes.published;
@@ -111,7 +111,7 @@ function newReferenceEditorFakeSdk(props) {
111
111
  Locale: {
112
112
  getMany: async ()=>_fixtures.locales.list
113
113
  }
114
- }),
114
+ },
115
115
  space: {
116
116
  ...space,
117
117
  getCachedContentTypes () {
@@ -57,25 +57,20 @@ function _interop_require_wildcard(obj, nodeInterop) {
57
57
  return newObj;
58
58
  }
59
59
  function FetchingWrappedAssetCard(props) {
60
- const { releaseVersionMap, locales, activeRelease, releases, isActiveReleaseLoading } = (0, _fieldeditorshared.parseReleaseParams)(props.sdk.parameters.instance.release);
61
- const { data: asset, status } = (0, _EntityStore.useEntity)('Asset', props.assetId);
60
+ const { data: asset, status, currentEntity } = (0, _EntityStore.useEntity)('Asset', props.assetId);
62
61
  const { getEntityScheduledActions } = (0, _EntityStore.useEntityLoader)();
63
62
  const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Asset', props.assetId), [
64
63
  getEntityScheduledActions,
65
64
  props.assetId
66
65
  ]);
66
+ const activeLocales = (0, _fieldeditorshared.useActiveLocales)(props.sdk);
67
67
  const localesStatusMap = (0, _fieldeditorshared.useLocalePublishStatus)(asset, props.sdk.locales);
68
- const { releaseLocalesStatusMap } = (0, _fieldeditorshared.useActiveReleaseLocalesStatuses)({
69
- currentEntityDraft: asset,
70
- entityId: props.assetId,
71
- entityType: 'Asset',
72
- releaseVersionMap,
73
- locales,
74
- activeRelease,
75
- releases
68
+ const { releaseStatusMap, releaseAction } = (0, _fieldeditorshared.useReleaseStatus)({
69
+ entity: asset,
70
+ previousEntityOnTimeline: currentEntity,
71
+ release: props.sdk.release,
72
+ locales: props.sdk.locales
76
73
  });
77
- const { releaseAction } = (0, _fieldeditorshared.getEntityReleaseStatus)(props.assetId, locales, activeRelease);
78
- const activeLocales = (0, _fieldeditorshared.useActiveLocales)(props.sdk);
79
74
  _react.useEffect(()=>{
80
75
  if (asset) {
81
76
  props.onAction && props.onAction({
@@ -140,9 +135,8 @@ function FetchingWrappedAssetCard(props) {
140
135
  useLocalizedEntityStatus: props.sdk.parameters.instance.useLocalizedEntityStatus,
141
136
  localesStatusMap,
142
137
  activeLocales,
143
- releaseLocalesStatusMap,
144
- isReleasesLoading: isActiveReleaseLoading,
145
- activeRelease,
138
+ releaseStatusMap,
139
+ release: props.sdk.release,
146
140
  releaseAction
147
141
  };
148
142
  if (status === 'loading') {
@@ -86,7 +86,7 @@ function getFileType(file) {
86
86
  });
87
87
  return groupToIconMap[groupName] || 'archive';
88
88
  }
89
- const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCode, activeLocales, localesStatusMap, isDisabled, isSelected, isClickable, useLocalizedEntityStatus, renderDragHandle, getEntityScheduledActions, onEdit, getAssetUrl, onRemove, releaseAction, releaseLocalesStatusMap, isReleasesLoading, activeRelease })=>{
89
+ const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCode, activeLocales, localesStatusMap, isDisabled, isSelected, isClickable, useLocalizedEntityStatus, renderDragHandle, getEntityScheduledActions, onEdit, getAssetUrl, onRemove, releaseAction, releaseStatusMap, release })=>{
90
90
  const status = _fieldeditorshared.entityHelpers.getEntityStatus(asset.sys, useLocalizedEntityStatus ? localeCode : undefined);
91
91
  if (status === 'deleted') {
92
92
  return /*#__PURE__*/ _react.createElement(_components.MissingAssetCard, {
@@ -119,9 +119,8 @@ const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCod
119
119
  localesStatusMap: localesStatusMap,
120
120
  activeLocales: activeLocales,
121
121
  releaseAction: releaseAction,
122
- releaseLocalesStatusMap: releaseLocalesStatusMap,
123
- isReleasesLoading: isReleasesLoading,
124
- activeRelease: activeRelease
122
+ releaseStatusMap: releaseStatusMap,
123
+ release: release
125
124
  }),
126
125
  src: entityFile && entityFile.url ? size === 'small' ? `${entityFile.url}?w=150&h=150&fit=thumb` : `${entityFile.url}?h=300` : '',
127
126
  onClick: isClickable ? (e)=>{
@@ -86,9 +86,8 @@ const WrappedAssetLink = (props)=>{
86
86
  localesStatusMap: props.localesStatusMap,
87
87
  activeLocales: props.activeLocales,
88
88
  releaseAction: props.releaseAction,
89
- releaseLocalesStatusMap: props.releaseLocalesStatusMap,
90
- isReleasesLoading: props.isReleasesLoading,
91
- activeRelease: props.activeRelease
89
+ releaseStatusMap: props.releaseStatusMap,
90
+ release: props.release
92
91
  }),
93
92
  thumbnailElement: entityFile && (0, _fieldeditorshared.isValidImage)(entityFile) ? /*#__PURE__*/ _react.createElement(_components.AssetThumbnail, {
94
93
  file: entityFile
@@ -241,12 +241,20 @@ async function fetchExternalResource({ urn, fetch, options, spaceId, environment
241
241
  'resource-types',
242
242
  spaceId,
243
243
  environmentId
244
- ], ({ cmaClient })=>(0, _contentfulmanagement.fetchAll)(({ query })=>cmaClient.resourceType.getForEnvironment({
244
+ ], ({ cmaClient })=>{
245
+ console.log('>> fetch resource types', {
246
+ spaceId,
247
+ environmentId
248
+ });
249
+ return (0, _contentfulmanagement.fetchAll)(({ query })=>cmaClient.resourceType.getForEnvironment({
245
250
  spaceId,
246
251
  environmentId,
247
252
  query
248
- }), {}))
253
+ }), {});
254
+ })
249
255
  ]);
256
+ console.log('>> resource', resource);
257
+ console.log('>> resourceTypes', resourceTypes);
250
258
  const resourceTypeEntity = resourceTypes.find((rt)=>rt.sys.id === resourceType);
251
259
  if (!resourceTypeEntity) {
252
260
  throw new UnsupportedError('Unsupported resource type');
@@ -265,6 +273,7 @@ async function fetchExternalResource({ urn, fetch, options, spaceId, environment
265
273
  const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0, _constate.default)(function useInitServices(props) {
266
274
  const currentSpaceId = props.sdk.ids.space;
267
275
  const currentEnvironmentId = props.sdk.ids.environmentAlias ?? props.sdk.ids.environment;
276
+ const releaseId = props.sdk.ids.release;
268
277
  const environmentIds = (0, _react.useMemo)(()=>[
269
278
  props.sdk.ids.environmentAlias,
270
279
  props.sdk.ids.environment
@@ -275,13 +284,7 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
275
284
  const queryClient = (0, _queryClient.useQueryClient)();
276
285
  const queryCache = queryClient.getQueryCache();
277
286
  const entityChangeUnsubscribers = (0, _react.useRef)({});
278
- const cmaClient = (0, _react.useMemo)(()=>(0, _contentfulmanagement.createClient)({
279
- apiAdapter: props.sdk.cmaAdapter
280
- }, {
281
- type: 'plain'
282
- }), [
283
- props.sdk.cmaAdapter
284
- ]);
287
+ const cmaClient = props.sdk.cma;
285
288
  const queryQueue = (0, _react.useMemo)(()=>{
286
289
  if (props.queryConcurrency) {
287
290
  return new _pqueue.default({
@@ -304,38 +307,92 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
304
307
  queryQueue,
305
308
  cmaClient
306
309
  ]);
307
- const getEntity = (0, _react.useCallback)(function getEntity(entityType, entityId, options) {
310
+ const isReleaseRequestError = (0, _react.useCallback)(function isReleaseRequestError(error, spaceId, environmentId) {
311
+ return !!releaseId && (!spaceId || spaceId === currentSpaceId) && (!environmentId || environmentId === currentEnvironmentId) && error instanceof Error && 'status' in error && error.status === 404;
312
+ }, [
313
+ releaseId,
314
+ currentSpaceId,
315
+ currentEnvironmentId
316
+ ]);
317
+ const getEntity = (0, _react.useCallback)(function getEntity(entityType, entityId, releaseId, options) {
308
318
  const spaceId = options?.spaceId ?? currentSpaceId;
309
319
  const environmentId = options?.environmentId ?? currentEnvironmentId;
310
320
  const queryKey = [
311
321
  entityType,
312
322
  entityId,
313
323
  spaceId,
314
- environmentId
324
+ environmentId,
325
+ releaseId
315
326
  ];
316
- return fetch(queryKey, ({ cmaClient })=>{
327
+ return fetch(queryKey, async ({ cmaClient })=>{
317
328
  if (entityType === 'Entry') {
318
- return cmaClient.entry.get({
319
- entryId: entityId,
320
- spaceId,
321
- environmentId
322
- });
329
+ try {
330
+ return cmaClient.entry.get({
331
+ entryId: entityId,
332
+ spaceId,
333
+ environmentId,
334
+ releaseId
335
+ });
336
+ } catch (error) {
337
+ if (isReleaseRequestError(error, spaceId, environmentId)) {
338
+ const currentEntry = await cmaClient.entry.get({
339
+ entryId: entityId,
340
+ spaceId,
341
+ environmentId,
342
+ releaseId: undefined
343
+ });
344
+ currentEntry.sys.release = {
345
+ sys: {
346
+ type: 'Link',
347
+ linkType: 'Release',
348
+ id: releaseId
349
+ }
350
+ };
351
+ return currentEntry;
352
+ }
353
+ throw error;
354
+ }
323
355
  }
324
356
  if (entityType === 'Asset') {
325
- return cmaClient.asset.get({
326
- assetId: entityId,
327
- spaceId,
328
- environmentId
329
- });
357
+ try {
358
+ return cmaClient.asset.get({
359
+ assetId: entityId,
360
+ spaceId,
361
+ environmentId,
362
+ releaseId
363
+ });
364
+ } catch (error) {
365
+ if (isReleaseRequestError(error, spaceId, environmentId)) {
366
+ const currentAsset = cmaClient.asset.get({
367
+ assetId: entityId,
368
+ spaceId,
369
+ environmentId,
370
+ releaseId: undefined
371
+ });
372
+ currentAsset.sys.release = {
373
+ sys: {
374
+ type: 'Link',
375
+ linkType: 'Release',
376
+ id: releaseId
377
+ }
378
+ };
379
+ return currentAsset;
380
+ }
381
+ throw error;
382
+ }
330
383
  }
331
384
  throw new UnsupportedError('Unsupported entity type');
332
385
  }, options);
333
386
  }, [
334
387
  fetch,
335
388
  currentSpaceId,
336
- currentEnvironmentId
389
+ currentEnvironmentId,
390
+ isReleaseRequestError
337
391
  ]);
338
392
  const getEntityScheduledActions = (0, _react.useCallback)(function getEntityScheduledActions(entityType, entityId, options) {
393
+ if (releaseId) {
394
+ return new Promise((resolve)=>resolve([]));
395
+ }
339
396
  const fixedEntityCacheId = 'scheduledActionEntityId';
340
397
  const maxScheduledActions = 500;
341
398
  const spaceId = options?.spaceId ?? currentSpaceId;
@@ -345,7 +402,8 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
345
402
  entityType,
346
403
  fixedEntityCacheId,
347
404
  spaceId,
348
- environmentId
405
+ environmentId,
406
+ releaseId
349
407
  ];
350
408
  return fetch(queryKey, async ({ cmaClient })=>{
351
409
  const response = await cmaClient.scheduledActions.getMany({
@@ -362,7 +420,8 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
362
420
  }, [
363
421
  fetch,
364
422
  currentSpaceId,
365
- currentEnvironmentId
423
+ currentEnvironmentId,
424
+ releaseId
366
425
  ]);
367
426
  const getResource = (0, _react.useCallback)(function getResource(resourceType, urn, options) {
368
427
  const queryKey = [
@@ -490,23 +549,34 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
490
549
  getResourceProvider
491
550
  }), ({ ids })=>({
492
551
  environment: ids.environmentAlias ?? ids.environment,
493
- space: ids.space
552
+ space: ids.space,
553
+ releaseId: ids.release
494
554
  }));
495
555
  function useEntity(entityType, entityId, options) {
496
- const { space, environment } = useCurrentIds();
556
+ const { space, environment, releaseId } = useCurrentIds();
497
557
  const { getEntity } = useEntityLoader();
498
- const queryKey = [
558
+ const { status, data } = (0, _queryClient.useQuery)([
499
559
  entityType,
500
560
  entityId,
501
561
  options?.spaceId ?? space,
502
- options?.environmentId ?? environment
503
- ];
504
- const { status, data } = (0, _queryClient.useQuery)(queryKey, ()=>getEntity(entityType, entityId, options), {
562
+ options?.environmentId ?? environment,
563
+ releaseId
564
+ ], ()=>getEntity(entityType, entityId, releaseId, options), {
505
565
  enabled: options?.enabled
506
566
  });
567
+ const { data: currentEntity } = (0, _queryClient.useQuery)([
568
+ entityType,
569
+ entityId,
570
+ options?.spaceId ?? space,
571
+ options?.environmentId ?? environment,
572
+ undefined
573
+ ], ()=>getEntity(entityType, entityId, undefined, options), {
574
+ enabled: options?.enabled && !!releaseId
575
+ });
507
576
  return {
508
577
  status,
509
- data
578
+ data,
579
+ currentEntity
510
580
  };
511
581
  }
512
582
  function useResource(resourceType, urn, { locale, ...options } = {}) {
@@ -18,20 +18,19 @@ function _interop_require_default(obj) {
18
18
  default: obj
19
19
  };
20
20
  }
21
- function EntityStatusBadge({ entityType, getEntityScheduledActions, status, useLocalizedEntityStatus, localesStatusMap, activeLocales, entity, releaseLocalesStatusMap, isReleasesLoading, releaseAction, activeRelease, ...props }) {
21
+ function EntityStatusBadge({ entityType, getEntityScheduledActions, status, useLocalizedEntityStatus, localesStatusMap, activeLocales, entity, releaseStatusMap, releaseAction, release, ...props }) {
22
22
  const { isError, isLoading, jobs } = (0, _ScheduledIconWithTooltip.useScheduledActions)({
23
23
  entityId: entity.sys.id,
24
24
  entityType,
25
25
  getEntityScheduledActions
26
26
  });
27
- if (activeRelease && releaseLocalesStatusMap && useLocalizedEntityStatus && activeLocales) {
27
+ if (release && releaseStatusMap && useLocalizedEntityStatus && activeLocales) {
28
28
  return /*#__PURE__*/ _react.default.createElement(_fieldeditorshared.ReleaseEntityStatusPopover, {
29
- releaseLocalesStatusMap: releaseLocalesStatusMap,
30
- activeLocales: activeLocales,
31
- isLoading: isReleasesLoading
29
+ releaseStatusMap: releaseStatusMap,
30
+ activeLocales: activeLocales
32
31
  });
33
32
  }
34
- if (activeRelease && releaseAction) {
33
+ if (release && releaseAction) {
35
34
  return /*#__PURE__*/ _react.default.createElement(_fieldeditorshared.ReleaseEntityStatusBadge, {
36
35
  action: releaseAction
37
36
  });
@@ -84,12 +84,12 @@ function CombinedEntryLinkActions(props) {
84
84
  onSelect: (contentTypeId)=>{
85
85
  return contentTypeId ? props.onCreate(contentTypeId) : Promise.resolve();
86
86
  },
87
- customDropdownItems: props.canLinkEntity ? /*#__PURE__*/ _react.createElement(_f36components.Menu, null, /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
87
+ customDropdownItems: props.canLinkEntity ? /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
88
88
  testId: testIds.linkExisting,
89
89
  onClick: ()=>{
90
90
  props.onLinkExisting();
91
91
  }
92
- }, "Add existing content")) : undefined
92
+ }, "Add existing content") : undefined
93
93
  });
94
94
  } else if (props.canLinkEntity) {
95
95
  return /*#__PURE__*/ _react.createElement(_f36components.Button, {
@@ -11,15 +11,9 @@ Object.defineProperty(exports, "FetchingWrappedEntryCard", {
11
11
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  const _f36components = require("@contentful/f36-components");
13
13
  const _fieldeditorshared = require("@contentful/field-editor-shared");
14
- const _get = /*#__PURE__*/ _interop_require_default(require("lodash/get"));
15
14
  const _EntityStore = require("../../common/EntityStore");
16
15
  const _components = require("../../components");
17
16
  const _WrappedEntryCard = require("./WrappedEntryCard");
18
- function _interop_require_default(obj) {
19
- return obj && obj.__esModule ? obj : {
20
- default: obj
21
- };
22
- }
23
17
  function _getRequireWildcardCache(nodeInterop) {
24
18
  if (typeof WeakMap !== "function") return null;
25
19
  var cacheBabelInterop = new WeakMap();
@@ -81,24 +75,19 @@ async function openEntry(sdk, entryId, options) {
81
75
  return slide;
82
76
  }
83
77
  function FetchingWrappedEntryCard(props) {
84
- const { releaseVersionMap, locales, activeRelease, releases, isActiveReleaseLoading } = (0, _fieldeditorshared.parseReleaseParams)(props.sdk.parameters.instance.release);
85
- const { data: entry, status } = (0, _EntityStore.useEntity)('Entry', props.entryId);
78
+ const { data: entry, status, currentEntity } = (0, _EntityStore.useEntity)('Entry', props.entryId);
86
79
  const { getEntityScheduledActions } = (0, _EntityStore.useEntityLoader)();
87
80
  const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Entry', props.entryId), [
88
81
  getEntityScheduledActions,
89
82
  props.entryId
90
83
  ]);
91
84
  const localesStatusMap = (0, _fieldeditorshared.useLocalePublishStatus)(entry, props.sdk.locales);
92
- const { releaseLocalesStatusMap } = (0, _fieldeditorshared.useActiveReleaseLocalesStatuses)({
93
- currentEntityDraft: entry,
94
- entityId: props.entryId,
95
- entityType: 'Entry',
96
- releaseVersionMap,
97
- locales,
98
- activeRelease,
99
- releases
85
+ const { releaseStatusMap, releaseAction } = (0, _fieldeditorshared.useReleaseStatus)({
86
+ entity: entry,
87
+ previousEntityOnTimeline: currentEntity,
88
+ release: props.sdk.release,
89
+ locales: props.sdk.locales
100
90
  });
101
- const { releaseAction } = (0, _fieldeditorshared.getEntityReleaseStatus)(props.entryId, locales, activeRelease);
102
91
  const size = props.viewType === 'link' ? 'small' : 'default';
103
92
  const { getEntity } = (0, _EntityStore.useEntityLoader)();
104
93
  const getAsset = (assetId)=>getEntity('Asset', assetId);
@@ -111,7 +100,7 @@ function FetchingWrappedEntryCard(props) {
111
100
  entity: 'Entry',
112
101
  type: 'edit',
113
102
  id: props.entryId,
114
- contentTypeId: (0, _get.default)(entry, 'sys.contentType.sys.id'),
103
+ contentTypeId: entry.sys.contentType.sys.id,
115
104
  slide
116
105
  });
117
106
  };
@@ -121,7 +110,7 @@ function FetchingWrappedEntryCard(props) {
121
110
  entity: 'Entry',
122
111
  type: 'delete',
123
112
  id: props.entryId,
124
- contentTypeId: (0, _get.default)(entry, 'sys.contentType.sys.id')
113
+ contentTypeId: entry.sys.contentType.sys.id
125
114
  });
126
115
  };
127
116
  _react.useEffect(()=>{
@@ -176,9 +165,8 @@ function FetchingWrappedEntryCard(props) {
176
165
  useLocalizedEntityStatus: props.sdk.parameters.instance.useLocalizedEntityStatus,
177
166
  localesStatusMap,
178
167
  activeLocales: props.activeLocales,
179
- releaseLocalesStatusMap,
180
- isReleasesLoading: isActiveReleaseLoading,
181
- activeRelease,
168
+ releaseStatusMap,
169
+ release: props.sdk.release,
182
170
  releaseAction
183
171
  };
184
172
  const { hasCardEditActions, hasCardMoveActions, hasCardRemoveActions } = props;
@@ -61,7 +61,7 @@ const defaultProps = {
61
61
  hasCardMoveActions: true,
62
62
  hasCardRemoveActions: true
63
63
  };
64
- function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeCode, defaultLocaleCode, localesStatusMap, useLocalizedEntityStatus, size, spaceName, isClickable, isDisabled, isSelected, hasCardMoveActions, hasCardEditActions, hasCardRemoveActions, renderDragHandle, getAsset, getEntityScheduledActions, onClick, onEdit, onRemove, onMoveTop, onMoveBottom, releaseAction, releaseLocalesStatusMap, isReleasesLoading, activeRelease }) {
64
+ function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeCode, defaultLocaleCode, localesStatusMap, useLocalizedEntityStatus, size, spaceName, isClickable, isDisabled, isSelected, hasCardMoveActions, hasCardEditActions, hasCardRemoveActions, renderDragHandle, getAsset, getEntityScheduledActions, onClick, onEdit, onRemove, onMoveTop, onMoveBottom, releaseAction, releaseStatusMap, release }) {
65
65
  const [file, setFile] = _react.useState(null);
66
66
  _react.useEffect(()=>{
67
67
  let mounted = true;
@@ -129,9 +129,8 @@ function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeC
129
129
  localesStatusMap: localesStatusMap,
130
130
  activeLocales: activeLocales,
131
131
  releaseAction: releaseAction,
132
- releaseLocalesStatusMap: releaseLocalesStatusMap,
133
- isReleasesLoading: isReleasesLoading,
134
- activeRelease: activeRelease
132
+ releaseStatusMap: releaseStatusMap,
133
+ release: release
135
134
  }),
136
135
  icon: spaceName ? /*#__PURE__*/ _react.createElement(_SpaceName.SpaceName, {
137
136
  spaceName: spaceName,
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
6
6
  require("@testing-library/jest-dom");
7
- const _fieldeditortestutils = require("@contentful/field-editor-test-utils");
8
7
  const _react1 = require("@testing-library/react");
9
8
  const _published_content_typejson = /*#__PURE__*/ _interop_require_default(require("../../__fixtures__/content-type/published_content_type.json"));
10
9
  const _published_entry_non_masterjson = /*#__PURE__*/ _interop_require_default(require("../../__fixtures__/entry/published_entry_non_master.json"));
@@ -77,11 +76,11 @@ const sdk = {
77
76
  locales: {
78
77
  default: 'en-US'
79
78
  },
80
- cmaAdapter: (0, _fieldeditortestutils.createFakeCMAAdapter)({
81
- ContentType: {
79
+ cma: {
80
+ contentType: {
82
81
  get: jest.fn().mockReturnValue(_published_content_typejson.default)
83
82
  },
84
- Entry: {
83
+ entry: {
85
84
  get: jest.fn().mockImplementation(({ spaceId, environmentId, entryId })=>{
86
85
  if (spaceId === 'space-id' && environmentId === 'master' && entryId === 'linked-entry-urn') {
87
86
  return Promise.resolve(_published_entryjson.default);
@@ -92,7 +91,7 @@ const sdk = {
92
91
  return Promise.reject(new Error());
93
92
  })
94
93
  },
95
- Locale: {
94
+ locale: {
96
95
  getMany: jest.fn().mockResolvedValue({
97
96
  items: [
98
97
  {
@@ -102,7 +101,7 @@ const sdk = {
102
101
  ]
103
102
  })
104
103
  },
105
- Resource: {
104
+ resource: {
106
105
  getMany: jest.fn().mockImplementation(({ spaceId, environmentId, resourceTypeId, query })=>{
107
106
  if (spaceId === 'space-id' && environmentId === 'environment-id' && resourceTypeId === resolvableExternalResourceType && query['sys.urn[in]'] === resolvableExternalEntityUrn) {
108
107
  return Promise.resolve({
@@ -122,8 +121,12 @@ const sdk = {
122
121
  });
123
122
  })
124
123
  },
125
- ResourceType: {
124
+ resourceType: {
126
125
  getForEnvironment: jest.fn().mockImplementation(({ spaceId, environmentId })=>{
126
+ console.log('>> getForEnvironment', {
127
+ spaceId,
128
+ environmentId
129
+ });
127
130
  if (spaceId === 'space-id' && environmentId === 'environment-id') {
128
131
  return Promise.resolve({
129
132
  items: [
@@ -137,16 +140,16 @@ const sdk = {
137
140
  });
138
141
  })
139
142
  },
140
- ScheduledAction: {
143
+ scheduledActions: {
141
144
  getMany: jest.fn().mockResolvedValue({
142
145
  items: [],
143
146
  total: 0
144
147
  })
145
148
  },
146
- Space: {
149
+ space: {
147
150
  get: jest.fn().mockResolvedValue(_indifferent_spacejson.default)
148
151
  },
149
- ResourceProvider: {
152
+ resourceProvider: {
150
153
  get: jest.fn().mockImplementation(()=>{
151
154
  return Promise.resolve({
152
155
  function: {
@@ -157,7 +160,7 @@ const sdk = {
157
160
  });
158
161
  })
159
162
  }
160
- }),
163
+ },
161
164
  space: {
162
165
  onEntityChanged: jest.fn()
163
166
  },
@@ -1,4 +1,4 @@
1
- import { createFakeCMAAdapter, createFakeFieldAPI, createFakeLocalesAPI, createFakeSpaceAPI } from '@contentful/field-editor-test-utils';
1
+ import { createFakeFieldAPI, createFakeLocalesAPI, createFakeSpaceAPI } from '@contentful/field-editor-test-utils';
2
2
  import { assets, contentTypes, entries, locales as localesFixtures, spaces } from './fixtures';
3
3
  const newLink = (linkType, id)=>({
4
4
  sys: {
@@ -47,8 +47,8 @@ export function newReferenceEditorFakeSdk(props) {
47
47
  const sdk = {
48
48
  field,
49
49
  locales,
50
- cmaAdapter: createFakeCMAAdapter({
51
- Entry: {
50
+ cma: {
51
+ entry: {
52
52
  get: async ({ entryId })=>{
53
53
  if (props?.fetchDelay) {
54
54
  await delay(props.fetchDelay);
@@ -65,7 +65,7 @@ export function newReferenceEditorFakeSdk(props) {
65
65
  return Promise.reject({});
66
66
  }
67
67
  },
68
- Asset: {
68
+ asset: {
69
69
  get: async ({ assetId })=>{
70
70
  if (props?.fetchDelay) {
71
71
  await delay(props.fetchDelay);
@@ -82,7 +82,7 @@ export function newReferenceEditorFakeSdk(props) {
82
82
  return Promise.reject({});
83
83
  }
84
84
  },
85
- Space: {
85
+ space: {
86
86
  get: async (params)=>{
87
87
  if (params.spaceId === spaces.indifferent.sys.id) {
88
88
  return spaces.indifferent;
@@ -90,7 +90,7 @@ export function newReferenceEditorFakeSdk(props) {
90
90
  return Promise.reject({});
91
91
  }
92
92
  },
93
- ContentType: {
93
+ contentType: {
94
94
  get: async ({ contentTypeId })=>{
95
95
  if (contentTypeId === contentTypes.published.sys.id) {
96
96
  return contentTypes.published;
@@ -101,7 +101,7 @@ export function newReferenceEditorFakeSdk(props) {
101
101
  Locale: {
102
102
  getMany: async ()=>localesFixtures.list
103
103
  }
104
- }),
104
+ },
105
105
  space: {
106
106
  ...space,
107
107
  getCachedContentTypes () {