@contentful/field-editor-rich-text 2.0.0-next.42 → 2.0.0-next.45

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.
@@ -11,7 +11,7 @@ var fieldEditorShared = require('@contentful/field-editor-shared');
11
11
  var Contentful = require('@contentful/rich-text-types');
12
12
  var plateCore = require('@udecode/plate-core');
13
13
  var emotion = require('emotion');
14
- var deepEquals = _interopDefault(require('fast-deep-equal'));
14
+ var areEqual = _interopDefault(require('fast-deep-equal'));
15
15
  var noop = _interopDefault(require('lodash/noop'));
16
16
  var plateSerializerDocx = require('@udecode/plate-serializer-docx');
17
17
  var plateBreak = require('@udecode/plate-break');
@@ -21,12 +21,11 @@ var slate = require('slate');
21
21
  var Slate = require('slate-react');
22
22
  var constate = _interopDefault(require('constate'));
23
23
  var f36Components = require('@contentful/f36-components');
24
- var mimetype = _interopDefault(require('@contentful/mimetype'));
24
+ var find = _interopDefault(require('lodash/find'));
25
+ var flow = _interopDefault(require('lodash/flow'));
25
26
  var get = _interopDefault(require('lodash/get'));
26
27
  var f36Icons = require('@contentful/f36-icons');
27
28
  var tokens = _interopDefault(require('@contentful/f36-tokens'));
28
- var find = _interopDefault(require('lodash/find'));
29
- var flow = _interopDefault(require('lodash/flow'));
30
29
  var plateList = require('@udecode/plate-list');
31
30
  var castArray = _interopDefault(require('lodash/castArray'));
32
31
  var plateBasicMarks = require('@udecode/plate-basic-marks');
@@ -401,17 +400,8 @@ function getParents(el) {
401
400
  return parents;
402
401
  }
403
402
 
404
- // "modern" Edge was released at 79.x
405
- var IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /*#__PURE__*/ /Edge?\/(?:[0-6][0-9]|[0-7][0-8])/i.test(navigator.userAgent); // Native `beforeInput` events don't work well with react on Chrome 75
406
- // and older, Chrome 76+ can use `beforeInput` though.
407
-
408
- var IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /*#__PURE__*/ /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent); // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
409
- // Chrome Legacy doesn't support `beforeinput` correctly
410
-
411
- var HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && // globalThis is undefined in older browsers
412
- typeof globalThis !== 'undefined' && globalThis.InputEvent && typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'; // The `getTargetRanges` property isn't recognized.
413
-
414
403
  var IS_SAFARI = typeof navigator !== 'undefined' && /*#__PURE__*/ /Version\/[\d.]+.*Safari/.test(navigator.userAgent);
404
+ var IS_CHROME = /*#__PURE__*/ /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/.test(navigator.userAgent);
415
405
 
416
406
  var LINK_TYPES = [Contentful.INLINES.HYPERLINK, Contentful.INLINES.ENTRY_HYPERLINK, Contentful.INLINES.ASSET_HYPERLINK];
