@contentful/field-editor-rich-text 2.0.0-next.40 → 2.0.0-next.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/field-editor-rich-text.cjs.development.js +421 -123
- package/dist/field-editor-rich-text.cjs.development.js.map +1 -1
- package/dist/field-editor-rich-text.cjs.production.min.js +1 -1
- package/dist/field-editor-rich-text.cjs.production.min.js.map +1 -1
- package/dist/field-editor-rich-text.esm.js +426 -128
- package/dist/field-editor-rich-text.esm.js.map +1 -1
- package/dist/helpers/environment.d.ts +1 -1
- package/dist/helpers/sanitizeIncomingSlateDoc.d.ts +6 -0
- package/dist/plugins/shared/EntityStatusIcon.d.ts +7 -0
- package/dist/plugins/shared/FetchingWrappedAssetCard.d.ts +10 -0
- package/dist/prepareDocument.d.ts +2 -2
- package/package.json +4 -4
|
@@ -21,11 +21,12 @@ 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
|
|
25
|
-
var flow = _interopDefault(require('lodash/flow'));
|
|
24
|
+
var mimetype = _interopDefault(require('@contentful/mimetype'));
|
|
26
25
|
var get = _interopDefault(require('lodash/get'));
|
|
27
26
|
var f36Icons = require('@contentful/f36-icons');
|
|
28
27
|
var tokens = _interopDefault(require('@contentful/f36-tokens'));
|
|
28
|
+
var find = _interopDefault(require('lodash/find'));
|
|
29
|
+
var flow = _interopDefault(require('lodash/flow'));
|
|
29
30
|
var plateList = require('@udecode/plate-list');
|
|
30
31
|
var castArray = _interopDefault(require('lodash/castArray'));
|
|
31
32
|
var plateBasicMarks = require('@udecode/plate-basic-marks');
|
|
@@ -400,17 +401,8 @@ function getParents(el) {
|
|
|
400
401
|
return parents;
|
|
401
402
|
}
|
|
402
403
|
|
|
403
|
-
// "modern" Edge was released at 79.x
|
|
404
|
-
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
|
|
405
|
-
// and older, Chrome 76+ can use `beforeInput` though.
|
|
406
|
-
|
|
407
|
-
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
|
|
408
|
-
// Chrome Legacy doesn't support `beforeinput` correctly
|
|
409
|
-
|
|
410
|
-
var HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && // globalThis is undefined in older browsers
|
|
411
|
-
typeof globalThis !== 'undefined' && globalThis.InputEvent && typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'; // The `getTargetRanges` property isn't recognized.
|
|
412
|
-
|
|
413
404
|
var IS_SAFARI = typeof navigator !== 'undefined' && /*#__PURE__*/ /Version\/[\d.]+.*Safari/.test(navigator.userAgent);
|
|
405
|
+
var IS_CHROME = /*#__PURE__*/ /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/.test(navigator.userAgent);
|
|
414
406
|
|
|
415
407
|
var LINK_TYPES = [Contentful.INLINES.HYPERLINK, Contentful.INLINES.ENTRY_HYPERLINK, Contentful.INLINES.ASSET_HYPERLINK];
|
|
416
408
|
function isBlockSelected(editor, type) {
|
|
@@ -638,24 +630,179 @@ var _constate = /*#__PURE__*/constate(useSdk),
|
|
|
638
630
|
SdkProvider = _constate[0],
|
|
639
631
|
useSdkContext = _constate[1];
|
|
640
632
|
|
|
633
|
+
var styles = {
|
|
634
|
+
scheduleIcon: /*#__PURE__*/emotion.css({
|
|
635
|
+
marginRight: tokens.spacing2Xs
|
|
636
|
+
})
|
|
637
|
+
};
|
|
638
|
+
function EntityStatusIcon(_ref) {
|
|
639
|
+
var entity = _ref.entity,
|
|
640
|
+
entityType = _ref.entityType;
|
|
641
|
+
|
|
642
|
+
var _useEntities = fieldEditorReference.useEntities(),
|
|
643
|
+
loadEntityScheduledActions = _useEntities.loadEntityScheduledActions;
|
|
644
|
+
|
|
645
|
+
return /*#__PURE__*/React.createElement(fieldEditorReference.ScheduledIconWithTooltip, {
|
|
646
|
+
getEntityScheduledActions: loadEntityScheduledActions,
|
|
647
|
+
entityType: entityType,
|
|
648
|
+
entityId: entity.sys.id
|
|
649
|
+
}, /*#__PURE__*/React.createElement(f36Icons.ClockIcon, {
|
|
650
|
+
className: styles.scheduleIcon,
|
|
651
|
+
size: "small",
|
|
652
|
+
color: "muted",
|
|
653
|
+
testId: "schedule-icon"
|
|
654
|
+
}));
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
var styles$1 = {
|
|
658
|
+
assetCard: /*#__PURE__*/emotion.css({
|
|
659
|
+
cursor: 'pointer'
|
|
660
|
+
}),
|
|
661
|
+
cardDropdown: /*#__PURE__*/emotion.css({
|
|
662
|
+
width: '300px'
|
|
663
|
+
}),
|
|
664
|
+
truncated: /*#__PURE__*/emotion.css({
|
|
665
|
+
overflow: 'hidden',
|
|
666
|
+
whiteSpace: 'nowrap',
|
|
667
|
+
textOverflow: 'ellipsis'
|
|
668
|
+
})
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
function downloadAsset(url, fileName) {
|
|
672
|
+
// This method won't work if we have CORS disabled(asset not on the contentful server)
|
|
673
|
+
fetch(url, {
|
|
674
|
+
method: 'GET',
|
|
675
|
+
headers: {}
|
|
676
|
+
}).then(function (response) {
|
|
677
|
+
response.arrayBuffer().then(function (buffer) {
|
|
678
|
+
var url = window.URL.createObjectURL(new Blob([buffer]));
|
|
679
|
+
var link = document.createElement('a');
|
|
680
|
+
link.href = url;
|
|
681
|
+
link.setAttribute('download', fileName); //or any other extension
|
|
682
|
+
|
|
683
|
+
document.body.appendChild(link);
|
|
684
|
+
link.click();
|
|
685
|
+
document.body.removeChild(link);
|
|
686
|
+
});
|
|
687
|
+
})["catch"](function (err) {
|
|
688
|
+
f36Components.Notification.error('Failed to download asset');
|
|
689
|
+
console.log(err);
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
function renderAssetInfo(props) {
|
|
694
|
+
var entityFile = props.entityFile;
|
|
695
|
+
var fileName = get(entityFile, 'fileName');
|
|
696
|
+
var mimeType = get(entityFile, 'contentType');
|
|
697
|
+
var fileSize = get(entityFile, 'details.size');
|
|
698
|
+
var image = get(entityFile, 'details.image');
|
|
699
|
+
return [/*#__PURE__*/React.createElement(f36Components.Menu.SectionTitle, {
|
|
700
|
+
key: "file-section"
|
|
701
|
+
}, "File info"), fileName && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
702
|
+
key: "file-name"
|
|
703
|
+
}, /*#__PURE__*/React.createElement(f36Components.Text, {
|
|
704
|
+
isTruncated: true
|
|
705
|
+
}, fileName)), mimeType && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
706
|
+
key: "file-type"
|
|
707
|
+
}, /*#__PURE__*/React.createElement(f36Components.Text, {
|
|
708
|
+
isTruncated: true
|
|
709
|
+
}, mimeType)), fileSize && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
710
|
+
key: "file-size"
|
|
711
|
+
}, fieldEditorShared.shortenStorageUnit(fileSize, 'B')), image && /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
712
|
+
key: "file-dimentions"
|
|
713
|
+
}, image.width + " \xD7 " + image.height)].filter(function (item) {
|
|
714
|
+
return item;
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
function renderActions(props) {
|
|
718
|
+
var entityFile = props.entityFile,
|
|
719
|
+
isDisabled = props.isDisabled,
|
|
720
|
+
onEdit = props.onEdit,
|
|
721
|
+
onRemove = props.onRemove;
|
|
722
|
+
return [/*#__PURE__*/React.createElement(f36Components.Menu.SectionTitle, {
|
|
723
|
+
key: "section-title"
|
|
724
|
+
}, "Actions"), onEdit ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
725
|
+
key: "edit",
|
|
726
|
+
onClick: onEdit,
|
|
727
|
+
testId: "card-action-edit"
|
|
728
|
+
}, "Edit") : null, entityFile ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
729
|
+
key: "download",
|
|
730
|
+
onClick: function onClick() {
|
|
731
|
+
if (typeof entityFile.url === 'string') {
|
|
732
|
+
downloadAsset(entityFile.url, get(entityFile, 'fileName'));
|
|
733
|
+
}
|
|
734
|
+
},
|
|
735
|
+
testId: "card-action-download"
|
|
736
|
+
}, "Download") : null, onRemove ? /*#__PURE__*/React.createElement(f36Components.Menu.Item, {
|
|
737
|
+
key: "remove",
|
|
738
|
+
disabled: isDisabled,
|
|
739
|
+
onClick: onRemove,
|
|
740
|
+
testId: "card-action-remove"
|
|
741
|
+
}, "Remove") : null].filter(function (item) {
|
|
742
|
+
return item;
|
|
743
|
+
});
|
|
744
|
+
}
|
|
641
745
|
function FetchingWrappedAssetCard(props) {
|
|
642
|
-
var
|
|
643
|
-
assetId = props.assetId;
|
|
746
|
+
var _asset$fields;
|
|
644
747
|
|
|
645
748
|
var _useEntities = fieldEditorReference.useEntities(),
|
|
646
749
|
getOrLoadAsset = _useEntities.getOrLoadAsset,
|
|
647
|
-
loadEntityScheduledActions = _useEntities.loadEntityScheduledActions,
|
|
648
750
|
assets = _useEntities.assets;
|
|
649
751
|
|
|
752
|
+
var asset = assets[props.assetId];
|
|
753
|
+
var defaultLocaleCode = props.sdk.locales["default"];
|
|
754
|
+
var entityFile = asset != null && (_asset$fields = asset.fields) != null && _asset$fields.file ? asset.fields.file[props.locale] || asset.fields.file[defaultLocaleCode] : undefined;
|
|
755
|
+
var onEntityFetchComplete = props.onEntityFetchComplete;
|
|
650
756
|
React.useEffect(function () {
|
|
651
|
-
getOrLoadAsset(assetId);
|
|
652
|
-
}, [
|
|
653
|
-
|
|
757
|
+
getOrLoadAsset(props.assetId);
|
|
758
|
+
}, [props.assetId]); // eslint-disable-line
|
|
759
|
+
|
|
654
760
|
React.useEffect(function () {
|
|
655
|
-
if (asset) {
|
|
656
|
-
|
|
761
|
+
if (!asset) {
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
|
|
766
|
+
}, [asset, onEntityFetchComplete]);
|
|
767
|
+
|
|
768
|
+
function getAssetSrc() {
|
|
769
|
+
if (!(entityFile != null && entityFile.url)) return '';
|
|
770
|
+
return entityFile.url + "?h=300";
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
function getFileType() {
|
|
774
|
+
var groupToIconMap = {
|
|
775
|
+
image: 'image',
|
|
776
|
+
video: 'video',
|
|
777
|
+
audio: 'audio',
|
|
778
|
+
richtext: 'richtext',
|
|
779
|
+
presentation: 'presentation',
|
|
780
|
+
spreadsheet: 'spreadsheet',
|
|
781
|
+
pdfdocument: 'pdf',
|
|
782
|
+
archive: 'archive',
|
|
783
|
+
plaintext: 'plaintext',
|
|
784
|
+
code: 'code',
|
|
785
|
+
markup: 'markup'
|
|
786
|
+
};
|
|
787
|
+
var archive = groupToIconMap['archive'];
|
|
788
|
+
|
|
789
|
+
if (!entityFile) {
|
|
790
|
+
return archive;
|
|
657
791
|
}
|
|
658
|
-
|
|
792
|
+
|
|
793
|
+
var groupName = mimetype.getGroupLabel({
|
|
794
|
+
type: entityFile.contentType,
|
|
795
|
+
fallbackFileName: entityFile.fileName
|
|
796
|
+
});
|
|
797
|
+
return groupToIconMap[groupName] || archive;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
if (asset === undefined) {
|
|
801
|
+
return /*#__PURE__*/React.createElement(f36Components.AssetCard, {
|
|
802
|
+
size: "small",
|
|
803
|
+
isLoading: true
|
|
804
|
+
});
|
|
805
|
+
}
|
|
659
806
|
|
|
660
807
|
if (asset === 'failed') {
|
|
661
808
|
return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
|
|
@@ -665,48 +812,138 @@ function FetchingWrappedAssetCard(props) {
|
|
|
665
812
|
});
|
|
666
813
|
}
|
|
667
814
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
815
|
+
var status = asset ? fieldEditorShared.entityHelpers.getEntryStatus(asset.sys) : undefined;
|
|
816
|
+
|
|
817
|
+
if (status === 'deleted') {
|
|
818
|
+
return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
|
|
819
|
+
entityType: "Asset",
|
|
820
|
+
asSquare: true,
|
|
821
|
+
isDisabled: props.isDisabled,
|
|
822
|
+
onRemove: props.onRemove
|
|
672
823
|
});
|
|
673
824
|
}
|
|
674
825
|
|
|
675
|
-
|
|
676
|
-
getEntityScheduledActions: loadEntityScheduledActions,
|
|
677
|
-
size: "small",
|
|
678
|
-
isSelected: props.isSelected,
|
|
679
|
-
isDisabled: props.isDisabled,
|
|
680
|
-
localeCode: props.locale,
|
|
681
|
-
defaultLocaleCode: props.sdk.locales["default"],
|
|
826
|
+
var entityTitle = fieldEditorShared.entityHelpers.getAssetTitle({
|
|
682
827
|
asset: asset,
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
828
|
+
localeCode: props.locale,
|
|
829
|
+
defaultLocaleCode: defaultLocaleCode,
|
|
830
|
+
defaultTitle: 'Untitled'
|
|
831
|
+
});
|
|
832
|
+
return /*#__PURE__*/React.createElement(f36Components.AssetCard, {
|
|
833
|
+
title: entityTitle,
|
|
834
|
+
isSelected: props.isSelected,
|
|
835
|
+
size: "small",
|
|
836
|
+
src: getAssetSrc(),
|
|
837
|
+
type: getFileType(),
|
|
838
|
+
status: status,
|
|
839
|
+
icon: /*#__PURE__*/React.createElement(EntityStatusIcon, {
|
|
840
|
+
entityType: "Asset",
|
|
841
|
+
entity: asset
|
|
842
|
+
}),
|
|
843
|
+
className: styles$1.assetCard,
|
|
844
|
+
actions: [renderActions({
|
|
845
|
+
entityFile: entityFile,
|
|
846
|
+
isDisabled: props.isDisabled,
|
|
847
|
+
onEdit: props.onEdit,
|
|
848
|
+
onRemove: props.onRemove
|
|
849
|
+
}), entityFile ? renderAssetInfo({
|
|
850
|
+
entityFile: entityFile
|
|
851
|
+
}) : null].filter(function (item) {
|
|
852
|
+
return item;
|
|
853
|
+
})
|
|
686
854
|
});
|
|
687
855
|
}
|
|
688
856
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
857
|
+
var styles$2 = {
|
|
858
|
+
entryCard: /*#__PURE__*/emotion.css({
|
|
859
|
+
cursor: 'pointer'
|
|
860
|
+
})
|
|
861
|
+
};
|
|
862
|
+
|
|
863
|
+
function EntryThumbnail(_ref) {
|
|
864
|
+
var file = _ref.file;
|
|
865
|
+
if (!fieldEditorShared.isValidImage(file)) return null;
|
|
866
|
+
return /*#__PURE__*/React.createElement(fieldEditorReference.AssetThumbnail, {
|
|
867
|
+
file: file
|
|
868
|
+
});
|
|
869
|
+
}
|
|
692
870
|
|
|
871
|
+
function FetchingWrappedEntryCard(props) {
|
|
693
872
|
var _useEntities = fieldEditorReference.useEntities(),
|
|
694
873
|
getOrLoadEntry = _useEntities.getOrLoadEntry,
|
|
695
|
-
|
|
696
|
-
|
|
874
|
+
entries = _useEntities.entries,
|
|
875
|
+
getOrLoadAsset = _useEntities.getOrLoadAsset;
|
|
876
|
+
|
|
877
|
+
var _React$useState = React.useState(null),
|
|
878
|
+
file = _React$useState[0],
|
|
879
|
+
setFile = _React$useState[1];
|
|
880
|
+
|
|
881
|
+
var entry = entries[props.entryId];
|
|
882
|
+
var contentType = React.useMemo(function () {
|
|
883
|
+
if (!entry || entry === 'failed') {
|
|
884
|
+
return undefined;
|
|
885
|
+
}
|
|
697
886
|
|
|
887
|
+
return props.sdk.space.getCachedContentTypes().find(function (contentType) {
|
|
888
|
+
return contentType.sys.id === entry.sys.contentType.sys.id;
|
|
889
|
+
});
|
|
890
|
+
}, [props.sdk, entry]);
|
|
891
|
+
var defaultLocaleCode = props.sdk.locales["default"];
|
|
892
|
+
var onEntityFetchComplete = props.onEntityFetchComplete;
|
|
893
|
+
React.useEffect(function () {
|
|
894
|
+
if (!entry || entry === 'failed') return;
|
|
895
|
+
var subscribed = true;
|
|
896
|
+
fieldEditorShared.entityHelpers.getEntryImage({
|
|
897
|
+
entry: entry,
|
|
898
|
+
contentType: contentType,
|
|
899
|
+
localeCode: props.locale,
|
|
900
|
+
defaultLocaleCode: defaultLocaleCode
|
|
901
|
+
}, getOrLoadAsset)["catch"](function () {
|
|
902
|
+
return null;
|
|
903
|
+
}).then(function (file) {
|
|
904
|
+
if (subscribed) {
|
|
905
|
+
setFile(file);
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
return function () {
|
|
909
|
+
subscribed = false;
|
|
910
|
+
};
|
|
911
|
+
}, [entry, contentType, props.locale, defaultLocaleCode, props.sdk, file, getOrLoadAsset]);
|
|
698
912
|
React.useEffect(function () {
|
|
699
|
-
getOrLoadEntry(entryId);
|
|
700
|
-
}, [
|
|
701
|
-
|
|
913
|
+
getOrLoadEntry(props.entryId);
|
|
914
|
+
}, [props.entryId]); // eslint-disable-line
|
|
915
|
+
|
|
702
916
|
React.useEffect(function () {
|
|
703
|
-
if (entry) {
|
|
704
|
-
|
|
917
|
+
if (!entry) {
|
|
918
|
+
return;
|
|
705
919
|
}
|
|
706
|
-
|
|
920
|
+
|
|
921
|
+
onEntityFetchComplete == null ? void 0 : onEntityFetchComplete();
|
|
922
|
+
}, [entry, onEntityFetchComplete]);
|
|
923
|
+
|
|
924
|
+
function renderDropdown() {
|
|
925
|
+
if (!props.onEdit || !props.onRemove) return undefined;
|
|
926
|
+
return [props.onEdit ? /*#__PURE__*/React.createElement(f36Components.MenuItem, {
|
|
927
|
+
key: "edit",
|
|
928
|
+
testId: "card-action-edit",
|
|
929
|
+
onClick: function onClick() {
|
|
930
|
+
props.onEdit && props.onEdit();
|
|
931
|
+
}
|
|
932
|
+
}, "Edit") : null, props.onRemove ? /*#__PURE__*/React.createElement(f36Components.MenuItem, {
|
|
933
|
+
key: "delete",
|
|
934
|
+
disabled: props.isDisabled,
|
|
935
|
+
testId: "card-action-remove",
|
|
936
|
+
onClick: function onClick() {
|
|
937
|
+
props.onRemove && props.onRemove();
|
|
938
|
+
}
|
|
939
|
+
}, "Remove") : null].filter(function (item) {
|
|
940
|
+
return item;
|
|
941
|
+
});
|
|
942
|
+
}
|
|
707
943
|
|
|
708
944
|
if (entry === undefined) {
|
|
709
945
|
return /*#__PURE__*/React.createElement(f36Components.EntryCard, {
|
|
946
|
+
size: "default",
|
|
710
947
|
isLoading: true
|
|
711
948
|
});
|
|
712
949
|
}
|
|
@@ -719,26 +956,50 @@ function FetchingWrappedEntryCard(props) {
|
|
|
719
956
|
});
|
|
720
957
|
}
|
|
721
958
|
|
|
722
|
-
var
|
|
723
|
-
|
|
959
|
+
var entryStatus = entry ? fieldEditorShared.entityHelpers.getEntryStatus(entry.sys) : undefined;
|
|
960
|
+
|
|
961
|
+
if (entryStatus === 'deleted') {
|
|
962
|
+
return /*#__PURE__*/React.createElement(fieldEditorReference.MissingEntityCard, {
|
|
963
|
+
entityType: "Entry",
|
|
964
|
+
isDisabled: props.isDisabled,
|
|
965
|
+
onRemove: props.onRemove
|
|
966
|
+
});
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
var title = fieldEditorShared.entityHelpers.getEntryTitle({
|
|
970
|
+
entry: entry,
|
|
971
|
+
contentType: contentType,
|
|
972
|
+
localeCode: props.locale,
|
|
973
|
+
defaultLocaleCode: defaultLocaleCode,
|
|
974
|
+
defaultTitle: 'Untitled'
|
|
975
|
+
});
|
|
976
|
+
var description = fieldEditorShared.entityHelpers.getEntityDescription({
|
|
977
|
+
entity: entry,
|
|
978
|
+
contentType: contentType,
|
|
979
|
+
localeCode: props.locale,
|
|
980
|
+
defaultLocaleCode: defaultLocaleCode
|
|
724
981
|
});
|
|
725
|
-
return /*#__PURE__*/React.createElement(
|
|
982
|
+
return /*#__PURE__*/React.createElement(f36Components.EntryCard, {
|
|
983
|
+
contentType: contentType == null ? void 0 : contentType.name,
|
|
984
|
+
title: title,
|
|
985
|
+
description: description,
|
|
726
986
|
size: "default",
|
|
727
|
-
getAsset: props.sdk.space.getAsset,
|
|
728
|
-
getEntityScheduledActions: loadEntityScheduledActions,
|
|
729
987
|
isSelected: props.isSelected,
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
988
|
+
status: entryStatus,
|
|
989
|
+
className: styles$2.entryCard,
|
|
990
|
+
thumbnailElement: file ? /*#__PURE__*/React.createElement(EntryThumbnail, {
|
|
991
|
+
file: file
|
|
992
|
+
}) : undefined,
|
|
993
|
+
icon: /*#__PURE__*/React.createElement(EntityStatusIcon, {
|
|
994
|
+
entityType: "Entry",
|
|
995
|
+
entity: entry
|
|
996
|
+
}),
|
|
997
|
+
withDragHandle: false,
|
|
998
|
+
actions: renderDropdown()
|
|
738
999
|
});
|
|
739
1000
|
}
|
|
740
1001
|
|
|
741
|
-
var styles = {
|
|
1002
|
+
var styles$3 = {
|
|
742
1003
|
root: /*#__PURE__*/emotion.css({
|
|
743
1004
|
marginBottom: '1.25rem !important',
|
|
744
1005
|
display: 'block'
|
|
@@ -780,17 +1041,17 @@ function LinkedEntityBlock(props) {
|
|
|
780
1041
|
};
|
|
781
1042
|
|
|
782
1043
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
|
|
783
|
-
className: styles.root,
|
|
1044
|
+
className: styles$3.root,
|
|
784
1045
|
"data-entity-type": entityType,
|
|
785
1046
|
"data-entity-id": entityId,
|
|
786
1047
|
// COMPAT: This makes copy & paste work for Firefox
|
|
787
|
-
contentEditable:
|
|
788
|
-
draggable:
|
|
1048
|
+
contentEditable: IS_CHROME ? undefined : false,
|
|
1049
|
+
draggable: IS_CHROME ? true : undefined
|
|
789
1050
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
790
1051
|
// COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari
|
|
791
|
-
contentEditable:
|
|
792
|
-
draggable:
|
|
793
|
-
className: styles.container
|
|
1052
|
+
contentEditable: IS_CHROME ? false : undefined,
|
|
1053
|
+
draggable: IS_CHROME ? true : undefined,
|
|
1054
|
+
className: styles$3.container
|
|
794
1055
|
}, entityType === 'Entry' && /*#__PURE__*/React__default.createElement(FetchingWrappedEntryCard, {
|
|
795
1056
|
sdk: sdk,
|
|
796
1057
|
entryId: entityId,
|
|
@@ -1738,7 +1999,7 @@ function insertBlock(editor, nodeType, entity) {
|
|
|
1738
1999
|
focus(editor);
|
|
1739
2000
|
}
|
|
1740
2001
|
|
|
1741
|
-
var styles$
|
|
2002
|
+
var styles$4 = {
|
|
1742
2003
|
icon: /*#__PURE__*/emotion.css({
|
|
1743
2004
|
marginRight: '10px'
|
|
1744
2005
|
})
|
|
@@ -1786,7 +2047,7 @@ function EmbeddedEntityBlockToolbarIcon(_ref) {
|
|
|
1786
2047
|
flexDirection: "row"
|
|
1787
2048
|
}, /*#__PURE__*/React__default.createElement(f36Components.Icon, {
|
|
1788
2049
|
as: type === 'Asset' ? f36Icons.AssetIcon : f36Icons.EmbeddedEntryBlockIcon,
|
|
1789
|
-
className: "rich-text__embedded-entry-list-icon " + styles$
|
|
2050
|
+
className: "rich-text__embedded-entry-list-icon " + styles$4.icon,
|
|
1790
2051
|
variant: "secondary"
|
|
1791
2052
|
}), /*#__PURE__*/React__default.createElement("span", null, type)));
|
|
1792
2053
|
}
|
|
@@ -1885,7 +2146,7 @@ var createEmbeddedAssetBlockPlugin = /*#__PURE__*/createEmbeddedEntityPlugin(Con
|
|
|
1885
2146
|
|
|
1886
2147
|
var getEntryTitle = fieldEditorShared.entityHelpers.getEntryTitle,
|
|
1887
2148
|
getEntryStatus = fieldEditorShared.entityHelpers.getEntryStatus;
|
|
1888
|
-
var styles$
|
|
2149
|
+
var styles$5 = {
|
|
1889
2150
|
scheduledIcon: /*#__PURE__*/emotion.css({
|
|
1890
2151
|
verticalAlign: 'text-bottom',
|
|
1891
2152
|
marginRight: tokens.spacing2Xs
|
|
@@ -1956,7 +2217,7 @@ function FetchingWrappedInlineEntryCard(props) {
|
|
|
1956
2217
|
actions: [/*#__PURE__*/React__default.createElement(f36Components.MenuItem, {
|
|
1957
2218
|
key: "remove",
|
|
1958
2219
|
onClick: props.onRemove,
|
|
1959
|
-
testId: "
|
|
2220
|
+
testId: "card-action-remove"
|
|
1960
2221
|
}, "Remove")]
|
|
1961
2222
|
});
|
|
1962
2223
|
}
|
|
@@ -1973,14 +2234,14 @@ function FetchingWrappedInlineEntryCard(props) {
|
|
|
1973
2234
|
key: "remove",
|
|
1974
2235
|
onClick: props.onRemove,
|
|
1975
2236
|
disabled: props.isDisabled,
|
|
1976
|
-
testId: "
|
|
2237
|
+
testId: "card-action-remove"
|
|
1977
2238
|
}, "Remove")]
|
|
1978
2239
|
}, /*#__PURE__*/React__default.createElement(fieldEditorReference.ScheduledIconWithTooltip, {
|
|
1979
2240
|
getEntityScheduledActions: loadEntityScheduledActions,
|
|
1980
2241
|
entityType: "Entry",
|
|
1981
2242
|
entityId: entry.sys.id
|
|
1982
2243
|
}, /*#__PURE__*/React__default.createElement(f36Icons.ClockIcon, {
|
|
1983
|
-
className: styles$
|
|
2244
|
+
className: styles$5.scheduledIcon,
|
|
1984
2245
|
variant: "muted",
|
|
1985
2246
|
testId: "scheduled-icon"
|
|
1986
2247
|
})), /*#__PURE__*/React__default.createElement(f36Components.Text, null, title));
|
|
@@ -2004,7 +2265,7 @@ function createInlineEntryNode(id) {
|
|
|
2004
2265
|
};
|
|
2005
2266
|
}
|
|
2006
2267
|
|
|
2007
|
-
var styles$
|
|
2268
|
+
var styles$6 = {
|
|
2008
2269
|
icon: /*#__PURE__*/emotion.css({
|
|
2009
2270
|
marginRight: '10px'
|
|
2010
2271
|
}),
|
|
@@ -2040,15 +2301,15 @@ function EmbeddedEntityInline(props) {
|
|
|
2040
2301
|
}
|
|
2041
2302
|
|
|
2042
2303
|
return /*#__PURE__*/React.createElement("span", Object.assign({}, props.attributes, {
|
|
2043
|
-
className: styles$
|
|
2304
|
+
className: styles$6.root,
|
|
2044
2305
|
"data-embedded-entity-inline-id": entryId,
|
|
2045
2306
|
// COMPAT: This makes copy & paste work for Firefox
|
|
2046
|
-
contentEditable:
|
|
2047
|
-
draggable:
|
|
2307
|
+
contentEditable: IS_CHROME ? undefined : false,
|
|
2308
|
+
draggable: IS_CHROME ? true : undefined
|
|
2048
2309
|
}), /*#__PURE__*/React.createElement("span", {
|
|
2049
2310
|
// COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari
|
|
2050
|
-
contentEditable:
|
|
2051
|
-
draggable:
|
|
2311
|
+
contentEditable: IS_CHROME ? false : undefined,
|
|
2312
|
+
draggable: IS_CHROME ? true : undefined
|
|
2052
2313
|
}, /*#__PURE__*/React.createElement(FetchingWrappedInlineEntryCard, {
|
|
2053
2314
|
sdk: sdk,
|
|
2054
2315
|
entryId: entryId,
|
|
@@ -2170,7 +2431,7 @@ function ToolbarEmbeddedEntityInlineButton(props) {
|
|
|
2170
2431
|
flexDirection: "row"
|
|
2171
2432
|
}, /*#__PURE__*/React.createElement(f36Icons.EmbeddedEntryInlineIcon, {
|
|
2172
2433
|
variant: "secondary",
|
|
2173
|
-
className: "rich-text__embedded-entry-list-icon " + styles$
|
|
2434
|
+
className: "rich-text__embedded-entry-list-icon " + styles$6.icon
|
|
2174
2435
|
}), /*#__PURE__*/React.createElement("span", null, "Inline entry")));
|
|
2175
2436
|
}
|
|
2176
2437
|
function createEmbeddedEntityInlinePlugin(sdk) {
|
|
@@ -2246,7 +2507,7 @@ var isMarkEnabled = function isMarkEnabled(field, mark) {
|
|
|
2246
2507
|
};
|
|
2247
2508
|
|
|
2248
2509
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _dropdown, _LABELS;
|
|
2249
|
-
var styles$
|
|
2510
|
+
var styles$7 = {
|
|
2250
2511
|
dropdown: (_dropdown = {
|
|
2251
2512
|
root: /*#__PURE__*/emotion.css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
|
|
2252
2513
|
}, _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)
|
|
@@ -2341,7 +2602,7 @@ function ToolbarHeadingButton(props) {
|
|
|
2341
2602
|
testId: "dropdown-option-" + nodeType,
|
|
2342
2603
|
disabled: props.isDisabled
|
|
2343
2604
|
}, /*#__PURE__*/React.createElement("span", {
|
|
2344
|
-
className: emotion.cx(styles$
|
|
2605
|
+
className: emotion.cx(styles$7.dropdown.root, styles$7.dropdown[nodeType])
|
|
2345
2606
|
}, LABELS[nodeType]));
|
|
2346
2607
|
}).filter(Boolean)));
|
|
2347
2608
|
}
|
|
@@ -2411,7 +2672,7 @@ var transformLift = function transformLift(editor, _ref4) {
|
|
|
2411
2672
|
};
|
|
2412
2673
|
|
|
2413
2674
|
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;
|
|
2414
|
-
var styles$
|
|
2675
|
+
var styles$8 = {
|
|
2415
2676
|
dropdown: (_dropdown$1 = {
|
|
2416
2677
|
root: /*#__PURE__*/emotion.css(_templateObject$1 || (_templateObject$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-weight: ", ";\n "])), tokens.fontWeightDemiBold)
|
|
2417
2678
|
}, _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),
|
|
@@ -2423,7 +2684,7 @@ var styles$5 = {
|
|
|
2423
2684
|
function createHeading(Tag, block) {
|
|
2424
2685
|
return function Heading(props) {
|
|
2425
2686
|
return /*#__PURE__*/React.createElement(Tag, Object.assign({}, props.attributes, {
|
|
2426
|
-
className: emotion.cx(styles$
|
|
2687
|
+
className: emotion.cx(styles$8.headings.root, styles$8.headings[block])
|
|
2427
2688
|
}), props.children);
|
|
2428
2689
|
};
|
|
2429
2690
|
}
|
|
@@ -2519,7 +2780,7 @@ var createHeadingPlugin = function createHeadingPlugin() {
|
|
|
2519
2780
|
};
|
|
2520
2781
|
};
|
|
2521
2782
|
|
|
2522
|
-
var styles$
|
|
2783
|
+
var styles$9 = {
|
|
2523
2784
|
button: /*#__PURE__*/emotion.css({
|
|
2524
2785
|
height: '30px',
|
|
2525
2786
|
width: '30px',
|
|
@@ -2545,7 +2806,7 @@ function ToolbarButton(props) {
|
|
|
2545
2806
|
};
|
|
2546
2807
|
|
|
2547
2808
|
var button = /*#__PURE__*/React__default.createElement(f36Components.Button, {
|
|
2548
|
-
className: emotion.cx(styles$
|
|
2809
|
+
className: emotion.cx(styles$9.button, className),
|
|
2549
2810
|
isDisabled: isDisabled,
|
|
2550
2811
|
startIcon: children,
|
|
2551
2812
|
onClick: handleClick,
|
|
@@ -2556,7 +2817,7 @@ function ToolbarButton(props) {
|
|
|
2556
2817
|
|
|
2557
2818
|
if (title) {
|
|
2558
2819
|
return /*#__PURE__*/React__default.createElement(f36Components.Tooltip, {
|
|
2559
|
-
className: styles$
|
|
2820
|
+
className: styles$9.tooltip,
|
|
2560
2821
|
placement: "bottom",
|
|
2561
2822
|
content: title
|
|
2562
2823
|
}, button);
|
|
@@ -2566,7 +2827,7 @@ function ToolbarButton(props) {
|
|
|
2566
2827
|
}
|
|
2567
2828
|
|
|
2568
2829
|
var _templateObject$2, _templateObject2$2, _templateObject3$2;
|
|
2569
|
-
var styles$
|
|
2830
|
+
var styles$a = {
|
|
2570
2831
|
container: /*#__PURE__*/emotion.css(_templateObject$2 || (_templateObject$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin: 0 0 ", ";\n "])), tokens.spacingL),
|
|
2571
2832
|
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),
|
|
2572
2833
|
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)
|
|
@@ -2624,14 +2885,14 @@ function Hr(props) {
|
|
|
2624
2885
|
var isSelected = Slate.useSelected();
|
|
2625
2886
|
var isFocused = Slate.useFocused();
|
|
2626
2887
|
return /*#__PURE__*/React.createElement("div", Object.assign({}, props.attributes, {
|
|
2627
|
-
className: styles$
|
|
2888
|
+
className: styles$a.container,
|
|
2628
2889
|
"data-void-element": Contentful.BLOCKS.HR
|
|
2629
2890
|
}), /*#__PURE__*/React.createElement("div", {
|
|
2630
2891
|
draggable: true,
|
|
2631
2892
|
// Moving `contentEditable` to this div makes it to be selectable when being the first void element, e.g pressing ctrl + a to select everything
|
|
2632
2893
|
contentEditable: false
|
|
2633
2894
|
}, /*#__PURE__*/React.createElement("hr", {
|
|
2634
|
-
className: emotion.cx(styles$
|
|
2895
|
+
className: emotion.cx(styles$a.hr, isSelected && isFocused ? styles$a.hrSelected : undefined)
|
|
2635
2896
|
})), props.children);
|
|
2636
2897
|
}
|
|
2637
2898
|
var createHrPlugin = function createHrPlugin() {
|
|
@@ -2658,7 +2919,7 @@ var createHrPlugin = function createHrPlugin() {
|
|
|
2658
2919
|
};
|
|
2659
2920
|
|
|
2660
2921
|
var _templateObject$3, _SYS_LINK_TYPES, _LINK_TYPE_SELECTION_;
|
|
2661
|
-
var styles$
|
|
2922
|
+
var styles$b = {
|
|
2662
2923
|
removeSelectionLabel: /*#__PURE__*/emotion.css(_templateObject$3 || (_templateObject$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-left: ", ";\n "])), tokens.spacingS)
|
|
2663
2924
|
};
|
|
2664
2925
|
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);
|
|
@@ -2841,7 +3102,7 @@ function HyperlinkModal(props) {
|
|
|
2841
3102
|
}, "Link target", ' '), linkEntity && linkEntity.sys.linkType === SYS_LINK_TYPES[linkType] ? /*#__PURE__*/React.createElement(React.Fragment, null, !props.readonly && /*#__PURE__*/React.createElement(f36Components.TextLink, {
|
|
2842
3103
|
testId: "entity-selection-link",
|
|
2843
3104
|
onClick: resetLinkEntity,
|
|
2844
|
-
className: styles$
|
|
3105
|
+
className: styles$b.removeSelectionLabel
|
|
2845
3106
|
}, "Remove selection"), /*#__PURE__*/React.createElement("div", null, linkType === Contentful.INLINES.ENTRY_HYPERLINK && /*#__PURE__*/React.createElement(FetchingWrappedEntryCard, {
|
|
2846
3107
|
sdk: props.sdk,
|
|
2847
3108
|
locale: props.sdk.field.locale,
|
|
@@ -3182,7 +3443,7 @@ function useEntityInfo(props) {
|
|
|
3182
3443
|
return getEntityInfo(status.data);
|
|
3183
3444
|
}
|
|
3184
3445
|
|
|
3185
|
-
var styles$
|
|
3446
|
+
var styles$c = {
|
|
3186
3447
|
hyperlinkWrapper: /*#__PURE__*/emotion.css({
|
|
3187
3448
|
display: 'inline',
|
|
3188
3449
|
position: 'static',
|
|
@@ -3227,13 +3488,13 @@ function EntityHyperlink(props) {
|
|
|
3227
3488
|
|
|
3228
3489
|
return /*#__PURE__*/React.createElement(f36Components.Tooltip, {
|
|
3229
3490
|
content: tooltipContent,
|
|
3230
|
-
targetWrapperClassName: styles$
|
|
3491
|
+
targetWrapperClassName: styles$c.hyperlinkWrapper,
|
|
3231
3492
|
placement: "bottom",
|
|
3232
3493
|
maxWidth: "auto"
|
|
3233
3494
|
}, /*#__PURE__*/React.createElement(f36Components.TextLink, {
|
|
3234
3495
|
as: "a",
|
|
3235
3496
|
onClick: handleClick,
|
|
3236
|
-
className: styles$
|
|
3497
|
+
className: styles$c.hyperlink,
|
|
3237
3498
|
"data-link-type": target.sys.linkType,
|
|
3238
3499
|
"data-link-id": target.sys.id
|
|
3239
3500
|
}, props.children));
|
|
@@ -3257,7 +3518,7 @@ function UrlHyperlink(props) {
|
|
|
3257
3518
|
|
|
3258
3519
|
return /*#__PURE__*/React.createElement(f36Components.Tooltip, {
|
|
3259
3520
|
content: uri,
|
|
3260
|
-
targetWrapperClassName: styles$
|
|
3521
|
+
targetWrapperClassName: styles$c.hyperlinkWrapper,
|
|
3261
3522
|
placement: "bottom",
|
|
3262
3523
|
maxWidth: "auto"
|
|
3263
3524
|
}, /*#__PURE__*/React.createElement(f36Components.TextLink, {
|
|
@@ -3265,7 +3526,7 @@ function UrlHyperlink(props) {
|
|
|
3265
3526
|
href: uri,
|
|
3266
3527
|
rel: "noopener noreferrer",
|
|
3267
3528
|
onClick: handleClick,
|
|
3268
|
-
className: styles$
|
|
3529
|
+
className: styles$c.hyperlink
|
|
3269
3530
|
}, props.children));
|
|
3270
3531
|
}
|
|
3271
3532
|
|
|
@@ -3391,12 +3652,12 @@ var createHyperlinkPlugin = function createHyperlinkPlugin(sdk) {
|
|
|
3391
3652
|
|
|
3392
3653
|
var _templateObject$4, _templateObject2$3, _templateObject3$3, _styles;
|
|
3393
3654
|
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);
|
|
3394
|
-
var styles$
|
|
3655
|
+
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);
|
|
3395
3656
|
|
|
3396
3657
|
function createList(Tag, block) {
|
|
3397
3658
|
return function List(props) {
|
|
3398
3659
|
return /*#__PURE__*/React.createElement(Tag, Object.assign({}, props.attributes, {
|
|
3399
|
-
className: emotion.cx(baseStyle, styles$
|
|
3660
|
+
className: emotion.cx(baseStyle, styles$d[block])
|
|
3400
3661
|
}), props.children);
|
|
3401
3662
|
};
|
|
3402
3663
|
}
|
|
@@ -4377,14 +4638,14 @@ var ToolbarBoldButton = /*#__PURE__*/createMarkToolbarButton({
|
|
|
4377
4638
|
mark: Contentful.MARKS.BOLD,
|
|
4378
4639
|
icon: /*#__PURE__*/React.createElement(f36Icons.FormatBoldIcon, null)
|
|
4379
4640
|
});
|
|
4380
|
-
var styles$
|
|
4641
|
+
var styles$e = {
|
|
4381
4642
|
bold: /*#__PURE__*/emotion.css({
|
|
4382
4643
|
fontWeight: 600
|
|
4383
4644
|
})
|
|
4384
4645
|
};
|
|
4385
4646
|
function Bold(props) {
|
|
4386
4647
|
return /*#__PURE__*/React.createElement("strong", Object.assign({}, props.attributes, {
|
|
4387
|
-
className: styles$
|
|
4648
|
+
className: styles$e.bold
|
|
4388
4649
|
}), props.children);
|
|
4389
4650
|
}
|
|
4390
4651
|
|
|
@@ -4424,7 +4685,7 @@ var ToolbarCodeButton = /*#__PURE__*/createMarkToolbarButton({
|
|
|
4424
4685
|
mark: Contentful.MARKS.CODE,
|
|
4425
4686
|
icon: /*#__PURE__*/React.createElement(f36Icons.CodeIcon, null)
|
|
4426
4687
|
});
|
|
4427
|
-
var styles$
|
|
4688
|
+
var styles$f = {
|
|
4428
4689
|
code: /*#__PURE__*/emotion.css({
|
|
4429
4690
|
fontFamily: 'monospace',
|
|
4430
4691
|
fontSize: '.9em'
|
|
@@ -4432,7 +4693,7 @@ var styles$c = {
|
|
|
4432
4693
|
};
|
|
4433
4694
|
function Code(props) {
|
|
4434
4695
|
return /*#__PURE__*/React.createElement("code", Object.assign({}, props.attributes, {
|
|
4435
|
-
className: styles$
|
|
4696
|
+
className: styles$f.code
|
|
4436
4697
|
}), props.children);
|
|
4437
4698
|
}
|
|
4438
4699
|
var createCodePlugin = function createCodePlugin() {
|
|
@@ -4462,14 +4723,14 @@ var ToolbarItalicButton = /*#__PURE__*/createMarkToolbarButton({
|
|
|
4462
4723
|
mark: Contentful.MARKS.ITALIC,
|
|
4463
4724
|
icon: /*#__PURE__*/React.createElement(f36Icons.FormatItalicIcon, null)
|
|
4464
4725
|
});
|
|
4465
|
-
var styles$
|
|
4726
|
+
var styles$g = {
|
|
4466
4727
|
italic: /*#__PURE__*/emotion.css({
|
|
4467
4728
|
fontStyle: 'italic'
|
|
4468
4729
|
})
|
|
4469
4730
|
};
|
|
4470
4731
|
function Italic(props) {
|
|
4471
4732
|
return /*#__PURE__*/React.createElement("em", Object.assign({}, props.attributes, {
|
|
4472
|
-
className: styles$
|
|
4733
|
+
className: styles$g.italic
|
|
4473
4734
|
}), props.children);
|
|
4474
4735
|
}
|
|
4475
4736
|
var createItalicPlugin = function createItalicPlugin() {
|
|
@@ -4745,10 +5006,10 @@ var createNormalizerPlugin = function createNormalizerPlugin() {
|
|
|
4745
5006
|
};
|
|
4746
5007
|
|
|
4747
5008
|
var _templateObject$6, _styles$1;
|
|
4748
|
-
var styles$
|
|
5009
|
+
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);
|
|
4749
5010
|
function Paragraph(props) {
|
|
4750
5011
|
return /*#__PURE__*/React.createElement("div", Object.assign({}, props.attributes, {
|
|
4751
|
-
className: styles$
|
|
5012
|
+
className: styles$h[Contentful.BLOCKS.PARAGRAPH]
|
|
4752
5013
|
}), props.children);
|
|
4753
5014
|
}
|
|
4754
5015
|
|
|
@@ -5569,7 +5830,7 @@ var isTable = function isTable(node) {
|
|
|
5569
5830
|
return slate.Element.isElement(node) && node.type === Contentful.BLOCKS.TABLE;
|
|
5570
5831
|
};
|
|
5571
5832
|
|
|
5572
|
-
var styles$
|
|
5833
|
+
var styles$i = {
|
|
5573
5834
|
topRight: /*#__PURE__*/emotion.css({
|
|
5574
5835
|
position: 'absolute',
|
|
5575
5836
|
top: '6px',
|
|
@@ -5658,7 +5919,7 @@ var TableActions = function TableActions() {
|
|
|
5658
5919
|
size: "small",
|
|
5659
5920
|
variant: "transparent",
|
|
5660
5921
|
tabIndex: -1,
|
|
5661
|
-
className: styles$
|
|
5922
|
+
className: styles$i.topRight,
|
|
5662
5923
|
icon: /*#__PURE__*/React__default.createElement(f36Icons.ChevronDownIcon, null),
|
|
5663
5924
|
"aria-label": "Open table menu",
|
|
5664
5925
|
testId: "cf-table-actions-button"
|
|
@@ -6480,6 +6741,42 @@ var disableCorePlugins = {
|
|
|
6480
6741
|
eventEditor: true
|
|
6481
6742
|
};
|
|
6482
6743
|
|
|
6744
|
+
var isTextElement = function isTextElement(node) {
|
|
6745
|
+
return 'text' in node;
|
|
6746
|
+
};
|
|
6747
|
+
/**
|
|
6748
|
+
* Ensures all nodes have a child leaf text element. This should be handled by
|
|
6749
|
+
* Slate but its behavior has proven to be buggy and unpredictable.
|
|
6750
|
+
*/
|
|
6751
|
+
|
|
6752
|
+
|
|
6753
|
+
function sanitizeIncomingSlateDoc(nodes) {
|
|
6754
|
+
if (nodes === void 0) {
|
|
6755
|
+
nodes = [];
|
|
6756
|
+
}
|
|
6757
|
+
|
|
6758
|
+
return nodes.map(function (node) {
|
|
6759
|
+
var _node$children;
|
|
6760
|
+
|
|
6761
|
+
if (isTextElement(node)) {
|
|
6762
|
+
return node;
|
|
6763
|
+
}
|
|
6764
|
+
|
|
6765
|
+
if (((_node$children = node.children) == null ? void 0 : _node$children.length) === 0) {
|
|
6766
|
+
return _extends({}, node, {
|
|
6767
|
+
children: [{
|
|
6768
|
+
text: '',
|
|
6769
|
+
data: {}
|
|
6770
|
+
}]
|
|
6771
|
+
});
|
|
6772
|
+
}
|
|
6773
|
+
|
|
6774
|
+
return _extends({}, node, {
|
|
6775
|
+
children: sanitizeIncomingSlateDoc(node.children)
|
|
6776
|
+
});
|
|
6777
|
+
});
|
|
6778
|
+
}
|
|
6779
|
+
|
|
6483
6780
|
/**
|
|
6484
6781
|
* For legacy reasons, a document may not have any content at all
|
|
6485
6782
|
* e.g:
|
|
@@ -6534,16 +6831,17 @@ var setEditorContent = function setEditorContent(editor, nodes) {
|
|
|
6534
6831
|
});
|
|
6535
6832
|
};
|
|
6536
6833
|
/**
|
|
6537
|
-
* Converts a
|
|
6834
|
+
* Converts a Contentful rich text document to the corresponding slate editor
|
|
6538
6835
|
* value
|
|
6539
6836
|
*/
|
|
6540
6837
|
|
|
6541
6838
|
var documentToEditorValue = function documentToEditorValue(doc) {
|
|
6542
|
-
|
|
6839
|
+
var slateDoc = contentfulSlateJSAdapter.toSlatejsDocument({
|
|
6543
6840
|
document: hasContent(doc) ? doc : Contentful.EMPTY_DOCUMENT,
|
|
6544
6841
|
// TODO: get rid of schema, https://github.com/contentful/field-editors/pull/1065#discussion_r826723248
|
|
6545
6842
|
schema: schema
|
|
6546
6843
|
});
|
|
6844
|
+
return sanitizeIncomingSlateDoc(slateDoc);
|
|
6547
6845
|
};
|
|
6548
6846
|
var normalizeEditorValue = function normalizeEditorValue(value, options) {
|
|
6549
6847
|
var editor = plateCore.createPlateEditor(options);
|
|
@@ -6555,7 +6853,7 @@ var normalizeEditorValue = function normalizeEditorValue(value, options) {
|
|
|
6555
6853
|
};
|
|
6556
6854
|
|
|
6557
6855
|
var STYLE_EDITOR_BORDER = "1px solid " + tokens.gray400;
|
|
6558
|
-
var styles$
|
|
6856
|
+
var styles$j = {
|
|
6559
6857
|
root: /*#__PURE__*/emotion.css({
|
|
6560
6858
|
position: 'relative'
|
|
6561
6859
|
}),
|
|
@@ -6671,7 +6969,7 @@ var EmbedEntityWidget = function EmbedEntityWidget(_ref) {
|
|
|
6671
6969
|
}, actions);
|
|
6672
6970
|
};
|
|
6673
6971
|
|
|
6674
|
-
var styles$
|
|
6972
|
+
var styles$k = {
|
|
6675
6973
|
toolbar: /*#__PURE__*/emotion.css({
|
|
6676
6974
|
border: "1px solid " + tokens.gray400,
|
|
6677
6975
|
backgroundColor: tokens.gray100,
|
|
@@ -6716,14 +7014,14 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
6716
7014
|
var shouldDisableTables = isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected;
|
|
6717
7015
|
return /*#__PURE__*/React__default.createElement(f36Components.Flex, {
|
|
6718
7016
|
testId: "toolbar",
|
|
6719
|
-
className: styles$
|
|
7017
|
+
className: styles$k.toolbar,
|
|
6720
7018
|
alignItems: "center"
|
|
6721
7019
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
6722
|
-
className: styles$
|
|
7020
|
+
className: styles$k.formattingOptionsWrapper
|
|
6723
7021
|
}, /*#__PURE__*/React__default.createElement(ToolbarHeadingButton, {
|
|
6724
7022
|
isDisabled: isDisabled || !canInsertBlocks
|
|
6725
7023
|
}), validationInfo.isAnyMarkEnabled && /*#__PURE__*/React__default.createElement("span", {
|
|
6726
|
-
className: styles$
|
|
7024
|
+
className: styles$k.divider
|
|
6727
7025
|
}), isMarkEnabled(sdk.field, Contentful.MARKS.BOLD) && /*#__PURE__*/React__default.createElement(ToolbarBoldButton, {
|
|
6728
7026
|
isDisabled: isDisabled
|
|
6729
7027
|
}), isMarkEnabled(sdk.field, Contentful.MARKS.ITALIC) && /*#__PURE__*/React__default.createElement(ToolbarItalicButton, {
|
|
@@ -6733,11 +7031,11 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
6733
7031
|
}), isMarkEnabled(sdk.field, Contentful.MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarCodeButton, {
|
|
6734
7032
|
isDisabled: isDisabled
|
|
6735
7033
|
}), validationInfo.isAnyHyperlinkEnabled && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
|
|
6736
|
-
className: styles$
|
|
7034
|
+
className: styles$k.divider
|
|
6737
7035
|
}), /*#__PURE__*/React__default.createElement(ToolbarHyperlinkButton, {
|
|
6738
7036
|
isDisabled: isDisabled
|
|
6739
7037
|
})), validationInfo.isAnyBlockFormattingEnabled && /*#__PURE__*/React__default.createElement("span", {
|
|
6740
|
-
className: styles$
|
|
7038
|
+
className: styles$k.divider
|
|
6741
7039
|
}), /*#__PURE__*/React__default.createElement(ToolbarListButton, {
|
|
6742
7040
|
isDisabled: isDisabled || !canInsertBlocks
|
|
6743
7041
|
}), isNodeTypeEnabled(sdk.field, Contentful.BLOCKS.QUOTE) && /*#__PURE__*/React__default.createElement(ToolbarQuoteButton, {
|
|
@@ -6747,7 +7045,7 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
6747
7045
|
}), isNodeTypeEnabled(sdk.field, Contentful.BLOCKS.TABLE) && /*#__PURE__*/React__default.createElement(ToolbarTableButton, {
|
|
6748
7046
|
isDisabled: shouldDisableTables
|
|
6749
7047
|
})), /*#__PURE__*/React__default.createElement("div", {
|
|
6750
|
-
className: styles$
|
|
7048
|
+
className: styles$k.embedActionsWrapper
|
|
6751
7049
|
}, /*#__PURE__*/React__default.createElement(EmbedEntityWidget, {
|
|
6752
7050
|
isDisabled: isDisabled,
|
|
6753
7051
|
canInsertBlocks: canInsertBlocks
|
|
@@ -6772,7 +7070,7 @@ function getValidationInfo(field) {
|
|
|
6772
7070
|
}
|
|
6773
7071
|
|
|
6774
7072
|
var _templateObject$b;
|
|
6775
|
-
var styles$
|
|
7073
|
+
var styles$l = {
|
|
6776
7074
|
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 "])))
|
|
6777
7075
|
};
|
|
6778
7076
|
|
|
@@ -6780,7 +7078,7 @@ var StickyToolbarWrapper = function StickyToolbarWrapper(_ref) {
|
|
|
6780
7078
|
var isDisabled = _ref.isDisabled,
|
|
6781
7079
|
children = _ref.children;
|
|
6782
7080
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
6783
|
-
className: isDisabled ? '' : styles$
|
|
7081
|
+
className: isDisabled ? '' : styles$l.nativeSticky
|
|
6784
7082
|
}, children);
|
|
6785
7083
|
};
|
|
6786
7084
|
|
|
@@ -6875,9 +7173,9 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
|
|
|
6875
7173
|
setPendingExternalUpdate(true);
|
|
6876
7174
|
setEditorContent(editor, documentToEditorValue(props.value));
|
|
6877
7175
|
}, [props.value, id]);
|
|
6878
|
-
var classNames = emotion.cx(styles$
|
|
7176
|
+
var classNames = emotion.cx(styles$j.editor, props.minHeight !== undefined ? emotion.css({
|
|
6879
7177
|
minHeight: props.minHeight
|
|
6880
|
-
}) : undefined, props.isDisabled ? styles$
|
|
7178
|
+
}) : undefined, props.isDisabled ? styles$j.disabled : styles$j.enabled, props.isToolbarHidden && styles$j.hiddenToolbar);
|
|
6881
7179
|
React.useEffect(function () {
|
|
6882
7180
|
if (!isFirstRender) {
|
|
6883
7181
|
return;
|
|
@@ -6893,7 +7191,7 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
|
|
|
6893
7191
|
}, /*#__PURE__*/React__default.createElement(ContentfulEditorIdProvider, {
|
|
6894
7192
|
value: id
|
|
6895
7193
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
6896
|
-
className: styles$
|
|
7194
|
+
className: styles$j.root,
|
|
6897
7195
|
"data-test-id": "rich-text-editor"
|
|
6898
7196
|
}, /*#__PURE__*/React__default.createElement(plateCore.Plate, {
|
|
6899
7197
|
id: id,
|