@contentful/field-editor-rich-text 3.2.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import React__default, { createContext, useContext, useMemo, useState, useEffect
2
2
  import { MissingEntityCard, WrappedAssetCard, useEntity, useEntityLoader, WrappedEntryCard, ScheduledIconWithTooltip, EntityProvider, getScheduleTooltipContent } from '@contentful/field-editor-reference';
3
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
- import { usePlateEditorRef, usePlateEditorState, toggleNodeType, getText, getAbove, removeMark, setMarks, isMarkActive, getNodes, setNodes, isAncestorEmpty, match, getLastChildPath, wrapNodes, getPluginType, unwrapNodes, isCollapsed, isRangeAcrossBlocks, ELEMENT_DEFAULT, findNode, getParent, getBlockAbove, isSelectionAtBlockStart, isSelectionAtBlockEnd, isFirstChild, insertNodes, moveChildren, isBlockAboveEmpty, mockPlugin, deleteFragment, toggleMark, someHtmlElement, KEY_DESERIALIZE_HTML, hasSingleChild, isLastChild, someNode, getChildren as getChildren$1, queryNode, createDeserializeHtmlPlugin, createDeserializeAstPlugin, createPlateEditor, getPlateSelectors, getPlateActions, Plate } from '@udecode/plate-core';
5
+ import { usePlateEditorRef, usePlateEditorState, toggleNodeType, getText, getAbove, removeMark, setMarks, isMarkActive, getNodes, setNodes, isAncestorEmpty, match, getLastChildPath, wrapNodes, getPluginType, unwrapNodes, isCollapsed, isRangeAcrossBlocks, ELEMENT_DEFAULT, findNode, getParent, getBlockAbove, isSelectionAtBlockStart, isSelectionAtBlockEnd, isFirstChild, insertNodes, moveChildren, isBlockAboveEmpty, mockPlugin, deleteFragment, toggleMark, someHtmlElement, KEY_DESERIALIZE_HTML, hasSingleChild, isLastChild, someNode, getChildren as getChildren$1, unsetNodes, queryNode, createDeserializeHtmlPlugin, createDeserializeAstPlugin, createPlateEditor, getPlateSelectors, getPlateActions, Plate } from '@udecode/plate-core';
6
6
  import { css, cx } from 'emotion';
7
7
  import areEqual from 'fast-deep-equal';
8
8
  import noop from 'lodash-es/noop';
@@ -20,7 +20,7 @@ import find from 'lodash-es/find';
20
20
  import flow from 'lodash-es/flow';
21
21
  import get from 'lodash-es/get';
22
22
  import tokens from '@contentful/f36-tokens';
23
- import { AssetIcon, EmbeddedEntryBlockIcon, ClockIcon, EmbeddedEntryInlineIcon, ChevronDownIcon, HorizontalRuleIcon, LinkIcon, ListBulletedIcon, ListNumberedIcon, FormatBoldIcon, CodeIcon, FormatItalicIcon, FormatUnderlinedIcon, SuperscriptIcon, SubscriptIcon, QuoteIcon, TableIcon, PlusIcon } from '@contentful/f36-icons';
23
+ import { AssetIcon, EmbeddedEntryBlockIcon, ClockIcon, EmbeddedEntryInlineIcon, ChevronDownIcon, HorizontalRuleIcon, LinkIcon, ListBulletedIcon, ListNumberedIcon, FormatBoldIcon, CodeIcon, FormatItalicIcon, FormatUnderlinedIcon, SuperscriptIcon, SubscriptIcon, QuoteIcon, TableIcon, PlusIcon, MoreHorizontalIcon } from '@contentful/f36-icons';
24
24
  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';
25
25
  import castArray from 'lodash-es/castArray';
26
26
  import { createBoldPlugin as createBoldPlugin$1, createCodePlugin as createCodePlugin$1, createItalicPlugin as createItalicPlugin$1, createUnderlinePlugin as createUnderlinePlugin$1, createSuperscriptPlugin as createSuperscriptPlugin$1, createSubscriptPlugin as createSubscriptPlugin$1 } from '@udecode/plate-basic-marks';
@@ -5113,6 +5113,12 @@ var buildMarkEventHandler = function buildMarkEventHandler(type) {
5113
5113
  };
5114
5114
  };