417
407
  function isBlockSelected(editor, type) {
@@ -639,181 +629,56 @@ var _constate = /*#__PURE__*/constate(useSdk),
639
629
  SdkProvider = _constate[0],
640
630
  useSdkContext = _constate[1];
641
631
 
642
- var styles = {
643
- scheduleIcon: /*#__PURE__*/emotion.css({
644
- marginRight: tokens.spacing2Xs
645
- })
646
- };
647
- function EntityStatusIcon(_ref) {
648
- var entity = _ref.entity,
649
- entityType = _ref.entityType;
632
+ function useFetchedEntity(_ref) {
633
+ var type = _ref.type,
634
+ id = _ref.id,
635
+ onEntityFetchComplete = _ref.onEntityFetchComplete;
650
636
 
651
637
  var _useEntities = fieldEditorReference.useEntities(),
652
- loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
638
+ entries = _useEntities.entries,
639
+ assets = _useEntities.assets,
640
+ getOrLoadEntry = _useEntities.getOrLoadEntry,
641
+ getOrLoadAsset = _useEntities.getOrLoadAsset;
653
642
 
654
- return /*#__PURE__*/React.createElement(fieldEditorReference.ScheduledIconWithTooltip, {
655
- getEntityScheduledActions: loadEntityScheduledActions,
656
- entityType: entityType,
657
- entityId: entity.sys.id
658
- }, /*#__PURE__*/React.createElement(f36Icons.ClockIcon, {
659
- className: styles.scheduleIcon,
660
- size: "small",
661
- color: "muted",
662
- testId: "schedule-icon"
663
- }));
664
- }
643
+ var store = type === 'Entry' ? entries : assets;
665
644
 
666
- var styles$1 = {
667
- assetCard: /*#__PURE__*/emotion.css({
668
- cursor: 'pointer'
669
- }),
670
- cardDropdown: /*#__PURE__*/emotion.css({
671
- width: '300px'
672
- }),
673
- truncated: /*#__PURE__*/emotion.css({
674
- overflow: 'hidden',
675
- whiteSpace: 'nowrap',
676
- textOverflow: 'ellipsis'
677
- })
678
- };
645
+ var _useState = React.useState(store[id]),
646
+ entity = _useState[0],
647
+ setEntity = _useState[1]; // Deep compare the entity value to keep re-rendering to minimal
679
648
 
680
- function downloadAsset(url, fileName) {
681
- // This method won't work if we have CORS disabled(asset not on the contentful server)
682
- fetch(url, {
683
- method: 'GET',
684
- headers: {}
685
- }).then(function (response) {
686
- response.arrayBuffer().then(function (buffer) {
687
- var url = window.URL.createObjectURL(new Blob([buffer]));
688
- var link = document.createElement('a');
689
- link.href = url;
690
- link.setAttribute('download', fileName); //or any other extension
691
-
692
- document.body.appendChild(link);
693
- link.click();
694
- document.body.removeChild(link);
695
- });
696
- })["catch"](function (err) {
697
- f36Components.Notification.error('Failed to download asset');
698
- console.log(err);
699
- });
700
- }
701
-
702
- function renderAssetInfo(props) {
703
- var entityFile = props.entityFile;
704
- var fileName = get(entityFile, 'fileName');
705
- var mimeType = get(entityFile, 'contentType');
706
- var fileSize = get(entityFile, 'details.size');
707
- var image = get(entityFile, 'details.image');
708
- return [/*#__PURE__*/React.createElement(f36Components.Menu.SectionTitle, {
709
- key: "file-section"
710
- }, "File info"), fileName && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
711
- key: "file-name"
712
- }, /*#__PURE__*/React.createElement(f36Components.Text, {
713
- isTruncated: true
714
- }, fileName)), mimeType && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
715
- key: "file-type"
716
- }, /*#__PURE__*/React.createElement(f36Components.Text, {
717
- isTruncated: true
718
- }, mimeType)), fileSize && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
719
- key: "file-size"
720
- }, fieldEditorShared.shortenStorageUnit(fileSize, 'B')), image && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
721
- key: "file-dimentions"
722
- }, image.width + " \xD7 " + image.height)].filter(function (item) {
723
- return item;
724
- });
725
- }
726
- function renderActions(props) {
727
- var entityFile = props.entityFile,
728
- isDisabled = props.isDisabled,
729
- onEdit = props.onEdit,
730
- onRemove = props.onRemove;
731
- return [/*#__PURE__*/React.createElement(f36Components.Menu.SectionTitle, {
732
- key: "section-title"
733
- }, "Actions"), onEdit ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
734
- key: "edit",
735
- onClick: onEdit,
736
- testId: "card-action-edit"
737
- }, "Edit") : null, entityFile ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
738
- key: "download",
739
- onClick: function onClick() {
740
- if (typeof entityFile.url === 'string') {
741
- downloadAsset(entityFile.url, get(entityFile, 'fileName'));
742
- }
743
- },
744
- testId: "card-action-download"
745
- }, "Download") : null, onRemove ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
746
- key: "remove",
747
- disabled: isDisabled,
748
- onClick: onRemove,
749
- testId: "card-action-remove"
750
- }, "Remove") : null].filter(function (item) {
751
- return item;
752
- });
753
- }
754
- function FetchingWrappedAssetCard(props) {
755
- var _asset$fields;
756
-
757
- var _useEntities = fieldEditorReference.useEntities(),
758
- getOrLoadAsset = _useEntities.getOrLoadAsset,
759
- assets = _useEntities.assets;
760
649
 
761
- var asset = assets[props.assetId];
762
- var defaultLocaleCode = props.sdk.locales["default"];
763
- var entityFile = asset != null && (_asset$fields = asset.fields) != null && _asset$fields.file ? asset.fields.file[props.locale] || asset.fields.file[defaultLocaleCode] : undefined;
764
- var onEntityFetchComplete = props.onEntityFetchComplete;
765
650
  React.useEffect(function () {
766
- getOrLoadAsset(props.assetId);
767
- }, [props.assetId]); // eslint-disable-line
651
+ var newValue = store[id];
768
652
 
769
- React.useEffect(function () {
770
- if (!asset) {
771
- return;
653
+ if (!areEqual(entity, newValue)) {
654
+ setEntity(newValue);
772
655
  }
656
+ }, [store, entity, id]); // Fetch the entity if needed
773
657
 
774
- onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
775
- }, [asset, onEntityFetchComplete]);
776
-
777
- function getAssetSrc() {
778
- if (!(entityFile != null && entityFile.url)) return '';
779
- return entityFile.url + "?h=300";
780
- }
781
-
782
- function getFileType() {
783
- var groupToIconMap = {
784
- image: 'image',
785
- video: 'video',
786
- audio: 'audio',
787
- richtext: 'richtext',
788
- presentation: 'presentation',
789
- spreadsheet: 'spreadsheet',
790
- pdfdocument: 'pdf',
791
- archive: 'archive',
792
- plaintext: 'plaintext',
793
- code: 'code',
794
- markup: 'markup'
795
- };
796
- var archive = groupToIconMap['archive'];
797
-
798
- if (!entityFile) {
799
- return archive;
658
+ React.useEffect(function () {
659
+ (type === 'Entry' ? getOrLoadEntry : getOrLoadAsset)(id); // "getOrLoadEntry" and "getOrLoadAsset" instances change with every
660
+ // entity store update causing page lag on initial load
661
+ // TODO: consider rewriting useEntities() hook to avoid that happening in
662
+ // first place.
663
+ // eslint-disable-next-line react-hooks/exhaustive-deps
664
+ }, [type, id]);
665
+ React.useEffect(function () {
666
+ if (entity) {
667
+ onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
800
668
  }
669
+ }, [onEntityFetchComplete, entity]);
670
+ return entity;
671
+ }
801
672
 
802
- var groupName = mimetype.getGroupLabel({
803
- type: entityFile.contentType,
804
- fallbackFileName: entityFile.fileName
805
- });
806
- return groupToIconMap[groupName] || archive;
807
- }
808
-
809
- if (asset === undefined) {
673
+ var InternalAssetCard = /*#__PURE__*/React.memo(function (props) {
674
+ if (props.asset === undefined) {
810
675
  return /*#__PURE__*/React.createElement(f36Components.AssetCard, {
811
- size: "small",
676
+ size: "default",
812
677
  isLoading: true
813
678
  });
814
679
  }
815
680
 
816
- if (asset === 'failed') {
681
+ if (props.asset === 'failed') {
817
682
  return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
818
683
  entityType: "Asset",
819
684
  isDisabled: props.isDisabled,
@@ -821,138 +686,51 @@ function FetchingWrappedAssetCard(props) {
821
686
  });
822
687
  }
823
688
 
824
- var status = asset ? fieldEditorShared.entityHelpers.getEntryStatus(asset.sys) : undefined;
825
-
826
- if (status === 'deleted') {
827
- return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
828
- entityType: "Asset",
829
- asSquare: true,
830
- isDisabled: props.isDisabled,
831
- onRemove: props.onRemove
832
- });
833
- }
834
-
835
- var entityTitle = fieldEditorShared.entityHelpers.getAssetTitle({
836
- asset: asset,
837
- localeCode: props.locale,
838
- defaultLocaleCode: defaultLocaleCode,
839
- defaultTitle: 'Untitled'
840
- });
841
- return /*#__PURE__*/React.createElement(f36Components.AssetCard, {
842
- title: entityTitle,
843
- isSelected: props.isSelected,
689
+ return /*#__PURE__*/React.createElement(fieldEditorReference.WrappedAssetCard, {
690
+ getEntityScheduledActions: props.loadEntityScheduledActions,
844
691
  size: "small",
845
- src: getAssetSrc(),
846
- type: getFileType(),
847
- status: status,
848
- icon: /*#__PURE__*/React.createElement(EntityStatusIcon, {
849
- entityType: "Asset",
850
- entity: asset
851
- }),
852
- className: styles$1.assetCard,
853
- actions: [renderActions({
854
- entityFile: entityFile,
855
- isDisabled: props.isDisabled,
856
- onEdit: props.onEdit,
857
- onRemove: props.onRemove
858
- }), entityFile ? renderAssetInfo({
859
- entityFile: entityFile
860
- }) : null].filter(function (item) {
861
- return item;
862
- })
692
+ isSelected: props.isSelected,
693
+ isDisabled: props.isDisabled,
694
+ localeCode: props.locale,
695
+ defaultLocaleCode: props.sdk.locales["default"],
696
+ asset: props.asset,
697
+ onEdit: props.onEdit,
698
+ onRemove: props.isDisabled ? undefined : props.onRemove,
699
+ isClickable: false
863
700
  });
864
- }
701
+ }, areEqual);
702
+ InternalAssetCard.displayName = 'InternalAssetCard';
703
+ function FetchingWrappedAssetCard(props) {
704
+ var onEntityFetchComplete = props.onEntityFetchComplete,
705
+ assetId = props.assetId;
865
706
 
866
- var styles$2 = {
867
- entryCard: /*#__PURE__*/emotion.css({
868
- cursor: 'pointer'
869
- })
870
- };
707
+ var _useEntities = fieldEditorReference.useEntities(),
708
+ loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
871
709
 
872
- function EntryThumbnail(_ref) {
873
- var file = _ref.file;
874
- if (!fieldEditorShared.isValidImage(file)) return null;
875
- return /*#__PURE__*/React.createElement(fieldEditorReference.AssetThumbnail, {
876
- file: file
710
+ var asset = useFetchedEntity({
711
+ type: 'Asset',
712
+ id: assetId,
713
+ onEntityFetchComplete: onEntityFetchComplete
714
+ });
715
+ return /*#__PURE__*/React.createElement(InternalAssetCard, {
716
+ asset: asset,
717
+ sdk: props.sdk,
718
+ isDisabled: props.isDisabled,
719
+ isSelected: props.isSelected,
720
+ loadEntityScheduledActions: loadEntityScheduledActions,
721
+ locale: props.locale,
722
+ onEdit: props.onEdit,
723
+ onRemove: props.onRemove
877
724
  });
878
725
  }
879
726
 
880
- function FetchingWrappedEntryCard(props) {
881
- var _useEntities = fieldEditorReference.useEntities(),
882
- getOrLoadEntry = _useEntities.getOrLoadEntry,
883
- entries = _useEntities.entries,
884
- getOrLoadAsset = _useEntities.getOrLoadAsset;
885
-
886
- var _React$useState = React.useState(null),
887
- file = _React$useState[0],
888
- setFile = _React$useState[1];
889
-
890
- var entry = entries[props.entryId];
891
- var contentType = React.useMemo(function () {
892
- if (!entry || entry === 'failed') {
893
- return undefined;
894
- }
895
-
896
- return props.sdk.space.getCachedContentTypes().find(function (contentType) {
897
- return contentType.sys.id === entry.sys.contentType.sys.id;
898
- });
899
- }, [props.sdk, entry]);
900
- var defaultLocaleCode = props.sdk.locales["default"];
901
- var onEntityFetchComplete = props.onEntityFetchComplete;
902
- React.useEffect(function () {
903
- if (!entry || entry === 'failed') return;
904
- var subscribed = true;
905
- fieldEditorShared.entityHelpers.getEntryImage({
906
- entry: entry,
907
- contentType: contentType,
908
- localeCode: props.locale,
909
- defaultLocaleCode: defaultLocaleCode
910
- }, getOrLoadAsset)["catch"](function () {
911
- return null;
912
- }).then(function (file) {
913
- if (subscribed) {
914
- setFile(file);
915
- }
916
- });
917
- return function () {
918
- subscribed = false;
919
- };
920
- }, [entry, contentType, props.locale, defaultLocaleCode, props.sdk, file, getOrLoadAsset]);
921
- React.useEffect(function () {
922
- getOrLoadEntry(props.entryId);
923
- }, [props.entryId]); // eslint-disable-line
924
-
925
- React.useEffect(function () {
926
- if (!entry) {
927
- return;
928
- }
929
-
930
- onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
931
- }, [entry, onEntityFetchComplete]);
932
-
933
- function renderDropdown() {
934
- if (!props.onEdit || !props.onRemove) return undefined;
935
- return [props.onEdit ? /*#__PURE__*/React.createElement(f36Components.MenuItem, {
936
- key: "edit",
937
- testId: "card-action-edit",
938
- onClick: function onClick() {
939
- props.onEdit && props.onEdit();
940
- }
941
- }, "Edit") : null, props.onRemove ? /*#__PURE__*/React.createElement(f36Components.MenuItem, {
942
- key: "delete",
943
- disabled: props.isDisabled,
944
- testId: "card-action-remove",
945
- onClick: function onClick() {
946
- props.onRemove && props.onRemove();
947
- }
948
- }, "Remove") : null].filter(function (item) {
949
- return item;
950
- });
951
- }
727
+ var InternalEntryCard = /*#__PURE__*/React.memo(function (props) {
728
+ var entry = props.entry,
729
+ sdk = props.sdk,
730
+ loadEntityScheduledActions = props.loadEntityScheduledActions;
952
731
 
953
732
  if (entry === undefined) {
954
733
  return /*#__PURE__*/React.createElement(f36Components.EntryCard, {
955
- size: "default",
956
734
  isLoading: true
957
735
  });
958
736
  }
@@ -965,50 +743,50 @@ function FetchingWrappedEntryCard(props) {
965
743
  });
966
744
  }
967
745
 
968
- var entryStatus = entry ? fieldEditorShared.entityHelpers.getEntryStatus(entry.sys) : undefined;
969
-
970
- if (entryStatus === 'deleted') {
971
- return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
972
- entityType: "Entry",
973
- isDisabled: props.isDisabled,
974
- onRemove: props.onRemove
975
- });
976
- }
977
-
978
- var title = fieldEditorShared.entityHelpers.getEntryTitle({
979
- entry: entry,
980
- contentType: contentType,
981
- localeCode: props.locale,
982
- defaultLocaleCode: defaultLocaleCode,
983
- defaultTitle: 'Untitled'
746
+ var contentType = sdk.space.getCachedContentTypes().find(function (contentType) {
747
+ return contentType.sys.id === entry.sys.contentType.sys.id;
984
748
  });
985
- var description = fieldEditorShared.entityHelpers.getEntityDescription({
986
- entity: entry,
987
- contentType: contentType,
749
+ return /*#__PURE__*/React.createElement(fieldEditorReference.WrappedEntryCard, {
750
+ size: "default",
751
+ getAsset: props.sdk.space.getAsset,
752
+ getEntityScheduledActions: loadEntityScheduledActions,
753
+ isSelected: props.isSelected,
754
+ isDisabled: props.isDisabled,
988
755
  localeCode: props.locale,
989
- defaultLocaleCode: defaultLocaleCode
756
+ defaultLocaleCode: props.sdk.locales["default"],
757
+ contentType: contentType,
758
+ entry: entry,
759
+ onEdit: props.onEdit,
760
+ onRemove: props.isDisabled ? undefined : props.onRemove,
761
+ isClickable: false
990
762
  });
991
- return /*#__PURE__*/React.createElement(f36Components.EntryCard, {
992
- contentType: contentType == null ? void 0 : contentType.name,
993
- title: title,
994
- description: description,
995
- size: "default",
763
+ }, areEqual);
764
+ InternalEntryCard.displayName = 'ReferenceCard';
765
+ var FetchingWrappedEntryCard = function FetchingWrappedEntryCard(props) {
766
+ var entryId = props.entryId,
767
+ onEntityFetchComplete = props.onEntityFetchComplete;
768
+
769
+ var _useEntities = fieldEditorReference.useEntities(),
770
+ loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
771
+
772
+ var entry = useFetchedEntity({
773
+ type: 'Entry',
774
+ id: entryId,
775
+ onEntityFetchComplete: onEntityFetchComplete
776
+ });
777
+ return /*#__PURE__*/React.createElement(InternalEntryCard, {
778
+ entry: entry,
779
+ sdk: props.sdk,
780
+ locale: props.locale,
781
+ isDisabled: props.isDisabled,
996
782
  isSelected: props.isSelected,
997
- status: entryStatus,
998
- className: styles$2.entryCard,
999
- thumbnailElement: file ? /*#__PURE__*/React.createElement(EntryThumbnail, {
1000
- file: file
1001
- }) : undefined,
1002
- icon: /*#__PURE__*/React.createElement(EntityStatusIcon, {
1003
- entityType: "Entry",
1004
- entity: entry
1005
- }),
1006
- withDragHandle: false,
1007
- actions: renderDropdown()
783
+ onEdit: props.onEdit,
784
+ onRemove: props.onRemove,
785
+ loadEntityScheduledActions: loadEntityScheduledActions
1008
786
  });
1009
- }
787
+ };
1010
788
 
1011
- var styles$3 = {
789
+ var styles = {
1012
790
  root: /*#__PURE__*/emotion.css({
1013
791
  marginBottom: '1.25rem !important',
1014
792
  display: 'block'
@@ -1033,34 +811,31 @@ function LinkedEntityBlock(props) {
1033
811
  var _element$data$target$ = element.data.target.sys,
1034
812
  entityId = _element$data$target$.id,
1035
813
  entityType = _element$data$target$.linkType;
1036
-
1037
- var handleEditClick = function handleEditClick() {
814
+ var handleEditClick = React__default.useCallback(function () {
1038
815
  var openEntity = entityType === 'Asset' ? sdk.navigator.openAsset : sdk.navigator.openEntry;
1039
816
  return openEntity(entityId, {
1040
817
  slideIn: true
1041
818
  });
1042
- };
1043
-
1044
- var handleRemoveClick = function handleRemoveClick() {
819
+ }, [sdk, entityId, entityType]);
820
+ var handleRemoveClick = React__default.useCallback(function () {
1045
821
  if (!editor) return;
1046
822
  var pathToElement = Slate.ReactEditor.findPath(editor, element);
1047
823
  slate.Transforms.removeNodes(editor, {
1048
824
  at: pathToElement
1049
825
  });
1050
- };
1051
-
826
+ }, [editor, element]);
1052
827
  return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
1053
- className: styles$3.root,
828
+ className: styles.root,
1054
829
  "data-entity-type": entityType,
1055
830
  "data-entity-id": entityId,
1056
831
  // COMPAT: This makes copy & paste work for Firefox
1057
- contentEditable: !HAS_BEFORE_INPUT_SUPPORT ? false : undefined,
1058
- draggable: !HAS_BEFORE_INPUT_SUPPORT ? true : undefined
832
+ contentEditable: IS_CHROME ? undefined : false,
833
+ draggable: IS_CHROME ? true : undefined
1059
834
  }), /*#__PURE__*/React__default.createElement("div", {
1060
835
  // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari
1061
- contentEditable: HAS_BEFORE_INPUT_SUPPORT ? false : undefined,
1062
- draggable: HAS_BEFORE_INPUT_SUPPORT ? true : undefined,
1063
- className: styles$3.container
836
+ contentEditable: IS_CHROME ? false : undefined,
837
+ draggable: IS_CHROME ? true : undefined,
838
+ className: styles.container
1064
839
  }, entityType === 'Entry' && /*#__PURE__*/React__default.createElement(FetchingWrappedEntryCard, {
1065
840
  sdk: sdk,
1066
841
  entryId: entityId,
@@ -1179,9 +954,11 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1179
954
 
1180
955
 
1181
956
  var IteratorPrototype = {};
1182
- define(IteratorPrototype, iteratorSymbol, function () {
957
+
958
+ IteratorPrototype[iteratorSymbol] = function () {
1183
959
  return this;
1184
- });
960
+ };
961
+
1185
962
  var getProto = Object.getPrototypeOf;
1186
963
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
1187
964
 
@@ -1192,9 +969,8 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1192
969
  }
1193
970
 
1194
971
  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
1195
- GeneratorFunction.prototype = GeneratorFunctionPrototype;
1196
- define(Gp, "constructor", GeneratorFunctionPrototype);
1197
- define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
972
+ GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
973
+ GeneratorFunctionPrototype.constructor = GeneratorFunction;
1198
974
  GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); // Helper for defining the .next, .throw, and .return methods of the
1199
975
  // Iterator interface in terms of a single ._invoke method.
1200
976
 
@@ -1299,9 +1075,11 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1299
1075
  }
1300
1076
 
1301
1077
  defineIteratorMethods(AsyncIterator.prototype);
1302
- define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
1078
+
1079
+ AsyncIterator.prototype[asyncIteratorSymbol] = function () {
1303
1080
  return this;
1304
- });
1081
+ };
1082
+
1305
1083
  exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
1306
1084
  // AsyncIterator objects; they just return a Promise for the value of
1307
1085
  // the final result produced by the iterator.
@@ -1478,12 +1256,13 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1478
1256
  // object to not be returned from this call. This ensures that doesn't happen.
1479
1257
  // See https://github.com/facebook/regenerator/issues/274 for more details.
1480
1258
 
1481
- define(Gp, iteratorSymbol, function () {
1259
+ Gp[iteratorSymbol] = function () {
1482
1260
  return this;
1483
- });
1484
- define(Gp, "toString", function () {
1261
+ };
1262
+
1263
+ Gp.toString = function () {
1485
1264
  return "[object Generator]";
1486
- });
1265
+ };
1487
1266
 
1488
1267
  function pushTryEntry(locs) {
1489
1268
  var entry = {
@@ -1795,19 +1574,14 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1795
1574
  } catch (accidentalStrictMode) {
1796
1575
  // This module should not be running in strict mode, so the above
1797
1576
  // assignment should always work unless something is misconfigured. Just
1798
- // in case runtime.js accidentally runs in strict mode, in modern engines
1799
- // we can explicitly access globalThis. In older engines we can escape
1577
+ // in case runtime.js accidentally runs in strict mode, we can escape
1800
1578
  // strict mode using a global Function call. This could conceivably fail
1801
1579
  // if a Content Security Policy forbids using Function, but in that case
1802
1580
  // the proper solution is to fix the accidental strict mode problem. If
1803
1581
  // you've misconfigured your bundler to force strict mode and applied a
1804
1582
  // CSP to forbid Function, and you're not willing to fix either of those
1805
1583
  // problems, please detail your unique predicament in a GitHub issue.
1806
- if (typeof globalThis === "object") {
1807
- globalThis.regeneratorRuntime = runtime;
1808
- } else {
1809
- Function("r", "regeneratorRuntime = r")(runtime);
1810
- }
1584
+ Function("r", "regeneratorRuntime = r")(runtime);
1811
1585
  }
1812
1586
  });
1813
1587
 
@@ -2008,7 +1782,7 @@ function insertBlock(editor, nodeType, entity) {
2008
1782
  focus(editor);
2009
1783
  }
2010
1784
 
2011
- var styles$4 = {
1785
+ var styles$1 = {
2012
1786
  icon: /*#__PURE__*/emotion.css({
2013
1787
  marginRight: '10px'
2014
1788
  })
@@ -2056,7 +1830,7 @@ function EmbeddedEntityBlockToolbarIcon(_ref) {
2056
1830
  flexDirection: "row"
2057
1831
  }, /*#__PURE__*/React__default.createElement(f36Components.Icon, {
2058
1832
  as: type === 'Asset' ? f36Icons.AssetIcon : f36Icons.EmbeddedEntryBlockIcon,
2059
- className: "rich-text__embedded-entry-list-icon " + styles$4.icon,
1833
+ className: "rich-text__embedded-entry-list-icon " + styles$1.icon,
2060
1834
  variant: "secondary"
2061
1835
  }), /*#__PURE__*/React__default.createElement("span", null, type)));
2062
1836
  }
@@ -2155,7 +1929,7 @@ var createEmbeddedAssetBlockPlugin = /*#__PURE__*/createEmbeddedEntityPlugin(Con
2155
1929
 
2156
1930
  var getEntryTitle = fieldEditorShared.entityHelpers.getEntryTitle,
2157
1931
  getEntryStatus = fieldEditorShared.entityHelpers.getEntryStatus;
2158
- var styles$5 = {
1932
+ var styles$2 = {
2159
1933
  scheduledIcon: /*#__PURE__*/emotion.css({
2160
1934
  verticalAlign: 'text-bottom',
2161
1935
  marginRight: tokens.spacing2Xs
@@ -2226,7 +2000,7 @@ function FetchingWrappedInlineEntryCard(props) {
2226
2000
  actions: [/*#__PURE__*/React__default.createElement(f36Components.MenuItem, {
2227
2001
  key: "remove",
2228
2002
  onClick: props.onRemove,
2229
- testId: "card-action-remove"
2003
+ testId: "delete"
2230
2004
  }, "Remove")]
2231
2005
  });
2232
2006
  }
@@ -2243,14 +2017,14 @@ function FetchingWrappedInlineEntryCard(props) {
2243
2017
  key: "remove",
2244
2018
  onClick: props.onRemove,
2245
2019
  disabled: props.isDisabled,
2246
- testId: "card-action-remove"
2020
+ testId: "delete"
2247
2021
  }, "Remove")]
2248
2022
  }, /*#__PURE__*/React__default.createElement(fieldEditorReference.ScheduledIconWithTooltip, {
2249
2023
  getEntityScheduledActions: loadEntityScheduledActions,
2250
2024
  entityType: "Entry",
2251
2025
  entityId: entry.sys.id
2252
2026
  }, /*#__PURE__*/React__default.createElement(f36Icons.ClockIcon, {
2253
- className: styles$5.scheduledIcon,
2027
+ className: styles$2.scheduledIcon,
2254
2028
  variant: "muted",
2255
2029
  testId: "scheduled-icon"
2256
2030
  })), /*#__PURE__*/React__default.createElement(f36Components.Text, null, title));
@@ -2274,7 +2048,7 @@ function createInlineEntryNode(id) {
2274
2048
  };
2275
2049
  }
2276
2050
 
2277
- var styles$6 = {
2051
+ var styles$3 = {
2278
2052
  icon: /*#__PURE__*/emotion.css({
2279
2053
  marginRight: '10px'
2280
2054
  }),
@@ -2310,15 +2084,15 @@ function EmbeddedEntityInline(props) {
2310
2084
  }
2311
2085
 
2312
2086
  return /*#__PURE__*/React.createElement("span", Object.assign({}, props.attributes, {
2313
- className: styles$6.root,
2087
+ className: styles$3.root,
2314
2088
  "data-embedded-entity-inline-id": entryId,
2315
2089
  // COMPAT: This makes copy & paste work for Firefox
2316
- contentEditable: !HAS_BEFORE_INPUT_SUPPORT ? false : undefined,
2317
- draggable: !HAS_BEFORE_INPUT_SUPPORT ? true : undefined
2090
+ contentEditable: IS_CHROME ? undefined : false,
2091
+ draggable: IS_CHROME ? true : undefined
2318
2092
  }), /*#__PURE__*/React.createElement("span", {
2319
2093
  // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari
2320
- contentEditable: HAS_BEFORE_INPUT_SUPPORT ? false : undefined,
2321
- draggable: HAS_BEFORE_INPUT_SUPPORT ? true : undefined
2094
+ contentEditable: IS_CHROME ? false : undefined,
2095
+ draggable: IS_CHROME ? true : undefined
2322
2096
  }, /*#__PURE__*/React.createElement(FetchingWrappedInlineEntryCard, {
2323
2097
  sdk: sdk,
2324
2098
  entryId: entryId,
@@ -2440,7 +2214,7 @@ function ToolbarEmbeddedEntityInlineButton(props) {
2440
2214
  flexDirection: "row"
2441
2215
  }, /*#__PURE__*/React.createElement(f36Icons.EmbeddedEntryInlineIcon, {
2442
2216
  variant: "secondary",
2443
- className: "rich-text__embedded-entry-list-icon " + styles$6.icon
2217
+ className: "rich-text__embedded-entry-list-icon " + styles$3.icon
2444
2218
  }), /*#__PURE__*/React.createElement("span", null, "Inline entry")));
2445
2219
  }
2446
2220
  function createEmbeddedEntityInlinePlugin(sdk) {
@@ -2516,7 +2290,7 @@ var isMarkEnabled = function isMarkEnabled(field, mark) {
2516
2290
  };
2517
2291
 
2518
2292
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _dropdown, _LABELS;
2519
- var styles$7 = {
2293
+ var styles$4 = {
2520
2294
  dropdown: (_dropdown = {
2521
2295
  root: /*#__PURE__*/emotion.css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
2522
2296
  }, _dropdown[Contentful.BLOCKS.PARAGRAPH] = /*#__PURE__*/emotion.css(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), tokens.fontSizeL), _dropdown[Contentful.BLOCKS.HEADING_1] = /*#__PURE__*/emotion.css(_templateObject3 || (_templateObject3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.625rem;\n "]))), _dropdown[Contentful.BLOCKS.HEADING_2] = /*#__PURE__*/emotion.css(_templateObject4 || (_templateObject4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.4375rem;\n "]))), _dropdown[Contentful.BLOCKS.HEADING_3] = /*#__PURE__*/emotion.css(_templateObject5 || (_templateObject5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.25rem;\n "]))), _dropdown[Contentful.BLOCKS.HEADING_4] = /*#__PURE__*/emotion.css(_templateObject6 || (_templateObject6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.125rem;\n "]))), _dropdown[Contentful.BLOCKS.HEADING_5] = /*#__PURE__*/emotion.css(_templateObject7 || (_templateObject7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1rem;\n "]))), _dropdown[Contentful.BLOCKS.HEADING_6] = /*#__PURE__*/emotion.css(_templateObject8 || (_templateObject8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 0.875rem;\n "]))), _dropdown)
@@ -2611,7 +2385,7 @@ function ToolbarHeadingButton(props) {
2611
2385
  testId: "dropdown-option-" + nodeType,
2612
2386
  disabled: props.isDisabled
2613
2387
  }, /*#__PURE__*/React.createElement("span", {
2614
- className: emotion.cx(styles$7.dropdown.root, styles$7.dropdown[nodeType])
2388
+ className: emotion.cx(styles$4.dropdown.root, styles$4.dropdown[nodeType])
2615
2389
  }, LABELS[nodeType]));
