@contentful/field-editor-rich-text 2.0.0-next.43 → 2.0.0-next.44

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.
@@ -1,10 +1,10 @@
1
- import React__default, { createContext, useContext, useMemo, createElement, useEffect, useState, memo, Fragment, useCallback } from 'react';
2
- import { useEntities, ScheduledIconWithTooltip, MissingEntityCard, AssetThumbnail, EntityProvider, getScheduleTooltipContent } from '@contentful/field-editor-reference';
3
- import { entityHelpers, shortenStorageUnit, isValidImage, ModalDialogLauncher, FieldConnector } from '@contentful/field-editor-shared';
1
+ import React__default, { createContext, useContext, useMemo, useState, useEffect, memo, createElement, Fragment, useCallback } from 'react';
2
+ import { useEntities, MissingEntityCard, WrappedAssetCard, WrappedEntryCard, ScheduledIconWithTooltip, EntityProvider, getScheduleTooltipContent } from '@contentful/field-editor-reference';
3
+ import { entityHelpers, ModalDialogLauncher, FieldConnector } from '@contentful/field-editor-shared';
4
4
  import { BLOCKS, INLINES, TEXT_CONTAINERS, HEADINGS, LIST_ITEM_BLOCKS, MARKS, CONTAINERS, TOP_LEVEL_BLOCKS, VOID_BLOCKS, EMPTY_DOCUMENT } from '@contentful/rich-text-types';
5
5
  import { usePlateEditorRef, usePlateEditorState, getNodes, toggleNodeType, getText, getAbove, setNodes, isAncestorEmpty, match, getLastChildPath, wrapNodes, getPluginType, unwrapNodes, isCollapsed, isRangeAcrossBlocks, ELEMENT_DEFAULT, findNode, getParent, getBlockAbove, isSelectionAtBlockStart, isSelectionAtBlockEnd, isFirstChild, insertNodes, moveChildren, isBlockAboveEmpty, mockPlugin, deleteFragment, isMarkActive, toggleMark, someHtmlElement, KEY_DESERIALIZE_HTML, hasSingleChild, isLastChild, someNode, getChildren as getChildren$1, queryNode, createDeserializeHtmlPlugin, createDeserializeAstPlugin, createPlateEditor, getPlateSelectors, getPlateActions, Plate } from '@udecode/plate-core';
6
6
  import { css, cx } from 'emotion';
7
- import deepEquals from 'fast-deep-equal';
7
+ import areEqual from 'fast-deep-equal';
8
8
  import noop from 'lodash-es/noop';
9
9
  import { createDeserializeDocxPlugin } from '@udecode/plate-serializer-docx';
10
10
  import { createSoftBreakPlugin as createSoftBreakPlugin$1, createExitBreakPlugin as createExitBreakPlugin$1 } from '@udecode/plate-break';
@@ -13,13 +13,12 @@ import isHotkey from 'is-hotkey';
13
13
  import { Text, Element, Editor, Transforms, Range, Path, Node, Point } from 'slate';
14
14
  import { ReactEditor, useSelected, useReadOnly, useFocused } from 'slate-react';
15
15
  import constate from 'constate';
16
- import { AssetCard, Menu, Text as Text$1, Notification, EntryCard, MenuItem, Flex, Icon, InlineEntryCard, Button, Tooltip, ModalContent, Form, FormControl, TextInput, Select, FormLabel, TextLink, ModalControls, Card, IconButton } from '@contentful/f36-components';
17
- import mimetype from '@contentful/mimetype';
18
- import get from 'lodash-es/get';
19
- import { ClockIcon, AssetIcon, EmbeddedEntryBlockIcon, EmbeddedEntryInlineIcon, ChevronDownIcon, HorizontalRuleIcon, LinkIcon, ListBulletedIcon, ListNumberedIcon, FormatBoldIcon, CodeIcon, FormatItalicIcon, FormatUnderlinedIcon, QuoteIcon, TableIcon, PlusIcon } from '@contentful/f36-icons';
20
- import tokens from '@contentful/f36-tokens';
16
+ import { AssetCard, EntryCard, Menu, Flex, Icon, InlineEntryCard, MenuItem, Text as Text$1, Button, Tooltip, ModalContent, Form, FormControl, TextInput, Select, FormLabel, TextLink, ModalControls, Card, IconButton } from '@contentful/f36-components';
21
17
  import find from 'lodash-es/find';
22
18
  import flow from 'lodash-es/flow';
19
+ import get from 'lodash-es/get';
20
+ import { AssetIcon, EmbeddedEntryBlockIcon, ClockIcon, EmbeddedEntryInlineIcon, ChevronDownIcon, HorizontalRuleIcon, LinkIcon, ListBulletedIcon, ListNumberedIcon, FormatBoldIcon, CodeIcon, FormatItalicIcon, FormatUnderlinedIcon, QuoteIcon, TableIcon, PlusIcon } from '@contentful/f36-icons';
21
+ import tokens from '@contentful/f36-tokens';
23
22
  import { getListTypes, ELEMENT_LIC, getListItemEntry, isListNested, moveListItemUp, ELEMENT_LI, unwrapList as unwrapList$1, removeFirstListItem, removeListItem, deleteForwardList, deleteFragmentList, normalizeList, createListPlugin as createListPlugin$1, ELEMENT_UL, ELEMENT_OL } from '@udecode/plate-list';
24
23
  import castArray from 'lodash-es/castArray';
25
24
  import { createBoldPlugin as createBoldPlugin$1, createCodePlugin as createCodePlugin$1, createItalicPlugin as createItalicPlugin$1, createUnderlinePlugin as createUnderlinePlugin$1 } from '@udecode/plate-basic-marks';
@@ -623,320 +622,108 @@ var _constate = /*#__PURE__*/constate(useSdk),
623
622
  SdkProvider = _constate[0],
624
623
  useSdkContext = _constate[1];
625
624
 