5115
5115
 
5116
+ var styles$c = {
5117
+ isActive: /*#__PURE__*/css({
5118
+ backgroundColor: tokens.blue100,
5119
+ color: tokens.blue600
5120
+ })
5121
+ };
5116
5122
  var createMarkToolbarButton = function createMarkToolbarButton(_ref) {
5117
5123
  var mark = _ref.mark,
5118
5124
  title = _ref.title,
@@ -5131,6 +5137,18 @@ var createMarkToolbarButton = function createMarkToolbarButton(_ref) {
5131
5137
  focus(editor);
5132
5138
  }, [editor]);
5133
5139
  if (!editor) return null;
5140
+
5141
+ if (!icon) {
5142
+ var _cx;
5143
+
5144
+ return /*#__PURE__*/createElement(Menu.Item, {
5145
+ onClick: handleClick,
5146
+ disabled: isDisabled,
5147
+ className: cx((_cx = {}, _cx[styles$c.isActive] = isMarkActive(editor, mark), _cx)),
5148
+ testId: mark + "-toolbar-button"
5149
+ }, title);
5150
+ }
5151
+
5134
5152
  return /*#__PURE__*/createElement(ToolbarButton, {
5135
5153
  title: title,
5136
5154
  testId: mark + "-toolbar-button",
@@ -5149,14 +5167,14 @@ var ToolbarBoldButton = /*#__PURE__*/createMarkToolbarButton({
5149
5167
  mark: MARKS.BOLD,
5150
5168
  icon: /*#__PURE__*/createElement(FormatBoldIcon, null)
5151
5169
  });
5152
- var styles$c = {
5170
+ var styles$d = {
5153
5171
  bold: /*#__PURE__*/css({
5154
5172
  fontWeight: 600
5155
5173
  })
5156
5174
  };
5157
5175
  function Bold(props) {
5158
5176
  return /*#__PURE__*/createElement("strong", _extends({}, props.attributes, {
5159
- className: styles$c.bold
5177
+ className: styles$d.bold
5160
5178
  }), props.children);
5161
5179
  }
5162
5180
 
@@ -5196,7 +5214,11 @@ var ToolbarCodeButton = /*#__PURE__*/createMarkToolbarButton({
5196
5214
  mark: MARKS.CODE,
5197
5215
  icon: /*#__PURE__*/createElement(CodeIcon, null)
5198
5216
  });
5199
- var styles$d = {
5217
+ var ToolbarDropdownCodeButton = /*#__PURE__*/createMarkToolbarButton({
5218
+ title: 'Code',
5219
+ mark: MARKS.CODE
5220
+ });
5221
+ var styles$e = {
5200
5222
  code: /*#__PURE__*/css({
5201
5223
  fontFamily: 'monospace',
5202
5224
  fontSize: '.9em'
@@ -5204,7 +5226,7 @@ var styles$d = {
5204
5226
  };
5205
5227
  function Code(props) {
5206
5228
  return /*#__PURE__*/createElement("code", _extends({}, props.attributes, {
5207
- className: styles$d.code
5229
+ className: styles$e.code
5208
5230
  }), props.children);
5209
5231
  }
5210
5232
  var createCodePlugin = function createCodePlugin() {
@@ -5234,14 +5256,14 @@ var ToolbarItalicButton = /*#__PURE__*/createMarkToolbarButton({
5234
5256
  mark: MARKS.ITALIC,
5235
5257
  icon: /*#__PURE__*/createElement(FormatItalicIcon, null)
5236
5258
  });
5237
- var styles$e = {
5259
+ var styles$f = {
5238
5260
  italic: /*#__PURE__*/css({
5239
5261
  fontStyle: 'italic'
5240
5262
  })
5241
5263
  };
5242
5264
  function Italic(props) {
5243
5265
  return /*#__PURE__*/createElement("em", _extends({}, props.attributes, {
5244
- className: styles$e.italic
5266
+ className: styles$f.italic
5245
5267
  }), props.children);
5246
5268
  }
5247
5269
  var createItalicPlugin = function createItalicPlugin() {
@@ -5306,7 +5328,7 @@ var createUnderlinePlugin = function createUnderlinePlugin() {
5306
5328
  });
5307
5329
  };
5308
5330
 
5309
- var styles$f = {
5331
+ var styles$g = {
5310
5332
  superscript: /*#__PURE__*/css({
5311
5333
  verticalAlign: 'super',
5312
5334
  fontSize: 'smaller'
@@ -5317,9 +5339,13 @@ var ToolbarSuperscriptButton = /*#__PURE__*/createMarkToolbarButton({
5317
5339
  mark: MARKS.SUPERSCRIPT,
5318
5340
  icon: /*#__PURE__*/createElement(SuperscriptIcon, null)
5319
5341
  });
5342
+ var ToolbarDropdownSuperscriptButton = /*#__PURE__*/createMarkToolbarButton({
5343
+ title: 'Superscript',
5344
+ mark: MARKS.SUPERSCRIPT
5345
+ });
5320
5346
  function Superscript(props) {
5321
5347
  return /*#__PURE__*/createElement("sup", _extends({}, props.attributes, {
5322
- className: styles$f.superscript
5348
+ className: styles$g.superscript
5323
5349
  }), props.children);
5324
5350
  }
5325
5351
  var createSuperscriptPlugin = function createSuperscriptPlugin() {
@@ -5337,7 +5363,7 @@ var createSuperscriptPlugin = function createSuperscriptPlugin() {
5337
5363
  });
5338
5364
  };
5339
5365
 
5340
- var styles$g = {
5366
+ var styles$h = {
5341
5367
  subscript: /*#__PURE__*/css({
5342
5368
  verticalAlign: 'sub',
5343
5369
  fontSize: 'smaller'
@@ -5350,9 +5376,13 @@ var ToolbarSubscriptButton = /*#__PURE__*/createMarkToolbarButton({
5350
5376
  viewBox: "0 0 23 18"
5351
5377
  })
5352
5378
  });
5379
+ var ToolbarDropdownSubscriptButton = /*#__PURE__*/createMarkToolbarButton({
5380
+ title: 'Subscript',
5381
+ mark: MARKS.SUBSCRIPT
5382
+ });
5353
5383
  function Subscript(props) {
5354
5384
  return /*#__PURE__*/createElement("sub", _extends({}, props.attributes, {
5355
- className: styles$g.subscript
5385
+ className: styles$h.subscript
5356
5386
  }), props.children);
5357
5387
  }
5358
5388
  var createSubscriptPlugin = function createSubscriptPlugin() {
@@ -5581,10 +5611,10 @@ var createNormalizerPlugin = function createNormalizerPlugin() {
5581
5611
  };
5582
5612
 
5583
5613
  var _templateObject$6, _styles$1;
5584
- 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);
5614
+ var styles$i = (_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);
5585
5615
  function Paragraph(props) {
5586
5616
  return /*#__PURE__*/createElement("div", _extends({}, props.attributes, {
5587
- className: styles$h[BLOCKS.PARAGRAPH]
5617
+ className: styles$i[BLOCKS.PARAGRAPH]
5588
5618
  }), props.children);
5589
5619
  }
5590
5620
 
@@ -6226,7 +6256,7 @@ var isTable = function isTable(node) {
6226
6256
  return Element.isElement(node) && node.type === BLOCKS.TABLE;
6227
6257
  };
6228
6258
 
6229
- var styles$i = {
6259
+ var styles$j = {
6230
6260
  topRight: /*#__PURE__*/css({
6231
6261
  position: 'absolute',
6232
6262
  top: '6px',
@@ -6315,7 +6345,7 @@ var TableActions = function TableActions() {
6315
6345
  size: "small",
6316
6346
  variant: "transparent",
6317
6347
  tabIndex: -1,
6318
- className: styles$i.topRight,
6348
+ className: styles$j.topRight,
6319
6349
  icon: /*#__PURE__*/React__default.createElement(ChevronDownIcon, null),
6320
6350
  "aria-label": "Open table menu",
6321
6351
  testId: "cf-table-actions-button"
@@ -6919,7 +6949,11 @@ function ToolbarTableButton(props) {
6919
6949
  }, /*#__PURE__*/createElement(TableIcon, null));
6920
6950
  }
6921
6951
 
6922
- function createTextPlugin() {
6952
+ function createTextPlugin(restrictedMarks) {
6953
+ if (restrictedMarks === void 0) {
6954
+ restrictedMarks = [];
6955
+ }
6956
+
6923
6957
  return {
6924
6958
  key: 'TextPlugin',
6925
6959
  handlers: {
@@ -6984,7 +7018,22 @@ function createTextPlugin() {
6984
7018
 
6985
7019
  fixPasteAsPlainText(editor);
6986
7020
  return editor;
6987
- }
7021
+ },
7022
+ normalizer: [{
7023
+ match: Text.isText,
7024
+ transform: function transform(editor, _ref) {
7025
+ var path = _ref[1];
7026
+ unsetNodes(editor, restrictedMarks, {
7027
+ at: path
7028
+ });
7029
+ },
7030
+ validNode: function validNode(_editor, _ref2) {
7031
+ var node = _ref2[0];
7032
+ return !restrictedMarks.some(function (mark) {
7033
+ return mark in node;
7034
+ });
7035
+ }
7036
+ }]
6988
7037
  };
6989
7038
  }
6990
7039
 
@@ -7114,7 +7163,7 @@ var createVoidsPlugin = function createVoidsPlugin() {
7114
7163
  };
7115
7164
  };
7116
7165
 
7117
- var getPlugins = function getPlugins(sdk, onAction) {
7166
+ var getPlugins = function getPlugins(sdk, onAction, restrictedMarks) {
7118
7167
  return [// AST must come after the HTML deserializer
7119
7168
  createDeserializeHtmlPlugin(), createDeserializeAstPlugin(), createDeserializeDocxPlugin(), // Tracking - This should come first so all plugins below will have access to `editor.tracking`
7120
7169
  createTrackingPlugin(onAction), // Global / Global shortcuts
@@ -7122,7 +7171,7 @@ var getPlugins = function getPlugins(sdk, onAction) {
7122
7171
  createParagraphPlugin(), createListPlugin(), createHrPlugin(), createHeadingPlugin(), createQuotePlugin(), createTablePlugin(), createEmbeddedEntryBlockPlugin(sdk), createEmbeddedAssetBlockPlugin(sdk), // Inline elements
7123
7172
  createHyperlinkPlugin(sdk), createEmbeddedEntityInlinePlugin(sdk), // Marks
7124
7173
  createMarksPlugin(), // Other
7125
- createTrailingParagraphPlugin(), createTextPlugin(), createVoidsPlugin(), createSelectOnBackspacePlugin(), // Pasting content from other sources
7174
+ createTrailingParagraphPlugin(), createTextPlugin(restrictedMarks), createVoidsPlugin(), createSelectOnBackspacePlugin(), // Pasting content from other sources
7126
7175
  createPasteHTMLPlugin(), // These plugins drive their configurations from the list of plugins
7127
7176
  // above. They MUST come last.
7128
7177
  createSoftBreakPlugin(), createExitBreakPlugin(), createResetNodePlugin(), createNormalizerPlugin()];
@@ -7245,7 +7294,7 @@ var normalizeEditorValue = function normalizeEditorValue(value, options) {
7245
7294
  };
7246
7295
 
7247
7296
  var STYLE_EDITOR_BORDER = "1px solid " + tokens.gray400;
7248
- var styles$j = {
7297
+ var styles$k = {
7249
7298
  root: /*#__PURE__*/css({
7250
7299
  position: 'relative'
7251
7300
  }),
@@ -7362,13 +7411,19 @@ var EmbedEntityWidget = function EmbedEntityWidget(_ref) {
7362
7411
  }, actions) : null;
7363
7412
  };
7364
7413
 
7365
- var styles$k = {
7414
+ var styles$l = {
7366
7415
  toolbar: /*#__PURE__*/css({
7367
7416
  border: "1px solid " + tokens.gray400,
7368
7417
  backgroundColor: tokens.gray100,
7369
7418
  padding: tokens.spacingXs,
7370
7419
  borderRadius: tokens.borderRadiusMedium + " " + tokens.borderRadiusMedium + " 0 0"
7371
7420
  }),
7421
+ toolbarBtn: /*#__PURE__*/css({
7422
+ height: '30px',
7423
+ width: '30px',
7424
+ marginLeft: tokens.spacing2Xs,
7425
+ marginRight: tokens.spacing2Xs
7426
+ }),
7372
7427
  divider: /*#__PURE__*/css({
7373
7428
  display: 'inline-block',
7374
7429
  height: '21px',
@@ -7394,8 +7449,30 @@ var styles$k = {
7394
7449
  })
7395
7450
  };
7396
7451
 
7397
- var Toolbar = function Toolbar(_ref) {
7398
- var isDisabled = _ref.isDisabled;
7452
+ var Dropdown = function Dropdown(_ref) {
7453
+ var sdk = _ref.sdk,
7454
+ isDisabled = _ref.isDisabled;
7455
+ var editor = useContentfulEditor();
7456
+ var isActive = isMarkActive(editor, MARKS.SUPERSCRIPT) || isMarkActive(editor, MARKS.SUBSCRIPT) || isMarkActive(editor, MARKS.CODE);
7457
+ return /*#__PURE__*/React__default.createElement(Menu, null, /*#__PURE__*/React__default.createElement(Menu.Trigger, null, /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement(IconButton, {
7458
+ size: "small",
7459
+ className: styles$l.toolbarBtn,
7460
+ variant: isActive ? 'secondary' : 'transparent',
7461
+ icon: /*#__PURE__*/React__default.createElement(MoreHorizontalIcon, null),
7462
+ "aria-label": "toggle menu",
7463
+ isDisabled: isDisabled,
7464
+ testId: "dropdown-toolbar-button"
7465
+ }))), /*#__PURE__*/React__default.createElement(Menu.List, null, isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarDropdownSuperscriptButton, {
7466
+ isDisabled: isDisabled
7467
+ }), isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarDropdownSubscriptButton, {
7468
+ isDisabled: isDisabled
7469
+ }), isMarkEnabled(sdk.field, MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarDropdownCodeButton, {
7470
+ isDisabled: isDisabled
7471
+ })));
7472
+ };
7473
+
7474
+ var Toolbar = function Toolbar(_ref2) {
7475
+ var isDisabled = _ref2.isDisabled;
7399
7476
  var sdk = useSdkContext();
7400
7477
  var editor = useContentfulEditor();
7401
7478
  var canInsertBlocks = !isNodeTypeSelected(editor, BLOCKS.TABLE);
@@ -7404,35 +7481,42 @@ var Toolbar = function Toolbar(_ref) {
7404
7481
  }, [sdk.field]);
7405
7482
  var isListSelected = isNodeTypeSelected(editor, BLOCKS.UL_LIST) || isNodeTypeSelected(editor, BLOCKS.OL_LIST);
7406
7483
  var isBlockquoteSelected = isNodeTypeSelected(editor, BLOCKS.QUOTE);
7407
- var shouldDisableTables = isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected;
7484
+ var shouldDisableTables = isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected; // We only show the dropdown when: whenever at least bold , italic and underline are available; If nothing that would go inside the dropdown is available, we hide it
7485
+
7486
+ var boldItalicUnderlineAvailable = isMarkEnabled(sdk.field, MARKS.BOLD) || isMarkEnabled(sdk.field, MARKS.ITALIC) || isMarkEnabled(sdk.field, MARKS.UNDERLINE);
7487
+ var dropdownItemsAvailable = isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) || isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) || isMarkEnabled(sdk.field, MARKS.CODE);
7488
+ var shouldShowDropdown = boldItalicUnderlineAvailable && dropdownItemsAvailable;
7408
7489
  return /*#__PURE__*/React__default.createElement(Flex, {
7409
7490
  testId: "toolbar",
7410
- className: styles$k.toolbar,
7491
+ className: styles$l.toolbar,
7411
7492
  alignItems: "center"
7412
7493
  }, /*#__PURE__*/React__default.createElement("div", {
7413
- className: styles$k.formattingOptionsWrapper
7494
+ className: styles$l.formattingOptionsWrapper
7414
7495
  }, /*#__PURE__*/React__default.createElement(ToolbarHeadingButton, {
7415
7496
  isDisabled: isDisabled || !canInsertBlocks
7416
7497
  }), validationInfo.isAnyMarkEnabled && /*#__PURE__*/React__default.createElement("span", {
7417
- className: styles$k.divider
7498
+ className: styles$l.divider
7418
7499
  }), isMarkEnabled(sdk.field, MARKS.BOLD) && /*#__PURE__*/React__default.createElement(ToolbarBoldButton, {
7419
7500
  isDisabled: isDisabled
7420
7501
  }), isMarkEnabled(sdk.field, MARKS.ITALIC) && /*#__PURE__*/React__default.createElement(ToolbarItalicButton, {
7421
7502
  isDisabled: isDisabled
7422
- }), isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarSuperscriptButton, {
7503
+ }), isMarkEnabled(sdk.field, MARKS.UNDERLINE) && /*#__PURE__*/React__default.createElement(ToolbarUnderlineButton, {
7423
7504
  isDisabled: isDisabled
7424
- }), isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarSubscriptButton, {
7505
+ }), !boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarSuperscriptButton, {
7425
7506
  isDisabled: isDisabled
7426
- }), isMarkEnabled(sdk.field, MARKS.UNDERLINE) && /*#__PURE__*/React__default.createElement(ToolbarUnderlineButton, {
7507
+ }), !boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && /*#__PURE__*/React__default.createElement(ToolbarSubscriptButton, {
7427
7508
  isDisabled: isDisabled
7428
- }), isMarkEnabled(sdk.field, MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarCodeButton, {
7509
+ }), !boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.CODE) && /*#__PURE__*/React__default.createElement(ToolbarCodeButton, {
7510
+ isDisabled: isDisabled
7511
+ }), shouldShowDropdown && /*#__PURE__*/React__default.createElement(Dropdown, {
7512
+ sdk: sdk,
7429
7513
  isDisabled: isDisabled
7430
7514
  }), validationInfo.isAnyHyperlinkEnabled && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
7431
- className: styles$k.divider
7515
+ className: styles$l.divider
7432
7516
  }), /*#__PURE__*/React__default.createElement(ToolbarHyperlinkButton, {
7433
7517
  isDisabled: isDisabled
7434
7518
  })), validationInfo.isAnyBlockFormattingEnabled && /*#__PURE__*/React__default.createElement("span", {
7435
- className: styles$k.divider
7519
+ className: styles$l.divider
7436
7520
  }), /*#__PURE__*/React__default.createElement(ToolbarListButton, {
7437
7521
  isDisabled: isDisabled || !canInsertBlocks
7438
7522
  }), isNodeTypeEnabled(sdk.field, BLOCKS.QUOTE) && /*#__PURE__*/React__default.createElement(ToolbarQuoteButton, {
@@ -7442,7 +7526,7 @@ var Toolbar = function Toolbar(_ref) {
7442
7526
  }), isNodeTypeEnabled(sdk.field, BLOCKS.TABLE) && /*#__PURE__*/React__default.createElement(ToolbarTableButton, {
7443
7527
  isDisabled: shouldDisableTables
7444
7528
  })), /*#__PURE__*/React__default.createElement("div", {
7445
- className: styles$k.embedActionsWrapper
7529
+ className: styles$l.embedActionsWrapper
7446
7530
  }, /*#__PURE__*/React__default.createElement(EmbedEntityWidget, {
7447
7531
  isDisabled: isDisabled,
7448
7532
  canInsertBlocks: canInsertBlocks
@@ -7467,7 +7551,7 @@ function getValidationInfo(field) {
7467
7551
  }
7468
7552
 
7469
7553
  var _templateObject$b;
7470
- var styles$l = {
7554
+ var styles$m = {
7471
7555
  nativeSticky: /*#__PURE__*/css(_templateObject$b || (_templateObject$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: -webkit-sticky;\n position: sticky;\n top: -1px;\n z-index: 2;\n "])))
7472
7556
  };
7473
7557
 
@@ -7475,7 +7559,7 @@ var StickyToolbarWrapper = function StickyToolbarWrapper(_ref) {
7475
7559
  var isDisabled = _ref.isDisabled,
7476
7560
  children = _ref.children;
7477
7561
  return /*#__PURE__*/React__default.createElement("div", {
7478
- className: isDisabled ? '' : styles$l.nativeSticky
7562
+ className: isDisabled ? '' : styles$m.nativeSticky
7479
7563
  }, children);
7480
7564
  };
7481
7565
 
@@ -7542,14 +7626,14 @@ var useOnValueChanged = function useOnValueChanged(_ref) {
7542
7626
  }, [editorId, onChange, skip, onSkip]);
7543
7627
  };
7544
7628
 
7545
- var _excluded = ["sdk", "isInitiallyDisabled", "onAction"];
7629
+ var _excluded = ["sdk", "isInitiallyDisabled", "onAction", "restrictedMarks"];
7546
7630
  var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7547
7631
  var id = getContentfulEditorId(props.sdk);
7548
7632
  var plugins = React__default.useMemo(function () {
7549
7633
  var _props$onAction;
7550
7634
 
7551
- return getPlugins(props.sdk, (_props$onAction = props.onAction) != null ? _props$onAction : noop);
7552
- }, [props.sdk, props.onAction]);
7635
+ return getPlugins(props.sdk, (_props$onAction = props.onAction) != null ? _props$onAction : noop, props.restrictedMarks);
7636
+ }, [props.sdk, props.onAction, props.restrictedMarks]);
7553
7637
 
7554
7638
  var _useState = useState(true),
7555
7639
  isFirstRender = _useState[0],
@@ -7588,9 +7672,9 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7588
7672
  setPendingExternalUpdate(true);
7589
7673
  setEditorContent(editor, documentToEditorValue(props.value));
7590
7674
  }, [props.value, id]);
7591
- var classNames = cx(styles$j.editor, props.minHeight !== undefined ? css({
7675
+ var classNames = cx(styles$k.editor, props.minHeight !== undefined ? css({
7592
7676
  minHeight: props.minHeight
7593
- }) : undefined, props.isDisabled ? styles$j.disabled : styles$j.enabled, props.isToolbarHidden && styles$j.hiddenToolbar);
7677
+ }) : undefined, props.isDisabled ? styles$k.disabled : styles$k.enabled, props.isToolbarHidden && styles$k.hiddenToolbar);
7594
7678
  useEffect(function () {
7595
7679
  if (!isFirstRender) {
7596
7680
  return;
@@ -7606,7 +7690,7 @@ var ConnectedRichTextEditor = function ConnectedRichTextEditor(props) {
7606
7690
  }, /*#__PURE__*/React__default.createElement(ContentfulEditorIdProvider, {
7607
7691
  value: id
7608
7692
  }, /*#__PURE__*/React__default.createElement("div", {
7609
- className: styles$j.root,
7693
+ className: styles$k.root,
7610
7694
  "data-test-id": "rich-text-editor"
7611
7695
  }, /*#__PURE__*/React__default.createElement(Plate, {
7612
7696
  id: id,
@@ -7628,6 +7712,7 @@ var RichTextEditor = function RichTextEditor(props) {
7628
7712
  var sdk = props.sdk,
7629
7713
  isInitiallyDisabled = props.isInitiallyDisabled,
7630
7714
  onAction = props.onAction,
7715
+ restrictedMarks = props.restrictedMarks,
7631
7716
  otherProps = _objectWithoutPropertiesLoose(props, _excluded);
7632
7717
 
7633
7718
  var isEmptyValue = useCallback(function (value) {
@@ -7652,7 +7737,8 @@ var RichTextEditor = function RichTextEditor(props) {
7652
7737
  sdk: sdk,
7653
7738
  onAction: onAction,
7654
7739
  isDisabled: disabled,
7655
- onChange: setValue
7740
+ onChange: setValue,
7741
+ restrictedMarks: restrictedMarks
7656
7742
  }));
7657
7743
  }));
7658
7744
  };