2616
2390
  }).filter(Boolean)));
2617
2391
  }
@@ -2681,7 +2455,7 @@ var transformLift = function transformLift(editor, _ref4) {
2681
2455
  };
2682
2456
 
2683
2457
  var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4$1, _templateObject5$1, _templateObject6$1, _templateObject7$1, _templateObject8$1, _dropdown$1, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _headings, _HeadingComponents;
2684
- var styles$8 = {
2458
+ var styles$5 = {
2685
2459
  dropdown: (_dropdown$1 = {
2686
2460
  root: /*#__PURE__*/emotion.css(_templateObject$1 || (_templateObject$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
2687
2461
  }, _dropdown$1[Contentful.BLOCKS.PARAGRAPH] = /*#__PURE__*/emotion.css(_templateObject2$1 || (_templateObject2$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), tokens.fontSizeL), _dropdown$1[Contentful.BLOCKS.HEADING_1] = /*#__PURE__*/emotion.css(_templateObject3$1 || (_templateObject3$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.625rem;\n "]))), _dropdown$1[Contentful.BLOCKS.HEADING_2] = /*#__PURE__*/emotion.css(_templateObject4$1 || (_templateObject4$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.4375rem;\n "]))), _dropdown$1[Contentful.BLOCKS.HEADING_3] = /*#__PURE__*/emotion.css(_templateObject5$1 || (_templateObject5$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.25rem;\n "]))), _dropdown$1[Contentful.BLOCKS.HEADING_4] = /*#__PURE__*/emotion.css(_templateObject6$1 || (_templateObject6$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.125rem;\n "]))), _dropdown$1[Contentful.BLOCKS.HEADING_5] = /*#__PURE__*/emotion.css(_templateObject7$1 || (_templateObject7$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1rem;\n "]))), _dropdown$1[Contentful.BLOCKS.HEADING_6] = /*#__PURE__*/emotion.css(_templateObject8$1 || (_templateObject8$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 0.875rem;\n "]))), _dropdown$1),