626
- var styles = {
627
- scheduleIcon: /*#__PURE__*/css({
628
- marginRight: tokens.spacing2Xs
629
- })
630
- };
631
- function EntityStatusIcon(_ref) {
632
- var entity = _ref.entity,
633
- entityType = _ref.entityType;
625
+ function useFetchedEntity(_ref) {
626
+ var type = _ref.type,
627
+ id = _ref.id,
628
+ onEntityFetchComplete = _ref.onEntityFetchComplete;
634
629
 
635
630
  var _useEntities = useEntities(),
636
- loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
637
-
638
- return /*#__PURE__*/createElement(ScheduledIconWithTooltip, {
639
- getEntityScheduledActions: loadEntityScheduledActions,
640
- entityType: entityType,
641
- entityId: entity.sys.id
642
- }, /*#__PURE__*/createElement(ClockIcon, {
643
- className: styles.scheduleIcon,
644
- size: "small",
645
- color: "muted",
646
- testId: "schedule-icon"
647
- }));
648
- }
649
-
650
- var styles$1 = {
651
- assetCard: /*#__PURE__*/css({
652
- cursor: 'pointer'
653
- }),
654
- cardDropdown: /*#__PURE__*/css({
655
- width: '300px'
656
- }),
657
- truncated: /*#__PURE__*/css({
658
- overflow: 'hidden',
659
- whiteSpace: 'nowrap',
660
- textOverflow: 'ellipsis'
661
- })
662
- };
631
+ entries = _useEntities.entries,
632
+ assets = _useEntities.assets,
633
+ getOrLoadEntry = _useEntities.getOrLoadEntry,
634
+ getOrLoadAsset = _useEntities.getOrLoadAsset;
663
635
 
664
- function downloadAsset(url, fileName) {
665
- // This method won't work if we have CORS disabled(asset not on the contentful server)
666
- fetch(url, {
667
- method: 'GET',
668
- headers: {}
669
- }).then(function (response) {
670
- response.arrayBuffer().then(function (buffer) {
671
- var url = window.URL.createObjectURL(new Blob([buffer]));
672
- var link = document.createElement('a');
673
- link.href = url;
674
- link.setAttribute('download', fileName); //or any other extension
675
-
676
- document.body.appendChild(link);
677
- link.click();
678
- document.body.removeChild(link);
679
- });
680
- })["catch"](function (err) {
681
- Notification.error('Failed to download asset');
682
- console.log(err);
683
- });
684
- }
636
+ var store = type === 'Entry' ? entries : assets;
685
637
 
686
- function renderAssetInfo(props) {
687
- var entityFile = props.entityFile;
688
- var fileName = get(entityFile, 'fileName');
689
- var mimeType = get(entityFile, 'contentType');
690
- var fileSize = get(entityFile, 'details.size');
691
- var image = get(entityFile, 'details.image');
692
- return [/*#__PURE__*/createElement(Menu.SectionTitle, {
693
- key: "file-section"
694
- }, "File info"), fileName && /*#__PURE__*/createElement(Menu.Item, {
695
- key: "file-name"
696
- }, /*#__PURE__*/createElement(Text$1, {
697
- isTruncated: true
698
- }, fileName)), mimeType && /*#__PURE__*/createElement(Menu.Item, {
699
- key: "file-type"
700
- }, /*#__PURE__*/createElement(Text$1, {
701
- isTruncated: true
702
- }, mimeType)), fileSize && /*#__PURE__*/createElement(Menu.Item, {
703
- key: "file-size"
704
- }, shortenStorageUnit(fileSize, 'B')), image && /*#__PURE__*/createElement(Menu.Item, {
705
- key: "file-dimentions"
706
- }, image.width + " \xD7 " + image.height)].filter(function (item) {
707
- return item;
708
- });
709
- }
710
- function renderActions(props) {
711
- var entityFile = props.entityFile,
712
- isDisabled = props.isDisabled,
713
- onEdit = props.onEdit,
714
- onRemove = props.onRemove;
715
- return [/*#__PURE__*/createElement(Menu.SectionTitle, {
716
- key: "section-title"
717
- }, "Actions"), onEdit ? /*#__PURE__*/createElement(Menu.Item, {
718
- key: "edit",
719
- onClick: onEdit,
720
- testId: "card-action-edit"
721
- }, "Edit") : null, entityFile ? /*#__PURE__*/createElement(Menu.Item, {
722
- key: "download",
723
- onClick: function onClick() {
724
- if (typeof entityFile.url === 'string') {
725
- downloadAsset(entityFile.url, get(entityFile, 'fileName'));
726
- }
727
- },
728
- testId: "card-action-download"
729
- }, "Download") : null, onRemove ? /*#__PURE__*/createElement(Menu.Item, {
730
- key: "remove",
731
- disabled: isDisabled,
732
- onClick: onRemove,
733
- testId: "card-action-remove"
734
- }, "Remove") : null].filter(function (item) {
735
- return item;
736
- });
737
- }
738
- function FetchingWrappedAssetCard(props) {
739
- var _asset$fields;
638
+ var _useState = useState(store[id]),
639
+ entity = _useState[0],
640
+ setEntity = _useState[1]; // Deep compare the entity value to keep re-rendering to minimal
740
641
 
741
- var _useEntities = useEntities(),
742
- getOrLoadAsset = _useEntities.getOrLoadAsset,
743
- assets = _useEntities.assets;
744
642
 
745
- var asset = assets[props.assetId];
746
- var defaultLocaleCode = props.sdk.locales["default"];
747
- var entityFile = asset != null && (_asset$fields = asset.fields) != null && _asset$fields.file ? asset.fields.file[props.locale] || asset.fields.file[defaultLocaleCode] : undefined;
748
- var onEntityFetchComplete = props.onEntityFetchComplete;
749
643
  useEffect(function () {
750
- getOrLoadAsset(props.assetId);
751
- }, [props.assetId]); // eslint-disable-line
644
+ var newValue = store[id];
752
645
 
753
- useEffect(function () {
754
- if (!asset) {
755
- return;
646
+ if (!areEqual(entity, newValue)) {
647
+ setEntity(newValue);
756
648
  }
649
+ }, [store, entity, id]); // Fetch the entity if needed
757
650
 
758
- onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
759
- }, [asset, onEntityFetchComplete]);
760
-
761
- function getAssetSrc() {
762
- if (!(entityFile != null && entityFile.url)) return '';
763
- return entityFile.url + "?h=300";
764
- }
765
-
766
- function getFileType() {
767
- var groupToIconMap = {
768
- image: 'image',
769
- video: 'video',
770
- audio: 'audio',
771
- richtext: 'richtext',
772
- presentation: 'presentation',
773
- spreadsheet: 'spreadsheet',
774
- pdfdocument: 'pdf',
775
- archive: 'archive',
776
- plaintext: 'plaintext',
777
- code: 'code',
778
- markup: 'markup'
779
- };
780
- var archive = groupToIconMap['archive'];
781
-
782
- if (!entityFile) {
783
- return archive;
651
+ useEffect(function () {
652
+ (type === 'Entry' ? getOrLoadEntry : getOrLoadAsset)(id); // "getOrLoadEntry" and "getOrLoadAsset" instances change with every
653
+ // entity store update causing page lag on initial load
654
+ // TODO: consider rewriting useEntities() hook to avoid that happening in
655
+ // first place.
656
+ // eslint-disable-next-line react-hooks/exhaustive-deps
657
+ }, [type, id]);
658
+ useEffect(function () {
659
+ if (entity) {
660
+ onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
784
661
  }
662
+ }, [onEntityFetchComplete, entity]);
663
+ return entity;
664
+ }
785
665
 
786
- var groupName = mimetype.getGroupLabel({
787
- type: entityFile.contentType,
788
- fallbackFileName: entityFile.fileName
789
- });
790
- return groupToIconMap[groupName] || archive;
791
- }
792
-
793
- if (asset === undefined) {
666
+ var InternalAssetCard = /*#__PURE__*/memo(function (props) {
667
+ if (props.asset === undefined) {
794
668
  return /*#__PURE__*/createElement(AssetCard, {
795
- size: "small",
669
+ size: "default",
796
670
  isLoading: true
797
671
  });
798
672
  }
799
673
 
800
- if (asset === 'failed') {
801
- return /*#__PURE__*/createElement(MissingEntityCard, {
802
- entityType: "Asset",
803
- isDisabled: props.isDisabled,
804
- onRemove: props.onRemove
805
- });
806
- }
807
-
808
- var status = asset ? entityHelpers.getEntryStatus(asset.sys) : undefined;
809
-
810
- if (status === 'deleted') {
674
+ if (props.asset === 'failed') {
811
675
  return /*#__PURE__*/createElement(MissingEntityCard, {
812
676
  entityType: "Asset",
813
- asSquare: true,
814
677
  isDisabled: props.isDisabled,
815
678
  onRemove: props.onRemove
816
679
  });
817
680
  }
818
681
 
819
- var entityTitle = entityHelpers.getAssetTitle({
820
- asset: asset,
821
- localeCode: props.locale,
822
- defaultLocaleCode: defaultLocaleCode,
823
- defaultTitle: 'Untitled'
824
- });
825
- return /*#__PURE__*/createElement(AssetCard, {
826
- title: entityTitle,
827
- isSelected: props.isSelected,
682
+ return /*#__PURE__*/createElement(WrappedAssetCard, {
683
+ getEntityScheduledActions: props.loadEntityScheduledActions,
828
684
  size: "small",
829
- src: getAssetSrc(),
830
- type: getFileType(),
831
- status: status,
832
- icon: /*#__PURE__*/createElement(EntityStatusIcon, {
833
- entityType: "Asset",
834
- entity: asset
835
- }),
836
- className: styles$1.assetCard,
837
- actions: [renderActions({
838
- entityFile: entityFile,
839
- isDisabled: props.isDisabled,
840
- onEdit: props.onEdit,
841
- onRemove: props.onRemove
842
- }), entityFile ? renderAssetInfo({
843
- entityFile: entityFile
844
- }) : null].filter(function (item) {
845
- return item;
846
- })
685
+ isSelected: props.isSelected,
686
+ isDisabled: props.isDisabled,
687
+ localeCode: props.locale,
688
+ defaultLocaleCode: props.sdk.locales["default"],
689
+ asset: props.asset,
690
+ onEdit: props.onEdit,
691
+ onRemove: props.isDisabled ? undefined : props.onRemove,
692
+ isClickable: false
847
693
  });
848
- }
694
+ }, areEqual);
695
+ InternalAssetCard.displayName = 'InternalAssetCard';
696
+ function FetchingWrappedAssetCard(props) {
697
+ var onEntityFetchComplete = props.onEntityFetchComplete,
698
+ assetId = props.assetId;
849
699
 
850
- var styles$2 = {
851
- entryCard: /*#__PURE__*/css({
852
- cursor: 'pointer'
853
- })
854
- };
700
+ var _useEntities = useEntities(),
701
+ loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
855
702
 
856
- function EntryThumbnail(_ref) {
857
- var file = _ref.file;
858
- if (!isValidImage(file)) return null;
859
- return /*#__PURE__*/createElement(AssetThumbnail, {
860
- file: file
703
+ var asset = useFetchedEntity({
704
+ type: 'Asset',
705
+ id: assetId,
706
+ onEntityFetchComplete: onEntityFetchComplete
707
+ });
708
+ return /*#__PURE__*/createElement(InternalAssetCard, {
709
+ asset: asset,
710
+ sdk: props.sdk,
711
+ isDisabled: props.isDisabled,
712
+ isSelected: props.isSelected,
713
+ loadEntityScheduledActions: loadEntityScheduledActions,
714
+ locale: props.locale,
715
+ onEdit: props.onEdit,
716
+ onRemove: props.onRemove
861
717
  });
862
718
  }
863
719
 
864
- function FetchingWrappedEntryCard(props) {
865
- var _useEntities = useEntities(),
866
- getOrLoadEntry = _useEntities.getOrLoadEntry,
867
- entries = _useEntities.entries,
868
- getOrLoadAsset = _useEntities.getOrLoadAsset;
869
-
870
- var _React$useState = useState(null),
871
- file = _React$useState[0],
872
- setFile = _React$useState[1];
873
-
874
- var entry = entries[props.entryId];
875
- var contentType = useMemo(function () {
876
- if (!entry || entry === 'failed') {
877
- return undefined;
878
- }
879
-
880
- return props.sdk.space.getCachedContentTypes().find(function (contentType) {
881
- return contentType.sys.id === entry.sys.contentType.sys.id;
882
- });
883
- }, [props.sdk, entry]);
884
- var defaultLocaleCode = props.sdk.locales["default"];
885
- var onEntityFetchComplete = props.onEntityFetchComplete;
886
- useEffect(function () {
887
- if (!entry || entry === 'failed') return;
888
- var subscribed = true;
889
- entityHelpers.getEntryImage({
890
- entry: entry,
891
- contentType: contentType,
892
- localeCode: props.locale,
893
- defaultLocaleCode: defaultLocaleCode
894
- }, getOrLoadAsset)["catch"](function () {
895
- return null;
896
- }).then(function (file) {
897
- if (subscribed) {
898
- setFile(file);
899
- }
900
- });
901
- return function () {
902
- subscribed = false;
903
- };
904
- }, [entry, contentType, props.locale, defaultLocaleCode, props.sdk, file, getOrLoadAsset]);
905
- useEffect(function () {
906
- getOrLoadEntry(props.entryId);
907
- }, [props.entryId]); // eslint-disable-line
908
-
909
- useEffect(function () {
910
- if (!entry) {
911
- return;
912
- }
913
-
914
- onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
915
- }, [entry, onEntityFetchComplete]);
916
-
917
- function renderDropdown() {
918
- if (!props.onEdit || !props.onRemove) return undefined;
919
- return [props.onEdit ? /*#__PURE__*/createElement(MenuItem, {
920
- key: "edit",
921
- testId: "card-action-edit",
922
- onClick: function onClick() {
923
- props.onEdit && props.onEdit();
924
- }
925
- }, "Edit") : null, props.onRemove ? /*#__PURE__*/createElement(MenuItem, {
926
- key: "delete",
927
- disabled: props.isDisabled,
928
- testId: "card-action-remove",
929
- onClick: function onClick() {
930
- props.onRemove && props.onRemove();
931
- }
932
- }, "Remove") : null].filter(function (item) {
933
- return item;
934
- });
935
- }
720
+ var InternalEntryCard = /*#__PURE__*/memo(function (props) {
721
+ var entry = props.entry,
722
+ sdk = props.sdk,
723
+ loadEntityScheduledActions = props.loadEntityScheduledActions;
936
724
 
937
725
  if (entry === undefined) {
938
726
  return /*#__PURE__*/createElement(EntryCard, {
939
- size: "default",
940
727
  isLoading: true
941
728
  });
942
729
  }
@@ -949,50 +736,50 @@ function FetchingWrappedEntryCard(props) {
949
736
  });
950
737
  }
951
738
 
952
- var entryStatus = entry ? entityHelpers.getEntryStatus(entry.sys) : undefined;
953
-
954
- if (entryStatus === 'deleted') {
955
- return /*#__PURE__*/createElement(MissingEntityCard, {
956
- entityType: "Entry",
957
- isDisabled: props.isDisabled,
958
- onRemove: props.onRemove
959
- });
960
- }
961
-
962
- var title = entityHelpers.getEntryTitle({
963
- entry: entry,
964
- contentType: contentType,
965
- localeCode: props.locale,
966
- defaultLocaleCode: defaultLocaleCode,
967
- defaultTitle: 'Untitled'
739
+ var contentType = sdk.space.getCachedContentTypes().find(function (contentType) {
740
+ return contentType.sys.id === entry.sys.contentType.sys.id;
968
741
  });
969
- var description = entityHelpers.getEntityDescription({
970
- entity: entry,
971
- contentType: contentType,
742
+ return /*#__PURE__*/createElement(WrappedEntryCard, {
743
+ size: "default",
744
+ getAsset: props.sdk.space.getAsset,
745
+ getEntityScheduledActions: loadEntityScheduledActions,
746
+ isSelected: props.isSelected,
747
+ isDisabled: props.isDisabled,
972
748
  localeCode: props.locale,
973
- defaultLocaleCode: defaultLocaleCode
749
+ defaultLocaleCode: props.sdk.locales["default"],
750
+ contentType: contentType,
751
+ entry: entry,
752
+ onEdit: props.onEdit,
753
+ onRemove: props.isDisabled ? undefined : props.onRemove,
754
+ isClickable: false
974
755
  });
975
- return /*#__PURE__*/createElement(EntryCard, {
976
- contentType: contentType == null ? void 0 : contentType.name,
977
- title: title,
978
- description: description,
979
- size: "default",
756
+ }, areEqual);
757
+ InternalEntryCard.displayName = 'ReferenceCard';
758
+ var FetchingWrappedEntryCard = function FetchingWrappedEntryCard(props) {
759
+ var entryId = props.entryId,
760
+ onEntityFetchComplete = props.onEntityFetchComplete;
761
+
762
+ var _useEntities = useEntities(),
763
+ loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
764
+
765
+ var entry = useFetchedEntity({
766
+ type: 'Entry',
767
+ id: entryId,
768
+ onEntityFetchComplete: onEntityFetchComplete
769
+ });
770
+ return /*#__PURE__*/createElement(InternalEntryCard, {
771
+ entry: entry,
772
+ sdk: props.sdk,
773
+ locale: props.locale,
774
+ isDisabled: props.isDisabled,
980
775
  isSelected: props.isSelected,
981
- status: entryStatus,
982
- className: styles$2.entryCard,
983
- thumbnailElement: file ? /*#__PURE__*/createElement(EntryThumbnail, {
984
- file: file
985
- }) : undefined,
986
- icon: /*#__PURE__*/createElement(EntityStatusIcon, {
987
- entityType: "Entry",
988
- entity: entry
989
- }),
990
- withDragHandle: false,
991
- actions: renderDropdown()
776
+ onEdit: props.onEdit,
777
+ onRemove: props.onRemove,
778
+ loadEntityScheduledActions: loadEntityScheduledActions
992
779
  });
993
- }
780
+ };
994
781
 
995
- var styles$3 = {
782
+ var styles = {
996
783
  root: /*#__PURE__*/css({
997
784
  marginBottom: '1.25rem !important',
998
785
  display: 'block'
@@ -1017,24 +804,21 @@ function LinkedEntityBlock(props) {
1017
804
  var _element$data$target$ = element.data.target.sys,
1018
805
  entityId = _element$data$target$.id,
1019
806
  entityType = _element$data$target$.linkType;
1020
-
1021
- var handleEditClick = function handleEditClick() {
807
+ var handleEditClick = React__default.useCallback(function () {
1022
808
  var openEntity = entityType === 'Asset' ? sdk.navigator.openAsset : sdk.navigator.openEntry;
1023
809
  return openEntity(entityId, {
1024
810
  slideIn: true
1025
811
  });
1026
- };
1027
-
1028
- var handleRemoveClick = function handleRemoveClick() {
812
+ }, [sdk, entityId, entityType]);
813
+ var handleRemoveClick = React__default.useCallback(function () {
1029
814
  if (!editor) return;
1030
815
  var pathToElement = ReactEditor.findPath(editor, element);
1031
816
  Transforms.removeNodes(editor, {
1032
817
  at: pathToElement
1033
818
  });
1034
- };
1035
-
819
+ }, [editor, element]);
1036
820
  return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
1037
- className: styles$3.root,
821
+ className: styles.root,
1038
822
  "data-entity-type": entityType,
1039
823
  "data-entity-id": entityId,
1040
824
  // COMPAT: This makes copy & paste work for Firefox
@@ -1044,7 +828,7 @@ function LinkedEntityBlock(props) {
1044
828
  // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari
1045
829
  contentEditable: IS_CHROME ? false : undefined,
1046
830
  draggable: IS_CHROME ? true : undefined,
1047
- className: styles$3.container
831
+ className: styles.container
1048
832
  }, entityType === 'Entry' && /*#__PURE__*/React__default.createElement(FetchingWrappedEntryCard, {
1049
833
  sdk: sdk,
1050
834
  entryId: entityId,
@@ -1992,7 +1776,7 @@ function insertBlock(editor, nodeType, entity) {
1992
1776
  focus(editor);
1993
1777
  }
1994
1778
 
1995
- var styles$4 = {
1779
+ var styles$1 = {
1996
1780
  icon: /*#__PURE__*/css({
1997
1781
  marginRight: '10px'
1998
1782
  })
@@ -2040,7 +1824,7 @@ function EmbeddedEntityBlockToolbarIcon(_ref) {
2040
1824
  flexDirection: "row"
2041
1825
  }, /*#__PURE__*/React__default.createElement(Icon, {
2042
1826
  as: type === 'Asset' ? AssetIcon : EmbeddedEntryBlockIcon,
2043
- className: "rich-text__embedded-entry-list-icon " + styles$4.icon,
1827
+ className: "rich-text__embedded-entry-list-icon " + styles$1.icon,
2044
1828
  variant: "secondary"
2045
1829
  }), /*#__PURE__*/React__default.createElement("span", null, type)));
2046
1830
  }
@@ -2139,7 +1923,7 @@ var createEmbeddedAssetBlockPlugin = /*#__PURE__*/createEmbeddedEntityPlugin(BLO
2139
1923
 
2140
1924
  var getEntryTitle = entityHelpers.getEntryTitle,
2141
1925
  getEntryStatus = entityHelpers.getEntryStatus;
2142
- var styles$5 = {
1926
+ var styles$2 = {
2143
1927
  scheduledIcon: /*#__PURE__*/css({
2144
1928
  verticalAlign: 'text-bottom',
2145
1929
  marginRight: tokens.spacing2Xs
@@ -2210,7 +1994,7 @@ function FetchingWrappedInlineEntryCard(props) {
2210
1994
  actions: [/*#__PURE__*/React__default.createElement(MenuItem, {
2211
1995
  key: "remove",
2212
1996
  onClick: props.onRemove,
2213
- testId: "card-action-remove"
1997
+ testId: "delete"
2214
1998
  }, "Remove")]
2215
1999
  });
2216
2000
  }
@@ -2227,14 +2011,14 @@ function FetchingWrappedInlineEntryCard(props) {
2227
2011
  key: "remove",
2228
2012
  onClick: props.onRemove,
2229
2013
  disabled: props.isDisabled,
2230
- testId: "card-action-remove"
2014
+ testId: "delete"
2231
2015
  }, "Remove")]
2232
2016
  }, /*#__PURE__*/React__default.createElement(ScheduledIconWithTooltip, {
2233
2017
  getEntityScheduledActions: loadEntityScheduledActions,
2234
2018
  entityType: "Entry",
2235
2019
  entityId: entry.sys.id
2236
2020
  }, /*#__PURE__*/React__default.createElement(ClockIcon, {
2237
- className: styles$5.scheduledIcon,
2021
+ className: styles$2.scheduledIcon,
2238
2022
  variant: "muted",
2239
2023
  testId: "scheduled-icon"
2240
2024
  })), /*#__PURE__*/React__default.createElement(Text$1, null, title));
@@ -2258,7 +2042,7 @@ function createInlineEntryNode(id) {
2258
2042
  };
2259
2043
  }
2260
2044
 
2261
- var styles$6 = {
2045
+ var styles$3 = {
2262
2046
  icon: /*#__PURE__*/css({
2263
2047
  marginRight: '10px'
2264
2048
  }),
@@ -2294,7 +2078,7 @@ function EmbeddedEntityInline(props) {
2294
2078
  }
2295
2079
 
2296
2080
  return /*#__PURE__*/createElement("span", Object.assign({}, props.attributes, {
2297
- className: styles$6.root,
2081
+ className: styles$3.root,
2298
2082
  "data-embedded-entity-inline-id": entryId,
2299
2083
  // COMPAT: This makes copy & paste work for Firefox
2300
2084
  contentEditable: IS_CHROME ? undefined : false,
@@ -2424,7 +2208,7 @@ function ToolbarEmbeddedEntityInlineButton(props) {
2424
2208
  flexDirection: "row"
2425
2209
  }, /*#__PURE__*/createElement(EmbeddedEntryInlineIcon, {
2426
2210
  variant: "secondary",
2427
- className: "rich-text__embedded-entry-list-icon " + styles$6.icon
2211
+ className: "rich-text__embedded-entry-list-icon " + styles$3.icon
2428
2212
  }), /*#__PURE__*/createElement("span", null, "Inline entry")));
2429
2213
  }
2430
2214
  function createEmbeddedEntityInlinePlugin(sdk) {
@@ -2500,7 +2284,7 @@ var isMarkEnabled = function isMarkEnabled(field, mark) {
2500
2284
  };
2501
2285
 
2502
2286
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _dropdown, _LABELS;
2503
- var styles$7 = {
2287
+ var styles$4 = {
2504
2288
  dropdown: (_dropdown = {
2505
2289
  root: /*#__PURE__*/css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
2506
2290
  }, _dropdown[BLOCKS.PARAGRAPH] = /*#__PURE__*/css(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), tokens.fontSizeL), _dropdown[BLOCKS.HEADING_1] = /*#__PURE__*/css(_templateObject3 || (_templateObject3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.625rem;\n "]))), _dropdown[BLOCKS.HEADING_2] = /*#__PURE__*/css(_templateObject4 || (_templateObject4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.4375rem;\n "]))), _dropdown[BLOCKS.HEADING_3] = /*#__PURE__*/css(_templateObject5 || (_templateObject5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.25rem;\n "]))), _dropdown[BLOCKS.HEADING_4] = /*#__PURE__*/css(_templateObject6 || (_templateObject6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.125rem;\n "]))), _dropdown[BLOCKS.HEADING_5] = /*#__PURE__*/css(_templateObject7 || (_templateObject7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1rem;\n "]))), _dropdown[BLOCKS.HEADING_6] = /*#__PURE__*/css(_templateObject8 || (_templateObject8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 0.875rem;\n "]))), _dropdown)
@@ -2595,7 +2379,7 @@ function ToolbarHeadingButton(props) {
2595
2379
  testId: "dropdown-option-" + nodeType,
2596
2380
  disabled: props.isDisabled
2597
2381
  }, /*#__PURE__*/createElement("span", {
2598
- className: cx(styles$7.dropdown.root, styles$7.dropdown[nodeType])
2382
+ className: cx(styles$4.dropdown.root, styles$4.dropdown[nodeType])
2599
2383
  }, LABELS[nodeType]));
2600
2384
  }).filter(Boolean)));
2601
2385
  }
@@ -2665,7 +2449,7 @@ var transformLift = function transformLift(editor, _ref4) {
2665
2449
  };
2666
2450
 
2667
2451
  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;
2668
- var styles$8 = {
2452
+ var styles$5 = {
2669
2453
  dropdown: (_dropdown$1 = {
2670
2454
  root: /*#__PURE__*/css(_templateObject$1 || (_templateObject$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
2671
2455
  }, _dropdown$1[BLOCKS.PARAGRAPH] = /*#__PURE__*/css(_templateObject2$1 || (_templateObject2$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), tokens.fontSizeL), _dropdown$1[BLOCKS.HEADING_1] = /*#__PURE__*/css(_templateObject3$1 || (_templateObject3$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.625rem;\n "]))), _dropdown$1[BLOCKS.HEADING_2] = /*#__PURE__*/css(_templateObject4$1 || (_templateObject4$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.4375rem;\n "]))), _dropdown$1[BLOCKS.HEADING_3] = /*#__PURE__*/css(_templateObject5$1 || (_templateObject5$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.25rem;\n "]))), _dropdown$1[BLOCKS.HEADING_4] = /*#__PURE__*/css(_templateObject6$1 || (_templateObject6$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1.125rem;\n "]))), _dropdown$1[BLOCKS.HEADING_5] = /*#__PURE__*/css(_templateObject7$1 || (_templateObject7$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 1rem;\n "]))), _dropdown$1[BLOCKS.HEADING_6] = /*#__PURE__*/css(_templateObject8$1 || (_templateObject8$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: 0.875rem;\n "]))), _dropdown$1),
@@ -2677,7 +2461,7 @@ var styles$8 = {
2677
2461
  function createHeading(Tag, block) {
2678
2462
  return function Heading(props) {
2679
2463
  return /*#__PURE__*/createElement(Tag, Object.assign({}, props.attributes, {
2680
- className: cx(styles$8.headings.root, styles$8.headings[block])
2464
+ className: cx(styles$5.headings.root, styles$5.headings[block])
2681
2465
  }), props.children);
2682
2466
  };
2683
2467
  }
@@ -2773,7 +2557,7 @@ var createHeadingPlugin = function createHeadingPlugin() {
2773
2557
  };
2774
2558
  };
2775
2559
 
2776
- var styles$9 = {
2560
+ var styles$6 = {
2777
2561
  button: /*#__PURE__*/css({
2778
2562
  height: '30px',
2779
2563
  width: '30px',
@@ -2799,7 +2583,7 @@ function ToolbarButton(props) {
2799
2583
  };
2800
2584
 
2801
2585
  var button = /*#__PURE__*/React__default.createElement(Button, {
2802
- className: cx(styles$9.button, className),
2586
+ className: cx(styles$6.button, className),
2803
2587
  isDisabled: isDisabled,
2804
2588
  startIcon: children,
2805
2589
  onClick: handleClick,
@@ -2810,7 +2594,7 @@ function ToolbarButton(props) {
2810
2594
 
2811
2595
  if (title) {
2812
2596
  return /*#__PURE__*/React__default.createElement(Tooltip, {
2813
- className: styles$9.tooltip,
2597
+ className: styles$6.tooltip,
2814
2598
  placement: "bottom",
2815
2599
  content: title
2816
2600
  }, button);
@@ -2820,7 +2604,7 @@ function ToolbarButton(props) {
2820
2604
  }
2821
2605
 
2822
2606
  var _templateObject$2, _templateObject2$2, _templateObject3$2;
2823
- var styles$a = {
2607
+ var styles$7 = {
2824
2608
  container: /*#__PURE__*/css(_templateObject$2 || (_templateObject$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin: 0 0 ", ";\n "])), tokens.spacingL),
2825
2609
  hr: /*#__PURE__*/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),
2826
2610
  hrSelected: /*#__PURE__*/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)
@@ -2878,14 +2662,14 @@ function Hr(props) {
2878
2662
  var isSelected = useSelected();
2879
2663
  var isFocused = useFocused();
2880
2664
  return /*#__PURE__*/createElement("div", Object.assign({}, props.attributes, {
2881
- className: styles$a.container,
2665
+ className: styles$7.container,
2882
2666
  "data-void-element": BLOCKS.HR
2883
2667
  }), /*#__PURE__*/createElement("div", {
2884
2668
  draggable: true,
2885
2669
  // Moving `contentEditable` to this div makes it to be selectable when being the first void element, e.g pressing ctrl + a to select everything
2886
2670
  contentEditable: false
2887
2671
  }, /*#__PURE__*/createElement("hr", {
2888
- className: cx(styles$a.hr, isSelected && isFocused ? styles$a.hrSelected : undefined)
2672
+ className: cx(styles$7.hr, isSelected && isFocused ? styles$7.hrSelected : undefined)
2889
2673
  })), props.children);
2890
2674
  }
2891
2675
  var createHrPlugin = function createHrPlugin() {
@@ -2912,7 +2696,7 @@ var createHrPlugin = function createHrPlugin() {
2912
2696
  };
2913
2697
 
2914
2698
  var _templateObject$3, _SYS_LINK_TYPES, _LINK_TYPE_SELECTION_;
2915
- var styles$b = {
2699
+ var styles$8 = {
2916
2700
  removeSelectionLabel: /*#__PURE__*/css(_templateObject$3 || (_templateObject$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-left: ", ";\n "])), tokens.spacingS)
2917
2701
  };
2918
2702
  var SYS_LINK_TYPES = (_SYS_LINK_TYPES = {}, _SYS_LINK_TYPES[INLINES.ENTRY_HYPERLINK] = 'Entry', _SYS_LINK_TYPES[INLINES.ASSET_HYPERLINK] = 'Asset', _SYS_LINK_TYPES);
@@ -3095,7 +2879,7 @@ function HyperlinkModal(props) {
3095
2879
  }, "Link target", ' '), linkEntity && linkEntity.sys.linkType === SYS_LINK_TYPES[linkType] ? /*#__PURE__*/createElement(Fragment, null, !props.readonly && /*#__PURE__*/createElement(TextLink, {
3096
2880
  testId: "entity-selection-link",
3097
2881
  onClick: resetLinkEntity,
3098
- className: styles$b.removeSelectionLabel
2882
+ className: styles$8.removeSelectionLabel
3099
2883
  }, "Remove selection"), /*#__PURE__*/createElement("div", null, linkType === INLINES.ENTRY_HYPERLINK && /*#__PURE__*/createElement(FetchingWrappedEntryCard, {
3100
2884
  sdk: props.sdk,
3101
2885
  locale: props.sdk.field.locale,
@@ -3436,7 +3220,7 @@ function useEntityInfo(props) {
3436
3220
  return getEntityInfo(status.data);
3437
3221
  }
3438
3222
 
3439
- var styles$c = {
3223
+ var styles$9 = {
3440
3224
  hyperlinkWrapper: /*#__PURE__*/css({
3441
3225
  display: 'inline',
3442
3226
  position: 'static',
@@ -3481,13 +3265,13 @@ function EntityHyperlink(props) {
3481
3265
 
3482
3266
  return /*#__PURE__*/createElement(Tooltip, {
3483
3267
  content: tooltipContent,
3484
- targetWrapperClassName: styles$c.hyperlinkWrapper,
3268
+ targetWrapperClassName: styles$9.hyperlinkWrapper,
3485
3269
  placement: "bottom",
3486
3270
  maxWidth: "auto"
3487
3271
  }, /*#__PURE__*/createElement(TextLink, {
3488
3272
  as: "a",
3489
3273
  onClick: handleClick,
3490
- className: styles$c.hyperlink,
3274
+ className: styles$9.hyperlink,
3491
3275
  "data-link-type": target.sys.linkType,
3492
3276
  "data-link-id": target.sys.id
3493
3277
  }, props.children));
@@ -3511,7 +3295,7 @@ function UrlHyperlink(props) {
3511
3295
 
3512
3296
  return /*#__PURE__*/createElement(Tooltip, {
3513
3297
  content: uri,
3514
- targetWrapperClassName: styles$c.hyperlinkWrapper,
3298
+ targetWrapperClassName: styles$9.hyperlinkWrapper,
3515
3299
  placement: "bottom",
3516
3300
  maxWidth: "auto"
3517
3301
  }, /*#__PURE__*/createElement(TextLink, {
@@ -3519,7 +3303,7 @@ function UrlHyperlink(props) {
3519
3303
  href: uri,
3520
3304
  rel: "noopener noreferrer",
3521
3305
  onClick: handleClick,
3522
- className: styles$c.hyperlink
3306
+ className: styles$9.hyperlink
3523
3307
  }, props.children));
3524
3308
  }
3525
3309
 
@@ -3645,12 +3429,12 @@ var createHyperlinkPlugin = function createHyperlinkPlugin(sdk) {
3645
3429
 
3646
3430
  var _templateObject$4, _templateObject2$3, _templateObject3$3, _styles;
3647
3431
  var baseStyle = /*#__PURE__*/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);
3648
- var styles$d = (_styles = {}, _styles[BLOCKS.UL_LIST] = /*#__PURE__*/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[BLOCKS.OL_LIST] = /*#__PURE__*/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);
3432
+ var styles$a = (_styles = {}, _styles[BLOCKS.UL_LIST] = /*#__PURE__*/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[BLOCKS.OL_LIST] = /*#__PURE__*/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);
3649
3433
 
3650
3434
  function createList(Tag, block) {
3651
3435
  return function List(props) {
3652
3436
  return /*#__PURE__*/createElement(Tag, Object.assign({}, props.attributes, {
3653
- className: cx(baseStyle, styles$d[block])
3437
+ className: cx(baseStyle, styles$a[block])
3654
3438
  }), props.children);
3655
3439
  };
3656
3440
  }
@@ -4631,14 +4415,14 @@ var ToolbarBoldButton = /*#__PURE__*/createMarkToolbarButton({
4631
4415
  mark: MARKS.BOLD,
4632
4416
  icon: /*#__PURE__*/createElement(FormatBoldIcon, null)
4633
4417
  });
4634
- var styles$e = {
4418
+ var styles$b = {
4635
4419
  bold: /*#__PURE__*/css({
4636
4420
  fontWeight: 600
4637
4421
  })
4638
4422
  };
4639
4423
  function Bold(props) {
4640
4424
  return /*#__PURE__*/createElement("strong", Object.assign({}, props.attributes, {
4641
- className: styles$e.bold
4425
+ className: styles$b.bold
4642
4426
  }), props.children);
4643
4427
  }
4644
4428
 
@@ -4678,7 +4462,7 @@ var ToolbarCodeButton = /*#__PURE__*/createMarkToolbarButton({
4678
4462
  mark: MARKS.CODE,
4679
4463
  icon: /*#__PURE__*/createElement(CodeIcon, null)
4680
4464
  });
4681
- var styles$f = {
4465
+ var styles$c = {
4682
4466
  code: /*#__PURE__*/css({
4683
4467
  fontFamily: 'monospace',
4684
4468
  fontSize: '.9em'
@@ -4686,7 +4470,7 @@ var styles$f = {
4686
4470
  };
4687
4471
  function Code(props) {
4688
4472
  return /*#__PURE__*/createElement("code", Object.assign({}, props.attributes, {
4689
- className: styles$f.code
4473
+ className: styles$c.code
4690
4474
  }), props.children);
4691
4475
  }
4692
4476
  var createCodePlugin = function createCodePlugin() {
@@ -4716,14 +4500,14 @@ var ToolbarItalicButton = /*#__PURE__*/createMarkToolbarButton({
4716
4500
  mark: MARKS.ITALIC,
4717
4501
  icon: /*#__PURE__*/createElement(FormatItalicIcon, null)
4718
4502
  });
4719
- var styles$g = {
4503
+ var styles$d = {
4720
4504
  italic: /*#__PURE__*/css({
4721
4505
  fontStyle: 'italic'
4722
4506
  })
4723
4507
  };
4724
4508
  function Italic(props) {
4725
4509
  return /*#__PURE__*/createElement("em", Object.assign({}, props.attributes, {
4726
- className: styles$g.italic
4510
+ className: styles$d.italic
4727
4511
  }), props.children);
4728
4512
  }
4729
4513
  var createItalicPlugin = function createItalicPlugin() {
@@ -4999,10 +4783,10 @@ var createNormalizerPlugin = function createNormalizerPlugin() {
4999
4783
  };
5000
4784
 
5001
4785
  var _templateObject$6, _styles$1;
5002
- var styles$h = (_styles$1 = {}, _styles$1[BLOCKS.PARAGRAPH] = /*#__PURE__*/css(_templateObject$6 || (_templateObject$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n line-height: ", ";\n margin-bottom: 1.5em;\n "])), tokens.lineHeightDefault), _styles$1);
4786
+ var styles$e = (_styles$1 = {}, _styles$1[BLOCKS.PARAGRAPH] = /*#__PURE__*/css(_templateObject$6 || (_templateObject$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n line-height: ", ";\n margin-bottom: 1.5em;\n "])), tokens.lineHeightDefault), _styles$1);
5003
4787
  function Paragraph(props) {
5004
4788
  return /*#__PURE__*/createElement("div", Object.assign({}, props.attributes, {
5005
- className: styles$h[BLOCKS.PARAGRAPH]
4789
+ className: styles$e[BLOCKS.PARAGRAPH]
5006
4790
  }), props.children);
5007
4791
  }
5008
4792
 
@@ -5823,7 +5607,7 @@ var isTable = function isTable(node) {
5823
5607
  return Element.isElement(node) && node.type === BLOCKS.TABLE;
5824
5608
  };
5825
5609
 
5826
- var styles$i = {
5610
+ var styles$f = {
5827
5611
  topRight: /*#__PURE__*/css({
5828
5612
  position: 'absolute',
5829
5613
  top: '6px',
@@ -5912,7 +5696,7 @@ var TableActions = function TableActions() {
5912
5696
  size: "small",
5913
5697
  variant: "transparent",
5914
5698
  tabIndex: -1,
5915
- className: styles$i.topRight,
5699
+ className: styles$f.topRight,
5916
5700
  icon: /*#__PURE__*/React__default.createElement(ChevronDownIcon, null),
5917
5701
  "aria-label": "Open table menu",
5918
5702
  testId: "cf-table-actions-button"
@@ -6846,7 +6630,7 @@ var normalizeEditorValue = function normalizeEditorValue(value, options) {
6846
6630
  };
6847
6631
 
6848
6632
  var STYLE_EDITOR_BORDER = "1px solid " + tokens.gray400;
6849
- var styles$j = {
6633
+ var styles$g = {
6850
6634
  root: /*#__PURE__*/css({
6851
6635
  position: 'relative'
6852
6636
  }),
@@ -6962,7 +6746,7 @@ var EmbedEntityWidget = function EmbedEntityWidget(_ref) {
6962
6746
  }, actions);
6963
6747
  };
6964
6748
 
6965
- var styles$k = {
6749
+ var styles$h = {
6966
6750
  toolbar: /*#__PURE__*/css({
6967
6751
  border: "1px solid " + tokens.gray400,
6968
6752
  backgroundColor: tokens.gray100,
@@ -7007,14 +6791,14 @@ var Toolbar = function Toolbar(_ref) {
7007
6791
  var shouldDisableTables = isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected;
7008
6792
  return /*#__PURE__*/React__default.createElement(Flex, {
7009
6793
  testId: "toolbar",
7010
- className: styles$k.toolbar,
6794
+ className: styles$h.toolbar,
7011
6795
  alignItems: "center"
7012
6796
  }, /*#__PURE__*/React__default.createElement("div", {
7013
- className: styles$k.formattingOptionsWrapper
6797
+ className: styles$h.formattingOptionsWrapper
7014
6798
  }, /*#__PURE__*/React__default.createElement(ToolbarHeadingButton, {
7015
6799
  isDisabled: isDisabled || !canInsertBlocks
7016
6800
  }), validationInfo.isAnyMarkEnabled && /*#__PURE__*/React__default.createElement("span", {
7017
- className: styles$k.divider
6801
+ className: styles$h.divider
7018
6802
  }), isMarkEnabled(sdk.field, MARKS.BOLD) && /*#__PURE__*/React__default.createElement(ToolbarBoldButton, {
7019
6803
  isDisabled: isDisabled
7020
6804
  }), isMarkEnabled(sdk.field, MARKS.ITALIC) && /*#__PURE__*/React__default.createElement(ToolbarItalicButton, {
@@ -7024,11 +6808,11 @@ var Toolbar = function Toolbar(_ref) {
7024
6808
  }), isMarkEnabled(sdk.field, MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarCodeButton, {
7025
6809
  isDisabled: isDisabled
7026
6810
  }), validationInfo.isAnyHyperlinkEnabled && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
7027
- className: styles$k.divider
6811
+ className: styles$h.divider
7028
6812
  }), /*#__PURE__*/React__default.createElement(ToolbarHyperlinkButton, {
7029
6813
  isDisabled: isDisabled
7030
6814
  })), validationInfo.isAnyBlockFormattingEnabled && /*#__PURE__*/React__default.createElement("span", {
7031
- className: styles$k.divider
6815
+ className: styles$h.divider
7032
6816
  }), /*#__PURE__*/React__default.createElement(ToolbarListButton, {
7033
6817
  isDisabled: isDisabled || !canInsertBlocks
7034
6818
  }), isNodeTypeEnabled(sdk.field, BLOCKS.QUOTE) && /*#__PURE__*/React__default.createElement(ToolbarQuoteButton, {
@@ -7038,7 +6822,7 @@ var Toolbar = function Toolbar(_ref) {
7038
6822
  }), isNodeTypeEnabled(sdk.field, BLOCKS.TABLE) && /*#__PURE__*/React__default.createElement(ToolbarTableButton, {
7039
6823
  isDisabled: shouldDisableTables
7040
6824
  })), /*#__PURE__*/React__default.createElement("div", {
7041
- className: styles$k.embedActionsWrapper
6825
+ className: styles$h.embedActionsWrapper
7042
6826
  }, /*#__PURE__*/React__default.createElement(EmbedEntityWidget, {
7043
6827
  isDisabled: isDisabled,
7044
6828
  canInsertBlocks: canInsertBlocks
@@ -7063,7 +6847,7 @@ function getValidationInfo(field) {
7063
6847
  }
7064
6848
 
7065
6849
  var _templateObject$b;
7066
- var styles$l = {
6850
+ var styles$i = {
7067
6851
  nativeSticky: /*#__PURE__*/css(_templateObject$b || (_templateObject$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: -webkit-sticky;\n position: sticky;\n top: -1px;\n z-index: 2;\n "])))
7068
6852
  };
7069
6853
 
@@ -7071,7 +6855,7 @@ var StickyToolbarWrapper = function StickyToolbarWrapper(_ref) {
7071
6855
  var isDisabled = _ref.isDisabled,
7072
6856
  children = _ref.children;
7073
6857
  return /*#__PURE__*/React__default.createElement("div", {
7074
- className: isDisabled ? '' : styles$l.nativeSticky
6858
+ className: isDisabled ? '' : styles$i.nativeSticky
7075
6859
  }, children);
7076
6860
  };
7077
6861
 
@@ -7166,9 +6950,9 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7166
6950
  setPendingExternalUpdate(true);
7167
6951
  setEditorContent(editor, documentToEditorValue(props.value));
7168
6952
  }, [props.value, id]);
7169
- var classNames = cx(styles$j.editor, props.minHeight !== undefined ? css({
6953
+ var classNames = cx(styles$g.editor, props.minHeight !== undefined ? css({
7170
6954
  minHeight: props.minHeight
7171
- }) : undefined, props.isDisabled ? styles$j.disabled : styles$j.enabled, props.isToolbarHidden && styles$j.hiddenToolbar);
6955
+ }) : undefined, props.isDisabled ? styles$g.disabled : styles$g.enabled, props.isToolbarHidden && styles$g.hiddenToolbar);
7172
6956
  useEffect(function () {
7173
6957
  if (!isFirstRender) {
7174
6958
  return;
@@ -7184,7 +6968,7 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7184
6968
  }, /*#__PURE__*/React__default.createElement(ContentfulEditorIdProvider, {
7185
6969
  value: id
7186
6970
  }, /*#__PURE__*/React__default.createElement("div", {
7187
- className: styles$j.root,
6971
+ className: styles$g.root,
7188
6972
  "data-test-id": "rich-text-editor"
7189
6973
  }, /*#__PURE__*/React__default.createElement(Plate, {
7190
6974
  id: id,
@@ -7211,7 +6995,7 @@ var RichTextEditor = function RichTextEditor(props) {
7211
6995
  otherProps = _objectWithoutPropertiesLoose(props, _excluded);
7212
6996
 
7213
6997
  var isEmptyValue = useCallback(function (value) {
7214
- return !value || deepEquals(value, EMPTY_DOCUMENT);
6998
+ return !value || areEqual(value, EMPTY_DOCUMENT);
7215
6999
  }, []);
7216
7000
  var id = getContentfulEditorId(props.sdk);
7217
7001
  return /*#__PURE__*/React__default.createElement(EntityProvider, {
@@ -7221,7 +7005,7 @@ var RichTextEditor = function RichTextEditor(props) {
7221
7005
  field: sdk.field,
7222
7006
  isInitiallyDisabled: isInitiallyDisabled,
7223
7007
  isEmptyValue: isEmptyValue,
7224
- isEqualValues: deepEquals
7008
+ isEqualValues: areEqual
7225
7009
  }, function (_ref) {
7226
7010
  var lastRemoteValue = _ref.lastRemoteValue,
7227
7011
  disabled = _ref.disabled,