@@ -2693,7 +2467,7 @@ var styles$8 = {
2693
2467
  function createHeading(Tag, block) {
2694
2468
  return function Heading(props) {
2695
2469
  return /*#__PURE__*/React.createElement(Tag, Object.assign({}, props.attributes, {
2696
- className: emotion.cx(styles$8.headings.root, styles$8.headings[block])
2470
+ className: emotion.cx(styles$5.headings.root, styles$5.headings[block])
2697
2471
  }), props.children);
2698
2472
  };
2699
2473
  }
@@ -2789,7 +2563,7 @@ var createHeadingPlugin = function createHeadingPlugin() {
2789
2563
  };
2790
2564
  };
2791
2565
 
2792
- var styles$9 = {
2566
+ var styles$6 = {
2793
2567
  button: /*#__PURE__*/emotion.css({
2794
2568
  height: '30px',
2795
2569
  width: '30px',
@@ -2815,7 +2589,7 @@ function ToolbarButton(props) {
2815
2589
  };
2816
2590
 
2817
2591
  var button = /*#__PURE__*/React__default.createElement(f36Components.Button, {
2818
- className: emotion.cx(styles$9.button, className),
2592
+ className: emotion.cx(styles$6.button, className),
2819
2593
  isDisabled: isDisabled,
2820
2594
  startIcon: children,
2821
2595
  onClick: handleClick,
@@ -2826,7 +2600,7 @@ function ToolbarButton(props) {
2826
2600
 
2827
2601
  if (title) {
2828
2602
  return /*#__PURE__*/React__default.createElement(f36Components.Tooltip, {
2829
- className: styles$9.tooltip,
2603
+ className: styles$6.tooltip,
2830
2604
  placement: "bottom",
2831
2605
  content: title
2832
2606
  }, button);
@@ -2836,7 +2610,7 @@ function ToolbarButton(props) {
2836
2610
  }
2837
2611
 
2838
2612
  var _templateObject$2, _templateObject2$2, _templateObject3$2;
2839
- var styles$a = {
2613
+ var styles$7 = {
2840
2614
  container: /*#__PURE__*/emotion.css(_templateObject$2 || (_templateObject$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin: 0 0 ", ";\n "])), tokens.spacingL),
2841
2615
  hr: /*#__PURE__*/emotion.css(_templateObject2$2 || (_templateObject2$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin: 0;\n height: ", ";\n background: transparent;\n position: relative;\n border: 0;\n user-select: none;\n &:hover {\n cursor: pointer;\n }\n &::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 1px;\n background: ", ";\n top: 50%;\n }\n "])), tokens.spacingM, tokens.gray300),
2842
2616
  hrSelected: /*#__PURE__*/emotion.css(_templateObject3$2 || (_templateObject3$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n &::after {\n background: ", ";\n -webkit-box-shadow: 0px 0px 5px ", ";\n box-shadow: 0px 0px 5px ", ";\n }\n "])), tokens.colorPrimary, tokens.colorPrimary, tokens.colorPrimary)
@@ -2894,14 +2668,14 @@ function Hr(props) {
2894
2668
  var isSelected = Slate.useSelected();
2895
2669
  var isFocused = Slate.useFocused();
2896
2670
  return /*#__PURE__*/React.createElement("div", Object.assign({}, props.attributes, {
2897
- className: styles$a.container,
2671
+ className: styles$7.container,
2898
2672
  "data-void-element": Contentful.BLOCKS.HR
2899
2673
  }), /*#__PURE__*/React.createElement("div", {
2900
2674
  draggable: true,
2901
2675
  // Moving `contentEditable` to this div makes it to be selectable when being the first void element, e.g pressing ctrl + a to select everything
2902
2676
  contentEditable: false
2903
2677
  }, /*#__PURE__*/React.createElement("hr", {
2904
- className: emotion.cx(styles$a.hr, isSelected && isFocused ? styles$a.hrSelected : undefined)
2678
+ className: emotion.cx(styles$7.hr, isSelected && isFocused ? styles$7.hrSelected : undefined)
2905
2679
  })), props.children);
2906
2680
  }
2907
2681
  var createHrPlugin = function createHrPlugin() {
@@ -2928,7 +2702,7 @@ var createHrPlugin = function createHrPlugin() {
2928
2702
  };
2929
2703
 
2930
2704
  var _templateObject$3, _SYS_LINK_TYPES, _LINK_TYPE_SELECTION_;
2931
- var styles$b = {
2705
+ var styles$8 = {
2932
2706
  removeSelectionLabel: /*#__PURE__*/emotion.css(_templateObject$3 || (_templateObject$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-left: ", ";\n "])), tokens.spacingS)
2933
2707
  };
2934
2708
  var SYS_LINK_TYPES = (_SYS_LINK_TYPES = {}, _SYS_LINK_TYPES[Contentful.INLINES.ENTRY_HYPERLINK] = 'Entry', _SYS_LINK_TYPES[Contentful.INLINES.ASSET_HYPERLINK] = 'Asset', _SYS_LINK_TYPES);
@@ -3111,7 +2885,7 @@ function HyperlinkModal(props) {
3111
2885
  }, "Link target", ' '), linkEntity && linkEntity.sys.linkType === SYS_LINK_TYPES[linkType] ? /*#__PURE__*/React.createElement(React.Fragment, null, !props.readonly && /*#__PURE__*/React.createElement(f36Components.TextLink, {
3112
2886
  testId: "entity-selection-link",
3113
2887
  onClick: resetLinkEntity,
3114
- className: styles$b.removeSelectionLabel
2888
+ className: styles$8.removeSelectionLabel
3115
2889
  }, "Remove selection"), /*#__PURE__*/React.createElement("div", null, linkType === Contentful.INLINES.ENTRY_HYPERLINK && /*#__PURE__*/React.createElement(FetchingWrappedEntryCard, {
3116
2890
  sdk: props.sdk,
3117
2891
  locale: props.sdk.field.locale,
@@ -3452,7 +3226,7 @@ function useEntityInfo(props) {
3452
3226
  return getEntityInfo(status.data);
3453
3227
  }
3454
3228
 
3455
- var styles$c = {
3229
+ var styles$9 = {
3456
3230
  hyperlinkWrapper: /*#__PURE__*/emotion.css({
3457
3231
  display: 'inline',
3458
3232
  position: 'static',
@@ -3497,13 +3271,13 @@ function EntityHyperlink(props) {
3497
3271
 
3498
3272
  return /*#__PURE__*/React.createElement(f36Components.Tooltip, {
3499
3273
  content: tooltipContent,
3500
- targetWrapperClassName: styles$c.hyperlinkWrapper,
3274
+ targetWrapperClassName: styles$9.hyperlinkWrapper,
3501
3275
  placement: "bottom",
3502
3276
  maxWidth: "auto"
3503
3277
  }, /*#__PURE__*/React.createElement(f36Components.TextLink, {
3504
3278
  as: "a",
3505
3279
  onClick: handleClick,
3506
- className: styles$c.hyperlink,
3280
+ className: styles$9.hyperlink,
3507
3281
  "data-link-type": target.sys.linkType,
3508
3282
  "data-link-id": target.sys.id
3509
3283
  }, props.children));
@@ -3527,7 +3301,7 @@ function UrlHyperlink(props) {
3527
3301
 
3528
3302
  return /*#__PURE__*/React.createElement(f36Components.Tooltip, {
3529
3303
  content: uri,
3530
- targetWrapperClassName: styles$c.hyperlinkWrapper,
3304
+ targetWrapperClassName: styles$9.hyperlinkWrapper,
3531
3305
  placement: "bottom",
3532
3306
  maxWidth: "auto"
3533
3307
  }, /*#__PURE__*/React.createElement(f36Components.TextLink, {
@@ -3535,7 +3309,7 @@ function UrlHyperlink(props) {
3535
3309
  href: uri,
3536
3310
  rel: "noopener noreferrer",
3537
3311
  onClick: handleClick,
3538
- className: styles$c.hyperlink
3312
+ className: styles$9.hyperlink
3539
3313
  }, props.children));
3540
3314
  }
3541
3315
 
@@ -3661,12 +3435,12 @@ var createHyperlinkPlugin = function createHyperlinkPlugin(sdk) {
3661
3435
 
3662
3436
  var _templateObject$4, _templateObject2$3, _templateObject3$3, _styles;
3663
3437
  var baseStyle = /*#__PURE__*/emotion.css(_templateObject$4 || (_templateObject$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n padding: 0;\n margin: 0 0 1.25rem 1.25rem;\n\n div:first-child {\n margin: 0;\n line-height: ", ";\n }\n"])), tokens.lineHeightDefault);
3664
- var styles$d = (_styles = {}, _styles[Contentful.BLOCKS.UL_LIST] = /*#__PURE__*/emotion.css(_templateObject2$3 || (_templateObject2$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n list-style-type: disc;\n ul {\n list-style-type: circle;\n ul {\n list-style-type: square;\n }\n }\n "]))), _styles[Contentful.BLOCKS.OL_LIST] = /*#__PURE__*/emotion.css(_templateObject3$3 || (_templateObject3$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n list-style-type: decimal;\n ol {\n list-style-type: upper-alpha;\n ol {\n list-style-type: lower-roman;\n ol {\n list-style-type: lower-alpha;\n }\n }\n }\n "]))), _styles);
3438
+ var styles$a = (_styles = {}, _styles[Contentful.BLOCKS.UL_LIST] = /*#__PURE__*/emotion.css(_templateObject2$3 || (_templateObject2$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n list-style-type: disc;\n ul {\n list-style-type: circle;\n ul {\n list-style-type: square;\n }\n }\n "]))), _styles[Contentful.BLOCKS.OL_LIST] = /*#__PURE__*/emotion.css(_templateObject3$3 || (_templateObject3$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n list-style-type: decimal;\n ol {\n list-style-type: upper-alpha;\n ol {\n list-style-type: lower-roman;\n ol {\n list-style-type: lower-alpha;\n }\n }\n }\n "]))), _styles);
3665
3439
 
3666
3440
  function createList(Tag, block) {
3667
3441
  return function List(props) {
3668
3442
  return /*#__PURE__*/React.createElement(Tag, Object.assign({}, props.attributes, {
3669
- className: emotion.cx(baseStyle, styles$d[block])
3443
+ className: emotion.cx(baseStyle, styles$a[block])
3670
3444
  }), props.children);
3671
3445
  };
3672
3446
  }
@@ -4647,14 +4421,14 @@ var ToolbarBoldButton = /*#__PURE__*/createMarkToolbarButton({
4647
4421
  mark: Contentful.MARKS.BOLD,
4648
4422
  icon: /*#__PURE__*/React.createElement(f36Icons.FormatBoldIcon, null)
4649
4423
  });
4650
- var styles$e = {
4424
+ var styles$b = {
4651
4425
  bold: /*#__PURE__*/emotion.css({
4652
4426
  fontWeight: 600
4653
4427
  })
4654
4428
  };
4655
4429
  function Bold(props) {
4656
4430
  return /*#__PURE__*/React.createElement("strong", Object.assign({}, props.attributes, {
4657
- className: styles$e.bold
4431
+ className: styles$b.bold
4658
4432
  }), props.children);
4659
4433
  }
4660
4434
 
@@ -4694,7 +4468,7 @@ var ToolbarCodeButton = /*#__PURE__*/createMarkToolbarButton({
4694
4468
  mark: Contentful.MARKS.CODE,
4695
4469
  icon: /*#__PURE__*/React.createElement(f36Icons.CodeIcon, null)
4696
4470
  });
4697
- var styles$f = {
4471
+ var styles$c = {
4698
4472
  code: /*#__PURE__*/emotion.css({
4699
4473
  fontFamily: 'monospace',
4700
4474
  fontSize: '.9em'
@@ -4702,7 +4476,7 @@ var styles$f = {
4702
4476
  };
4703
4477
  function Code(props) {
4704
4478
  return /*#__PURE__*/React.createElement("code", Object.assign({}, props.attributes, {
4705
- className: styles$f.code
4479
+ className: styles$c.code
4706
4480
  }), props.children);
4707
4481
  }
4708
4482
  var createCodePlugin = function createCodePlugin() {
@@ -4732,14 +4506,14 @@ var ToolbarItalicButton = /*#__PURE__*/createMarkToolbarButton({
4732
4506
  mark: Contentful.MARKS.ITALIC,
4733
4507
  icon: /*#__PURE__*/React.createElement(f36Icons.FormatItalicIcon, null)
4734
4508
  });
4735
- var styles$g = {
4509
+ var styles$d = {
4736
4510
  italic: /*#__PURE__*/emotion.css({
4737
4511
  fontStyle: 'italic'
4738
4512
  })
4739
4513
  };
4740
4514
  function Italic(props) {
4741
4515
  return /*#__PURE__*/React.createElement("em", Object.assign({}, props.attributes, {
4742
- className: styles$g.italic
4516
+ className: styles$d.italic
4743
4517
  }), props.children);
4744
4518
  }
4745
4519
  var createItalicPlugin = function createItalicPlugin() {
@@ -5015,10 +4789,10 @@ var createNormalizerPlugin = function createNormalizerPlugin() {
5015
4789
  };
5016
4790
 
5017
4791
  var _templateObject$6, _styles$1;
5018
- var styles$h = (_styles$1 = {}, _styles$1[Contentful.BLOCKS.PARAGRAPH] = /*#__PURE__*/emotion.css(_templateObject$6 || (_templateObject$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n line-height: ", ";\n margin-bottom: 1.5em;\n "])), tokens.lineHeightDefault), _styles$1);
4792
+ var styles$e = (_styles$1 = {}, _styles$1[Contentful.BLOCKS.PARAGRAPH] = /*#__PURE__*/emotion.css(_templateObject$6 || (_templateObject$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n line-height: ", ";\n margin-bottom: 1.5em;\n "])), tokens.lineHeightDefault), _styles$1);
5019
4793
  function Paragraph(props) {
5020
4794
  return /*#__PURE__*/React.createElement("div", Object.assign({}, props.attributes, {
5021
- className: styles$h[Contentful.BLOCKS.PARAGRAPH]
4795
+ className: styles$e[Contentful.BLOCKS.PARAGRAPH]
5022
4796
  }), props.children);
5023
4797
  }
5024
4798
 
@@ -5839,7 +5613,7 @@ var isTable = function isTable(node) {
5839
5613
  return slate.Element.isElement(node) && node.type === Contentful.BLOCKS.TABLE;
5840
5614
  };
5841
5615
 
5842
- var styles$i = {
5616
+ var styles$f = {
5843
5617
  topRight: /*#__PURE__*/emotion.css({
5844
5618
  position: 'absolute',
5845
5619
  top: '6px',
@@ -5928,7 +5702,7 @@ var TableActions = function TableActions() {
5928
5702
  size: "small",
5929
5703
  variant: "transparent",
5930
5704
  tabIndex: -1,
5931
- className: styles$i.topRight,
5705
+ className: styles$f.topRight,
5932
5706
  icon: /*#__PURE__*/React__default.createElement(f36Icons.ChevronDownIcon, null),
5933
5707
  "aria-label": "Open table menu",
5934
5708
  testId: "cf-table-actions-button"
@@ -6862,7 +6636,7 @@ var normalizeEditorValue = function normalizeEditorValue(value, options) {
6862
6636
  };
6863
6637
 
6864
6638
  var STYLE_EDITOR_BORDER = "1px solid " + tokens.gray400;
6865
- var styles$j = {
6639
+ var styles$g = {
6866
6640
  root: /*#__PURE__*/emotion.css({
6867
6641
  position: 'relative'
6868
6642
  }),
@@ -6978,7 +6752,7 @@ var EmbedEntityWidget = function EmbedEntityWidget(_ref) {
6978
6752
  }, actions);
6979
6753
  };
6980
6754
 
6981
- var styles$k = {
6755
+ var styles$h = {
6982
6756
  toolbar: /*#__PURE__*/emotion.css({
6983
6757
  border: "1px solid " + tokens.gray400,
6984
6758
  backgroundColor: tokens.gray100,
@@ -7023,14 +6797,14 @@ var Toolbar = function Toolbar(_ref) {
7023
6797
  var shouldDisableTables = isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected;
7024
6798
  return /*#__PURE__*/React__default.createElement(f36Components.Flex, {
7025
6799
  testId: "toolbar",
7026
- className: styles$k.toolbar,
6800
+ className: styles$h.toolbar,
7027
6801
  alignItems: "center"
7028
6802
  }, /*#__PURE__*/React__default.createElement("div", {
7029
- className: styles$k.formattingOptionsWrapper
6803
+ className: styles$h.formattingOptionsWrapper
7030
6804
  }, /*#__PURE__*/React__default.createElement(ToolbarHeadingButton, {
7031
6805
  isDisabled: isDisabled || !canInsertBlocks
7032
6806
  }), validationInfo.isAnyMarkEnabled && /*#__PURE__*/React__default.createElement("span", {
7033
- className: styles$k.divider
6807
+ className: styles$h.divider
7034
6808
  }), isMarkEnabled(sdk.field, Contentful.MARKS.BOLD) && /*#__PURE__*/React__default.createElement(ToolbarBoldButton, {
7035
6809
  isDisabled: isDisabled
7036
6810
  }), isMarkEnabled(sdk.field, Contentful.MARKS.ITALIC) && /*#__PURE__*/React__default.createElement(ToolbarItalicButton, {
@@ -7040,11 +6814,11 @@ var Toolbar = function Toolbar(_ref) {
7040
6814
  }), isMarkEnabled(sdk.field, Contentful.MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarCodeButton, {
7041
6815
  isDisabled: isDisabled
7042
6816
  }), validationInfo.isAnyHyperlinkEnabled && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
7043
- className: styles$k.divider
6817
+ className: styles$h.divider
7044
6818
  }), /*#__PURE__*/React__default.createElement(ToolbarHyperlinkButton, {
7045
6819
  isDisabled: isDisabled
7046
6820
  })), validationInfo.isAnyBlockFormattingEnabled && /*#__PURE__*/React__default.createElement("span", {
7047
- className: styles$k.divider
6821
+ className: styles$h.divider
7048
6822
  }), /*#__PURE__*/React__default.createElement(ToolbarListButton, {
7049
6823
  isDisabled: isDisabled || !canInsertBlocks
7050
6824
  }), isNodeTypeEnabled(sdk.field, Contentful.BLOCKS.QUOTE) && /*#__PURE__*/React__default.createElement(ToolbarQuoteButton, {
@@ -7054,7 +6828,7 @@ var Toolbar = function Toolbar(_ref) {
7054
6828
  }), isNodeTypeEnabled(sdk.field, Contentful.BLOCKS.TABLE) && /*#__PURE__*/React__default.createElement(ToolbarTableButton, {
7055
6829
  isDisabled: shouldDisableTables
7056
6830
  })), /*#__PURE__*/React__default.createElement("div", {
7057
- className: styles$k.embedActionsWrapper
6831
+ className: styles$h.embedActionsWrapper
7058
6832
  }, /*#__PURE__*/React__default.createElement(EmbedEntityWidget, {
7059
6833
  isDisabled: isDisabled,
7060
6834
  canInsertBlocks: canInsertBlocks
@@ -7079,7 +6853,7 @@ function getValidationInfo(field) {
7079
6853
  }
7080
6854
 
7081
6855
  var _templateObject$b;
7082
- var styles$l = {
6856
+ var styles$i = {
7083
6857
  nativeSticky: /*#__PURE__*/emotion.css(_templateObject$b || (_templateObject$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: -webkit-sticky;\n position: sticky;\n top: -1px;\n z-index: 2;\n "])))
7084
6858
  };
7085
6859
 
@@ -7087,7 +6861,7 @@ var StickyToolbarWrapper = function StickyToolbarWrapper(_ref) {
7087
6861
  var isDisabled = _ref.isDisabled,
7088
6862
  children = _ref.children;
7089
6863
  return /*#__PURE__*/React__default.createElement("div", {
7090
- className: isDisabled ? '' : styles$l.nativeSticky
6864
+ className: isDisabled ? '' : styles$i.nativeSticky
7091
6865
  }, children);
7092
6866
  };
7093
6867
 
@@ -7182,9 +6956,9 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7182
6956
  setPendingExternalUpdate(true);
7183
6957
  setEditorContent(editor, documentToEditorValue(props.value));
7184
6958
  }, [props.value, id]);
7185
- var classNames = emotion.cx(styles$j.editor, props.minHeight !== undefined ? emotion.css({
6959
+ var classNames = emotion.cx(styles$g.editor, props.minHeight !== undefined ? emotion.css({
7186
6960
  minHeight: props.minHeight
7187
- }) : undefined, props.isDisabled ? styles$j.disabled : styles$j.enabled, props.isToolbarHidden && styles$j.hiddenToolbar);
6961
+ }) : undefined, props.isDisabled ? styles$g.disabled : styles$g.enabled, props.isToolbarHidden && styles$g.hiddenToolbar);
7188
6962
  React.useEffect(function () {
7189
6963
  if (!isFirstRender) {
7190
6964
  return;
@@ -7200,7 +6974,7 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7200
6974
  }, /*#__PURE__*/React__default.createElement(ContentfulEditorIdProvider, {
7201
6975
  value: id
7202
6976
  }, /*#__PURE__*/React__default.createElement("div", {
7203
- className: styles$j.root,
6977
+ className: styles$g.root,
7204
6978
  "data-test-id": "rich-text-editor"
7205
6979
  }, /*#__PURE__*/React__default.createElement(plateCore.Plate, {
7206
6980
  id: id,
@@ -7227,7 +7001,7 @@ var RichTextEditor = function RichTextEditor(props) {
7227
7001
  otherProps = _objectWithoutPropertiesLoose(props, _excluded);
7228
7002
 
7229
7003
  var isEmptyValue = React.useCallback(function (value) {
7230
- return !value || deepEquals(value, Contentful.EMPTY_DOCUMENT);
7004
+ return !value || areEqual(value, Contentful.EMPTY_DOCUMENT);
7231
7005
  }, []);
7232
7006
  var id = getContentfulEditorId(props.sdk);
7233
7007
  return /*#__PURE__*/React__default.createElement(fieldEditorReference.EntityProvider, {
@@ -7237,7 +7011,7 @@ var RichTextEditor = function RichTextEditor(props) {
7237
7011
  field: sdk.field,
7238
7012
  isInitiallyDisabled: isInitiallyDisabled,
7239
7013
  isEmptyValue: isEmptyValue,
7240
- isEqualValues: deepEquals
7014
+ isEqualValues: areEqual
7241
7015
  }, function (_ref) {
7242
7016
  var lastRemoteValue = _ref.lastRemoteValue,
7243
7017
  disabled = _ref.disabled,