@contentful/field-editor-rich-text 1.0.0-alpha.3 → 2.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +410 -0
  2. package/README.md +9 -20
  3. package/dist/ContentfulEditorProvider.d.ts +8 -0
  4. package/dist/RichTextEditor.d.ts +19 -70
  5. package/dist/RichTextEditor.styles.d.ts +7 -0
  6. package/dist/SdkProvider.d.ts +7 -0
  7. package/dist/Toolbar/EmbedEntityWidget.d.ts +6 -0
  8. package/dist/Toolbar/StickyToolbarWrapper.d.ts +6 -11
  9. package/dist/Toolbar/index.d.ts +6 -28
  10. package/dist/TrackingProvider.d.ts +11 -0
  11. package/dist/constants/Schema.d.ts +93 -11
  12. package/dist/dialogs/HypelinkDialog/HyperlinkDialog.d.ts +54 -0
  13. package/dist/dialogs/openRichTextDialog.d.ts +2 -0
  14. package/dist/dialogs/renderRichTextDialog.d.ts +3 -0
  15. package/dist/field-editor-rich-text.cjs.development.js +4690 -4354
  16. package/dist/field-editor-rich-text.cjs.development.js.map +1 -1
  17. package/dist/field-editor-rich-text.cjs.production.min.js +1 -1
  18. package/dist/field-editor-rich-text.cjs.production.min.js.map +1 -1
  19. package/dist/field-editor-rich-text.esm.js +4674 -4338
  20. package/dist/field-editor-rich-text.esm.js.map +1 -1
  21. package/dist/helpers/deserializer.d.ts +3 -0
  22. package/dist/helpers/editor.d.ts +35 -0
  23. package/dist/helpers/formatDateAndTime.d.ts +15 -0
  24. package/dist/helpers/getLinkedContentTypeIdsForNodeType.d.ts +26 -2
  25. package/dist/helpers/newEntitySelectorConfigFromRichTextField.d.ts +5 -1
  26. package/dist/helpers/sanitizeSlateDoc.d.ts +18 -0
  27. package/dist/helpers/truncate.d.ts +1 -0
  28. package/dist/helpers/validations.d.ts +10 -0
  29. package/dist/index.d.ts +2 -2
  30. package/dist/plugins/Bold/index.d.ts +12 -64
  31. package/dist/plugins/Code/index.d.ts +12 -64
  32. package/dist/plugins/CommandPalette/CommandPanel/InViewport/InViewport.d.ts +37 -0
  33. package/dist/plugins/EmbeddedEntity/index.d.ts +10 -0
  34. package/dist/plugins/EmbeddedEntityBlock/LinkedEntityBlock.d.ts +13 -0
  35. package/dist/plugins/EmbeddedEntityBlock/ToolbarIcon.d.ts +12 -10
  36. package/dist/plugins/EmbeddedEntityBlock/Util.d.ts +2 -23
  37. package/dist/plugins/EmbeddedEntityBlock/index.d.ts +11 -27
  38. package/dist/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.d.ts +12 -0
  39. package/dist/plugins/EmbeddedEntityInline/Util.d.ts +16 -0
  40. package/dist/plugins/EmbeddedEntityInline/index.d.ts +12 -0
  41. package/dist/plugins/Heading/index.d.ts +20 -50
  42. package/dist/plugins/Hr/index.d.ts +13 -61
  43. package/dist/plugins/Hyperlink/EntryAssetTooltip.d.ts +10 -0
  44. package/dist/plugins/Hyperlink/HyperlinkModal.d.ts +17 -0
  45. package/dist/plugins/Hyperlink/index.d.ts +12 -9
  46. package/dist/plugins/InsertBeforeFirstVoidBlock/index.d.ts +2 -3
  47. package/dist/plugins/Italic/index.d.ts +12 -64
  48. package/dist/plugins/List/index.d.ts +15 -114
  49. package/dist/plugins/NewLine/index.d.ts +2 -0
  50. package/dist/plugins/Paragraph/index.d.ts +7 -5
  51. package/dist/plugins/Paste/index.d.ts +2 -7
  52. package/dist/plugins/Paste/sanitizers/helpers.d.ts +7 -0
  53. package/dist/plugins/Paste/sanitizers/index.d.ts +3 -0
  54. package/dist/plugins/Paste/sanitizers/removeComments.d.ts +2 -0
  55. package/dist/plugins/Paste/sanitizers/sanitizeEntityBlocks.d.ts +6 -0
  56. package/dist/plugins/Paste/sanitizers/sanitizeTables.d.ts +2 -0
  57. package/dist/plugins/Quote/index.d.ts +13 -59
  58. package/dist/plugins/Table/TableActions.d.ts +5 -0
  59. package/dist/plugins/Table/actions/addColumn.d.ts +4 -0
  60. package/dist/plugins/Table/actions/addRow.d.ts +3 -0
  61. package/dist/plugins/Table/actions/index.d.ts +3 -0
  62. package/dist/plugins/Table/actions/setHeader.d.ts +2 -0
  63. package/dist/plugins/Table/helpers.d.ts +4 -0
  64. package/dist/plugins/Table/index.d.ts +186 -0
  65. package/dist/plugins/TrailingParagraph/index.d.ts +1 -0
  66. package/dist/plugins/Underline/index.d.ts +12 -0
  67. package/dist/plugins/shared/EntityStatusIcon.d.ts +8 -0
  68. package/dist/plugins/shared/FetchingWrappedAssetCard.d.ts +23 -0
  69. package/dist/plugins/shared/FetchingWrappedEntryCard.d.ts +13 -0
  70. package/dist/plugins/shared/ToolbarButton.d.ts +15 -0
  71. package/dist/types.d.ts +25 -0
  72. package/package.json +44 -31
  73. package/LICENSE +0 -21
  74. package/dist/RichTextEditor.spec.d.ts +0 -1
  75. package/dist/Toolbar/Toolbar.spec.d.ts +0 -1
  76. package/dist/helpers/browserSupport.d.ts +0 -1
  77. package/dist/plugins/CommandPalette/CommandMark.d.ts +0 -13
  78. package/dist/plugins/CommandPalette/CommandPalette.d.ts +0 -14
  79. package/dist/plugins/CommandPalette/CommandPaletteService.d.ts +0 -12
  80. package/dist/plugins/CommandPalette/CommandPanel/CommandPanelMenu.d.ts +0 -48
  81. package/dist/plugins/CommandPalette/CommandPanel/index.d.ts +0 -51
  82. package/dist/plugins/CommandPalette/Util.d.ts +0 -5
  83. package/dist/plugins/CommandPalette/index.d.ts +0 -7
  84. package/dist/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.d.ts +0 -29
  85. package/dist/plugins/EmbeddedEntryInline/EmbeddedEntryInline.d.ts +0 -29
  86. package/dist/plugins/EmbeddedEntryInline/ToolbarIcon.d.ts +0 -11
  87. package/dist/plugins/EmbeddedEntryInline/Utils.d.ts +0 -4
  88. package/dist/plugins/EmbeddedEntryInline/index.d.ts +0 -13
  89. package/dist/plugins/EntryEmbedDropdown/index.d.ts +0 -15
  90. package/dist/plugins/Heading/Heading1.d.ts +0 -2
  91. package/dist/plugins/Heading/Heading2.d.ts +0 -2
  92. package/dist/plugins/Heading/Heading3.d.ts +0 -2
  93. package/dist/plugins/Heading/Heading4.d.ts +0 -2
  94. package/dist/plugins/Heading/Heading5.d.ts +0 -2
  95. package/dist/plugins/Heading/Heading6.d.ts +0 -2
  96. package/dist/plugins/Heading/HeadingDropdown.d.ts +0 -29
  97. package/dist/plugins/Heading/Paragraph.d.ts +0 -2
  98. package/dist/plugins/Hyperlink/Hyperlink.d.ts +0 -25
  99. package/dist/plugins/Hyperlink/ToolbarIcon.d.ts +0 -8
  100. package/dist/plugins/Hyperlink/Util.d.ts +0 -43
  101. package/dist/plugins/Hyperlink/styles.d.ts +0 -7
  102. package/dist/plugins/InsertBeforeFirstVoidBlock/Util.d.ts +0 -14
  103. package/dist/plugins/List/EditListWrapper.d.ts +0 -2
  104. package/dist/plugins/List/ToolbarDecorator.d.ts +0 -62
  105. package/dist/plugins/NewLinePlugin/index.d.ts +0 -3
  106. package/dist/plugins/Paste/Paste.d.ts +0 -1
  107. package/dist/plugins/Paste/Paste.spec.d.ts +0 -1
  108. package/dist/plugins/Paste/index.spec.d.ts +0 -1
  109. package/dist/plugins/PasteHtml/PasteHtml.spec.d.ts +0 -1
  110. package/dist/plugins/PasteHtml/Serializer.d.ts +0 -1
  111. package/dist/plugins/PasteHtml/index.d.ts +0 -3
  112. package/dist/plugins/PasteText/PasteText.spec.d.ts +0 -1
  113. package/dist/plugins/PasteText/index.d.ts +0 -3
  114. package/dist/plugins/Quote/QuotePlugin.d.ts +0 -10
  115. package/dist/plugins/Quote/Util.d.ts +0 -2
  116. package/dist/plugins/Underlined/index.d.ts +0 -64
  117. package/dist/plugins/index.d.ts +0 -1
  118. package/dist/plugins/shared/BlockSelectDecorator.d.ts +0 -63
  119. package/dist/plugins/shared/BlockToggleDecorator.d.ts +0 -65
  120. package/dist/plugins/shared/MarkDecorator.d.ts +0 -12
  121. package/dist/plugins/shared/MarkPlugin.d.ts +0 -9
  122. package/dist/plugins/shared/MarkToggleDecorator.d.ts +0 -62
  123. package/dist/plugins/shared/NodeDecorator.d.ts +0 -15
  124. package/dist/plugins/shared/PasteTestHelpers.d.ts +0 -35
  125. package/dist/plugins/shared/PluginApi.d.ts +0 -26
  126. package/dist/plugins/shared/PropTypes.d.ts +0 -15
  127. package/dist/plugins/shared/ToolbarDropdownListItem.d.ts +0 -15
  128. package/dist/plugins/shared/ToolbarIcon.d.ts +0 -16
  129. package/dist/plugins/shared/UtilHave.d.ts +0 -24
  130. package/dist/setupTests.d.ts +0 -1
  131. package/dist/validations/index.d.ts +0 -9
  132. package/dist/validations/validations.spec.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-rich-text.esm.js","sources":["../src/plugins/List/EditListWrapper.js","../src/constants/Schema.js","../src/plugins/shared/PluginApi.js","../src/plugins/shared/ToolbarIcon.js","../src/plugins/shared/PropTypes.js","../src/plugins/shared/MarkDecorator.js","../src/plugins/shared/UtilHave.js","../src/plugins/shared/MarkPlugin.js","../src/plugins/shared/MarkToggleDecorator.js","../src/plugins/Bold/index.js","../src/plugins/Italic/index.js","../src/plugins/Underlined/index.js","../src/plugins/Code/index.js","../src/plugins/shared/BlockToggleDecorator.js","../src/plugins/Quote/Util.js","../src/plugins/shared/NodeDecorator.js","../src/plugins/Quote/QuotePlugin.js","../src/plugins/Quote/index.js","../../../node_modules/babel-plugin-transform-async-to-promises/helpers.js","../src/plugins/Hyperlink/Util.js","../src/plugins/Hyperlink/ToolbarIcon.js","../src/plugins/Hyperlink/styles.js","../src/helpers/browserSupport.js","../src/plugins/Hyperlink/Hyperlink.js","../src/plugins/Hyperlink/index.js","../src/plugins/shared/ToolbarDropdownListItem.js","../src/plugins/shared/BlockSelectDecorator.js","../src/plugins/Heading/HeadingDropdown.js","../src/plugins/Heading/Heading1.js","../src/plugins/Heading/Heading2.js","../src/plugins/Heading/Heading3.js","../src/plugins/Heading/Heading4.js","../src/plugins/Heading/Heading5.js","../src/plugins/Heading/Heading6.js","../src/plugins/Heading/Paragraph.js","../src/plugins/Heading/index.js","../src/plugins/NewLinePlugin/index.js","../src/plugins/Paragraph/index.js","../src/helpers/getLinkedContentTypeIdsForNodeType.js","../src/helpers/newEntitySelectorConfigFromRichTextField.js","../src/plugins/EmbeddedEntityBlock/Util.js","../src/plugins/EmbeddedEntityBlock/ToolbarIcon.js","../src/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.js","../src/plugins/EmbeddedEntityBlock/index.js","../src/plugins/EmbeddedEntryInline/Utils.js","../src/plugins/EmbeddedEntryInline/ToolbarIcon.js","../src/plugins/EmbeddedEntryInline/EmbeddedEntryInline.js","../src/plugins/EmbeddedEntryInline/index.js","../src/plugins/List/ToolbarDecorator.js","../src/plugins/List/index.js","../src/plugins/Hr/index.js","../src/plugins/Paste/Paste.js","../src/plugins/Paste/index.js","../src/plugins/PasteHtml/Serializer.js","../src/plugins/PasteHtml/index.js","../src/plugins/PasteText/index.js","../src/plugins/CommandPalette/Util.js","../src/validations/index.js","../src/plugins/CommandPalette/CommandPaletteService.js","../src/plugins/CommandPalette/CommandPanel/CommandPanelMenu.js","../src/plugins/CommandPalette/CommandPanel/index.js","../src/plugins/CommandPalette/CommandPalette.js","../src/plugins/CommandPalette/CommandMark.js","../src/plugins/CommandPalette/index.js","../src/plugins/InsertBeforeFirstVoidBlock/Util.js","../src/plugins/InsertBeforeFirstVoidBlock/index.js","../src/plugins/index.js","../src/plugins/EntryEmbedDropdown/index.js","../src/Toolbar/index.js","../src/Toolbar/StickyToolbarWrapper.js","../src/RichTextEditor.jsx"],"sourcesContent":["import { BLOCKS } from '@contentful/rich-text-types';\nimport EditList from '@productboard/slate-edit-list';\n\nexport default opt => {\n const config = {\n types: [BLOCKS.OL_LIST, BLOCKS.UL_LIST],\n typeItem: BLOCKS.LIST_ITEM,\n typeDefault: BLOCKS.PARAGRAPH,\n ...opt\n };\n\n const plugin = EditList(config);\n\n return plugin;\n};\n","import fromPairs from 'lodash/fromPairs';\nimport {\n BLOCKS,\n INLINES,\n TOP_LEVEL_BLOCKS,\n VOID_BLOCKS,\n CONTAINERS\n} from '@contentful/rich-text-types';\n\nimport ListPlugin from '../plugins/List/EditListWrapper';\n\nconst mapVoidTypes = nodeTypes => {\n return fromPairs(nodeTypes.map(nodeType => [nodeType, { isVoid: true }]));\n};\n\nconst listPlugin = ListPlugin();\n\nexport default {\n document: {\n nodes: [\n {\n types: TOP_LEVEL_BLOCKS\n }\n ]\n },\n blocks: {\n [BLOCKS.PARAGRAPH]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_1]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_2]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_3]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_4]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_5]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n [BLOCKS.HEADING_6]: {\n nodes: [\n {\n types: Object.values(INLINES)\n },\n {\n objects: ['text', 'inline']\n }\n ]\n },\n ...mapVoidTypes(VOID_BLOCKS),\n // The schema for the lists and list-items is defined in the slate-edit-list plugin.\n // Due to the bug in slate@0.44.9 we have to stitch the schema manually.\n // Related bug ticket AUTH-888\n ...listPlugin.schema.blocks,\n [BLOCKS.QUOTE]: {\n nodes: [\n {\n match: [CONTAINERS[BLOCKS.QUOTE].map(type => ({ type }))],\n min: 1\n }\n ],\n normalize: (editor, error) => {\n if (error.code === 'child_type_invalid') {\n return editor.unwrapBlockByKey(error.node.key, BLOCKS.QUOTE);\n }\n }\n }\n },\n inlines: {\n [INLINES.HYPERLINK]: {\n nodes: [\n {\n objects: ['text']\n }\n ]\n },\n [INLINES.ENTRY_HYPERLINK]: {\n nodes: [\n {\n objects: ['text']\n }\n ]\n },\n [INLINES.ASSET_HYPERLINK]: {\n nodes: [\n {\n objects: ['text']\n }\n ]\n },\n [INLINES.EMBEDDED_ENTRY]: {\n isVoid: true\n }\n }\n};\n","import PropTypes from 'prop-types';\nimport mapValues from 'lodash/mapValues';\n\n/**\n * All known origins for Rich Text actions\n * @type {object}\n */\nexport const actionOrigin = {\n TOOLBAR: 'toolbar-icon',\n SHORTCUT: 'shortcut',\n VIEWPORT: 'viewport-interaction',\n COMMAND_PALETTE: 'command-palette'\n};\n\nconst createActionLogger = (onAction, origin) => (name, data) => {\n onAction(name, { origin, ...data });\n};\n\n/**\n * Creates an api that is passed to editor and toolbar widgets.\n *\n * @param {object} widgetAPI\n * @param {function } onAction\n * @param {object?} customRenderers\n * @returns {{ widgetAPI: {object}, logViewportAction: {function}, createActionLogger: {function}, createActionLogger: {function} }}\n */\nexport const createRichTextAPI = ({ widgetAPI, onAction, customRenderers = {} }) => {\n const richTextAPI = {\n widgetAPI,\n logViewportAction: createActionLogger(onAction, actionOrigin.VIEWPORT),\n logShortcutAction: createActionLogger(onAction, actionOrigin.SHORTCUT),\n logToolbarAction: createActionLogger(onAction, actionOrigin.TOOLBAR),\n logCommandPaletteAction: createActionLogger(onAction, actionOrigin.COMMAND_PALETTE),\n customRenderers: mapValues(customRenderers, fn => (...args) => fn(richTextAPI, ...args))\n };\n return richTextAPI;\n};\n\n/**\n * Describes the prop types a Rich Text editor plugin can expect.\n * @type {object}\n */\nexport const EDITOR_PLUGIN_PROP_TYPES = {\n richTextAPI: PropTypes.shape({\n widgetAPI: PropTypes.object.isRequired,\n logViewportAction: PropTypes.func.isRequired,\n logShortcutAction: PropTypes.func.isRequired,\n logToolbarAction: PropTypes.func.isRequired,\n customRenderers: PropTypes.object\n })\n};\n\n/**\n * Describes the prop types a Rich Text toolbar plugin can expect.\n * @type {object}\n */\nexport const TOOLBAR_PLUGIN_PROP_TYPES = {\n ...EDITOR_PLUGIN_PROP_TYPES,\n editor: PropTypes.object.isRequired,\n onToggle: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n isButton: PropTypes.bool\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n// import { Icon } from '@contentful/forma-36-react-components';\nimport { EditorToolbarButton } from '@contentful/forma-36-react-components';\n\nexport default class ToolbarIcon extends Component {\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onToggle: PropTypes.func.isRequired,\n icon: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n type: PropTypes.string\n };\n\n handleMouseDown = event => {\n /*\n We're using the mousedown event rather than onclick because onclick will\n steal the focus.\n */\n\n event.preventDefault();\n this.props.onToggle(event);\n };\n\n render() {\n const { icon, isActive, disabled, title, type } = this.props;\n\n return (\n <EditorToolbarButton\n icon={icon}\n tooltip={title}\n label={title}\n isActive={isActive}\n disabled={disabled}\n data-test-id={`toolbar-toggle-${type}`}\n onMouseDown={this.handleMouseDown}\n />\n );\n }\n}\n","import PropTypes from 'prop-types';\n\nexport const MarkPropTypes = {\n attributes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n mark: PropTypes.string.isRequired\n};\n\nexport const NodePropTypes = {\n attributes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n node: PropTypes.shape({\n type: PropTypes.string.isRequired\n }).isRequired\n};\n","import React from 'react';\nimport { MarkPropTypes } from './PropTypes';\n\nexport default function(Tag, tagProps = {}) {\n const CommonMark = ({ attributes, children }) => {\n return (\n <Tag {...tagProps} {...attributes}>\n {children}\n </Tag>\n );\n };\n\n CommonMark.displayName = `${Tag}-mark`;\n CommonMark.propTypes = MarkPropTypes;\n\n return CommonMark;\n}\n","export const haveMarks = ({ value }, type) => {\n return value.activeMarks.some(mark => mark.type === type);\n};\n\nexport const haveBlocks = ({ value }, type) => {\n return value.blocks.some(node => node.type === type);\n};\n\nexport const haveInlines = ({ value }, type) => {\n return value.inlines.some(inline => inline.type === type);\n};\n\nexport function haveAnyInlines({ value }) {\n return value.inlines.size > 0;\n}\n\n/**\n * Checks if all inline nodes in the selectin have a certain type.\n * Returns false if there are no inline nodes in the selection.\n *\n * @param {slate.Editor} editor\n * @param {string} type\n * @returns {boolean}\n */\nexport function haveEveryInlineOfType({ value }, type) {\n if (value.inlines.size > 0) {\n return value.inlines.every(inline => inline.type === type);\n }\n\n return false;\n}\n\nexport const haveTextInSomeBlocks = ({ value }) => {\n if (value.blocks.size > 0) {\n return value.blocks.some(block => block.text);\n }\n};\n","import isHotkey from 'is-hotkey';\nimport markDecorator from './MarkDecorator';\nimport { haveMarks } from './UtilHave';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\n\nconst styles = {\n bold: css({\n color: 'inherit',\n fontWeight: tokens.fontWeightDemiBold\n }),\n headingBold: css({\n fontWeight: 900\n })\n};\n\nconst isHeading = tagName => /^h[1-6]$/.test(tagName);\n\nconst getClassName = (type, tagName) =>\n type === 'bold' ? cx(styles.bold, isHeading(tagName) && styles.headingBold) : '';\n\nexport default function({ type, tagName, hotkey, richTextAPI }) {\n return {\n renderMark: (props, _editor, next) => {\n if (props.mark.type === type) {\n return markDecorator(tagName, { className: getClassName(type, tagName) })(props);\n }\n return next();\n },\n onKeyDown(event, editor, next) {\n if (isHotkey(hotkey, event)) {\n editor.toggleMark(type);\n\n const action = haveMarks(editor, type) ? 'mark' : 'unmark';\n richTextAPI.logShortcutAction(action, { markType: type });\n return;\n }\n return next();\n }\n };\n}\n","import * as React from 'react';\nimport { haveMarks } from './UtilHave';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from './PluginApi';\n\nexport default ({ type, title, icon }) => Mark => {\n return class CommonToggleMark extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = e => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction }\n } = this.props;\n e.preventDefault();\n onToggle(editor.toggleMark(type));\n const action = haveMarks(editor, type) ? 'mark' : 'unmark';\n logToolbarAction(action, { markType: type });\n };\n\n render() {\n const { editor, disabled } = this.props;\n return (\n <Mark\n type={type}\n icon={icon}\n title={title}\n onToggle={this.handleToggle}\n isActive={haveMarks(editor, type)}\n disabled={disabled}\n />\n );\n }\n };\n};\n","import React, { Component } from 'react';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport markPlugin from '../shared/MarkPlugin';\nimport markToggleDecorator from '../shared/MarkToggleDecorator';\nimport { MARKS } from '@contentful/rich-text-types';\n\nexport const BoldPlugin = ({ richTextAPI }) => {\n return markPlugin({\n type: MARKS.BOLD,\n tagName: 'b',\n hotkey: ['mod+b'],\n richTextAPI\n });\n};\n\nclass Bold extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\nexport default markToggleDecorator({\n type: MARKS.BOLD,\n title: 'Bold',\n icon: 'FormatBold'\n})(Bold);\n","import React, { Component } from 'react';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport markPlugin from '../shared/MarkPlugin';\nimport markToggleDecorator from '../shared/MarkToggleDecorator';\nimport { MARKS } from '@contentful/rich-text-types';\n\nexport const ItalicPlugin = ({ richTextAPI }) => {\n return markPlugin({\n type: MARKS.ITALIC,\n tagName: 'em',\n hotkey: ['mod+i'],\n richTextAPI\n });\n};\n\nclass Italic extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\nexport default markToggleDecorator({\n type: MARKS.ITALIC,\n title: 'Italic',\n icon: 'FormatItalic'\n})(Italic);\n","import React, { Component } from 'react';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport markPlugin from '../shared/MarkPlugin';\nimport markToggleDecorator from '../shared/MarkToggleDecorator';\nimport { MARKS } from '@contentful/rich-text-types';\n\nexport const UnderlinedPlugin = ({ richTextAPI }) => {\n return markPlugin({\n type: MARKS.UNDERLINE,\n tagName: 'u',\n hotkey: ['mod+u'],\n richTextAPI\n });\n};\n\nclass Underlined extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\nexport default markToggleDecorator({\n type: MARKS.UNDERLINE,\n title: 'Underline',\n icon: 'FormatUnderlined'\n})(Underlined);\n","import React, { Component } from 'react';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport markPlugin from '../shared/MarkPlugin';\nimport markToggleDecorator from '../shared/MarkToggleDecorator';\nimport { MARKS } from '@contentful/rich-text-types';\n\nexport const CodePlugin = ({ richTextAPI }) => {\n return markPlugin({\n type: MARKS.CODE,\n tagName: 'code',\n hotkey: ['mod+/'],\n richTextAPI\n });\n};\n\nclass Code extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\nexport default markToggleDecorator({\n type: MARKS.CODE,\n title: 'Code',\n icon: 'Code'\n})(Code);\n","import * as React from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { haveBlocks } from './UtilHave';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from './PluginApi';\n\n/**\n * Toggles formatting between a given node type and a plain paragraph.\n *\n * @param {slate.Editor} editor\n * @param {stirng} type\n * @returns {boolean} New toggle state after the change.\n */\nexport const toggleChange = (editor, type) => {\n const isActive = haveBlocks(editor, type);\n editor.setBlocks(isActive ? BLOCKS.PARAGRAPH : type);\n return !isActive;\n};\n\nconst isBlockActive = (editor, type) => haveBlocks(editor, type);\n\nexport default ({\n type,\n title,\n icon,\n applyChange = toggleChange,\n isActive = isBlockActive\n}) => Block => {\n return class BlockToggleDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = e => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction }\n } = this.props;\n e.preventDefault();\n\n const isActive = applyChange(editor, type);\n onToggle(editor);\n const actionName = isActive ? 'insert' : 'remove';\n logToolbarAction(actionName, { nodeType: type });\n };\n\n render() {\n const { editor, disabled, richTextAPI } = this.props;\n\n return (\n <Block\n type={type}\n icon={icon}\n title={title}\n onToggle={this.handleToggle}\n isActive={isActive(editor, type)}\n disabled={disabled}\n richTextAPI={richTextAPI}\n />\n );\n }\n };\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nconst getParent = editor => {\n const range = editor.value.selection;\n\n if (!range.start.key) {\n return null;\n }\n\n const startBlock = editor.value.document.getClosestBlock(range.start.key);\n\n return editor.value.document.getParent(startBlock.key);\n};\n\nexport const isSelectionInQuote = editor => {\n const ancestor = getParent(editor);\n\n if (!ancestor) {\n return false;\n }\n\n return ancestor.type === BLOCKS.QUOTE;\n};\n\n/**\n * Toggles formatting between block quote and a plain paragraph.\n *\n * @param {slate.Editor} editor\n * @returns {boolean} New toggle state after the change.\n */\nexport const applyChange = editor => {\n const isActive = isSelectionInQuote(editor);\n if (isActive) {\n editor.unwrapBlock(BLOCKS.QUOTE);\n } else {\n editor.setBlocks(BLOCKS.PARAGRAPH).wrapBlock(BLOCKS.QUOTE);\n }\n return !isActive;\n};\n","import * as React from 'react';\nimport { NodePropTypes } from './PropTypes';\nimport { css } from 'emotion';\nimport camelCase from 'lodash/camelCase';\nimport tokens from '@contentful/forma-36-tokens';\n\nconst headingCss = {\n fontWeight: tokens.fontWeightMedium,\n lineHeight: '1.3',\n margin: `0 0 ${tokens.spacingS}`\n};\n\nconst styles = {\n paragraph: css({\n lineHeight: tokens.lineHeightDefault,\n marginBottom: '1.5em'\n }),\n bold: css({\n color: 'inherit',\n fontWeight: tokens.fontWeightDemiBold\n }),\n blockquote: css({\n margin: '0 0 1.3125rem',\n borderLeft: `6px solid ${tokens.colorElementLight}`,\n paddingLeft: '0.875rem',\n fontStyle: 'normal',\n '& a': {\n color: 'inherit'\n }\n }),\n code: css({\n background: tokens.colorElementLight,\n padding: '0px',\n color: tokens.colorTextMid,\n borderRadius: '2px'\n }),\n textLink: css({\n fontSize: 'inherit'\n }),\n orderedList: css({\n margin: '0 0 1.25rem 1.25rem',\n listStyleType: 'decimal',\n '[data-test-id=\"ordered-list\"]': {\n listStyleType: 'upper-alpha',\n '[data-test-id=\"ordered-list\"]': {\n listStyleType: 'lower-roman',\n '[data-test-id=\"ordered-list\"]': {\n listStyleType: 'lower-alpha'\n }\n }\n },\n '[data-test-id=\"paragraph\"]': {\n margin: 0,\n lineHeight: tokens.lineHeightDefault\n }\n }),\n unorderedList: css({\n margin: '0 0 1.25rem 1.25rem',\n listStyleType: 'disc',\n '[data-test-id=\"unordered-list\"]': {\n listStyleType: 'circle',\n '[data-test-id=\"unordered-list\"]': {\n listStyleType: 'square'\n }\n },\n '[data-test-id=\"paragraph\"]': {\n margin: 0,\n lineHeight: tokens.lineHeightDefault\n }\n }),\n listItem: css({\n listStyle: 'inherit',\n margin: 0,\n '[data-test-id=\"ordered-list\"], [data-test-id=\"unordered-list\"]': {\n margin: `0 0 0 ${tokens.spacingL}`\n }\n }),\n heading1: css({\n ...headingCss,\n fontSize: '1.875rem'\n }),\n heading2: css({\n ...headingCss,\n fontSize: '1.5625rem'\n }),\n heading3: css({\n ...headingCss,\n fontSize: '1.375rem'\n }),\n heading4: css({\n ...headingCss,\n fontSize: '1.25rem'\n }),\n heading5: css({\n ...headingCss,\n fontSize: '1.125rem'\n }),\n heading6: css({\n ...headingCss,\n fontSize: '1rem'\n })\n};\n\nexport default function(Tag, tagProps = {}) {\n const CommonNode = ({ attributes, children, node }) => {\n return (\n <Tag\n className={styles[camelCase(node.type)]}\n data-test-id={node.type}\n {...tagProps}\n {...attributes}>\n {children}\n </Tag>\n );\n };\n\n CommonNode.displayName = `${Tag}-node`;\n CommonNode.propTypes = NodePropTypes;\n\n return CommonNode;\n}\n","import isHotkey from 'is-hotkey';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { applyChange, isSelectionInQuote } from './Util';\nimport commonNode from '../shared/NodeDecorator';\nimport { haveTextInSomeBlocks } from '../shared/UtilHave';\n\nconst newPlugin = (defaultType, tagName, hotkey) => ({\n type = defaultType,\n richTextAPI: { logShortcutAction }\n}) => {\n return {\n renderNode: (props, _editor, next) => {\n if (props.node.type === type) {\n return commonNode(tagName)(props);\n }\n return next();\n },\n onKeyDown: (e, editor, next) => {\n if (isHotkey(hotkey, e)) {\n const isActive = applyChange(editor);\n const actionName = isActive ? 'insert' : 'remove';\n logShortcutAction(actionName, { nodeType: type });\n return;\n }\n if (isHotkey('Backspace', e) && isSelectionInQuote(editor) && !haveTextInSomeBlocks(editor)) {\n editor.unwrapBlock(BLOCKS.QUOTE).delete();\n return;\n }\n return next();\n }\n };\n};\n\nconst QuotePlugin = newPlugin(BLOCKS.QUOTE, 'blockquote', ['mod+shift+1']);\n\nexport default QuotePlugin;\n","import React, { Component } from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport blockToggleDecorator from '../shared/BlockToggleDecorator';\nimport { applyChange, isSelectionInQuote } from './Util';\n\nclass Blockquote extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\n// TODO: Currently it seems this is the only place using `blockToggleDecorator` but we still\n// have to inject a custom `applyChange`. Seems like we could get rid of blockToggleDecorator.\nexport default blockToggleDecorator({\n type: BLOCKS.QUOTE,\n title: 'Blockquote',\n icon: 'Quote',\n applyChange,\n isActive: isSelectionInQuote\n})(Blockquote);\n\nexport { default as QuotePlugin } from './QuotePlugin';\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { haveInlines } from '../shared/UtilHave';\n\nconst { HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK } = INLINES;\nconst HYPERLINK_TYPES = [HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK];\n\n/**\n * Returns whether or not the current value selection would allow for a user\n * edit on a hyperlink.\n *\n * @param {slate.Value} value\n * @returns {boolean}\n */\nexport function mayEditLink(value) {\n return !value.isExpanded && hasHyperlink(value);\n}\n\n/**\n * Returns whether the given value has any hyperlink node.\n *\n * @param {slate.Value} value\n * @returns {boolean}\n */\nexport function hasHyperlink(value) {\n return HYPERLINK_TYPES.some(type => haveInlines({ value }, type));\n}\n\n/**\n * Returns whether the given value has any inline node other than hyperlinks.\n *\n * @param {slate.Value} value\n * @returns {boolean}\n */\nexport function hasOnlyHyperlinkInlines(value) {\n return value.inlines.every(inline => HYPERLINK_TYPES.includes(inline.type));\n}\n\n/**\n * Allows the user to insert/remove a link depending on whether the current\n * selection has a link or not. If there is no link, a dialog is shown for\n * the user.\n *\n * @param {slate.Editor} editor Will be mutated with the required operations.\n * @param {function} createHyperlinkDialog\n * @param {function} logAction\n * @returns {Promise<void>}\n */\nexport async function toggleLink(editor, createHyperlinkDialog, logAction) {\n if (hasHyperlink(editor.value)) {\n removeLinks(editor, logAction);\n } else {\n await insertLink(editor, createHyperlinkDialog, logAction);\n }\n}\n\nasync function insertLink(change, createHyperlinkDialog, logAction) {\n logAction('openCreateHyperlinkDialog');\n const showTextInput = !change.value.isExpanded || change.value.fragment.text.trim() === '';\n try {\n const { text, type: linkType, uri, target } = await createHyperlinkDialog({\n showTextInput,\n value: { text: change.value.fragment.text || '' }\n });\n if (showTextInput) {\n if (change.isVoid(change.value.blocks.last())) {\n change.insertBlock(BLOCKS.PARAGRAPH);\n }\n change.insertText(text).moveFocusForward(0 - text.length);\n }\n const data = target ? { target } : { uri };\n change.call(wrapLink, linkType, data);\n const nodeType = linkTypeToNodeType(linkType);\n logAction('insert', { nodeType, linkType });\n } catch (e) {\n if (e) throw e;\n logAction('cancelCreateHyperlinkDialog');\n }\n change.focus();\n}\n\nfunction removeLinks(change, logAction) {\n HYPERLINK_TYPES.forEach(type => change.unwrapInline(type));\n change.focus();\n logAction('unlinkHyperlinks');\n}\n\n/**\n * Allows the user to edit the first selected link of a given Change by showing\n * a dialog and applying the change.\n *\n * @param {slate.Editor} change Will be mutated with the required operations.\n * @param {function} createHyperlinkDialog\n * @param {function} logAction\n * @returns {Promise<void>}\n */\nexport async function editLink(change, createHyperlinkDialog, logAction) {\n const link = change.value.inlines.get(0);\n if (!link) {\n throw new Error('Change object contains no link to be edited.');\n }\n logAction('openEditHyperlinkDialog');\n const { uri: oldUri, target: oldTarget } = link.data.toJSON();\n try {\n const { type: linkType, uri, target } = await createHyperlinkDialog({\n showTextInput: false,\n value: oldTarget ? { target: oldTarget } : { uri: oldUri }\n });\n const nodeType = linkTypeToNodeType(linkType);\n const data = target ? { target } : { uri };\n change.setInlines({ type: nodeType, data });\n logAction('edit', { nodeType, linkType });\n } catch (e) {\n if (e) throw e;\n logAction('cancelEditHyperlinkDialog');\n }\n change.focus();\n}\n\nfunction wrapLink(change, linkType, data) {\n change.wrapInline({\n type: linkTypeToNodeType(linkType),\n data\n });\n change.moveToEnd();\n}\n\nfunction linkTypeToNodeType(linkType) {\n switch (linkType) {\n case 'Entry':\n return ENTRY_HYPERLINK;\n case 'Asset':\n return ASSET_HYPERLINK;\n }\n return HYPERLINK;\n}\n","import React, { Component } from 'react';\nimport { INLINES } from '@contentful/rich-text-types';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\nimport { hasHyperlink, toggleLink, hasOnlyHyperlinkInlines } from './Util';\n\nexport default class HyperlinkToolbarIcon extends Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleClick = async event => {\n event.preventDefault();\n const {\n onToggle,\n editor,\n richTextAPI: { widgetAPI, logToolbarAction }\n } = this.props;\n await toggleLink(editor, widgetAPI.dialogs.createHyperlink, logToolbarAction);\n onToggle(editor);\n };\n\n render() {\n const { disabled, editor } = this.props;\n const isDisabled = disabled || !hasOnlyHyperlinkInlines(editor.value);\n return (\n <ToolbarIcon\n disabled={isDisabled}\n type={INLINES.HYPERLINK}\n icon=\"Link\"\n title=\"Hyperlink\"\n onToggle={event => this.handleClick(event)}\n isActive={hasHyperlink(editor.value)}\n />\n );\n }\n}\n","import { css } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\n\nexport default {\n hyperlinkWrapper: css({\n display: 'inline',\n position: 'static',\n a: {\n fontSize: 'inherit !important'\n }\n }),\n hyperlink: css({\n fontSize: 'inherit !important',\n display: 'inline !important',\n '&:hover': {\n fill: tokens.textColorDark\n },\n '&:focus': {\n fill: tokens.textColorDark\n }\n }),\n hyperlinkIEFallback: css({\n color: '#1683d0',\n textDecoration: 'underline'\n }),\n // TODO: use these styles once we can use the icon\n hyperlinkIcon: css({\n position: 'relative',\n top: '4px',\n height: '14px',\n margin: '0 -2px 0 -1px',\n webkitTransition: 'fill 100ms ease-in-out',\n transition: 'fill 100ms ease-in-out',\n '&:hover': {\n fill: tokens.textColorDark\n },\n '&:focus': {\n fill: tokens.textColorDark\n }\n })\n};\n","import { detect as detectBrowser } from 'detect-browser';\n\nconst browser = detectBrowser();\nconst isEdge = !!browser && browser.name === 'ie';\n\n// TODO: Test whether this is still relevant with latest Edge or at least do\n// so after upgrading Slate.js to see if still relevant at all.\nexport const SUPPORTS_NATIVE_SLATE_HYPERLINKS = !isEdge;\n","import React from 'react';\nimport { Tooltip, TextLink } from '@contentful/forma-36-react-components';\nimport PropTypes from 'prop-types';\nimport { cx } from 'emotion';\nimport noop from 'lodash/noop';\nimport isHotKey from 'is-hotkey';\nimport styles from './styles';\nimport { SUPPORTS_NATIVE_SLATE_HYPERLINKS } from '../../helpers/browserSupport';\n\nexport default class Hyperlink extends React.Component {\n static propTypes = {\n attributes: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n children: PropTypes.node,\n editor: PropTypes.object,\n createHyperlinkDialog: PropTypes.func,\n onEdit: PropTypes.func,\n renderEntityHyperlinkTooltip: PropTypes.func\n };\n\n static defaultProps = {\n onEdit: noop,\n renderEntityHyperlinkTooltip: target => (\n <div>\n {target.sys.linkType} <code>{target.sys.id}</code>\n </div>\n )\n };\n\n onKeyDown(e) {\n if (isHotKey('enter', e)) {\n e.preventDefault();\n e.stopPropagation(); // Ensure Slate doesn't interpret as new paragraph.\n this.props.onEdit(e);\n }\n }\n\n render() {\n const { node } = this.props;\n const uri = node.data.get('uri');\n const target = node.data.get('target');\n\n return (\n <span {...this.props.attributes} onClick={this.props.onEdit} onKeyDown={e => this.onKeyDown(e)} role=\"button\" tabIndex={0}>\n {target ? this.renderEntityLink(target) : this.renderLink({ tooltip: uri })}\n </span>\n // TODO: Add contentEditable={false} to tooltip to fix text cursor bug\n );\n }\n\n renderLink({ tooltip }) {\n const { children, node } = this.props;\n const title = node.data.get('title');\n const uri = node.data.get('uri');\n const href = isUrl(uri) ? uri : 'javascript:void(0)';\n return (\n <Tooltip\n content={tooltip}\n className={styles.tooltipContainer}\n targetWrapperClassName={styles.hyperlinkWrapper}\n maxWidth=\"auto\">\n {SUPPORTS_NATIVE_SLATE_HYPERLINKS ? (\n <TextLink\n href={href} // Allows user to open uri link in new tab.\n rel=\"noopener noreferrer\"\n title={title}\n className={styles.hyperlink}>\n {children}\n </TextLink>\n ) : (\n <span className={cx(styles.hyperlink, styles.hyperlinkIEFallback)}>{children}</span>\n )}\n </Tooltip>\n );\n }\n\n renderEntityLink(target) {\n const tooltip = this.props.renderEntityHyperlinkTooltip(target);\n return this.renderLink({ tooltip });\n }\n}\n\nfunction isUrl(string) {\n return /^(?:[a-z]+:)?\\/\\//i.test(string) || /^mailto:/i.test(string);\n}\n","import React from 'react';\nimport isHotkey from 'is-hotkey';\nimport { INLINES } from '@contentful/rich-text-types';\nimport ToolbarIcon from './ToolbarIcon';\nimport Hyperlink from './Hyperlink';\nimport { editLink, mayEditLink, toggleLink, hasOnlyHyperlinkInlines } from './Util';\n\nconst { HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK } = INLINES;\n\nexport default ToolbarIcon;\n\nexport const HyperlinkPlugin = ({ richTextAPI }) => ({\n renderNode: (props, _editor, next) => {\n const { widgetAPI, logViewportAction, customRenderers } = richTextAPI;\n const { renderEntityHyperlinkTooltip } = customRenderers;\n const { node, editor } = props;\n if (isHyperlink(node.type)) {\n return (\n <Hyperlink\n {...props}\n onEdit={event => {\n event.preventDefault(); // Don't follow `href`\n\n editor.moveToRangeOfNode(node).focus();\n if (mayEditLink(editor.value)) {\n editLink(editor, widgetAPI.dialogs.createHyperlink, logViewportAction);\n }\n }}\n renderEntityHyperlinkTooltip={renderEntityHyperlinkTooltip}\n />\n );\n }\n return next();\n },\n onKeyDown: (event, editor, next) => {\n const { widgetAPI, logShortcutAction } = richTextAPI;\n const hotkey = ['mod+k'];\n\n if (isHotkey(hotkey, event) && hasOnlyHyperlinkInlines(editor.value)) {\n if (mayEditLink(editor.value)) {\n editLink(editor, widgetAPI.dialogs.createHyperlink, logShortcutAction);\n } else {\n toggleLink(editor, widgetAPI.dialogs.createHyperlink, logShortcutAction);\n }\n return;\n }\n\n return next();\n },\n normalizeNode: (node, editor, next) => {\n if (isHyperlink(node.type) && node.getInlines().size > 0) {\n return () => {\n node\n .getInlines()\n .forEach(inlineNode => editor.unwrapInlineByKey(inlineNode.key, node.type));\n };\n }\n next();\n }\n});\n\nfunction isHyperlink(type) {\n return [HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK].includes(type);\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DropdownListItem } from '@contentful/forma-36-react-components';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\n\nconst styles = {\n root: css({\n button: {\n span: {\n fontWeight: tokens.fontWeightDemiBold\n }\n }\n }),\n h1: css({\n button: {\n span: {\n fontSize: '1.625rem'\n }\n }\n }),\n h2: css({\n button: {\n span: {\n fontSize: '1.4375rem'\n }\n }\n }),\n h3: css({\n button: {\n span: {\n fontSize: '1.25rem'\n }\n }\n }),\n h4: css({\n button: {\n span: {\n fontSize: '1.125rem'\n }\n }\n }),\n h5: css({\n button: {\n span: {\n fontSize: '1rem'\n }\n }\n }),\n h6: css({\n button: {\n span: {\n fontSize: '0.875rem'\n }\n }\n })\n};\n\n// Necessary because we can't use kebab-case for style identifiers.\nconst getStyleForType = type => type.replace('heading-', 'h')\n\nexport default class ToolbarDropdownListItem extends Component {\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n onToggle: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired,\n type: PropTypes.string,\n children: PropTypes.node\n };\n\n handleMouseDown = event => {\n /*\n We're using the mousedown event rather than onclick because onclick will\n steal the focus.\n */\n\n event.preventDefault();\n this.props.onToggle(event);\n };\n\n render() {\n const { isActive, title, type, children } = this.props;\n return (\n <DropdownListItem\n label={title}\n isActive={isActive}\n data-test-id={`toolbar-toggle-${type}`}\n className={cx(styles.root, styles[getStyleForType(type)])}\n onMouseDown={this.handleMouseDown}>\n {children}\n </DropdownListItem>\n );\n }\n}\n","import * as React from 'react';\nimport { haveBlocks } from './UtilHave';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from './PluginApi';\n\nexport default ({\n type,\n title,\n icon,\n applyChange = (editor, type) => editor.setBlocks(type)\n}) => Block => {\n return class BlockSelectDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleSelect = e => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction }\n } = this.props;\n e.preventDefault();\n\n applyChange(editor, type);\n onToggle(editor);\n logToolbarAction('insert', { nodeType: type });\n };\n\n render() {\n const { editor, disabled } = this.props;\n\n return (\n <Block\n type={type}\n icon={icon}\n title={title}\n onToggle={this.handleSelect}\n isActive={haveBlocks(editor, type)}\n disabled={disabled}\n />\n );\n }\n };\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { Dropdown, DropdownList, Button } from '@contentful/forma-36-react-components';\nimport tokens from '@contentful/forma-36-tokens';\nimport { css } from 'emotion';\n\nconst styles = {\n root: css({\n width: '110px',\n\n [`@media (min-width: ${tokens.contentWidthDefault})`]: {\n width: '145px'\n },\n\n svg: {\n marginLeft: 'auto'\n },\n\n '> span': {\n padding: '0 2px!important'\n }\n })\n};\n\nexport const blockTitles = {\n [BLOCKS.HEADING_1]: 'Heading 1',\n [BLOCKS.HEADING_2]: 'Heading 2',\n [BLOCKS.HEADING_3]: 'Heading 3',\n [BLOCKS.HEADING_4]: 'Heading 4',\n [BLOCKS.HEADING_5]: 'Heading 5',\n [BLOCKS.HEADING_6]: 'Heading 6',\n [BLOCKS.PARAGRAPH]: 'Normal Text',\n [BLOCKS.EMBEDDED_ENTRY]: 'Embedded Entry',\n [BLOCKS.EMBEDDED_ASSET]: 'Embedded Asset'\n};\n\nclass HeadingDropdown extends Component {\n static propTypes = {\n children: PropTypes.node.isRequired,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n onClose: PropTypes.func,\n onToggle: PropTypes.func,\n currentBlockType: PropTypes.string\n };\n getStyleNameForChange = () => {\n return blockTitles[this.props.currentBlockType] || blockTitles[BLOCKS.PARAGRAPH];\n };\n\n render() {\n const { onToggle, isOpen, onClose, children } = this.props;\n return (\n <Dropdown\n toggleElement={\n <Button\n onMouseDown={onToggle}\n data-test-id=\"toolbar-heading-toggle\"\n className={styles.root}\n indicateDropdown\n buttonType=\"naked\"\n size=\"small\"\n disabled={this.props.disabled}>\n {this.getStyleNameForChange()}\n </Button>\n }\n isOpen={isOpen}\n onClose={onClose}>\n <DropdownList className=\"toolbar-heading-dropdown-list\">{children}</DropdownList>\n </Dropdown>\n );\n }\n}\n\nexport default HeadingDropdown;\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading1 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_1}>\n Heading 1\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_1,\n title: blockTitles[BLOCKS.HEADING_1]\n})(Heading1);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading2 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_2}>\n Heading 2\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_2,\n title: blockTitles[BLOCKS.HEADING_2]\n})(Heading2);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading3 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_3}>\n Heading 3\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_3,\n title: blockTitles[BLOCKS.HEADING_3]\n})(Heading3);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading4 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_4}>\n Heading 4\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_4,\n title: blockTitles[BLOCKS.HEADING_4]\n})(Heading4);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading5 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_5}>\n Heading 5\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_5,\n title: blockTitles[BLOCKS.HEADING_5]\n})(Heading5);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Heading6 extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={BLOCKS.HEADING_6}>\n Heading 6\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HEADING_6,\n title: blockTitles[BLOCKS.HEADING_6]\n})(Heading6);\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nclass Paragraph extends Component {\n render() {\n return (\n <ToolbarDropdownListItem {...this.props}>\n {blockTitles[BLOCKS.PARAGRAPH]}\n </ToolbarDropdownListItem>\n );\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.PARAGRAPH,\n title: blockTitles[BLOCKS.PARAGRAPH],\n shouldToggle: false\n})(Paragraph);\n","import isHotkey from 'is-hotkey';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { toggleChange } from '../shared/BlockToggleDecorator';\nimport CommonNode from '../shared/NodeDecorator';\n\nconst newPlugin = (defaultType, tagName, hotkey) => ({ type = defaultType, richTextAPI }) => ({\n renderNode: (props, _editor, next) => {\n if (props.node.type === type) {\n return CommonNode(tagName, {})(props);\n }\n return next();\n },\n onKeyDown: (e, editor, next) => {\n if (isHotkey('enter', e)) {\n const currentBlock = editor.value.blocks.get(0);\n if (currentBlock.type === type) {\n const { value } = editor;\n\n if (value.selection.start.offset === 0) {\n const initialRange = value.selection;\n editor.splitBlock().setBlocksAtRange(initialRange, BLOCKS.PARAGRAPH);\n } else {\n editor.splitBlock().setBlocks(BLOCKS.PARAGRAPH);\n }\n\n return;\n }\n } else if (isHotkey(hotkey, e)) {\n const isActive = toggleChange(editor, type);\n const actionName = isActive ? 'insert' : 'remove';\n richTextAPI.logShortcutAction(actionName, { nodeType: type });\n return;\n }\n return next();\n }\n});\n\n// TODO: move hotkeys to components\nexport const Heading1Plugin = newPlugin(BLOCKS.HEADING_1, 'h1', ['mod+opt+1']);\nexport const Heading2Plugin = newPlugin(BLOCKS.HEADING_2, 'h2', ['mod+opt+2']);\nexport const Heading3Plugin = newPlugin(BLOCKS.HEADING_3, 'h3', ['mod+opt+3']);\nexport const Heading4Plugin = newPlugin(BLOCKS.HEADING_4, 'h4', ['mod+opt+4']);\nexport const Heading5Plugin = newPlugin(BLOCKS.HEADING_5, 'h5', ['mod+opt+5']);\nexport const Heading6Plugin = newPlugin(BLOCKS.HEADING_6, 'h6', ['mod+opt+6']);\n\nexport { default as Heading1 } from './Heading1';\nexport { default as Heading2 } from './Heading2';\nexport { default as Heading3 } from './Heading3';\nexport { default as Heading4 } from './Heading4';\nexport { default as Heading5 } from './Heading5';\nexport { default as Heading6 } from './Heading6';\nexport { default as Paragraph } from './Paragraph';\nexport { default as HeadingDropdown } from './HeadingDropdown';\n","import isHotkey from 'is-hotkey';\n\nexport default function() {\n return {\n onKeyDown(event, editor, next) {\n if (isHotkey('shift+enter', event)) {\n editor.insertText('\\n');\n return;\n }\n return next();\n }\n };\n}\n","import isHotkey from 'is-hotkey';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { toggleChange } from '../shared/BlockToggleDecorator';\nimport CommonNode from '../shared/NodeDecorator';\n\nconst plugin = (type, tagName, tagProps, hotkey) => {\n return {\n renderNode: (props, _editor, next) => {\n if (props.node.type === type) {\n return CommonNode(tagName, tagProps)(props);\n }\n return next();\n },\n onKeyDown: (e, editor, next) => {\n if (isHotkey(hotkey, e)) {\n editor.call(toggleChange, type);\n return;\n }\n return next();\n }\n };\n};\n\n// TODO: move hotkeys to components\nexport const ParagraphPlugin = (type = BLOCKS.PARAGRAPH) =>\n // Can't use <p/> as for e.g. links we need to show a tooltip inside.\n plugin(type, 'div', {}, ['mod+opt+0']);\n","/* eslint-disable you-dont-need-lodash-underscore/find */\nimport flow from 'lodash/flow';\nimport find from 'lodash/find';\nimport get from 'lodash/get';\n\n/**\n * Given a field object and a rich text node type, return a list of valid\n * content type IDs associated with the node type, based on that node type's\n * `linkContentType` validation.\n *\n * If there is no such validation or the validation is empty, return an empty\n * array.\n *\n * The navigation here is explained by the `nodes` validation having signature:\n * { nodes: { [nodeType]: validationObject[] } }\n *\n * We defensively navigate through this object because\n * 1) the field may not have a `validations` array,\n * 2) the `validations` array may be empty,\n * 3) the `validations` array may not have a `nodes` validation,\n * 4) the `nodes` validation may not validate the `nodeType`, and\n * 5) the `nodeType` validations may not have a `linkContentType` validation.\n *\n * Note that passing an empty array will result in all possible content types\n * being whitelisted.\n *\n * @param {object} field\n * @param {string} nodeType\n * @returns {string[]}\n */\nexport default (field, nodeType) =>\n flow(\n v => find(v, 'nodes'),\n v => get(v, ['nodes', nodeType]),\n v => find(v, 'linkContentType'),\n v => get(v, 'linkContentType', [])\n )(field.validations);\n","import getLinkedContentTypeIdsForNodeType from './getLinkedContentTypeIdsForNodeType';\n\n/**\n * Returns a config for the entity selector based on a given rich text field and a\n * rich text node type that the entity should be picked for. Takes the field\n * validations for the given node type into account.\n *\n * @param {object} field\n * @param {string} nodeType\n * @returns {object}\n */\nexport default function newEntitySelectorConfigFromRichTextField(field, nodeType) {\n return {\n entityType: getEntityTypeFromRichTextNode(nodeType),\n locale: field.locale || null, // Will fall back to default locale.\n multiple: false,\n min: 1,\n max: 1,\n contentTypes: getLinkedContentTypeIdsForNodeType(field, nodeType),\n linkedMimetypeGroups: []\n };\n}\n\nfunction getEntityTypeFromRichTextNode(nodeType) {\n const words = nodeType.split('-');\n if (words.indexOf('entry') !== -1) {\n return 'Entry';\n }\n if (words.indexOf('asset') !== -1) {\n return 'Asset';\n }\n throw new Error(`RichText node type \\`${nodeType}\\` has no associated \\`entityType\\``);\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { haveTextInSomeBlocks } from '../shared/UtilHave';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\n\n/**\n * Returns whether given value has a block of the given type.\n * @param {slate.Editor} editor\n * @param {string} type\n * @returns {boolean}\n */\nexport const hasBlockOfType = (editor, type) => {\n const blocks = editor.value.blocks;\n return blocks.get(0).type === type;\n};\n\n/**\n * Invokes entity selector modal and inserts block embed.\n * @param {string} nodeType\n * @param {WidgetAPI} widgetAPI\n * @param {slate.Editor} editor\n * @param {function} logAction\n */\nexport async function selectEntityAndInsert(nodeType, widgetAPI, editor, logAction) {\n logAction('openCreateEmbedDialog', { nodeType });\n\n const { field, dialogs } = widgetAPI;\n const baseConfig = newEntitySelectorConfigFromRichTextField(field, nodeType);\n const selectEntity =\n baseConfig.entityType === 'Asset' ? dialogs.selectSingleAsset : dialogs.selectSingleEntry;\n const config = { ...baseConfig, withCreate: true };\n try {\n const entity = await selectEntity(config);\n if (!entity) {\n return;\n }\n insertBlock(editor, nodeType, entity);\n logAction('insert', { nodeType });\n } catch (error) {\n if (error) {\n throw error;\n } else {\n logAction('cancelCreateEmbedDialog', { nodeType });\n }\n }\n}\n\nexport const createNode = (nodeType, entity) => ({\n type: nodeType,\n object: 'block',\n data: {\n target: {\n sys: {\n id: entity.sys.id,\n type: 'Link',\n linkType: entity.sys.type\n }\n }\n }\n});\n\nexport function insertBlock(editor, nodeType, entity, focusNextLine = true) {\n const linkedEntityBlock = createNode(nodeType, entity);\n if (editor.value.blocks.size === 0 || haveTextInSomeBlocks(editor)) {\n editor.insertBlock(linkedEntityBlock);\n } else {\n editor.setBlocks(linkedEntityBlock);\n }\n\n if (focusNextLine) {\n editor.insertBlock(BLOCKS.PARAGRAPH).focus();\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DropdownListItem, Button, Icon } from '@contentful/forma-36-react-components';\n\nimport { selectEntityAndInsert } from './Util';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\n\nexport default class EntityLinkToolbarIcon extends Component {\n static propTypes = {\n ...TOOLBAR_PLUGIN_PROP_TYPES,\n isButton: PropTypes.bool\n };\n\n static defaultProps = {\n isButton: false\n };\n\n handleClick = async (event) => {\n this.props.onCloseEmbedMenu();\n event.preventDefault();\n const {\n editor,\n nodeType,\n richTextAPI: { widgetAPI, logToolbarAction }\n } = this.props;\n await selectEntityAndInsert(nodeType, widgetAPI, editor, logToolbarAction);\n this.props.onToggle(editor);\n };\n\n render() {\n const { nodeType } = this.props;\n const type = getEntityTypeFromNodeType(nodeType);\n const baseClass = `rich-text__${nodeType}`;\n return (\n this.props.isButton ? (\n <Button\n disabled={this.props.disabled}\n className={`${baseClass}-button`}\n size=\"small\"\n onClick={event => this.handleClick(event)}\n icon={type === 'Asset' ? 'Asset' : 'EmbeddedEntryBlock'}\n buttonType=\"muted\"\n testId={`toolbar-toggle-${nodeType}`}>\n {`Embed ${type.toLowerCase()}`}\n </Button>\n ) : (\n <DropdownListItem\n isDisabled={this.props.disabled}\n className={`${baseClass}-list-item`}\n size=\"small\"\n onClick={event => this.handleClick(event)}\n testId={`toolbar-toggle-${nodeType}`}>\n <div className=\"cf-flex-grid\">\n <Icon\n icon={type === 'Asset' ? 'Asset' : 'EmbeddedEntryBlock'}\n className=\"rich-text__embedded-entry-list-icon\"\n color=\"secondary\"\n />\n {type}\n </div>\n </DropdownListItem>\n )\n );\n }\n}\n\n/**\n * Returns the entity type depending on the given node type.\n * @param {string} nodeType\n * @returns {string}\n */\nfunction getEntityTypeFromNodeType(nodeType) {\n const words = nodeType.toLowerCase().split('-');\n if (words.includes('entry')) {\n return 'Entry';\n }\n if (words.includes('asset')) {\n return 'Asset';\n }\n throw new Error(`Node type \\`${nodeType}\\` has no associated \\`entityType\\``);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Card } from '@contentful/forma-36-react-components';\nimport { css } from 'emotion';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem'\n })\n};\n\nexport default class LinkedEntityBlock extends React.Component {\n static propTypes = {\n widgetAPI: PropTypes.object.isRequired,\n isSelected: PropTypes.bool.isRequired,\n attributes: PropTypes.object.isRequired,\n editor: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n onEntityFetchComplete: PropTypes.func,\n renderEntity: PropTypes.func\n };\n\n static defaultProps = {\n renderEntity: ({ entityId, entityType, isSelected }) => (\n <Card selected={isSelected}>\n {entityType} <code>{entityId}</code>\n </Card>\n )\n };\n\n getEntitySys() {\n const data = this.props.node.data;\n return {\n id: data.get('target').sys.id,\n type: data.get('target').sys.linkType\n };\n }\n\n handleEditClick = () => {\n const { type, id } = this.getEntitySys();\n const { navigator } = this.props.widgetAPI;\n const openEntity = type === 'Asset' ? navigator.openAsset : navigator.openEntry;\n return openEntity(id, { slideIn: true });\n };\n\n handleRemoveClick = () => {\n const { editor, node } = this.props;\n editor.moveToRangeOfNode(node);\n editor.removeNodeByKey(node.key);\n editor.focus(); // Click on \"x\" might have removed focus.\n };\n\n render() {\n const { widgetAPI, editor, isSelected, onEntityFetchComplete, renderEntity } = this.props;\n const isDisabled = editor.props.readOnly;\n const isReadOnly = editor.props.actionsDisabled;\n const { id: entityId, type: entityType } = this.getEntitySys();\n const props = {\n widgetAPI,\n entityType,\n entityId,\n isSelected,\n isDisabled,\n isReadOnly,\n onEntityFetchComplete,\n onRemove: this.handleRemoveClick,\n onOpenEntity: this.handleEditClick\n };\n return (\n <div {...this.props.attributes} className={styles.root}>\n {renderEntity(props)}\n </div>\n );\n }\n}\n","import React from 'react';\nimport isHotkey from 'is-hotkey';\n\nimport ToolbarIcon from './ToolbarIcon';\nimport EntityLinkBlock from './EmbeddedEntityBlock';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { hasBlockOfType, selectEntityAndInsert } from './Util';\n\nexport default ToolbarIcon;\n\nexport const EmbeddedEntityBlockPlugin = ({\n richTextAPI: { widgetAPI, customRenderers, logShortcutAction, logViewportAction },\n nodeType,\n hotkey\n}) => {\n return {\n renderNode: (props, _editor, next) => {\n const { renderEntityBlockEmbed } = customRenderers;\n const { node, attributes, key } = props;\n if (node.type === nodeType) {\n return (\n <EntityLinkBlock\n widgetAPI={widgetAPI}\n {...props}\n {...attributes}\n onEntityFetchComplete={() => logViewportAction('linkRendered', { key })}\n renderEntity={renderEntityBlockEmbed}\n />\n );\n }\n return next();\n },\n onKeyDown(e, editor, next) {\n if (hotkey && isHotkey(hotkey, e)) {\n selectEntityAndInsert(nodeType, widgetAPI, editor, logShortcutAction);\n return;\n }\n if (isHotkey('enter', e) && hasBlockOfType(editor, nodeType)) {\n editor.insertBlock(BLOCKS.PARAGRAPH).focus();\n return;\n }\n return next();\n }\n };\n};\n\nexport const EmbeddedEntryBlockPlugin = ({ richTextAPI }) => {\n return EmbeddedEntityBlockPlugin({\n richTextAPI,\n nodeType: BLOCKS.EMBEDDED_ENTRY,\n hotkey: ['mod+shift+e']\n });\n};\n\nexport const EmbeddedAssetBlockPlugin = ({ richTextAPI }) => {\n return EmbeddedEntityBlockPlugin({\n richTextAPI,\n nodeType: BLOCKS.EMBEDDED_ASSET,\n hotkey: ['mod+shift+a']\n });\n};\n","import { INLINES } from '@contentful/rich-text-types';\nimport { haveAnyInlines, haveEveryInlineOfType, haveInlines } from '../shared/UtilHave';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\n\nconst createInlineNode = id => ({\n type: INLINES.EMBEDDED_ENTRY,\n object: 'inline',\n data: {\n target: {\n sys: {\n id,\n type: 'Link',\n linkType: 'Entry'\n }\n }\n }\n});\n\nexport const insertInline = (editor, entryId, focusNextLine = true) => {\n if (haveInlines(editor, INLINES.EMBEDDED_ENTRY)) {\n editor.setInlines(createInlineNode(entryId));\n } else {\n editor.insertInline(createInlineNode(entryId));\n }\n\n focusNextLine ? editor.moveToStartOfNextText().focus() : null;\n};\n\nexport const hasOnlyInlineEntryInSelection = editor => {\n const inlines = editor.value.inlines;\n const selection = editor.value.selection;\n if (inlines.size === 1 && selection.start.key === selection.end.key) {\n return inlines.get(0).type === INLINES.EMBEDDED_ENTRY;\n }\n};\n\n/**\n * Invokes entity selector modal and inserts inline embed.\n * @param {WidgetAPI} widgetAPI\n * @param {slate.Editor} editor\n * @param {function} logAction\n */\nexport const selectEntryAndInsert = async (widgetAPI, editor, logAction) => {\n const nodeType = INLINES.EMBEDDED_ENTRY;\n logAction('openCreateEmbedDialog', { nodeType });\n\n const { field, dialogs } = widgetAPI;\n const baseConfig = newEntitySelectorConfigFromRichTextField(field, nodeType);\n const config = { ...baseConfig, withCreate: true };\n try {\n const entry = await dialogs.selectSingleEntry(config);\n if (!entry) {\n return;\n }\n insertInline(editor, entry.sys.id);\n logAction('insert', { nodeType });\n } catch (error) {\n if (error) {\n throw error;\n } else {\n logAction('cancelCreateEmbedDialog', { nodeType });\n }\n }\n};\n\nexport const canInsertInline = editor => {\n return !haveAnyInlines(editor) || haveEveryInlineOfType(editor, INLINES.EMBEDDED_ENTRY);\n};\n","import React, { Component } from 'react';\nimport { DropdownListItem, Icon, Button } from '@contentful/forma-36-react-components';\nimport { INLINES } from '@contentful/rich-text-types';\n\nimport { selectEntryAndInsert, canInsertInline } from './Utils';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\n\nexport default class EntryLinkToolbarIcon extends Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n static defaultProps = {\n isButton: false\n };\n handleClick = async (event) => {\n this.props.onCloseEmbedMenu();\n event.preventDefault();\n const {\n editor,\n richTextAPI: { widgetAPI, logToolbarAction }\n } = this.props;\n await selectEntryAndInsert(widgetAPI, editor, logToolbarAction);\n this.props.onToggle(editor);\n };\n render() {\n return (\n this.props.isButton ? (\n <Button\n disabled={this.props.disabled}\n className={`${INLINES.EMBEDDED_ENTRY}-button`}\n size=\"small\"\n onClick={event => this.handleClick(event)}\n icon=\"EmbeddedEntryInline\"\n buttonType=\"muted\"\n testId={`toolbar-toggle-${INLINES.EMBEDDED_ENTRY}`}>\n Embed inline entry\n </Button>\n ) : (\n <DropdownListItem\n isDisabled={this.props.disabled || !canInsertInline(this.props.editor)}\n className=\"rich-text__entry-link-block-button\"\n size=\"small\"\n icon=\"Entry\"\n buttonType=\"muted\"\n testId={`toolbar-toggle-${INLINES.EMBEDDED_ENTRY}`}\n onClick={event => this.handleClick(event)}>\n <div className=\"cf-flex-grid\">\n <Icon\n icon=\"EmbeddedEntryInline\"\n color=\"secondary\"\n className=\"rich-text__embedded-entry-list-icon\"\n />\n Inline entry\n </div>\n </DropdownListItem>\n )\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { InlineEntryCard } from '@contentful/forma-36-react-components';\nimport { css } from 'emotion';\nimport { INLINES } from '@contentful/rich-text-types';\n\nconst styles = {\n root: css({\n margin: '0px 5px',\n fontSize: 'inherit',\n span: {\n webkitUserSelect: 'none',\n mozUserSelect: 'none',\n msUserSelect: 'none',\n userSelect: 'none'\n }\n })\n};\n\nclass EmbeddedEntryInline extends React.Component {\n static propTypes = {\n widgetAPI: PropTypes.object.isRequired,\n isSelected: PropTypes.bool.isRequired,\n attributes: PropTypes.object.isRequired,\n editor: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n onEntityFetchComplete: PropTypes.func,\n renderEntity: PropTypes.func\n };\n\n static defaultProps = {\n renderEntity: ({ entryId, isSelected }) => (\n <InlineEntryCard testId={INLINES.EMBEDDED_ENTRY} selected={isSelected}>\n Entry <code>{entryId}</code>\n </InlineEntryCard>\n )\n };\n\n getEntitySys() {\n const data = this.props.node.data;\n return {\n id: data.get('target').sys.id,\n type: data.get('target').sys.linkType\n };\n }\n\n handleEditClick = entry => {\n this.props.widgetAPI.navigator.openEntry(entry.sys.id, { slideIn: true });\n };\n\n handleRemoveClick = () => {\n const { editor, node } = this.props;\n editor.removeNodeByKey(node.key);\n };\n\n render() {\n const { widgetAPI, editor, isSelected, onEntityFetchComplete, renderEntity } = this.props;\n const isDisabled = editor.props.readOnly;\n const isReadOnly = editor.props.actionsDisabled;\n const { id: entryId } = this.getEntitySys();\n const props = {\n widgetAPI,\n entryId,\n isSelected,\n isDisabled,\n isReadOnly,\n onEntityFetchComplete,\n onRemove: this.handleRemoveClick,\n onOpenEntity: this.handleEditClick\n };\n return (\n <span {...this.props.attributes} className={styles.root}>\n {renderEntity(props)}\n </span>\n );\n }\n}\n\nexport default EmbeddedEntryInline;\n","import React from 'react';\nimport isHotkey from 'is-hotkey';\nimport { INLINES } from '@contentful/rich-text-types';\nimport ToolbarIcon from './ToolbarIcon';\nimport EmbeddedEntryInline from './EmbeddedEntryInline';\n\nimport { selectEntryAndInsert, hasOnlyInlineEntryInSelection, canInsertInline } from './Utils';\n\nexport default ToolbarIcon;\n\nexport const EmbeddedEntryInlinePlugin = ({\n richTextAPI: { widgetAPI, customRenderers, logShortcutAction, logViewportAction }\n}) => ({\n renderNode: (props, _editor, next) => {\n const { renderEntryInlineEmbed } = customRenderers;\n const { node, attributes, key } = props;\n if (node.type === INLINES.EMBEDDED_ENTRY) {\n return (\n <EmbeddedEntryInline\n widgetAPI={widgetAPI}\n {...props}\n {...attributes}\n onEntityFetchComplete={() => logViewportAction('linkRendered', { key })}\n renderEntity={renderEntryInlineEmbed}\n />\n );\n }\n return next();\n },\n onKeyDown: (event, editor, next) => {\n const hotkey = ['mod+shift+2'];\n if (isHotkey(hotkey, event)) {\n if (canInsertInline(editor)) {\n selectEntryAndInsert(widgetAPI, editor, logShortcutAction);\n return;\n }\n }\n if (isHotkey('enter', event)) {\n if (hasOnlyInlineEntryInSelection(editor)) {\n event.preventDefault();\n editor.moveToStartOfNextText();\n return;\n }\n }\n return next();\n }\n});\n","import * as React from 'react';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\nimport EditList from './EditListWrapper';\n\nconst applyChange = (editor, type, logAction) => {\n const {\n utils,\n changes: { unwrapList, wrapInList }\n } = EditList();\n\n if (utils.isSelectionInList(editor.value)) {\n if (utils.getCurrentList(editor.value).type !== type) {\n const currentList = utils.getCurrentList(editor.value);\n editor.setNodeByKey(currentList.key, type);\n logAction('insert', { nodeType: type });\n } else {\n unwrapList(editor);\n logAction('remove', { nodeType: type });\n }\n } else {\n wrapInList(editor, type);\n logAction('insert', { nodeType: type });\n }\n\n return editor.focus();\n};\n\nconst isActive = (editor, type) => {\n const list = EditList().utils.getCurrentList(editor.value);\n\n if (list) {\n return list.type === type;\n }\n return false;\n};\n\nexport default ({ type, title, icon }) => Block => {\n return class ToolbarDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = e => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction }\n } = this.props;\n e.preventDefault();\n applyChange(editor, type, logToolbarAction);\n onToggle(editor);\n };\n\n render() {\n const { editor } = this.props;\n return (\n <Block\n type={type}\n icon={icon}\n title={title}\n onToggle={this.handleToggle}\n isActive={isActive(editor, type)}\n disabled={this.props.disabled}\n />\n );\n }\n };\n};\n","import React from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport commonNode from '../shared/NodeDecorator';\nimport listToggleDecorator from './ToolbarDecorator';\nimport EditListWrapper from './EditListWrapper';\n\nexport const ListPlugin = () => {\n return {\n ...EditListWrapper(),\n renderNode: (props, _editor, next) => {\n if (props.node.type === BLOCKS.UL_LIST) {\n return commonNode('ul')(props);\n } else if (props.node.type === BLOCKS.OL_LIST) {\n return commonNode('ol')(props);\n } else if (props.node.type === BLOCKS.LIST_ITEM) {\n return commonNode('li')(props);\n }\n return next();\n }\n };\n};\n\nexport const UnorderedList = listToggleDecorator({\n type: BLOCKS.UL_LIST,\n title: 'UL',\n icon: 'ListBulleted'\n})(props => <ToolbarIcon {...props} />);\n\nexport const OrderedList = listToggleDecorator({\n type: BLOCKS.OL_LIST,\n title: 'OL',\n icon: 'ListNumbered'\n})(props => <ToolbarIcon {...props} />);\n","import React, { Component } from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport ToolbarIcon from '../shared/ToolbarIcon';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { haveTextInSomeBlocks } from '../shared/UtilHave';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\n\nconst styles = {\n hr: css`\n height: ${tokens.spacingM};\n background: transparent;\n position: relative;\n margin: 0 0 ${tokens.spacingL};\n &:hover {\n cursor: pointer;\n }\n &::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 1px;\n background: ${tokens.colorElementMid};\n top: 50%;\n }\n `,\n hrSelected: css`\n &::after {\n background: ${tokens.colorPrimary};\n -webkit-box-shadow: 0px 0px 5px ${tokens.colorPrimary};\n box-shadow: 0px 0px 5px ${tokens.colorPrimary};\n }\n `\n};\n\nexport const HrPlugin = () => {\n return {\n renderNode: (props, _editor, next) => {\n if (props.node.type === BLOCKS.HR) {\n return (\n <hr\n className={cx(styles.hr, props.isSelected && styles.hrSelected)}\n {...props.attributes}\n />\n );\n }\n return next();\n }\n };\n};\n\nclass Hr extends Component {\n render() {\n return <ToolbarIcon {...this.props} />;\n }\n}\n\nexport default blockSelectDecorator({\n type: BLOCKS.HR,\n title: 'HR',\n icon: 'HorizontalRule',\n applyChange: (editor, type) => {\n const hr = {\n type,\n object: 'block'\n };\n\n if (editor.value.blocks.size === 0 || haveTextInSomeBlocks(editor)) {\n editor.insertBlock(hr);\n } else {\n editor.setBlocks(hr);\n }\n\n editor.insertBlock(BLOCKS.PARAGRAPH).focus();\n }\n})(Hr);\n","import * as contentfulSlateJSAdapter from '@contentful/contentful-slatejs-adapter';\nimport { documentToPlainTextString } from '@contentful/rich-text-plain-text-renderer';\nimport schema from '../../constants/Schema';\n\nexport const getCharacterCount = editor => {\n const document = contentfulSlateJSAdapter.toContentfulDocument({\n document: editor.value.document.toJSON(),\n schema\n });\n return documentToPlainTextString(document).length;\n};\n","import { getCharacterCount } from './Paste';\n\n/**\n * This plugin tracks the character count before and after a paste event,\n * including the text selected during the event. This creates parity with our\n * tracking for the markdown editor.\n */\nexport const PastePlugin = ({ richTextAPI: { logShortcutAction } }) => ({\n onPaste(_event, editor, next) {\n const characterCountSelection = global.getSelection().toString().length;\n const characterCountBefore = getCharacterCount(editor);\n\n setTimeout(() => {\n const characterCountAfter = getCharacterCount(editor);\n logShortcutAction('paste', {\n characterCountAfter,\n characterCountBefore,\n characterCountSelection\n });\n });\n next();\n return;\n }\n});\n","import HtmlSerializer from 'slate-html-serializer';\nimport { BLOCKS, MARKS, INLINES } from '@contentful/rich-text-types';\n\n/**\n * Tags to block types mapping\n */\nconst BLOCK_TAGS = {\n p: BLOCKS.PARAGRAPH,\n ul: BLOCKS.UL_LIST,\n ol: BLOCKS.OL_LIST,\n blockquote: BLOCKS.QUOTE,\n hr: BLOCKS.HR,\n h1: BLOCKS.HEADING_1,\n h2: BLOCKS.HEADING_2,\n h3: BLOCKS.HEADING_3,\n h4: BLOCKS.HEADING_4,\n h5: BLOCKS.HEADING_5,\n h6: BLOCKS.HEADING_6\n};\n\n/**\n * tags to marks types mapping\n */\nconst MARK_TAGS = {\n strong: MARKS.BOLD,\n b: MARKS.BOLD,\n em: MARKS.ITALIC,\n i: MARKS.ITALIC,\n u: MARKS.UNDERLINE,\n code: MARKS.CODE\n};\n\nconst isGoogleWrapper = el =>\n el.tagName.toLowerCase() === 'b' && el.id.startsWith('docs-internal-guid-');\n\nconst isGoogleBold = el => {\n return el.style.fontWeight === '700';\n};\n\nconst isGoogleItalic = el => {\n return el.style.fontStyle === 'italic';\n};\n\nconst isGoogleUnderline = el => {\n return el.style.textDecoration === 'underline';\n};\n\nconst gDocsRules = {\n deserialize(el, next) {\n const isFromGoogleDocs = !!el.ownerDocument.querySelector('[id*=docs-internal-guid-]');\n\n if (!isFromGoogleDocs) {\n return;\n }\n if (isGoogleWrapper(el)) {\n return next(el.childNodes);\n }\n\n /**\n * Google Docs represent marks with css styles applied to SPAN\n * instead of html tags.\n * */\n if (el.tagName.toLowerCase() === 'span') {\n const marks = [];\n if (isGoogleBold(el)) {\n marks.push(MARKS.BOLD);\n }\n if (isGoogleItalic(el)) {\n marks.push(MARKS.ITALIC);\n }\n if (isGoogleUnderline(el)) {\n marks.push(MARKS.UNDERLINE);\n }\n\n const textNode = {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.textContent,\n marks: marks.map(type => ({ object: 'mark', type }))\n }\n ]\n };\n\n return textNode;\n }\n }\n};\n\nconst listItems = {\n deserialize(el, next) {\n /** list-items in Contentful's schema must have blocks as direct children */\n if (el.tagName.toLowerCase() === 'li') {\n let childNodes = next(el.childNodes);\n\n childNodes = childNodes.map(node => {\n if (node.object === 'text') {\n return {\n object: 'block',\n type: BLOCKS.PARAGRAPH,\n nodes: [node]\n };\n } else {\n return node;\n }\n });\n\n return {\n object: 'block',\n type: BLOCKS.LIST_ITEM,\n nodes: childNodes\n };\n }\n }\n};\n\nconst links = {\n deserialize(el, next) {\n if (el.tagName.toLowerCase() === 'a') {\n // we only support links with href,\n // if href is not defined, we should serialize as text\n if (el.getAttribute('href')) {\n return {\n object: 'inline',\n type: INLINES.HYPERLINK,\n nodes: next(el.childNodes),\n data: {\n uri: el.getAttribute('href')\n }\n };\n } else {\n return next(el.childNodes);\n }\n }\n }\n};\n\nconst macOSTrailingBreak = {\n deserialize(el) {\n if (el.tagName.toLowerCase() === 'br' && el.classList.contains('Apple-interchange-newline')) {\n return null;\n }\n }\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (mark) {\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes)\n };\n }\n }\n};\n\nconst blocks = {\n deserialize(el, next) {\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (block) {\n const childNodes = next(el.childNodes);\n\n return {\n object: 'block',\n type: block,\n nodes: childNodes.length > 0 ? childNodes : [{ object: 'text' }]\n };\n }\n }\n};\n\nconst RULES = [gDocsRules, listItems, links, macOSTrailingBreak, marks, blocks];\n\nexport const create = () => {\n return new HtmlSerializer({\n rules: RULES\n });\n};\n","import { getEventTransfer } from 'slate-react';\nimport { create as createSerializer } from './Serializer';\n\n/**\n * The plugin allows to paste html to the Structured Text Editor\n * by deserializing html content from ClipboardEvent into\n * Slate document.\n */\nexport const PasteHtmlPlugin = () => {\n const serializer = createSerializer();\n return {\n onPaste(event, editor, next) {\n const transfer = getEventTransfer(event);\n if (transfer.type != 'html') {\n next();\n return;\n }\n const { document } = serializer.deserialize(transfer.html);\n\n editor.insertFragment(document);\n return;\n }\n };\n};\n","import { getEventTransfer } from 'slate-react';\nimport PlainSerializer from 'slate-plain-serializer';\nimport { BLOCKS } from '@contentful/rich-text-types';\n\n/**\n * This plugin changes how pasting text is handled in the Rich text editor by\n * deserializing text content from ClipboardEvent into a Slate document. We\n * use it to handle converting new lines to paragraphs. Without this plugin,\n * lines of text separated by an empty new line will result in extra empty\n * paragraphs.\n */\nexport const PasteTextPlugin = () => {\n return {\n onPaste(event, editor, next) {\n const transfer = getEventTransfer(event);\n if (transfer.type !== 'text') {\n next();\n return;\n }\n\n const string = transfer.text;\n\n const { document } = PlainSerializer.deserialize(string, {\n defaultBlock: BLOCKS.PARAGRAPH,\n delimiter: '\\n\\n' // We look for double new lines as a delimiter for paragraphs\n });\n\n editor.insertFragment(document);\n return;\n }\n };\n};\n","const RICH_TEXT_COMMANDS_CONTEXT_MARK_TYPE = 'richTextCommandsContext';\n\n/**\n * @description\n * Returns Command Palette command text or leading slash\n *\n * @param {Slate.Editor} editor\n * @returns {String}\n */\nexport const getCommandText = editor => {\n // matches the character / literally (case sensitive)\n if (!editor.value.startText) {\n return null;\n }\n const COMMAND_REGEX = /\\/(\\S*)$/;\n const startOffset = editor.value.selection.start.offset;\n const textBefore = editor.value.startText.text.slice(0, startOffset);\n const result = COMMAND_REGEX.exec(textBefore);\n return result === null ? null : result[1] || result[0];\n};\n\n/**\n * @description\n * Returns Command Palette Decoration if applicable to current text.\n *\n * @param {Slate.Editor} editor\n * @returns {Slate.Decoration?}\n */\nexport const getDecorationOrDefault = editor => {\n const value = editor.value;\n if (!value.startText) {\n return null;\n }\n\n const inputValue = getCommandText(editor);\n\n const { selection } = value;\n\n if (inputValue) {\n const decoration = {\n anchor: {\n key: selection.start.key,\n offset: selection.start.offset - (inputValue.length + 1)\n },\n focus: {\n key: selection.start.key,\n offset: selection.start.offset\n },\n mark: {\n type: RICH_TEXT_COMMANDS_CONTEXT_MARK_TYPE\n }\n };\n return decoration;\n }\n return null;\n};\n\nexport const hasCommandPaletteMarkType = markType => {\n return markType === RICH_TEXT_COMMANDS_CONTEXT_MARK_TYPE;\n};\n\n/**\n * @description\n * Checks if document has command palette decoration\n *\n * @param {Slate.Editor} editor\n * @returns {Boolean}\n */\nexport const hasCommandPaletteDecoration = editor => {\n const decorations = editor.value.document.getDecorations(editor);\n\n if (decorations.isEmpty()) {\n return false;\n }\n\n const commandPaletteDecoration = decorations.find(\n d => d.mark.type === RICH_TEXT_COMMANDS_CONTEXT_MARK_TYPE\n );\n return Boolean(commandPaletteDecoration);\n};\n\nexport const removeCommand = (editor, command, anchorOffset = 1) => {\n editor.removeTextByKey(\n editor.value.selection.start.key,\n editor.value.selection.start.offset - (command.length + anchorOffset),\n command.length + anchorOffset\n );\n};\n","/* eslint-disable you-dont-need-lodash-underscore/find */\nimport find from 'lodash/find';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport { BLOCKS, INLINES, TOP_LEVEL_BLOCKS } from '@contentful/rich-text-types';\n\n// TODO: Move this into separate package (maybe rich-text-types) and share with FE.\nexport const VALIDATIONS = {\n ENABLED_MARKS: 'enabledMarks',\n ENABLED_NODE_TYPES: 'enabledNodeTypes'\n};\n\nexport const VALIDATABLE_NODE_TYPES = [\n ...TOP_LEVEL_BLOCKS.filter(type => type !== BLOCKS.PARAGRAPH),\n ...Object.values(INLINES)\n];\n\nconst getRichTextValidation = (field, validationType) =>\n flow(\n v => find(v, validationType),\n v => get(v, validationType)\n )(field.validations);\n\nconst isFormattingOptionEnabled = (field, validationType, nodeTypeOrMark) => {\n const enabledFormattings = getRichTextValidation(field, validationType);\n\n if (enabledFormattings === undefined) {\n return true;\n }\n\n return enabledFormattings.includes(nodeTypeOrMark);\n};\n\n/**\n * Checks if nodeType is enabled in the Rich Text Editor Field\n *\n * @param {FieldInfo} field\n * @param {string} nodeType\n * @returns {boolean}\n */\nexport const isNodeTypeEnabled = (field, nodeType) =>\n isFormattingOptionEnabled(field, VALIDATIONS.ENABLED_NODE_TYPES, nodeType);\n\n/**\n * Checks if mark is enabled in the Rich Text Editor Field\n *\n * @param {FieldInfo} field\n * @param {string} mark\n * @returns {boolean}\n */\nexport const isMarkEnabled = (field, mark) =>\n isFormattingOptionEnabled(field, VALIDATIONS.ENABLED_MARKS, mark);\n","import uniqBy from 'lodash/uniqBy';\nimport { isNodeTypeEnabled } from '../../validations';\nimport { INLINES, BLOCKS } from '@contentful/rich-text-types';\n// TODO:xxx Get this another way!\n// import * as EntityHelpers from 'app/entity_editor/entityHelpers';\n\nexport async function fetchContentTypes(widgetAPI) {\n const contentTypes = await widgetAPI.space.getContentTypes();\n return uniqBy(contentTypes.items, contentType => contentType.name);\n}\n\nexport async function fetchAssets(widgetAPI, query = '') {\n const assets = await widgetAPI.space.getAssets({ query });\n return assets.items.map(asset => ({\n contentTypeName: 'Asset',\n displayTitle: asset.fields.title ? asset.fields.title[widgetAPI.field.locale] : 'Untitled',\n id: asset.sys.id,\n entry: asset,\n thumbnail:\n asset.fields.file &&\n asset.fields.file[widgetAPI.field.locale] &&\n `${asset.fields.file[widgetAPI.field.locale].url}?h=30`\n }));\n}\n\nexport async function fetchEntries(widgetAPI, contentType, query = '') {\n // TODO:xxx\n // const entityHelpers = EntityHelpers.newForLocale(widgetAPI.field.locale);\n const entries = await widgetAPI.space.getEntries({\n content_type: contentType.sys.id,\n query\n });\n\n return Promise.all(\n entries.items.map(async entry => {\n // TODO:xxx\n // const description = await entityHelpers.entityDescription(entry);\n // const displayTitle = await entityHelpers.entityTitle(entry);\n const description = 'Entity description';\n const displayTitle = 'Entity title';\n return {\n contentTypeName: contentType.name,\n displayTitle: displayTitle || 'Untitled',\n id: entry.sys.contentType.sys.id,\n description,\n entry\n };\n })\n );\n}\n\n/**\n * @description\n * Checks the field validations if the current content type is valid to be linked/embedded.\n *\n * @param {Object} field\n * @param {Object} contentType\n * @param {String} embedType\n * @returns {Boolean}\n */\nexport const isValidLinkedContentType = (field, contentType, embedType) => {\n if (field.validations.length === 0) {\n return true;\n }\n\n const nodes = field.validations.filter(val => val.nodes)[0].nodes;\n\n if (nodes[embedType] === undefined) {\n return true;\n }\n\n return !!nodes[embedType]\n .filter(typeVal => typeVal.linkContentType)\n .reduce((pre, cur) => [...pre, cur.linkContentType], [])\n .reduce((pre, cur) => [...pre, ...cur], [])\n .find(ct => ct === contentType.sys.id);\n};\n\nexport const isEmbeddingEnabled = field =>\n isNodeTypeEnabled(field, BLOCKS.EMBEDDED_ASSET) ||\n isNodeTypeEnabled(field, BLOCKS.EMBEDDED_ENTRY) ||\n isNodeTypeEnabled(field, INLINES.EMBEDDED_ENTRY);\n\nexport class CommandPaletteActionBuilder {\n constructor(field, permissions) {\n this.field = field;\n this.permissions = permissions;\n }\n\n // TODO: Let's create dedicated functions for assets so we do not have to pass a CT.\n\n maybeBuildEmbedAction(embedType, contentType, callback) {\n if (!isNodeTypeEnabled(this.field, embedType)) {\n return false;\n }\n const isAsset = !contentType;\n if (!isAsset && !isValidLinkedContentType(this.field, contentType, embedType)) {\n return false;\n }\n\n buildAction(embedType, contentType, callback);\n }\n\n maybeBuildCreateAndEmbedAction(embedType, contentType, callback) {\n if (!isNodeTypeEnabled(this.field, embedType)) {\n return false;\n }\n\n const isAsset = !contentType;\n if (isAsset && !this.permissions.canCreateAsset) {\n return false;\n } else {\n if (!isValidLinkedContentType(this.field, contentType, embedType)) {\n return false;\n }\n if (!this.permissions.canCreateEntryOfContentType[contentType.sys.id]) {\n return false;\n }\n }\n\n buildAction(embedType, contentType, callback);\n }\n}\n\nfunction buildAction(embedType, contentType, callback) {\n const isAsset = !contentType;\n const isInline = embedType === INLINES.EMBEDDED_ENTRY;\n const label = `Create and embed ${isAsset ? 'Asset' : contentType.name} ${\n isInline ? ' - Inline' : ''\n }`;\n\n const icon = isInline ? 'EmbeddedEntryInline' : 'EmbeddedEntryBlock';\n\n return {\n label,\n group: isAsset ? 'Assets' : contentType.name,\n callback,\n icon\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport isHotKey from 'is-hotkey';\nimport cn from 'classnames';\nimport { css } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\nimport {\n SkeletonContainer,\n SkeletonBodyText,\n Spinner,\n SectionHeading,\n Icon,\n IconButton\n} from '@contentful/forma-36-react-components';\nimport uniqBy from 'lodash/uniqBy';\n\nconst styles = {\n commandPanel: css({\n display: 'block',\n background: tokens.colorWhite,\n boxShadow: '0 2px 5px rgba(0, 0, 0, 0.1), 0 5px 10px -5px rgba(0, 0, 0, 0.3)',\n border: `1px solid ${tokens.colorElementDark}`,\n borderRadius: '3px',\n fontFamily: tokens.fontStackPrimary,\n width: '500px',\n overflowY: 'auto'\n }),\n commandPanelList: css({\n display: 'block',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n height: '200px',\n overflowY: 'auto'\n }),\n item: css({\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightDefault,\n padding: `${tokens.spacingS} ${tokens.spacingXs}`,\n borderBottom: `1px solid ${tokens.colorElementMid}`,\n margin: 0,\n color: tokens.colorTextDark\n }),\n divider: css({\n fontWeight: tokens.fontWeightDemiBold,\n padding: `${tokens.spacingS} ${tokens.spacingXs}`,\n letterSpacing: tokens.letterSpacingWide,\n fontSize: tokens.fontSizeS,\n textTransform: 'uppercase',\n borderBottom: `1px solid ${tokens.colorElementDark}`,\n margin: 0,\n lineHeight: tokens.lineHeightDefault,\n color: tokens.colorTextDark\n }),\n icon: css({\n marginRight: 10\n }),\n isSelected: css({\n background: tokens.colorElementLight\n }),\n skeletonContainer: css({\n padding: tokens.spacingM,\n height: 200,\n margin: 0\n }),\n button: css({\n textAlign: 'left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '100%',\n display: 'flex',\n alignItems: 'center'\n }),\n navBar: css({\n display: 'flex',\n bottom: 0,\n background: tokens.colorElementLightest,\n padding: `${tokens.spacingS} ${tokens.spacingXs}`,\n width: '100%'\n }),\n loader: css({\n marginLeft: 'auto'\n }),\n thumbnail: css({\n marginRight: 15\n }),\n instruction: css({\n marginRight: 15,\n color: tokens.colorTextLight\n }),\n closeButton: css({\n marginLeft: 'auto'\n })\n};\n\nconst itemPropType = PropTypes.shape({\n label: PropTypes.string,\n callback: PropTypes.func\n});\n\nclass CommandPanelItem extends React.Component {\n static propTypes = {\n isSelected: PropTypes.bool,\n index: PropTypes.number,\n classNames: PropTypes.string,\n item: itemPropType\n };\n listItemRef = null;\n\n componentDidUpdate() {\n if (this.props.isSelected) {\n this.listItemRef.scrollIntoView({\n block: 'nearest',\n inline: 'start'\n });\n }\n }\n\n render() {\n const { index, classNames, item } = this.props;\n\n return (\n <li\n key={index}\n className={classNames}\n ref={ref => {\n this.listItemRef = ref;\n }}>\n <button type=\"button\" className={styles.button} onClick={item.callback && item.callback}>\n {item.icon && <Icon className={styles.icon} icon={item.icon} color=\"secondary\" />}\n {item.thumbnail && <img className={styles.thumbnail} src={item.thumbnail} alt=\"\" />}\n {item.label}\n </button>\n </li>\n );\n }\n}\n\nconst Instruction = ({ children }) => <span className={styles.instruction}>{children}</span>;\nInstruction.propTypes = {\n children: PropTypes.node\n};\n\nexport class CommandPanel extends React.Component {\n static propTypes = {\n items: PropTypes.arrayOf(itemPropType),\n searchString: PropTypes.string,\n className: PropTypes.string,\n testId: PropTypes.string,\n isLoading: PropTypes.bool,\n isUpdating: PropTypes.bool,\n breadcrumb: PropTypes.string,\n richTextAPI: PropTypes.object,\n onClose: PropTypes.func\n };\n static defaultProps = {\n className: undefined,\n searchString: '',\n items: [],\n testId: 'cf-ui-command-panel',\n isLoading: true,\n isUpdating: false\n };\n\n state = {\n selectedKey: 0,\n items: []\n };\n\n static getDerivedStateFromProps(props, state) {\n const itemsHasUpdated = props.items !== state.originalItems;\n const searchStringHasUpdated = props.searchString !== state.originalSearchString;\n\n const items = props.items.filter(item =>\n item.label.toLowerCase().includes(props.searchString ? props.searchString.toLowerCase() : '')\n );\n\n return {\n originalItems: props.items,\n originalSearchString: props.searchString,\n items,\n selectedKey: itemsHasUpdated || searchStringHasUpdated ? 0 : state.selectedKey\n };\n }\n\n componentDidMount() {\n this.props.richTextAPI.logViewportAction('openRichTextCommandsPalette');\n document.addEventListener('keydown', this.handleKeyboard, true);\n }\n\n componentWillUnmount() {\n this.props.richTextAPI.logViewportAction('cancelRichTextCommandsPalette');\n document.removeEventListener('keydown', this.handleKeyboard, true);\n }\n\n handleKeyboard = e => {\n if (isHotKey('up', e)) {\n if (this.state.selectedKey === 0) return;\n this.setState(state => ({\n selectedKey: state.selectedKey - 1\n }));\n }\n\n if (isHotKey('down', e)) {\n if (this.state.selectedKey === this.state.items.length - 1) return;\n this.setState(state => ({\n selectedKey: state.selectedKey + 1\n }));\n }\n\n if (isHotKey('enter', e)) {\n const selectedItem = this.state.items[this.state.selectedKey];\n if (selectedItem && selectedItem.callback) selectedItem.callback();\n }\n };\n\n renderGroups() {\n const groups = uniqBy(\n this.state.items.map(item => item.group),\n value => value\n );\n\n if (!groups.length) {\n return <li className={styles.item}>No results</li>;\n }\n\n return groups.map((groupName, index) => {\n return (\n <React.Fragment key={index}>\n {groupName && (\n <li key={groupName} className={styles.divider}>\n {groupName}\n </li>\n )}\n {this.renderItems(groupName)}\n </React.Fragment>\n );\n });\n }\n\n renderItems(groupName) {\n return this.state.items\n .filter(item => item.group === groupName)\n .map(item => {\n const index = this.state.items.indexOf(item);\n const isSelected = index === this.state.selectedKey;\n\n const classNames = cn(styles.item, {\n [styles.isSelected]: isSelected\n });\n\n return (\n <CommandPanelItem\n item={item}\n classNames={classNames}\n key={index}\n isSelected={isSelected}\n />\n );\n });\n }\n\n renderNavigationBar = () => (\n <div className={styles.navBar}>\n <SectionHeading>\n {this.props.breadcrumb ? `Embed ${this.props.breadcrumb}` : 'Richtext Commands'}\n </SectionHeading>\n <IconButton\n label=\"Close\"\n className={styles.closeButton}\n iconProps={{ icon: 'Close' }}\n buttonType=\"muted\"\n onClick={this.props.onClose}\n />\n </div>\n );\n\n renderStatusBar = () => (\n <div className={styles.navBar}>\n <span className={styles.instructions}>\n <Instruction>↑ ↓ to navigate</Instruction>\n <Instruction>↵ to confirm</Instruction>\n <Instruction>esc to close</Instruction>\n </span>\n {this.props.isUpdating && (\n <span className={styles.loader}>\n loading <Spinner size=\"small\" />\n </span>\n )}\n </div>\n );\n\n renderSkeleton = () => (\n <li className={styles.skeletonContainer}>\n <SkeletonContainer>\n <SkeletonBodyText numberOfLines={7} />\n </SkeletonContainer>\n </li>\n );\n\n render() {\n const { className, testId, isLoading } = this.props;\n\n const classNames = cn(styles.commandPanel, className);\n\n return (\n <div className={classNames}>\n {this.renderNavigationBar()}\n <ul className={styles.commandPanelList} data-test-id={testId}>\n {isLoading ? this.renderSkeleton() : this.renderGroups()}\n </ul>\n {this.renderStatusBar()}\n </div>\n );\n }\n}\n\nexport default CommandPanel;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport isHotKey from 'is-hotkey';\nimport throttle from 'lodash/throttle';\nimport flatten from 'lodash/flatten';\nimport { insertBlock } from '../../EmbeddedEntityBlock/Util';\nimport { insertInline } from '../../EmbeddedEntryInline/Utils';\nimport {\n fetchEntries,\n fetchContentTypes,\n fetchAssets,\n CommandPaletteActionBuilder\n} from '../CommandPaletteService';\nimport { removeCommand } from '../Util';\nimport CommandPanelMenu from './CommandPanelMenu';\nimport { InViewport } from '@contentful/forma-36-react-components';\n\nconst DEFAULT_POSITION = {\n top: 0,\n left: 0\n};\nclass CommandPalette extends React.PureComponent {\n static propTypes = {\n editor: PropTypes.object,\n command: PropTypes.string,\n richTextAPI: PropTypes.object\n };\n\n state = {\n anchorPosition: DEFAULT_POSITION,\n items: [],\n isLoading: true,\n panelPosition: 'bottom'\n };\n\n paletteDimensions = {\n height: 300,\n width: 300\n };\n\n async componentDidMount() {\n this.isComponentMounted = true;\n this.createInitialCommands();\n this.updatePanelPosition();\n this.paletteDimensions = {\n height: this.palette.getBoundingClientRect().height,\n width: this.palette.getBoundingClientRect().width\n };\n }\n\n componentWillUnmount() {\n this.isComponentMounted = false;\n this.removeEventListeners();\n this.requestUpdate.cancel();\n }\n\n bindEventListeners = () => {\n document.addEventListener('scroll', this.handleScroll, true);\n document.addEventListener('keydown', this.handleKeyboard, true);\n document.addEventListener('mousedown', this.handleOutsideClick, true);\n };\n\n removeEventListeners = () => {\n document.removeEventListener('scroll', this.handleScroll, true);\n document.removeEventListener('keydown', this.handleKeyboard, true);\n document.removeEventListener('mousedown', this.handleOutsideClick, true);\n };\n\n handleOutsideClick = event => {\n if (!this.palette.contains(event.target)) {\n this.setState({\n isClosed: true\n });\n }\n };\n\n requestUpdate = throttle(\n () => {\n if (this.state.currentCommand) {\n this.setState({ isUpdating: true });\n this.createCommands(\n this.state.currentCommand.contentType,\n this.state.currentCommand.type,\n this.props.command\n );\n }\n },\n 1000,\n { leading: true, trailing: false }\n );\n\n componentDidUpdate() {\n if (this.state.currentCommand && this.state.currentCommand.command !== this.props.command) {\n this.requestUpdate();\n } else {\n this.requestUpdate.cancel();\n }\n if (!this.state.isClosed) {\n this.bindEventListeners();\n } else {\n this.removeEventListeners();\n }\n }\n\n requestUpdate = throttle(\n () => {\n if (this.state.currentCommand) {\n this.setState({ isUpdating: true });\n this.createCommands(\n this.state.currentCommand.contentType,\n this.state.currentCommand.type,\n this.props.command\n );\n }\n },\n 1000,\n { leading: false, trailing: true }\n );\n\n createCommand = (label, contentType, entry, type, description, thumbnail) => ({\n label: `${label}${description ? ` - ${description}` : ''}`,\n thumbnail,\n contentType,\n callback: () => {\n const { editor, command, richTextAPI } = this.props;\n const { logCommandPaletteAction } = richTextAPI;\n removeCommand(editor, command);\n switch (type) {\n case INLINES.EMBEDDED_ENTRY:\n insertInline(editor, entry.sys.id, false);\n logCommandPaletteAction('insert', {\n nodeType: INLINES.EMBEDDED_ENTRY\n });\n break;\n case BLOCKS.EMBEDDED_ASSET:\n insertBlock(editor, BLOCKS.EMBEDDED_ASSET, entry, false);\n logCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ASSET\n });\n break;\n default:\n insertBlock(editor, BLOCKS.EMBEDDED_ENTRY, entry, false);\n logCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ENTRY\n });\n break;\n }\n }\n });\n\n onCreateAndEmbedEntity = async (contentTypeId, nodeType) => {\n const { richTextAPI, editor, command } = this.props;\n const { widgetAPI } = richTextAPI;\n removeCommand(editor, command);\n const { createAsset, createEntry } = widgetAPI.space;\n const isAsset = contentTypeId === null;\n const createEntity = () => (isAsset ? createAsset() : createEntry(contentTypeId));\n const entity = await createEntity();\n const { id: entityId, type: entityType } = entity.data.sys;\n\n nodeType === INLINES.EMBEDDED_ENTRY\n ? insertInline(editor, entity.data.sys.id, false)\n : insertBlock(editor, nodeType, entity.data);\n\n richTextAPI.logCommandPaletteAction('insert', {\n nodeType\n });\n\n const { navigator } = widgetAPI;\n const openEntity = entityType === 'Asset' ? navigator.openAsset : navigator.openEntry;\n return openEntity(entityId, { slideIn: true });\n };\n\n createContentTypeActions = (actionBuilder, contentType) =>\n [\n actionBuilder.maybeBuildEmbedAction(BLOCKS.EMBEDDED_ENTRY, contentType, () => {\n this.setState({ breadcrumb: contentType.name, isLoading: true });\n this.createCommands(contentType);\n this.clearCommand();\n }),\n actionBuilder.maybeBuildEmbedAction(INLINES.EMBEDDED_ENTRY, contentType, () => {\n this.setState({ breadcrumb: contentType.name, isLoading: true });\n this.createCommands(contentType, INLINES.EMBEDDED_ENTRY);\n this.clearCommand();\n }),\n actionBuilder.maybeBuildCreateAndEmbedAction(BLOCKS.EMBEDDED_ENTRY, contentType, () =>\n this.onCreateAndEmbedEntity(contentType.sys.id, BLOCKS.EMBEDDED_ENTRY)\n ),\n actionBuilder.maybeBuildCreateAndEmbedAction(INLINES.EMBEDDED_ENTRY, contentType, () =>\n this.onCreateAndEmbedEntity(contentType.sys.id, INLINES.EMBEDDED_ENTRY)\n )\n ].filter(action => action);\n\n createAssetActions = actionBuilder =>\n [\n actionBuilder.maybeBuildEmbedAction(BLOCKS.EMBEDDED_ASSET, null, () => {\n this.setState({ breadcrumb: 'Asset', isLoading: true });\n this.createCommands(null, BLOCKS.EMBEDDED_ASSET);\n this.clearCommand();\n }),\n actionBuilder.maybeBuildCreateAndEmbedAction(BLOCKS.EMBEDDED_ASSET, null, () =>\n this.onCreateAndEmbedEntity(null, BLOCKS.EMBEDDED_ASSET)\n )\n ].filter(action => action);\n\n handleScroll = e => {\n if (e.target.nodeName !== 'UL') {\n this.updatePanelPosition();\n }\n };\n\n clearCommand = () => {\n if (this.props.command !== '/') {\n removeCommand(this.props.editor, this.props.command, 0);\n }\n };\n\n createCommands = async (contentType, type, command) => {\n this.setState({ isUpdating: true });\n const allEntries = !contentType\n ? await fetchAssets(this.props.richTextAPI.widgetAPI, command)\n : await fetchEntries(this.props.richTextAPI.widgetAPI, contentType, command);\n\n if (this.isComponentMounted) {\n this.setState({\n currentCommand: {\n contentType,\n type,\n command\n },\n isUpdating: false,\n isLoading: false,\n items: allEntries.map(entry =>\n this.createCommand(\n entry.displayTitle,\n entry.contentTypeName,\n entry.entry,\n type,\n entry.description,\n entry.thumbnail\n )\n )\n });\n }\n };\n\n createInitialCommands = async () => {\n const { widgetAPI } = this.props.richTextAPI;\n const allContentTypes = await fetchContentTypes(widgetAPI);\n this.setState({\n isLoading: false\n });\n const actionBuilder = new CommandPaletteActionBuilder(widgetAPI.field, widgetAPI.permissions);\n const contentTypeActions = flatten(\n allContentTypes.map(ct => this.createContentTypeActions(actionBuilder, ct))\n );\n\n this.setState(prevState => ({\n items: [...prevState.items, ...contentTypeActions, ...this.createAssetActions(actionBuilder)]\n }));\n };\n\n handleKeyboard = e => {\n if (isHotKey('down', e) || isHotKey('up', e) || isHotKey('enter', e)) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isHotKey('esc', e) || isHotKey('tab', e)) {\n this.setState({\n isClosed: true\n });\n }\n };\n\n render() {\n // Todo: Revisit tab index.\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n /* eslint-disable jsx-a11y/tabindex-no-positive */\n if (this.state.isClosed) {\n return null;\n }\n const root = window.document.body;\n return ReactDOM.createPortal(\n <div\n tabIndex=\"1\"\n ref={ref => {\n this.palette = ref;\n }}\n style={{\n position: 'absolute',\n outline: 'none',\n minWidth: 200,\n top: this.state.anchorPosition.top,\n left: this.state.anchorPosition.left\n }}>\n <InViewport\n onOverflowBottom={() => {\n if (this.state.panelPosition !== 'top') {\n this.setState({ panelPosition: 'top' }, this.updatePanelPosition);\n }\n }}\n onOverflowTop={() => {\n if (this.state.panelPosition !== 'bottom') {\n this.setState({ panelPosition: 'bottom' }, this.updatePanelPosition);\n }\n }}>\n <CommandPanelMenu\n searchString={this.props.command === '/' ? '' : this.props.command}\n items={this.state.items}\n isLoading={this.state.isLoading}\n isUpdating={this.state.isUpdating}\n onClose={() => {\n this.setState({\n isClosed: true\n });\n }}\n breadcrumb={this.state.breadcrumb}\n richTextAPI={this.props.richTextAPI}\n />\n </InViewport>\n </div>,\n root\n );\n }\n\n updatePanelPosition() {\n const anchorRect = document\n .getSelection()\n .getRangeAt(0)\n .getBoundingClientRect();\n\n this.setState(prevState => ({\n anchorPosition: {\n top:\n prevState.panelPosition === 'bottom'\n ? anchorRect.bottom\n : anchorRect.top - this.paletteDimensions.height,\n left: anchorRect.left\n }\n }));\n }\n}\n\nexport default CommandPalette;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmbeddingEnabled } from './CommandPaletteService';\nimport { hasCommandPaletteDecoration, getCommandText } from './Util';\nimport CommandPanel from './CommandPanel';\nclass CommandPalette extends React.PureComponent {\n static propTypes = {\n editor: PropTypes.object,\n richTextAPI: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n\n const { field } = this.props.richTextAPI.widgetAPI;\n\n this.state = {\n embedsEnabled: isEmbeddingEnabled(field)\n };\n }\n\n render() {\n if (!hasCommandPaletteDecoration(this.props.editor) || !this.state.embedsEnabled) {\n return null;\n }\n\n return (\n <CommandPanel\n editor={this.props.editor}\n richTextAPI={this.props.richTextAPI}\n command={getCommandText(this.props.editor)}\n />\n );\n }\n}\n\nexport default CommandPalette;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass CommandMark extends React.PureComponent {\n static propTypes = {\n children: PropTypes.node.isRequired,\n editor: PropTypes.object,\n attributes: PropTypes.object\n };\n\n render() {\n // Todo: Revisit tab index.\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n /* eslint-disable jsx-a11y/tabindex-no-positive */\n const { children, attributes } = this.props;\n return (\n <span tabIndex=\"1\" {...attributes} className=\"command-context\">\n {children}\n </span>\n );\n }\n}\n\nexport default CommandMark;\n","import React from 'react';\n\nimport { getDecorationOrDefault, hasCommandPaletteMarkType } from './Util';\nimport CommandPalette from './CommandPalette';\nimport CommandMark from './CommandMark';\n\nexport const CommandPalettePlugin = ({ richTextAPI }) => ({\n /* eslint-disable react/display-name */\n decorateNode: (_node, editor, next) => {\n const others = next();\n\n const decoration = getDecorationOrDefault(editor);\n\n if (decoration) {\n return [...others, decoration];\n }\n\n return [...others];\n },\n renderMark: (props, editor, next) => {\n if (hasCommandPaletteMarkType(props.mark.type)) {\n return (\n <CommandMark attributes={props.attributes} editor={editor}>\n {props.children}\n </CommandMark>\n );\n }\n return next();\n },\n renderEditor: (_props, editor, next) => {\n const children = next();\n return (\n <React.Fragment>\n {children}\n <CommandPalette\n anchor={editor.state.commandMark}\n value={editor.value}\n editor={editor}\n richTextAPI={richTextAPI}\n />\n </React.Fragment>\n );\n }\n});\n","import { BLOCKS } from '@contentful/rich-text-types';\n/**\n * Checks if the first block in the document is void and is focused.\n *\n * @param {Slate.Editor} editor\n * @returns {Boolean}\n */\nexport function isVoidBlockFirstAndFocused(editor) {\n return (\n editor.value.document.getBlocks().first() === editor.value.focusBlock &&\n editor.isVoid(editor.value.focusBlock)\n );\n}\n\n/**\n * Inserts and focuses an empty paragraph as a first child to the document.\n *\n * @param {Slate.Editor} editor\n * @returns {void}\n */\n\nexport function insertParagraphAndFocusToStartOfDocument(editor) {\n editor\n .splitBlock()\n .moveToStartOfDocument()\n .setBlocks(BLOCKS.PARAGRAPH)\n .focus();\n}\n","import isHotkey from 'is-hotkey';\nimport { isVoidBlockFirstAndFocused, insertParagraphAndFocusToStartOfDocument } from './Util';\n\n/**\n * Provides a way to insert content before the first void block in the document.\n */\nexport const InsertBeforeFirstVoidBlockPlugin = () => ({\n onKeyDown: (event, editor, next) => {\n if (isHotkey('enter', event) && isVoidBlockFirstAndFocused(editor)) {\n insertParagraphAndFocusToStartOfDocument(editor);\n return;\n }\n\n return next();\n }\n});\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { BoldPlugin } from './Bold';\nimport { ItalicPlugin } from './Italic';\nimport { UnderlinedPlugin } from './Underlined';\nimport { CodePlugin } from './Code';\nimport { QuotePlugin } from './Quote';\nimport { HyperlinkPlugin } from './Hyperlink';\nimport {\n Heading1Plugin,\n Heading2Plugin,\n Heading3Plugin,\n Heading4Plugin,\n Heading5Plugin,\n Heading6Plugin\n} from './Heading';\n\nimport NewLinePlugin from './NewLinePlugin';\nimport { ParagraphPlugin } from './Paragraph';\n\nimport { EmbeddedAssetBlockPlugin, EmbeddedEntryBlockPlugin } from './EmbeddedEntityBlock';\nimport { EmbeddedEntryInlinePlugin } from './EmbeddedEntryInline';\n\nimport { ListPlugin } from './List';\nimport { HrPlugin } from './Hr';\n\nimport TrailingBlock from '@wikifactory/slate-trailing-block';\nimport { PastePlugin } from './Paste';\nimport { PasteHtmlPlugin } from './PasteHtml';\nimport { PasteTextPlugin } from './PasteText';\n\nimport { CommandPalettePlugin } from './CommandPalette';\nimport { InsertBeforeFirstVoidBlockPlugin } from './InsertBeforeFirstVoidBlock';\n\nimport schema from '../constants/Schema';\n\nexport function buildPlugins(richTextAPI) {\n return [\n { schema },\n InsertBeforeFirstVoidBlockPlugin({ richTextAPI }),\n BoldPlugin({ richTextAPI }),\n ItalicPlugin({ richTextAPI }),\n UnderlinedPlugin({ richTextAPI }),\n CodePlugin({ richTextAPI }),\n QuotePlugin({ richTextAPI }),\n HyperlinkPlugin({ richTextAPI }),\n Heading1Plugin({ richTextAPI }),\n Heading2Plugin({ richTextAPI }),\n Heading3Plugin({ richTextAPI }),\n Heading4Plugin({ richTextAPI }),\n Heading5Plugin({ richTextAPI }),\n Heading6Plugin({ richTextAPI }),\n ParagraphPlugin(),\n HrPlugin({ richTextAPI }),\n EmbeddedEntryInlinePlugin({ richTextAPI }),\n EmbeddedEntryBlockPlugin({ richTextAPI }),\n EmbeddedAssetBlockPlugin({ richTextAPI }),\n ListPlugin({ richTextAPI }),\n PastePlugin({ richTextAPI }),\n PasteHtmlPlugin(),\n PasteTextPlugin(),\n CommandPalettePlugin({ richTextAPI }),\n TrailingBlock({ type: BLOCKS.PARAGRAPH }),\n NewLinePlugin()\n ];\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownList, Button } from '@contentful/forma-36-react-components';\n\nclass EntryEmbedDropdown extends Component {\n static propTypes = {\n children: PropTypes.node.isRequired,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n onClose: PropTypes.func,\n onToggle: PropTypes.func\n };\n\n render() {\n const { onToggle, isOpen, onClose, children } = this.props;\n return (\n <Dropdown\n className=\"toolbar-entry-dropdown\"\n position=\"bottom-right\"\n toggleElement={\n <Button\n onMouseDown={onToggle}\n data-test-id=\"toolbar-entry-dropdown-toggle\"\n className=\"toolbar-entry-dropdown-toggle\"\n indicateDropdown\n buttonType=\"muted\"\n size=\"small\"\n icon=\"Plus\"\n disabled={this.props.disabled}>\n Embed\n </Button>\n }\n isOpen={isOpen}\n onClose={onClose}>\n <DropdownList className=\"toolbar-entry-dropdown-list\">{children}</DropdownList>\n </Dropdown>\n );\n }\n}\n\nexport default EntryEmbedDropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { EditorToolbar, EditorToolbarDivider } from '@contentful/forma-36-react-components';\n\nimport Bold from '../plugins/Bold';\nimport Italic from '../plugins/Italic';\nimport Underlined from '../plugins/Underlined';\nimport Code from '../plugins/Code';\nimport Quote from '../plugins/Quote';\nimport {\n Heading1,\n Heading2,\n Heading3,\n Heading4,\n Heading5,\n Heading6,\n Paragraph,\n HeadingDropdown\n} from '../plugins/Heading';\n\nimport Hyperlink from '../plugins/Hyperlink';\nimport { css } from 'emotion';\n\nimport EmbeddedEntryInline from '../plugins/EmbeddedEntryInline';\nimport EmbeddedEntityBlock from '../plugins/EmbeddedEntityBlock';\nimport EntryEmbedDropdown from '../plugins/EntryEmbedDropdown';\n\nimport { UnorderedList, OrderedList } from '../plugins/List';\nimport Hr from '../plugins/Hr';\n\nimport { BLOCKS, MARKS, INLINES } from '@contentful/rich-text-types';\n\nimport { isNodeTypeEnabled, isMarkEnabled } from '../validations';\n\nconst styles = {\n embedActionsWrapper: css({\n display: ['-webkit-box', '-ms-flexbox', 'flex'],\n webkitAlignSelf: 'flex-start',\n alignSelf: 'flex-start',\n msFlexItemAlign: 'start',\n marginLeft: 'auto'\n }),\n formattingOptionsWrapper: css({\n display: ['-webkit-box', '-ms-flexbox', 'flex'],\n msFlexAlign: 'center',\n webkitBoxAlign: 'center',\n alignItems: 'center',\n msFlexWrap: 'wrap',\n flexWrap: 'wrap',\n marginRight: '20px'\n })\n};\n\nexport default class Toolbar extends React.Component {\n static propTypes = {\n richTextAPI: PropTypes.object.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n editor: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n permissions: PropTypes.shape({\n canAccessAssets: PropTypes.bool.isRequired\n }).isRequired\n };\n\n state = {\n headingMenuOpen: false,\n ...getValidationInfo(this.props.richTextAPI.widgetAPI.field)\n };\n\n onChange = (...args) => {\n this.setState({ headingMenuOpen: false });\n this.props.onChange(...args);\n };\n\n toggleEmbedDropdown = () =>\n this.setState(prevState => ({\n isEmbedDropdownOpen: !prevState.isEmbedDropdownOpen\n }));\n\n handleEmbedDropdownClose = () =>\n this.setState({\n isEmbedDropdownOpen: false\n });\n\n renderEmbeds = props => {\n const field = this.props.richTextAPI.widgetAPI.field;\n\n const inlineEntryEmbedEnabled = isNodeTypeEnabled(field, INLINES.EMBEDDED_ENTRY);\n const blockEntryEmbedEnabled = isNodeTypeEnabled(field, BLOCKS.EMBEDDED_ENTRY);\n const blockAssetEmbedEnabled =\n this.props.permissions.canAccessAssets && isNodeTypeEnabled(field, BLOCKS.EMBEDDED_ASSET);\n\n const numEnabledEmbeds = [\n inlineEntryEmbedEnabled,\n blockEntryEmbedEnabled,\n blockAssetEmbedEnabled\n ].filter(Boolean).length;\n\n return (\n <div className={styles.embedActionsWrapper}>\n {numEnabledEmbeds > 1 ? (\n <EntryEmbedDropdown\n onToggle={this.toggleEmbedDropdown}\n isOpen={this.state.isEmbedDropdownOpen}\n disabled={props.disabled}\n onClose={this.handleEmbedDropdownClose}>\n {blockEntryEmbedEnabled && (\n <EmbeddedEntityBlock nodeType={BLOCKS.EMBEDDED_ENTRY} {...props} />\n )}\n {inlineEntryEmbedEnabled && <EmbeddedEntryInline {...props} />}\n {blockAssetEmbedEnabled && (\n <EmbeddedEntityBlock nodeType={BLOCKS.EMBEDDED_ASSET} {...props} />\n )}\n </EntryEmbedDropdown>\n ) : (\n <React.Fragment>\n {blockEntryEmbedEnabled && (\n <EmbeddedEntityBlock nodeType={BLOCKS.EMBEDDED_ENTRY} isButton {...props} />\n )}\n {inlineEntryEmbedEnabled && <EmbeddedEntryInline isButton {...props} />}\n {blockAssetEmbedEnabled && (\n <EmbeddedEntityBlock nodeType={BLOCKS.EMBEDDED_ASSET} isButton {...props} />\n )}\n </React.Fragment>\n )}\n </div>\n );\n };\n\n toggleHeadingMenu = event => {\n event.preventDefault();\n this.setState(prevState => ({\n headingMenuOpen: !prevState.headingMenuOpen\n }));\n };\n\n closeHeadingMenu = () =>\n this.setState({\n headingMenuOpen: false\n });\n\n render() {\n const { editor, isDisabled, richTextAPI } = this.props;\n const props = {\n editor,\n onToggle: this.onChange,\n onCloseEmbedMenu: this.toggleEmbedDropdown,\n disabled: isDisabled,\n richTextAPI\n };\n const { field } = richTextAPI.widgetAPI;\n const { isAnyHyperlinkEnabled, isAnyListEnabled, isAnyMarkEnabled } = this.state;\n const currentBlockType = props.editor.value.blocks.getIn([0, 'type']);\n return (\n <EditorToolbar data-test-id=\"toolbar\">\n <div className={styles.formattingOptionsWrapper}>\n <HeadingDropdown\n onToggle={this.toggleHeadingMenu}\n isToggleActive={true}\n isOpen={this.state.headingMenuOpen}\n onClose={this.closeHeadingMenu}\n currentBlockType={currentBlockType}\n disabled={props.disabled}>\n <Paragraph {...props} />\n {isNodeTypeEnabled(field, BLOCKS.HEADING_1) && <Heading1 {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HEADING_2) && <Heading2 {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HEADING_3) && <Heading3 {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HEADING_4) && <Heading4 {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HEADING_5) && <Heading5 {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HEADING_6) && <Heading6 {...props} />}\n </HeadingDropdown>\n {isAnyMarkEnabled && <EditorToolbarDivider testId=\"mark-divider\" />}\n {isMarkEnabled(field, MARKS.BOLD) && <Bold {...props} />}\n {isMarkEnabled(field, MARKS.ITALIC) && <Italic {...props} />}\n {isMarkEnabled(field, MARKS.UNDERLINE) && <Underlined {...props} />}\n {isMarkEnabled(field, MARKS.CODE) && <Code {...props} />}\n {isAnyHyperlinkEnabled && (\n <React.Fragment>\n <EditorToolbarDivider testId=\"hyperlink-divider\" />\n <Hyperlink {...props} />\n </React.Fragment>\n )}\n {isAnyListEnabled && <EditorToolbarDivider testId=\"list-divider\" />}\n {isNodeTypeEnabled(field, BLOCKS.UL_LIST) && <UnorderedList {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.OL_LIST) && <OrderedList {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.QUOTE) && <Quote {...props} />}\n {isNodeTypeEnabled(field, BLOCKS.HR) && <Hr {...props} />}\n </div>\n {this.renderEmbeds(props)}\n </EditorToolbar>\n );\n }\n}\n\nfunction getValidationInfo(field) {\n const isAnyMarkEnabled =\n isMarkEnabled(field, MARKS.BOLD) ||\n isMarkEnabled(field, MARKS.ITALIC) ||\n isMarkEnabled(field, MARKS.UNDERLINE) ||\n isMarkEnabled(field, MARKS.CODE);\n\n const isAnyHyperlinkEnabled =\n isNodeTypeEnabled(field, INLINES.HYPERLINK) ||\n isNodeTypeEnabled(field, INLINES.ASSET_HYPERLINK) ||\n isNodeTypeEnabled(field, INLINES.ENTRY_HYPERLINK);\n\n const isAnyListEnabled =\n isNodeTypeEnabled(field, BLOCKS.UL_LIST) ||\n isNodeTypeEnabled(field, BLOCKS.OL_LIST) ||\n isNodeTypeEnabled(field, BLOCKS.QUOTE) ||\n isNodeTypeEnabled(field, BLOCKS.HR);\n return {\n isAnyMarkEnabled,\n isAnyHyperlinkEnabled,\n isAnyListEnabled\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from 'emotion';\n\nconst styles = {\n nativeSticky: css`\n position: -webkit-sticky;\n position: sticky;\n top: -1px;\n z-index: 2;\n `\n};\n\nconst StickyToolbarWrapper = ({ isDisabled, children }) => (\n <div className={!isDisabled && styles.nativeSticky}>{children}</div>\n);\n\nStickyToolbarWrapper.propTypes = {\n isDisabled: PropTypes.bool,\n children: PropTypes.node\n};\n\nexport default StickyToolbarWrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Editor } from 'slate-react';\nimport { Value, Editor as BasicEditor } from 'slate';\nimport noop from 'lodash/noop';\nimport debounce from 'lodash/debounce';\nimport { List, is } from 'immutable';\nimport deepEquals from 'fast-deep-equal';\n\nimport { BLOCKS, EMPTY_DOCUMENT } from '@contentful/rich-text-types';\nimport { toContentfulDocument, toSlatejsDocument } from '@contentful/contentful-slatejs-adapter';\n\nimport schema from './constants/Schema';\nimport { createRichTextAPI } from './plugins/shared/PluginApi';\nimport { buildPlugins } from './plugins';\nimport Toolbar from './Toolbar';\nimport StickyToolbarWrapper from './Toolbar/StickyToolbarWrapper';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/forma-36-tokens';\n\nconst STYLE_EDITOR_BORDER = `1px solid ${tokens.colorElementDark}`;\n\nconst styles = {\n root: css({\n position: 'relative'\n }),\n editor: css({\n borderRadius: '0 0 3px 3px',\n border: STYLE_EDITOR_BORDER,\n borderTop: 0,\n padding: '20px',\n fontSize: tokens.spacingM,\n minHeight: '400px',\n background: tokens.colorWhite,\n outline: 'none',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n webkitUserModify: 'read-write-plaintext-only',\n a: {\n span: {\n cursor: 'not-allowed',\n '&:hover': {\n cursor: 'not-allowed'\n }\n }\n }\n }),\n hiddenToolbar: css({\n borderTop: STYLE_EDITOR_BORDER\n }),\n enabled: css({\n background: tokens.colorWhite,\n a: {\n span: {\n cursor: 'pointer',\n '&:hover': {\n cursor: 'pointer'\n }\n }\n }\n }),\n disabled: css({\n background: tokens.colorElementLightest\n })\n};\n\nconst createSlateValue = contentfulDocument => {\n const document = toSlatejsDocument({\n document: contentfulDocument,\n schema\n });\n const value = Value.fromJSON({\n document,\n schema\n });\n // Normalize document instead of doing this in the Editor instance as this would\n // trigger unwanted operations that would result in an unwanted version bump.\n // TODO: This normalization step wouldn't be necessary if we had a perfect\n // adapter for the version of Slate we are currently using.\n const editor = new BasicEditor({ readOnly: true, value }, { normalize: true });\n const normalizedValue = editor.value;\n return normalizedValue;\n};\n\nconst EMPTY_SLATE_DOCUMENT = createSlateValue(EMPTY_DOCUMENT);\n\nexport class ConnectedRichTextEditor extends React.Component {\n static propTypes = {\n widgetAPI: PropTypes.shape({\n field: PropTypes.shape({\n id: PropTypes.string.isRequired,\n locale: PropTypes.string.isRequired\n }).isRequired,\n permissions: PropTypes.shape({\n canAccessAssets: PropTypes.bool.isRequired,\n canCreateAsset: PropTypes.bool.isRequired,\n canCreateEntryOfContentType: PropTypes.object.isRequired\n }).isRequired\n }).isRequired,\n value: PropTypes.object,\n isDisabled: PropTypes.bool,\n onChange: PropTypes.func,\n onAction: PropTypes.func,\n isToolbarHidden: PropTypes.bool,\n actionsDisabled: PropTypes.bool,\n customRenderers: PropTypes.shape({\n renderEntityBlockEmbed: PropTypes.func,\n renderEntryInlineEmbed: PropTypes.func,\n renderEntityHyperlinkTooltip: PropTypes.func\n })\n };\n\n static defaultProps = {\n value: EMPTY_DOCUMENT,\n onChange: noop,\n onAction: noop,\n isDisabled: false,\n isToolbarHidden: false,\n actionsDisabled: false,\n customRenderers: {}\n };\n\n state = {\n lastOperations: List(),\n value:\n this.props.value && this.props.value.nodeType === BLOCKS.DOCUMENT\n ? createSlateValue(this.props.value)\n : EMPTY_SLATE_DOCUMENT\n };\n\n editor = React.createRef();\n\n richTextAPI = createRichTextAPI({\n widgetAPI: this.props.widgetAPI,\n onAction: this.props.onAction,\n customRenderers: this.props.customRenderers\n });\n\n slatePlugins = buildPlugins(this.richTextAPI);\n\n onChange = editor => {\n const { value, operations } = editor;\n this.setState({\n value,\n lastOperations: operations.filter(isRelevantOperation)\n });\n };\n\n shouldComponentUpdate(nextProps, nextState) {\n if (this.props.isDisabled !== nextProps.isDisabled) {\n return true;\n }\n const isStateValueUpdate = !is(this.state.value, nextState.value);\n const isPropsValueUpdate = this.props.value !== nextProps.value;\n return isStateValueUpdate || isPropsValueUpdate;\n }\n\n callOnChange = debounce(() => {\n const doc = toContentfulDocument({\n document: this.state.value.document.toJSON(),\n schema\n });\n this.props.onChange(doc);\n }, 500);\n\n componentDidUpdate(prevProps) {\n /* eslint-disable react/no-did-update-set-state */\n const isIncomingChange = () => !deepEquals(prevProps.value, this.props.value);\n const isDocumentChanged = !this.state.lastOperations.isEmpty();\n\n if (!this.props.isDisabled && isDocumentChanged) {\n this.setState({ lastOperations: List() }, () => this.callOnChange());\n } else if (isIncomingChange()) {\n this.setState({\n value: createSlateValue(this.props.value)\n });\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n handleKeyDown = (event, editor, next) => {\n const ESC = 27;\n\n if (event.keyCode === ESC) {\n event.currentTarget.blur();\n }\n\n return next();\n };\n\n render() {\n const classNames = cx(\n styles.editor,\n this.props.isDisabled ? styles.disabled : styles.enabled,\n this.props.isToolbarHidden && styles.hiddenToolbar\n );\n\n return (\n <div className={styles.root}>\n {!this.props.isToolbarHidden && (\n <StickyToolbarWrapper isDisabled={this.props.isDisabled}>\n <Toolbar\n editor={this.editor.current || new BasicEditor({ readOnly: true })}\n onChange={this.onChange}\n isDisabled={this.props.isDisabled}\n permissions={this.props.widgetAPI.permissions}\n richTextAPI={this.richTextAPI}\n />\n </StickyToolbarWrapper>\n )}\n\n <Editor\n data-test-id=\"editor\"\n value={this.state.value}\n ref={this.editor}\n onChange={this.onChange}\n onKeyDown={this.handleKeyDown}\n plugins={this.slatePlugins}\n readOnly={this.props.isDisabled}\n className={classNames}\n actionsDisabled={this.props.actionsDisabled}\n options={{\n normalize: false // No initial normalizaiton as we pass a normalized document.\n }}\n />\n </div>\n );\n }\n}\n\n/**\n * Returns whether a given operation is relevant enough to trigger a save.\n *\n * @param {slate.Operation} op\n * @returns {boolean}\n */\nfunction isRelevantOperation(op) {\n if (op.type === 'set_value') {\n if (op.properties.data) {\n // Relevant for undo/redo that can be empty ops that we want to ignore.\n return false;\n }\n } else if (op.type === 'set_selection') {\n return false;\n }\n return true;\n}\n\nexport default function RichTextEditor(props) {\n /* eslint-disable react/prop-types */\n const { widgetAPI, isInitiallyDisabled, ...otherProps } = props;\n return (\n <FieldConnector\n throttle={0}\n field={widgetAPI.field}\n isInitiallyDisabled={isInitiallyDisabled}\n isEmptyValue={value => {\n return !value || deepEquals(value, EMPTY_DOCUMENT);\n }}\n isEqualValues={(value1, value2) => {\n return deepEquals(value1, value2);\n }}>\n {({ lastRemoteValue, disabled, setValue, externalReset }) => {\n return (\n <ConnectedRichTextEditor\n {...otherProps}\n // on external change reset component completely and init with initial value again\n key={`rich-text-editor-${externalReset}`}\n value={lastRemoteValue}\n widgetAPI={widgetAPI}\n isDisabled={disabled}\n onChange={value => {\n setValue(value);\n }}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nRichTextEditor.defaultProps = {\n isInitiallyDisabled: true\n};\n"],"names":["opt","config","types","BLOCKS","OL_LIST","UL_LIST","typeItem","LIST_ITEM","typeDefault","PARAGRAPH","plugin","EditList","mapVoidTypes","nodeTypes","fromPairs","map","nodeType","isVoid","listPlugin","ListPlugin","document","nodes","TOP_LEVEL_BLOCKS","blocks","Object","values","INLINES","objects","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","VOID_BLOCKS","schema","QUOTE","match","CONTAINERS","type","min","normalize","editor","error","code","unwrapBlockByKey","node","key","inlines","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","EMBEDDED_ENTRY","actionOrigin","TOOLBAR","SHORTCUT","VIEWPORT","COMMAND_PALETTE","createActionLogger","onAction","origin","name","data","createRichTextAPI","widgetAPI","customRenderers","richTextAPI","logViewportAction","logShortcutAction","logToolbarAction","logCommandPaletteAction","mapValues","fn","args","EDITOR_PLUGIN_PROP_TYPES","PropTypes","shape","object","isRequired","func","TOOLBAR_PLUGIN_PROP_TYPES","onToggle","disabled","bool","isButton","ToolbarIcon","handleMouseDown","event","preventDefault","props","render","icon","isActive","title","React","Component","propTypes","string","MarkPropTypes","attributes","children","mark","NodePropTypes","Tag","tagProps","CommonMark","displayName","haveMarks","value","activeMarks","some","haveBlocks","haveInlines","inline","haveAnyInlines","size","haveEveryInlineOfType","every","haveTextInSomeBlocks","block","text","styles","bold","css","color","fontWeight","tokens","fontWeightDemiBold","headingBold","isHeading","tagName","test","getClassName","cx","hotkey","renderMark","_editor","next","markDecorator","className","onKeyDown","isHotkey","toggleMark","action","markType","Mark","handleToggle","e","React.createElement","BoldPlugin","markPlugin","MARKS","BOLD","Bold","markToggleDecorator","ItalicPlugin","ITALIC","Italic","UnderlinedPlugin","UNDERLINE","Underlined","CodePlugin","CODE","Code","toggleChange","setBlocks","isBlockActive","applyChange","Block","actionName","getParent","range","selection","start","startBlock","getClosestBlock","isSelectionInQuote","ancestor","unwrapBlock","wrapBlock","headingCss","fontWeightMedium","lineHeight","margin","spacingS","paragraph","lineHeightDefault","marginBottom","blockquote","borderLeft","colorElementLight","paddingLeft","fontStyle","background","padding","colorTextMid","borderRadius","textLink","fontSize","orderedList","listStyleType","unorderedList","listItem","listStyle","spacingL","heading1","heading2","heading3","heading4","heading5","heading6","CommonNode","camelCase","newPlugin","defaultType","renderNode","commonNode","QuotePlugin","Blockquote","blockToggleDecorator","_iteratorSymbol","Symbol","iterator","_asyncIteratorSymbol","asyncIterator","_catch","body","recover","result","then","editLink","change","createHyperlinkDialog","logAction","focus","link","get","Error","toJSON","oldUri","uri","oldTarget","target","showTextInput","linkType","linkTypeToNodeType","setInlines","insertLink","isExpanded","fragment","trim","last","insertBlock","insertText","moveFocusForward","length","call","wrapLink","toggleLink","hasHyperlink","removeLinks","HYPERLINK_TYPES","mayEditLink","hasOnlyHyperlinkInlines","includes","forEach","unwrapInline","wrapInline","moveToEnd","HyperlinkToolbarIcon","handleClick","dialogs","createHyperlink","isDisabled","hyperlinkWrapper","display","position","a","hyperlink","fill","textColorDark","hyperlinkIEFallback","textDecoration","hyperlinkIcon","top","height","webkitTransition","transition","browser","detectBrowser","isEdge","SUPPORTS_NATIVE_SLATE_HYPERLINKS","Hyperlink","isHotKey","stopPropagation","onEdit","renderEntityLink","renderLink","tooltip","href","isUrl","tooltipContainer","renderEntityHyperlinkTooltip","defaultProps","noop","sys","id","HyperlinkPlugin","isHyperlink","moveToRangeOfNode","normalizeNode","getInlines","inlineNode","unwrapInlineByKey","root","button","span","h1","h2","h3","h4","h5","h6","getStyleForType","replace","ToolbarDropdownListItem","handleSelect","width","contentWidthDefault","svg","marginLeft","blockTitles","EMBEDDED_ASSET","HeadingDropdown","getStyleNameForChange","currentBlockType","isOpen","onClose","Heading1","blockSelectDecorator","Heading2","Heading3","Heading4","Heading5","Heading6","Paragraph","shouldToggle","currentBlock","offset","initialRange","splitBlock","setBlocksAtRange","Heading1Plugin","Heading2Plugin","Heading3Plugin","Heading4Plugin","Heading5Plugin","Heading6Plugin","ParagraphPlugin","field","flow","v","find","validations","newEntitySelectorConfigFromRichTextField","entityType","getEntityTypeFromRichTextNode","locale","multiple","max","contentTypes","getLinkedContentTypeIdsForNodeType","linkedMimetypeGroups","words","split","indexOf","selectEntityAndInsert","baseConfig","selectEntity","selectSingleAsset","selectSingleEntry","withCreate","entity","hasBlockOfType","createNode","focusNextLine","linkedEntityBlock","EntityLinkToolbarIcon","onCloseEmbedMenu","getEntityTypeFromNodeType","baseClass","toLowerCase","LinkedEntityBlock","handleEditClick","getEntitySys","navigator","openEntity","openAsset","openEntry","slideIn","handleRemoveClick","removeNodeByKey","isSelected","onEntityFetchComplete","renderEntity","readOnly","isReadOnly","actionsDisabled","entityId","onRemove","onOpenEntity","EmbeddedEntityBlockPlugin","renderEntityBlockEmbed","EntityLinkBlock","EmbeddedEntryBlockPlugin","EmbeddedAssetBlockPlugin","createInlineNode","insertInline","entryId","moveToStartOfNextText","hasOnlyInlineEntryInSelection","end","selectEntryAndInsert","entry","canInsertInline","EntryLinkToolbarIcon","webkitUserSelect","mozUserSelect","msUserSelect","userSelect","EmbeddedEntryInline","EmbeddedEntryInlinePlugin","renderEntryInlineEmbed","utils","changes","unwrapList","wrapInList","isSelectionInList","getCurrentList","currentList","setNodeByKey","list","EditListWrapper","UnorderedList","listToggleDecorator","OrderedList","hr","spacingM","colorElementMid","hrSelected","colorPrimary","HrPlugin","HR","Hr","getCharacterCount","contentfulSlateJSAdapter","documentToPlainTextString","PastePlugin","onPaste","_event","characterCountSelection","global","getSelection","toString","characterCountBefore","setTimeout","characterCountAfter","BLOCK_TAGS","p","ul","ol","MARK_TAGS","strong","b","em","i","u","isGoogleWrapper","el","startsWith","isGoogleBold","style","isGoogleItalic","isGoogleUnderline","gDocsRules","deserialize","isFromGoogleDocs","ownerDocument","querySelector","childNodes","marks","push","textNode","leaves","textContent","listItems","links","getAttribute","macOSTrailingBreak","classList","contains","RULES","create","HtmlSerializer","rules","PasteHtmlPlugin","serializer","createSerializer","transfer","getEventTransfer","html","insertFragment","PasteTextPlugin","PlainSerializer","defaultBlock","delimiter","RICH_TEXT_COMMANDS_CONTEXT_MARK_TYPE","getCommandText","startText","COMMAND_REGEX","startOffset","textBefore","slice","exec","getDecorationOrDefault","inputValue","decoration","anchor","hasCommandPaletteMarkType","hasCommandPaletteDecoration","decorations","getDecorations","isEmpty","commandPaletteDecoration","d","Boolean","removeCommand","command","anchorOffset","removeTextByKey","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","getRichTextValidation","validationType","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","undefined","isNodeTypeEnabled","isMarkEnabled","fetchEntries","contentType","query","space","getEntries","content_type","entries","Promise","all","items","description","displayTitle","contentTypeName","fetchAssets","getAssets","assets","asset","fields","thumbnail","file","url","fetchContentTypes","getContentTypes","uniqBy","isValidLinkedContentType","embedType","filter","val","typeVal","linkContentType","reduce","pre","cur","ct","isEmbeddingEnabled","CommandPaletteActionBuilder","permissions","maybeBuildEmbedAction","callback","isAsset","maybeBuildCreateAndEmbedAction","canCreateAsset","canCreateEntryOfContentType","commandPanel","colorWhite","boxShadow","border","colorElementDark","fontFamily","fontStackPrimary","overflowY","commandPanelList","item","fontSizeM","spacingXs","borderBottom","colorTextDark","divider","letterSpacing","letterSpacingWide","fontSizeS","textTransform","marginRight","skeletonContainer","textAlign","whiteSpace","overflow","textOverflow","alignItems","navBar","bottom","colorElementLightest","loader","instruction","colorTextLight","closeButton","itemPropType","label","CommandPanelItem","listItemRef","componentDidUpdate","scrollIntoView","index","classNames","ref","number","Instruction","CommandPanel","state","selectedKey","handleKeyboard","setState","selectedItem","renderNavigationBar","breadcrumb","renderStatusBar","instructions","isUpdating","renderSkeleton","getDerivedStateFromProps","itemsHasUpdated","originalItems","searchStringHasUpdated","searchString","originalSearchString","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","renderGroups","groups","group","groupName","renderItems","cn","testId","isLoading","arrayOf","DEFAULT_POSITION","left","CommandPalette","anchorPosition","panelPosition","paletteDimensions","bindEventListeners","handleScroll","handleOutsideClick","removeEventListeners","palette","isClosed","requestUpdate","throttle","currentCommand","createCommands","leading","trailing","createCommand","onCreateAndEmbedEntity","contentTypeId","createAsset","createEntry","createEntity","createContentTypeActions","actionBuilder","clearCommand","createAssetActions","nodeName","updatePanelPosition","allEntries","isComponentMounted","createInitialCommands","allContentTypes","contentTypeActions","flatten","prevState","getBoundingClientRect","cancel","window","ReactDOM","createPortal","outline","minWidth","CommandPanelMenu","anchorRect","getRangeAt","PureComponent","embedsEnabled","CommandMark","CommandPalettePlugin","decorateNode","_node","others","renderEditor","_props","commandMark","isVoidBlockFirstAndFocused","getBlocks","first","focusBlock","insertParagraphAndFocusToStartOfDocument","moveToStartOfDocument","InsertBeforeFirstVoidBlockPlugin","buildPlugins","TrailingBlock","NewLinePlugin","EntryEmbedDropdown","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Toolbar","headingMenuOpen","getValidationInfo","onChange","toggleEmbedDropdown","isEmbedDropdownOpen","handleEmbedDropdownClose","renderEmbeds","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","canAccessAssets","numEnabledEmbeds","EmbeddedEntityBlock","toggleHeadingMenu","closeHeadingMenu","isAnyHyperlinkEnabled","isAnyListEnabled","isAnyMarkEnabled","getIn","nativeSticky","StickyToolbarWrapper","STYLE_EDITOR_BORDER","borderTop","minHeight","overflowWrap","webkitUserModify","cursor","hiddenToolbar","enabled","createSlateValue","contentfulDocument","toSlatejsDocument","Value","fromJSON","BasicEditor","normalizedValue","EMPTY_SLATE_DOCUMENT","EMPTY_DOCUMENT","ConnectedRichTextEditor","lastOperations","List","DOCUMENT","createRef","slatePlugins","operations","isRelevantOperation","callOnChange","debounce","doc","toContentfulDocument","handleKeyDown","ESC","keyCode","currentTarget","blur","shouldComponentUpdate","nextProps","nextState","isStateValueUpdate","is","isPropsValueUpdate","prevProps","isIncomingChange","deepEquals","isDocumentChanged","isToolbarHidden","current","Editor","op","properties","RichTextEditor","isInitiallyDisabled","otherProps","value1","value2","lastRemoteValue","setValue","externalReset"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-rich-text.esm.js","sources":["../src/RichTextEditor.styles.ts","../src/constants/Schema.ts","../src/plugins/shared/ToolbarButton.tsx","../src/helpers/editor.ts","../src/helpers/deserializer.ts","../src/ContentfulEditorProvider.ts","../src/plugins/Hr/index.tsx","../src/helpers/validations.ts","../src/SdkProvider.tsx","../src/plugins/Heading/index.tsx","../src/plugins/Quote/index.tsx","../src/plugins/List/index.tsx","../src/plugins/Bold/index.tsx","../src/plugins/Code/index.tsx","../src/plugins/Italic/index.tsx","../src/plugins/Underline/index.tsx","../../../node_modules/regenerator-runtime/runtime.js","../src/helpers/truncate.ts","../src/plugins/Hyperlink/EntryAssetTooltip.tsx","../src/plugins/shared/EntityStatusIcon.tsx","../src/plugins/shared/FetchingWrappedEntryCard.tsx","../src/plugins/shared/FetchingWrappedAssetCard.tsx","../src/helpers/getLinkedContentTypeIdsForNodeType.ts","../src/plugins/Hyperlink/HyperlinkModal.tsx","../src/plugins/Hyperlink/index.tsx","../src/plugins/Table/helpers.ts","../src/TrackingProvider.tsx","../src/plugins/Table/actions/addRow.ts","../src/plugins/Table/actions/addColumn.ts","../src/plugins/Table/actions/setHeader.ts","../src/plugins/Table/TableActions.tsx","../src/plugins/Table/index.tsx","../src/plugins/EmbeddedEntity/index.tsx","../src/plugins/EmbeddedEntityBlock/LinkedEntityBlock.tsx","../src/helpers/newEntitySelectorConfigFromRichTextField.ts","../src/plugins/EmbeddedEntityBlock/Util.ts","../src/plugins/EmbeddedEntityBlock/ToolbarIcon.tsx","../src/plugins/EmbeddedEntityBlock/index.tsx","../src/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.tsx","../src/plugins/EmbeddedEntityInline/Util.ts","../src/plugins/EmbeddedEntityInline/index.tsx","../src/Toolbar/EmbedEntityWidget.tsx","../src/Toolbar/index.tsx","../src/Toolbar/StickyToolbarWrapper.tsx","../src/plugins/Paste/sanitizers/helpers.tsx","../src/plugins/Paste/sanitizers/removeComments.tsx","../src/plugins/Paste/sanitizers/sanitizeTables.tsx","../src/plugins/Paste/sanitizers/sanitizeEntityBlocks.tsx","../src/plugins/Paste/index.tsx","../src/plugins/Paragraph/index.tsx","../src/plugins/NewLine/index.tsx","../src/plugins/InsertBeforeFirstVoidBlock/index.tsx","../src/helpers/sanitizeSlateDoc.ts","../src/plugins/TrailingParagraph/index.ts","../src/RichTextEditor.tsx","../src/dialogs/HypelinkDialog/HyperlinkDialog.jsx","../src/dialogs/openRichTextDialog.tsx","../src/dialogs/renderRichTextDialog.tsx"],"sourcesContent":["import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nconst STYLE_EDITOR_BORDER = `1px solid ${tokens.gray400}`;\n\nexport const styles = {\n root: css({\n position: 'relative',\n }),\n editor: css({\n borderRadius: `0 0 ${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium}`,\n border: STYLE_EDITOR_BORDER,\n borderTop: 0,\n padding: '20px',\n fontSize: tokens.spacingM,\n fontFamily: tokens.fontStackPrimary,\n minHeight: '400px',\n background: tokens.colorWhite,\n outline: 'none',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n webkitUserModify: 'read-write-plaintext-only',\n a: {\n span: {\n cursor: 'not-allowed',\n '&:hover': {\n cursor: 'not-allowed',\n },\n },\n },\n // We need to reset LIC style due to conflicts between PARAGRAPH styles\n 'ul > li > div': {\n margin: 0,\n },\n }),\n hiddenToolbar: css({\n borderTop: STYLE_EDITOR_BORDER,\n }),\n enabled: css({\n background: tokens.colorWhite,\n a: {\n span: {\n cursor: 'pointer',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n },\n }),\n disabled: css({\n background: tokens.gray100,\n }),\n};\n","import {\n BLOCKS,\n INLINES,\n TOP_LEVEL_BLOCKS,\n VOID_BLOCKS,\n CONTAINERS,\n} from '@contentful/rich-text-types';\n\nconst inlines = Object.values(INLINES).map((type) => ({ type }));\n\nexport default {\n document: {\n nodes: [\n {\n types: TOP_LEVEL_BLOCKS.map((type) => ({ type })),\n },\n ],\n },\n\n blocks: {\n [BLOCKS.PARAGRAPH]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_1]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_2]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_3]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_4]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_5]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_6]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n\n ...VOID_BLOCKS.reduce(\n (blocks, nodeType) => ({\n ...blocks,\n [nodeType]: { isVoid: true },\n }),\n {}\n ),\n\n // TODO: add list schema\n\n [BLOCKS.QUOTE]: {\n nodes: [\n {\n match: [CONTAINERS[BLOCKS.QUOTE].map((type) => ({ type }))],\n min: 1,\n },\n ],\n normalize: (editor, error) => {\n if (error.code === 'child_type_invalid') {\n return editor.unwrapBlockByKey(error.node.key, BLOCKS.QUOTE);\n }\n },\n },\n },\n\n inlines: {\n [INLINES.HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ENTRY_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ASSET_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.EMBEDDED_ENTRY]: {\n isVoid: true,\n },\n },\n};\n","import React, { Component } from 'react';\nimport { css, cx } from 'emotion';\nimport { Button, Tooltip } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\n\nconst styles = {\n button: css({\n height: '30px',\n width: '30px',\n marginLeft: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\n }),\n\n tooltip: css({\n zIndex: Number(tokens.zIndexTooltip),\n }),\n};\n\ninterface ToolbarButtonProps {\n onClick: React.MouseEventHandler;\n isActive?: boolean;\n isDisabled?: boolean;\n children: any;\n title: string;\n className?: string;\n testId?: string;\n}\n\nexport class ToolbarButton extends Component<ToolbarButtonProps> {\n handleClick = (event) => {\n event.preventDefault();\n this.props.onClick(event);\n };\n\n render() {\n const { title, testId, isActive, children, className, isDisabled = false } = this.props;\n\n const button = (\n <Button\n className={cx(styles.button, className)}\n isDisabled={isDisabled}\n startIcon={children}\n onClick={this.handleClick}\n testId={testId}\n variant={isActive ? 'secondary' : 'transparent'}\n size=\"small\"\n />\n );\n\n if (title) {\n return (\n <Tooltip className={styles.tooltip} placement=\"bottom\" content={title}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n }\n}\n","import { Text, Editor, Element, Transforms, Path, Range } from 'slate';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { CustomElement } from '../types';\nimport { Link } from '@contentful/field-editor-reference/dist/types';\nimport { SPEditor } from '@udecode/plate-core';\n\nexport const LINK_TYPES: INLINES[] = [\n INLINES.HYPERLINK,\n INLINES.ENTRY_HYPERLINK,\n INLINES.ASSET_HYPERLINK,\n];\nconst LIST_TYPES: BLOCKS[] = [BLOCKS.OL_LIST, BLOCKS.UL_LIST];\n\nexport function isBlockSelected(editor, type: string): boolean {\n const [match] = Array.from(\n Editor.nodes(editor, {\n match: (node) => Element.isElement(node) && (node as CustomElement).type === type,\n })\n );\n return !!match;\n}\n\nexport function isVoid(editor, element): boolean {\n const { isVoid: originalIsVoid } = editor;\n\n return element.isVoid || originalIsVoid(element);\n}\n\nexport function hasSelectionText(editor) {\n return editor.selection\n ? Editor.node(editor, editor.selection.focus.path).some(\n (node) => Text.isText(node) && node.text !== ''\n )\n : false;\n}\n\ntype NodeEntry = [CustomElement, Path];\ntype NodeType = BLOCKS | INLINES;\nexport function getNodeEntryFromSelection(\n editor,\n nodeTypeOrTypes: NodeType | NodeType[]\n): NodeEntry | [] {\n if (!editor.selection) return [];\n const nodeTypes = Array.isArray(nodeTypeOrTypes) ? nodeTypeOrTypes : [nodeTypeOrTypes];\n const { path } = editor.selection.focus;\n for (let i = 0; i < path.length; i++) {\n const nodeEntry = Editor.node(editor, path.slice(0, i + 1)) as NodeEntry;\n if (nodeTypes.includes(nodeEntry[0].type as NodeType)) return nodeEntry;\n }\n return [];\n}\n\nexport function isNodeTypeSelected(editor, nodeType: BLOCKS | INLINES): boolean {\n if (!editor) return false;\n const [node] = getNodeEntryFromSelection(editor, nodeType);\n return !!node;\n}\n\nexport function moveToTheNextLine(editor) {\n Transforms.move(editor, { distance: 1, unit: 'line' });\n}\n\nexport function moveToThePreviousLine(editor) {\n Transforms.move(editor, { distance: 1, unit: 'line', reverse: true });\n}\n\nexport function toggleBlock(editor, type: string): void {\n const isActive = isBlockSelected(editor, type);\n const isList = LIST_TYPES.includes(type as BLOCKS);\n const isQuote = type === BLOCKS.QUOTE;\n\n Transforms.unwrapNodes(editor, {\n match: (node) => {\n if (Editor.isEditor(node) || !Element.isElement(node)) {\n return false;\n }\n\n // Lists\n if (isList && LIST_TYPES.includes((node as CustomElement).type as BLOCKS)) {\n return true;\n }\n\n // Quotes\n if (isQuote && (node as CustomElement).type === BLOCKS.QUOTE) {\n return true;\n }\n\n return false;\n },\n split: true,\n });\n const newProperties: Partial<CustomElement> = {\n type: isActive\n ? BLOCKS.PARAGRAPH\n : isList\n ? BLOCKS.LIST_ITEM\n : isQuote\n ? BLOCKS.PARAGRAPH\n : type,\n };\n Transforms.setNodes(editor, newProperties);\n\n if (!isActive && (isList || isQuote)) {\n const block = {\n type,\n data: {},\n children: [],\n };\n Transforms.wrapNodes(editor, block);\n }\n}\n\nexport function getElementFromCurrentSelection(editor) {\n if (!editor.selection) return [];\n\n return Array.from(\n Editor.nodes(editor, {\n at: editor.selection.focus,\n match: (node) => Element.isElement(node),\n })\n ).flat();\n}\n\nexport function isList(editor) {\n const element = getElementFromCurrentSelection(editor);\n\n return element.some(\n (element) =>\n Element.isElement(element) && LIST_TYPES.includes((element as CustomElement).type as BLOCKS)\n );\n}\n\nexport function getTableSize(\n table: CustomElement\n): Record<'numRows' | 'numColumns', number> | null {\n const numRows = table.children.length;\n if (!numRows) return null;\n const [firstRow] = table.children;\n const numColumns = (firstRow as CustomElement).children?.length;\n return { numRows, numColumns };\n}\n\nexport function isFirstChild(path: Path) {\n return path[path.length - 1] === 0;\n}\n\ninterface InsertLinkOptions {\n text: string;\n type: INLINES.HYPERLINK | INLINES.ENTRY_HYPERLINK | INLINES.ASSET_HYPERLINK;\n url?: string;\n target?: Link;\n path?: Path;\n}\n\nexport function insertLink(editor, options: InsertLinkOptions) {\n if (editor.selection) {\n wrapLink(editor, options);\n }\n}\n\nexport function isLinkActive(editor) {\n const [link] = Array.from(\n Editor.nodes(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n LINK_TYPES.includes((node as CustomElement).type as INLINES),\n })\n );\n return !!link;\n}\n\nexport function unwrapLink(editor) {\n Transforms.unwrapNodes(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n LINK_TYPES.includes((node as CustomElement).type as INLINES),\n });\n}\n\nexport function wrapLink(editor, { text, url, target, type, path }: InsertLinkOptions) {\n if (isLinkActive(editor) && !path) {\n unwrapLink(editor);\n }\n\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const link = {\n type,\n data: {},\n children: isCollapsed ? [{ text }] : [],\n };\n\n if (url) {\n link.data = { uri: url };\n }\n\n if (target) {\n link.data = { target };\n }\n\n // TODO: always set the selection to the end of the inserted link\n if (path) {\n Transforms.setNodes(editor, link, { at: path });\n Transforms.insertText(editor, text, { at: path });\n Transforms.select(editor, path);\n } else if (isCollapsed) {\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n Transforms.delete(editor);\n Transforms.insertText(editor, text);\n Transforms.collapse(editor, { edge: 'end' });\n }\n}\n\nexport function getAncestorPathFromSelection(editor: SPEditor) {\n if (!editor.selection) return undefined;\n\n return Path.levels(editor.selection.focus.path).find((level) => level.length === 1);\n}\n\nexport function shouldUnwrapBlockquote(editor: SPEditor, type: BLOCKS) {\n const isQuoteSelected = isBlockSelected(editor, BLOCKS.QUOTE);\n const isValidType = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n\n BLOCKS.HR,\n ].includes(type);\n\n return isQuoteSelected && isValidType;\n}\n\nexport function unwrapFromRoot(editor: SPEditor) {\n const ancestorPath = getAncestorPathFromSelection(editor);\n Transforms.unwrapNodes(editor, { at: ancestorPath });\n}\n","import {\n getPlatePluginOptions,\n SPEditor,\n Deserialize,\n GetNodeDeserializerRule,\n} from '@udecode/plate-core';\nimport { getLeafDeserializer, getElementDeserializer } from '@udecode/plate-common';\n\nexport function deserializeLeaf(type: string, rules: GetNodeDeserializerRule[]): Deserialize {\n return function (editor: SPEditor) {\n const pluginOptions = getPlatePluginOptions(editor, type);\n\n return {\n leaf: getLeafDeserializer({\n type,\n rules,\n ...pluginOptions.deserialize,\n }),\n };\n };\n}\n\nexport function deserializeElement(type: string, rules: GetNodeDeserializerRule[]): Deserialize {\n return function (editor: SPEditor) {\n const pluginOptions = getPlatePluginOptions(editor, type);\n\n return {\n element: getElementDeserializer({\n type,\n rules,\n ...pluginOptions.deserialize,\n }),\n };\n };\n}\n","import constate from 'constate';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { useStoreEditorRef } from '@udecode/plate-core';\n\nexport function getContentfulEditorId(sdk: FieldExtensionSDK) {\n const { entry, field } = sdk;\n const entryId = entry.getSys().id;\n\n return `rich-text-editor-${entryId}-${field.id}-${field.locale}`;\n}\n\ninterface useContentfulEditorHookProps {\n sdk: FieldExtensionSDK;\n}\n\nfunction useContentfulEditorHook({ sdk }: useContentfulEditorHookProps) {\n const editorId = getContentfulEditorId(sdk);\n const editor = useStoreEditorRef(editorId);\n\n return editor;\n}\n\nexport const [ContentfulEditorProvider, useContentfulEditor] = constate(useContentfulEditorHook);\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { HorizontalRuleIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { Transforms } from 'slate';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { getPlatePluginTypes, getRenderElement, PlatePlugin, SPEditor } from '@udecode/plate-core';\nimport { getText, setNodes } from '@udecode/plate-common';\nimport {\n getNodeEntryFromSelection,\n isBlockSelected,\n moveToTheNextLine,\n shouldUnwrapBlockquote,\n unwrapFromRoot,\n} from '../../helpers/editor';\nimport { CustomSlatePluginOptions } from '../../types';\nimport { deserializeElement } from '../../helpers/deserializer';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n container: css`\n margin: 0 0 ${tokens.spacingL};\n `,\n hr: css`\n margin: 0;\n height: ${tokens.spacingM};\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: ${tokens.gray300};\n top: 50%;\n }\n `,\n hrSelected: css`\n &::after {\n background: ${tokens.colorPrimary};\n -webkit-box-shadow: 0px 0px 5px ${tokens.colorPrimary};\n box-shadow: 0px 0px 5px ${tokens.colorPrimary};\n }\n `,\n};\n\ninterface ToolbarHrButtonProps {\n isDisabled?: boolean;\n}\n\nexport function withHrEvents(editor: SPEditor) {\n return (event: React.KeyboardEvent) => {\n if (!editor) return;\n\n const isEnter = event.keyCode === 13;\n const [, pathToSelectedHr] = getNodeEntryFromSelection(editor, BLOCKS.HR);\n\n if (pathToSelectedHr) {\n if (shouldUnwrapBlockquote(editor, BLOCKS.HR)) {\n unwrapFromRoot(editor);\n }\n\n if (isEnter) {\n event.preventDefault();\n moveToTheNextLine(editor);\n } else if (event.key === 'Backspace') {\n event.preventDefault();\n Transforms.removeNodes(editor, { at: pathToSelectedHr });\n }\n }\n };\n}\n\nexport function ToolbarHrButton(props: ToolbarHrButtonProps) {\n const editor = useContentfulEditor();\n\n function handleOnClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n if (shouldUnwrapBlockquote(editor, BLOCKS.HR)) {\n unwrapFromRoot(editor);\n }\n\n const hr = {\n type: BLOCKS.HR,\n data: {},\n children: [{ text: '' }],\n isVoid: true,\n };\n\n const hasText = !!getText(editor, editor.selection.focus.path);\n hasText ? Transforms.insertNodes(editor, hr) : setNodes(editor, hr);\n\n // Move focus to the next paragraph (added by TrailingParagraph plugin)\n moveToTheNextLine(editor);\n\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"HR\"\n isDisabled={props.isDisabled}\n onClick={handleOnClick}\n testId=\"hr-toolbar-button\"\n isActive={isBlockSelected(editor, BLOCKS.HR)}>\n <HorizontalRuleIcon />\n </ToolbarButton>\n );\n}\n\nexport function Hr(props: Slate.RenderLeafProps) {\n const isSelected = Slate.useSelected();\n const isFocused = Slate.useFocused();\n\n return (\n <div {...props.attributes} className={styles.container}>\n <div contentEditable={false}>\n <hr className={cx(styles.hr, isSelected && isFocused ? styles.hrSelected : undefined)} />\n </div>\n {props.children}\n </div>\n );\n}\n\nexport function createHrPlugin(): PlatePlugin {\n return {\n renderElement: getRenderElement(BLOCKS.HR),\n pluginKeys: BLOCKS.HR,\n onKeyDown: withHrEvents,\n voidTypes: getPlatePluginTypes(BLOCKS.HR),\n deserialize: deserializeElement(BLOCKS.HR, [\n {\n nodeNames: ['HR'],\n },\n ]),\n };\n}\n\nexport const withHrOptions: CustomSlatePluginOptions = {\n [BLOCKS.HR]: {\n type: BLOCKS.HR,\n component: Hr,\n },\n};\n","/* eslint-disable you-dont-need-lodash-underscore/find */\nimport find from 'lodash/find';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport { BLOCKS, INLINES, TOP_LEVEL_BLOCKS } from '@contentful/rich-text-types';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\n\n// TODO: Move these into separate package (maybe rich-text-types) and share with FE.\nexport const VALIDATIONS = {\n ENABLED_MARKS: 'enabledMarks',\n ENABLED_NODE_TYPES: 'enabledNodeTypes',\n};\nexport const DEFAULT_ENABLED_NODE_TYPES = [BLOCKS.DOCUMENT, BLOCKS.PARAGRAPH, 'text'];\n\nexport const VALIDATABLE_NODE_TYPES = ([] as Array<BLOCKS | INLINES>)\n .concat(TOP_LEVEL_BLOCKS)\n .filter((type) => type !== BLOCKS.PARAGRAPH)\n .concat(Object.values(INLINES));\n\n// TODO: Memoize\nconst getRichTextValidation = (field, validationType) =>\n flow(\n (v) => find(v, validationType),\n (v) => get(v, validationType)\n )(field.validations);\n\nconst isFormattingOptionEnabled = (field, validationType, nodeTypeOrMark) => {\n const enabledFormattings = getRichTextValidation(field, validationType);\n\n // TODO: In the future, validations will always be opt-in. In that case\n // we don't need this step.\n if (enabledFormattings === undefined) {\n return true;\n }\n\n return DEFAULT_ENABLED_NODE_TYPES.concat(enabledFormattings).includes(nodeTypeOrMark);\n};\n\nexport const isNodeTypeEnabled = (field: FieldExtensionSDK['field'], nodeType): boolean =>\n isFormattingOptionEnabled(field, VALIDATIONS.ENABLED_NODE_TYPES, nodeType);\n\nexport const isMarkEnabled = (field: FieldExtensionSDK['field'], mark) =>\n isFormattingOptionEnabled(field, VALIDATIONS.ENABLED_MARKS, mark);\n","import * as React from 'react';\nimport constate from 'constate';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\n\ninterface SdkProviderProps {\n sdk: FieldExtensionSDK;\n}\n\nfunction useSdk({ sdk }: SdkProviderProps) {\n const sdkMemo = React.useMemo<FieldExtensionSDK>(() => sdk, []); // eslint-disable-line\n\n return sdkMemo;\n}\n\nexport const [SdkProvider, useSdkContext] = constate(useSdk);\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css, cx } from 'emotion';\nimport { Menu, Button } from '@contentful/f36-components';\nimport { ChevronDownIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { Editor, Transforms, Node } from 'slate';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport {\n PlatePlugin,\n getRenderElement,\n SPEditor,\n getPlatePluginOptions,\n} from '@udecode/plate-core';\nimport { insertNodes, setNodes, toggleNodeType } from '@udecode/plate-common';\nimport { CustomElement, CustomSlatePluginOptions } from '../../types';\nimport {\n getElementFromCurrentSelection,\n hasSelectionText,\n shouldUnwrapBlockquote,\n unwrapFromRoot,\n} from '../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { useSdkContext } from '../../SdkProvider';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n dropdown: {\n root: css`\n font-weight: ${tokens.fontWeightDemiBold};\n `,\n [BLOCKS.PARAGRAPH]: css`\n font-size: ${tokens.fontSizeL};\n `,\n [BLOCKS.HEADING_1]: css`\n font-size: 1.625rem;\n `,\n [BLOCKS.HEADING_2]: css`\n font-size: 1.4375rem;\n `,\n [BLOCKS.HEADING_3]: css`\n font-size: 1.25rem;\n `,\n [BLOCKS.HEADING_4]: css`\n font-size: 1.125rem;\n `,\n [BLOCKS.HEADING_5]: css`\n font-size: 1rem;\n `,\n [BLOCKS.HEADING_6]: css`\n font-size: 0.875rem;\n `,\n },\n headings: {\n root: css`\n font-weight: ${tokens.fontWeightMedium};\n line-height: 1.3;\n margin: 0 0 ${tokens.spacingS};\n `,\n [BLOCKS.HEADING_1]: css`\n font-size: 1.875rem;\n `,\n [BLOCKS.HEADING_2]: css`\n font-size: 1.5625rem;\n `,\n [BLOCKS.HEADING_3]: css`\n font-size: 1.375rem;\n `,\n [BLOCKS.HEADING_4]: css`\n font-size: 1.25rem;\n `,\n [BLOCKS.HEADING_5]: css`\n font-size: 1.125rem;\n `,\n [BLOCKS.HEADING_6]: css`\n font-size: 1rem;\n `,\n },\n};\n\nexport function withHeadingEvents(editor: SPEditor) {\n return (event: React.KeyboardEvent) => {\n if (!editor.selection) return;\n\n // Enter a new line on a heading element\n const headings: string[] = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n ];\n const [currentFragment] = Editor.fragment(\n editor,\n editor.selection.focus.path\n ) as CustomElement[];\n const isEnter = event.keyCode === 13;\n const isCurrentFragmentAHeading = headings.includes(currentFragment.type);\n\n if (isEnter && isCurrentFragmentAHeading) {\n event.preventDefault();\n\n const text = { text: '' };\n const paragraph = { type: BLOCKS.PARAGRAPH, data: {}, children: [text] };\n const heading = { type: currentFragment.type, data: {}, children: [text] };\n\n if (hasSelectionText(editor)) {\n const currentOffset = editor.selection.focus.offset;\n const currentTextLength = Node.string(currentFragment).length;\n const cursorIsAtTheBeginning = currentOffset === 0;\n const cursorIsAtTheEnd = currentTextLength === currentOffset;\n\n if (cursorIsAtTheBeginning) {\n insertNodes(editor, paragraph, { at: editor.selection });\n } else if (cursorIsAtTheEnd) {\n insertNodes(editor, paragraph);\n } else {\n // Otherwise the cursor is in the middle\n Transforms.splitNodes(editor);\n setNodes(editor, paragraph);\n }\n } else {\n setNodes(editor, paragraph);\n insertNodes(editor, heading);\n }\n }\n\n // Toggle heading blocks when pressing cmd/ctrl+alt+1|2|3|4|5|6\n const headingKeyCodes = {\n 49: BLOCKS.HEADING_1,\n 50: BLOCKS.HEADING_2,\n 51: BLOCKS.HEADING_3,\n 52: BLOCKS.HEADING_4,\n 53: BLOCKS.HEADING_5,\n 54: BLOCKS.HEADING_6,\n };\n const isMod = event.ctrlKey || event.metaKey;\n const isAltOrOption = event.altKey;\n const headingKey = headingKeyCodes[event.keyCode];\n\n if (isMod && isAltOrOption && headingKey) {\n event.preventDefault();\n\n if (shouldUnwrapBlockquote(editor, headingKey)) {\n unwrapFromRoot(editor);\n }\n\n toggleNodeType(editor, { activeType: headingKey, inactiveType: BLOCKS.PARAGRAPH });\n }\n };\n}\n\nconst LABELS = {\n [BLOCKS.PARAGRAPH]: 'Normal text',\n [BLOCKS.HEADING_1]: 'Heading 1',\n [BLOCKS.HEADING_2]: 'Heading 2',\n [BLOCKS.HEADING_3]: 'Heading 3',\n [BLOCKS.HEADING_4]: 'Heading 4',\n [BLOCKS.HEADING_5]: 'Heading 5',\n [BLOCKS.HEADING_6]: 'Heading 6',\n};\n\ninterface ToolbarHeadingButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarHeadingButton(props: ToolbarHeadingButtonProps) {\n const sdk = useSdkContext();\n const editor = useContentfulEditor();\n const [isOpen, setOpen] = React.useState(false);\n const [selected, setSelected] = React.useState<string>(BLOCKS.PARAGRAPH);\n\n React.useEffect(() => {\n if (!editor?.selection) return;\n\n const [element] = getElementFromCurrentSelection(editor);\n const type = (element as CustomElement).type;\n\n setSelected(LABELS[type] ? type : BLOCKS.PARAGRAPH);\n }, [editor?.operations, editor?.selection]); // eslint-disable-line\n\n const [nodeTypesByEnablement, someHeadingsEnabled] = React.useMemo(() => {\n const nodeTypesByEnablement = Object.fromEntries(\n Object.keys(LABELS).map((nodeType) => [nodeType, isNodeTypeEnabled(sdk.field, nodeType)])\n );\n const someHeadingsEnabled = Object.values(nodeTypesByEnablement).filter(Boolean).length > 0;\n return [nodeTypesByEnablement, someHeadingsEnabled];\n }, [sdk.field]);\n\n function handleOnSelectItem(type: BLOCKS): (event: React.MouseEvent<HTMLButtonElement>) => void {\n return (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n setSelected(type);\n setOpen(false);\n\n if (shouldUnwrapBlockquote(editor, type)) {\n unwrapFromRoot(editor);\n }\n\n toggleNodeType(editor, { activeType: type, inactiveType: type });\n\n // TODO: Figure out why focus only works with timeout here.\n setTimeout(() => {\n Slate.ReactEditor.focus(editor);\n }, 0);\n };\n }\n\n if (!editor) return null;\n\n return (\n <Menu isOpen={isOpen} onClose={() => setOpen(false)}>\n <Menu.Trigger>\n <Button\n size=\"small\"\n testId=\"toolbar-heading-toggle\"\n variant=\"transparent\"\n endIcon={<ChevronDownIcon />}\n onClick={() => someHeadingsEnabled && setOpen(!isOpen)}>\n {LABELS[selected]}\n </Button>\n </Menu.Trigger>\n <Menu.List testId=\"dropdown-heading-list\">\n {' '}\n {Object.keys(LABELS)\n .map(\n (nodeType) =>\n nodeTypesByEnablement[nodeType] && (\n <Menu.Item\n key={nodeType}\n isInitiallyFocused={selected === nodeType}\n onClick={handleOnSelectItem(nodeType as BLOCKS)}\n testId={`dropdown-option-${nodeType}`}\n disabled={props.isDisabled}>\n <span className={cx(styles.dropdown.root, styles.dropdown[nodeType])}>\n {LABELS[nodeType]}\n </span>\n </Menu.Item>\n )\n )\n .filter(Boolean)}\n </Menu.List>\n </Menu>\n );\n}\n\nexport function createHeading(Tag, block: BLOCKS) {\n return function Heading(props: Slate.RenderElementProps) {\n return (\n <Tag {...props.attributes} className={cx(styles.headings.root, styles.headings[block])}>\n {props.children}\n </Tag>\n );\n };\n}\n\nexport const H1 = createHeading('h1', BLOCKS.HEADING_1);\nexport const H2 = createHeading('h2', BLOCKS.HEADING_2);\nexport const H3 = createHeading('h3', BLOCKS.HEADING_3);\nexport const H4 = createHeading('h4', BLOCKS.HEADING_4);\nexport const H5 = createHeading('h1', BLOCKS.HEADING_5);\nexport const H6 = createHeading('h1', BLOCKS.HEADING_6);\n\nexport function createHeadingPlugin(): PlatePlugin {\n const headings: string[] = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n ];\n\n return {\n renderElement: getRenderElement(headings),\n pluginKeys: headings,\n onKeyDown: withHeadingEvents,\n deserialize: (editor) => {\n return {\n element: headings.map((headingType, index) => {\n const options = getPlatePluginOptions(editor, headingType);\n\n return {\n type: headingType,\n deserialize: (element) => {\n const isHeading = element.nodeName === `H${index + 1}`;\n\n if (!isHeading) return;\n\n return {\n type: headingType,\n };\n },\n ...options.deserialize,\n };\n }),\n };\n },\n };\n}\n\nexport const withHeadingOptions: CustomSlatePluginOptions = {\n [BLOCKS.HEADING_1]: {\n type: BLOCKS.HEADING_1,\n component: H1,\n },\n [BLOCKS.HEADING_2]: {\n type: BLOCKS.HEADING_2,\n component: H2,\n },\n [BLOCKS.HEADING_3]: {\n type: BLOCKS.HEADING_3,\n component: H3,\n },\n [BLOCKS.HEADING_4]: {\n type: BLOCKS.HEADING_4,\n component: H4,\n },\n [BLOCKS.HEADING_5]: {\n type: BLOCKS.HEADING_5,\n component: H5,\n },\n [BLOCKS.HEADING_6]: {\n type: BLOCKS.HEADING_6,\n component: H6,\n },\n};\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { QuoteIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { Transforms, Editor, Node, Element, Text } from 'slate';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { PlatePlugin, SPEditor, getRenderElement } from '@udecode/plate-core';\nimport { CustomElement } from '../../types';\nimport { CustomSlatePluginOptions } from 'types';\nimport {\n isBlockSelected,\n toggleBlock,\n hasSelectionText,\n getElementFromCurrentSelection,\n isNodeTypeSelected,\n} from '../../helpers/editor';\nimport { deserializeElement } from '../../helpers/deserializer';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n blockquote: css({\n margin: '0 0 1.3125rem',\n borderLeft: `6px solid ${tokens.gray200}`,\n paddingLeft: '0.875rem',\n fontStyle: 'normal',\n '& a': {\n color: 'inherit',\n },\n }),\n};\n\ninterface ToolbarQuoteButtonProps {\n isDisabled?: boolean;\n}\n\nconst createBlockQuote = (editor: SPEditor) => {\n if (!editor.selection) return;\n\n toggleBlock(editor, BLOCKS.QUOTE);\n};\n\nexport function withQuoteEvents(editor: SPEditor) {\n return (event: React.KeyboardEvent) => {\n if (!editor.selection) return;\n\n const [currentFragment] = Editor.fragment(\n editor,\n editor.selection.focus.path\n ) as CustomElement[];\n const isEnter = event.keyCode === 13;\n\n if (isEnter && currentFragment?.type === BLOCKS.QUOTE) {\n event.preventDefault();\n\n const text = { text: '' };\n const paragraph = { type: BLOCKS.PARAGRAPH, data: {}, children: [text] };\n\n if (hasSelectionText(editor)) {\n const currentOffset = editor.selection.focus.offset;\n const currentTextLength = Node.string(currentFragment).length;\n const cursorIsAtTheBeginning = currentOffset === 0;\n const cursorIsAtTheEnd = currentTextLength === currentOffset;\n\n if (cursorIsAtTheBeginning) {\n Transforms.insertNodes(editor, paragraph, { at: editor.selection });\n } else if (cursorIsAtTheEnd) {\n Transforms.insertNodes(editor, paragraph);\n } else {\n // Otherwise the cursor is in the middle\n Transforms.splitNodes(editor);\n Transforms.setNodes(editor, paragraph);\n }\n } else {\n Transforms.insertNodes(editor, paragraph);\n }\n }\n\n const isBackspace = event.keyCode === 8;\n const isMod = event.ctrlKey || event.metaKey;\n const isShift = event.shiftKey;\n const isOneKey = event.keyCode === 49;\n\n // shift + cmd/ctrl + 1 = shortcut to toggle blockquote\n if (isMod && isShift && isOneKey && !isNodeTypeSelected(editor, BLOCKS.TABLE)) {\n createBlockQuote(editor);\n }\n\n // On backspace, check if quote is empty. If it's empty, switch the current fragment to a paragraph\n if (isBackspace && currentFragment?.type === BLOCKS.QUOTE) {\n const quoteIsEmpty = (\n getElementFromCurrentSelection(editor)[0] as CustomElement\n ).children.every(\n (item) =>\n Element.isElement(item) &&\n item.children.every((item) => Text.isText(item) && item.text === '')\n );\n\n if (quoteIsEmpty) toggleBlock(editor, BLOCKS.PARAGRAPH);\n }\n };\n}\n\nexport function ToolbarQuoteButton(props: ToolbarQuoteButtonProps) {\n const editor = useContentfulEditor();\n\n function handleOnClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor) return;\n\n createBlockQuote(editor);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Blockquote\"\n onClick={handleOnClick}\n testId=\"quote-toolbar-button\"\n isDisabled={props.isDisabled}\n isActive={isBlockSelected(editor, BLOCKS.QUOTE)}>\n <QuoteIcon />\n </ToolbarButton>\n );\n}\n\nexport function Quote(props: Slate.RenderLeafProps) {\n return (\n <blockquote {...props.attributes} className={styles.blockquote}>\n {props.children}\n </blockquote>\n );\n}\n\nexport function createQuotePlugin(): PlatePlugin {\n return {\n pluginKeys: BLOCKS.QUOTE,\n renderElement: getRenderElement(BLOCKS.QUOTE),\n onKeyDown: withQuoteEvents,\n deserialize: deserializeElement(BLOCKS.QUOTE, [{ nodeNames: 'BLOCKQUOTE' }]),\n };\n}\n\nexport const withQuoteOptions: CustomSlatePluginOptions = {\n [BLOCKS.QUOTE]: {\n type: BLOCKS.QUOTE,\n component: Quote,\n },\n};\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css } from 'emotion';\nimport { createListPlugin as createPlateListPlugin } from '@udecode/plate-list';\nimport { BLOCKS, LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';\nimport { ListBulletedIcon, ListNumberedIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { ELEMENT_LI, ELEMENT_UL, ELEMENT_OL, toggleList, ELEMENT_LIC } from '@udecode/plate-list';\nimport { isBlockSelected, unwrapFromRoot, shouldUnwrapBlockquote } from '../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { CustomSlatePluginOptions } from '../../types';\nimport tokens from '@contentful/f36-tokens';\nimport { useSdkContext } from '../../SdkProvider';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\ninterface ToolbarListButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarListButton(props: ToolbarListButtonProps) {\n const sdk = useSdkContext();\n const editor = useContentfulEditor();\n\n function handleClick(type: BLOCKS): (event: React.MouseEvent<HTMLButtonElement>) => void {\n return (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n if (shouldUnwrapBlockquote(editor, type)) {\n unwrapFromRoot(editor);\n }\n\n toggleList(editor, { type });\n\n Slate.ReactEditor.focus(editor);\n };\n }\n\n if (!editor) return null;\n\n return (\n <React.Fragment>\n {isNodeTypeEnabled(sdk.field, BLOCKS.UL_LIST) && (\n <ToolbarButton\n title=\"UL\"\n testId=\"ul-toolbar-button\"\n onClick={handleClick(BLOCKS.UL_LIST)}\n isActive={isBlockSelected(editor, BLOCKS.UL_LIST)}\n isDisabled={props.isDisabled}>\n <ListBulletedIcon />\n </ToolbarButton>\n )}\n {isNodeTypeEnabled(sdk.field, BLOCKS.OL_LIST) && (\n <ToolbarButton\n title=\"OL\"\n testId=\"ol-toolbar-button\"\n onClick={handleClick(BLOCKS.OL_LIST)}\n isActive={isBlockSelected(editor, BLOCKS.OL_LIST)}\n isDisabled={props.isDisabled}>\n <ListNumberedIcon />\n </ToolbarButton>\n )}\n </React.Fragment>\n );\n}\n\nconst listStyles = `\n padding: 0;\n margin: 0 0 1.25rem 1.25rem;\n div:first-child {\n margin: 0;\n line-height: ${tokens.lineHeightDefault};\n }\n`;\n\nconst styles = {\n [BLOCKS.UL_LIST]: css`\n ${listStyles}\n list-style-type: disc;\n ul {\n list-style-type: circle;\n ul {\n list-style-type: square;\n }\n }\n `,\n [BLOCKS.OL_LIST]: css`\n ${listStyles}\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 `,\n [BLOCKS.LIST_ITEM]: css`\n margin: 0;\n list-style: inherit;\n ol,\n ul {\n margin: 0 0 0 ${tokens.spacingL};\n }\n `,\n};\n\nexport function createList(Tag, block: BLOCKS) {\n return function List(props: Slate.RenderElementProps) {\n return (\n <Tag {...props.attributes} className={styles[block]}>\n {props.children}\n </Tag>\n );\n };\n}\n\nexport const UL = createList('ul', BLOCKS.UL_LIST);\nexport const OL = createList('ol', BLOCKS.OL_LIST);\nexport const LI = createList('li', BLOCKS.LIST_ITEM);\n\nexport const withListOptions: CustomSlatePluginOptions = {\n // ELEMENT_LIC is a child of li, slatejs does ul > li > lic + ul\n [ELEMENT_LIC]: {\n type: BLOCKS.PARAGRAPH,\n },\n [ELEMENT_LI]: {\n type: BLOCKS.LIST_ITEM,\n component: LI,\n },\n [ELEMENT_UL]: {\n type: BLOCKS.UL_LIST,\n component: UL,\n },\n [ELEMENT_OL]: {\n type: BLOCKS.OL_LIST,\n component: OL,\n },\n};\n\nexport const createListPlugin = () =>\n createPlateListPlugin({\n validLiChildrenTypes: LIST_ITEM_BLOCKS,\n });\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css } from 'emotion';\nimport { getRenderLeaf, PlatePlugin } from '@udecode/plate-core';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { getToggleMarkOnKeyDown, isMarkActive, toggleMark } from '@udecode/plate-common';\nimport { FormatBoldIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { CustomSlatePluginOptions } from 'types';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\ninterface ToolbarBoldButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarBoldButton(props: ToolbarBoldButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n toggleMark(editor, MARKS.BOLD);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Bold\"\n testId=\"bold-toolbar-button\"\n onClick={handleClick}\n isActive={isMarkActive(editor, MARKS.BOLD)}\n isDisabled={props.isDisabled}>\n <FormatBoldIcon />\n </ToolbarButton>\n );\n}\n\nconst styles = {\n bold: css({\n fontWeight: 600,\n }),\n};\n\nexport function Bold(props: Slate.RenderLeafProps) {\n return (\n <strong {...props.attributes} className={styles.bold}>\n {props.children}\n </strong>\n );\n}\n\nexport function createBoldPlugin(): PlatePlugin {\n return {\n pluginKeys: MARKS.BOLD,\n renderLeaf: getRenderLeaf(MARKS.BOLD),\n onKeyDown: getToggleMarkOnKeyDown(MARKS.BOLD),\n deserialize: () => {\n return {\n leaf: [\n {\n type: MARKS.BOLD,\n deserialize: (element) => {\n // We ignore it otherwise everything will be bold\n const isGoogleBoldWrapper =\n element.id.startsWith('docs-internal-guid') && element.nodeName === 'B';\n\n const isBold =\n ['600', '700', 'bold'].includes(element.style.fontWeight) ||\n ['STRONG', 'B'].includes(element.nodeName);\n\n if (isGoogleBoldWrapper || !isBold) return;\n\n return {\n [MARKS.BOLD]: true,\n };\n },\n },\n ],\n };\n },\n };\n}\n\nexport const withBoldOptions: CustomSlatePluginOptions = {\n [MARKS.BOLD]: {\n type: MARKS.BOLD,\n component: Bold,\n hotkey: ['mod+b'],\n },\n};\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css } from 'emotion';\nimport { PlatePlugin, getRenderLeaf, GetNodeDeserializerRule } from '@udecode/plate-core';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { getToggleMarkOnKeyDown, isMarkActive, toggleMark } from '@udecode/plate-common';\nimport { CodeIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { CustomSlatePluginOptions } from 'types';\nimport { deserializeLeaf } from '../../helpers/deserializer';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\ninterface ToolbarCodeButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarCodeButton(props: ToolbarCodeButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n toggleMark(editor, MARKS.CODE);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Code\"\n testId=\"code-toolbar-button\"\n onClick={handleClick}\n isActive={isMarkActive(editor, MARKS.CODE)}\n isDisabled={props.isDisabled}>\n <CodeIcon />\n </ToolbarButton>\n );\n}\n\nconst styles = {\n code: css({\n fontFamily: 'monospace',\n fontSize: '.9em',\n }),\n};\n\nexport function Code(props: Slate.RenderLeafProps) {\n return (\n <code {...props.attributes} className={styles.code}>\n {props.children}\n </code>\n );\n}\n\nexport function createCodePlugin(): PlatePlugin {\n const deserializeRule: GetNodeDeserializerRule[] = [\n { nodeNames: ['CODE', 'PRE'] },\n { style: { fontFamily: 'monospace' } },\n ];\n\n return {\n pluginKeys: MARKS.CODE,\n renderLeaf: getRenderLeaf(MARKS.CODE),\n onKeyDown: getToggleMarkOnKeyDown(MARKS.CODE),\n deserialize: deserializeLeaf(MARKS.CODE, deserializeRule),\n };\n}\n\nexport const withCodeOptions: CustomSlatePluginOptions = {\n [MARKS.CODE]: {\n type: MARKS.CODE,\n component: Code,\n hotkey: ['mod+/'],\n },\n};\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { css } from 'emotion';\nimport { PlatePlugin, getRenderLeaf, GetNodeDeserializerRule } from '@udecode/plate-core';\nimport { getToggleMarkOnKeyDown, toggleMark, isMarkActive } from '@udecode/plate-common';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { FormatItalicIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { CustomSlatePluginOptions } from '../../types';\nimport { deserializeLeaf } from '../../helpers/deserializer';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\ninterface ToolbarItalicButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarItalicButton(props: ToolbarItalicButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n toggleMark(editor, MARKS.ITALIC);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Italic\"\n testId=\"italic-toolbar-button\"\n onClick={handleClick}\n isActive={isMarkActive(editor, MARKS.ITALIC)}\n isDisabled={props.isDisabled}>\n <FormatItalicIcon />\n </ToolbarButton>\n );\n}\n\nconst styles = {\n italic: css({\n fontStyle: 'italic',\n }),\n};\n\nexport function Italic(props: Slate.RenderLeafProps) {\n return (\n <em {...props.attributes} className={styles.italic}>\n {props.children}\n </em>\n );\n}\n\nexport function createItalicPlugin(): PlatePlugin {\n const deserializeRules: GetNodeDeserializerRule[] = [\n { nodeNames: ['I', 'EM'] },\n {\n style: {\n fontStyle: ['italic'],\n },\n },\n ];\n\n return {\n pluginKeys: MARKS.ITALIC,\n renderLeaf: getRenderLeaf(MARKS.ITALIC),\n onKeyDown: getToggleMarkOnKeyDown(MARKS.ITALIC),\n deserialize: deserializeLeaf(MARKS.ITALIC, deserializeRules),\n };\n}\n\nexport const withItalicOptions: CustomSlatePluginOptions = {\n [MARKS.ITALIC]: {\n type: MARKS.ITALIC,\n component: Italic,\n hotkey: ['mod+i'],\n },\n};\n","import * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { PlatePlugin, getRenderLeaf, GetNodeDeserializerRule } from '@udecode/plate-core';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { getToggleMarkOnKeyDown, toggleMark, isMarkActive } from '@udecode/plate-common';\nimport { FormatUnderlinedIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { CustomSlatePluginOptions } from 'types';\nimport { deserializeLeaf } from '../../helpers/deserializer';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\ninterface ToolbarUnderlineButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarUnderlineButton(props: ToolbarUnderlineButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor?.selection) return;\n\n toggleMark(editor, MARKS.UNDERLINE);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Underline\"\n testId=\"underline-toolbar-button\"\n onClick={handleClick}\n isActive={isMarkActive(editor, MARKS.UNDERLINE)}\n isDisabled={props.isDisabled}>\n <FormatUnderlinedIcon />\n </ToolbarButton>\n );\n}\n\nexport function Underline(props: Slate.RenderLeafProps) {\n return <u {...props.attributes}>{props.children}</u>;\n}\n\nexport function createUnderlinePlugin(): PlatePlugin {\n const deserializeRules: GetNodeDeserializerRule[] = [\n { nodeNames: ['U'] },\n {\n style: {\n textDecoration: ['underline'],\n },\n },\n ];\n\n return {\n pluginKeys: MARKS.UNDERLINE,\n renderLeaf: getRenderLeaf(MARKS.UNDERLINE),\n onKeyDown: getToggleMarkOnKeyDown(MARKS.UNDERLINE),\n deserialize: deserializeLeaf(MARKS.UNDERLINE, deserializeRules),\n };\n}\n\nexport const withUnderlineOptions: CustomSlatePluginOptions = {\n [MARKS.UNDERLINE]: {\n type: MARKS.UNDERLINE,\n component: Underline,\n hotkey: ['mod+u'],\n },\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export function truncate(str, length) {\n if (typeof str === 'string' && str.length > length) {\n return (\n str &&\n str\n .substr(0, length + 1) // +1 to look ahead and be replaced below.\n // Get rid of orphan letters but not one letter words (I, a, 2).\n // Try to not have “.” as last character to avoid awkward “....”.\n .replace(/(\\s+\\S(?=\\S)|\\s*)\\.?.$/, '…')\n );\n }\n\n return str;\n}\n","import * as React from 'react';\nimport {\n ContentEntityType as EntityType,\n ScheduledAction,\n} from '@contentful/field-editor-reference/dist/types';\nimport { entityHelpers, Entry, Asset, FieldExtensionSDK } from '@contentful/field-editor-shared';\nimport { getScheduleTooltipContent } from '@contentful/field-editor-reference';\nimport { truncate } from '../../helpers/truncate';\n\nfunction getEntityInfo({\n entityTitle,\n entityStatus,\n contentTypeName,\n}: {\n entityTitle: string;\n entityStatus: string;\n contentTypeName?: string;\n}) {\n const title = truncate(entityTitle, 60) || 'Untitled';\n\n return `${contentTypeName || 'Asset'} \"${title}\", ${entityStatus}`;\n}\n\ninterface EntryAssetTooltipProps {\n id: string;\n type: EntityType;\n sdk: FieldExtensionSDK;\n}\n\nexport function EntryAssetTooltip({ id, type, sdk }: EntryAssetTooltipProps) {\n const [entityTitle, setEntityTitle] = React.useState('');\n const [entityStatus, setEntityStatus] = React.useState('');\n const [jobs, setJobs] = React.useState<ScheduledAction[]>([]);\n const [isLoading, setIsLoading] = React.useState(true);\n const [hasError, setHasError] = React.useState(false);\n\n React.useEffect(() => {\n async function loadContent() {\n try {\n setIsLoading(true);\n setHasError(false);\n\n const actions = {\n Asset: {\n getEntity: sdk.space.getAsset,\n getEntityTitle: (args) => entityHelpers.getAssetTitle({ ...args, asset: args.entity }),\n },\n Entry: {\n getEntity: sdk.space.getEntry,\n getEntityTitle: (args) => entityHelpers.getEntryTitle({ ...args, entry: args.entity }),\n },\n };\n\n let contentType;\n const entity: Entry | Asset = await actions[type].getEntity(id);\n\n if (entity.sys.contentType) {\n const contentTypeId = entity.sys.contentType.sys.id;\n const contentTypes = sdk.space.getCachedContentTypes();\n contentType = contentTypes.find((ct) => ct.sys.id === contentTypeId);\n }\n\n const entityTitle: string = actions[type].getEntityTitle({\n entity,\n contentType,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n entityType: type,\n });\n\n const jobs = await sdk.space.getEntityScheduledActions(type, id);\n const entityStatus = entityHelpers.getEntryStatus(entity.sys);\n\n setEntityTitle(entityTitle);\n setEntityStatus(entityStatus);\n setJobs(jobs);\n } catch (err) {\n console.log(err);\n setHasError(true);\n } finally {\n setIsLoading(false);\n }\n }\n\n loadContent();\n }, [id, type, sdk]);\n\n if (isLoading) {\n return <>{`Loading ${type.toLowerCase()}...`}</>;\n }\n\n if (hasError) {\n return <>{`${type} missing or inaccessible`}</>;\n }\n\n return (\n <>\n {getEntityInfo({ entityTitle, contentTypeName: type, entityStatus })}{' '}\n {jobs.length > 0 ? getScheduleTooltipContent({ job: jobs[0], jobsCount: jobs.length }) : ''}\n </>\n );\n}\n","import * as React from 'react';\nimport { Entry, Asset } from '@contentful/field-editor-shared';\nimport { useEntities, ScheduledIconWithTooltip } from '@contentful/field-editor-reference';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nconst styles = {\n scheduleIcon: css({\n marginRight: tokens.spacing2Xs,\n }),\n};\n\ninterface EntityStatusIconProps {\n entity: Entry | Asset;\n entityType: 'Entry' | 'Asset';\n}\n\nexport function EntityStatusIcon({ entity, entityType }: EntityStatusIconProps) {\n const { loadEntityScheduledActions } = useEntities();\n\n return (\n <ScheduledIconWithTooltip\n getEntityScheduledActions={loadEntityScheduledActions}\n entityType={entityType}\n entityId={entity.sys.id}>\n <ClockIcon\n className={styles.scheduleIcon}\n size=\"small\"\n color=\"muted\"\n testId=\"schedule-icon\"\n />\n </ScheduledIconWithTooltip>\n );\n}\n","import * as React from 'react';\nimport { EntryCard, MenuItem } from '@contentful/f36-components';\nimport { useEntities, MissingEntityCard, AssetThumbnail } from '@contentful/field-editor-reference';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers, File, isValidImage } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\nimport { EntityStatusIcon } from './EntityStatusIcon';\n\nconst styles = {\n entryCard: css({ cursor: 'pointer' }),\n};\n\ninterface FetchingWrappedEntryCardProps {\n entryId: string;\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n sdk: FieldExtensionSDK;\n onEdit?: () => void;\n onRemove?: () => void;\n}\n\ninterface EntryThumbnailProps {\n file: File;\n}\n\nfunction EntryThumbnail({ file }: EntryThumbnailProps) {\n if (!isValidImage(file)) return null;\n\n return <AssetThumbnail file={file as File} />;\n}\n\nexport function FetchingWrappedEntryCard(props: FetchingWrappedEntryCardProps) {\n const { getOrLoadEntry, entries } = useEntities();\n const [file, setFile] = React.useState<File | null>(null);\n const entry = entries[props.entryId];\n const contentType = React.useMemo(() => {\n if (!entry || entry === 'failed') {\n return undefined;\n }\n return props.sdk.space\n .getCachedContentTypes()\n .find((contentType) => contentType.sys.id === entry.sys.contentType.sys.id);\n }, [props.sdk, entry]);\n const defaultLocaleCode = props.sdk.locales.default;\n\n React.useEffect(() => {\n if (!entry || entry === 'failed') return;\n\n entityHelpers\n .getEntryImage(\n {\n entry,\n contentType,\n localeCode: props.locale,\n defaultLocaleCode,\n },\n props.sdk.space.getAsset\n )\n .then(setFile)\n .catch(() => setFile(null));\n }, [entry, contentType, props.locale, defaultLocaleCode, props.sdk, file]);\n\n React.useEffect(() => {\n getOrLoadEntry(props.entryId);\n }, [props.entryId]); // eslint-disable-line\n\n function renderDropdown() {\n if (!props.onEdit || !props.onRemove) return undefined;\n\n return [\n props.onEdit ? (\n <MenuItem\n key=\"edit\"\n testId=\"card-action-edit\"\n onClick={() => {\n props.onEdit && props.onEdit();\n }}>\n Edit\n </MenuItem>\n ) : null,\n props.onRemove ? (\n <MenuItem\n key=\"delete\"\n testId=\"card-action-remove\"\n onClick={() => {\n props.onRemove && props.onRemove();\n }}>\n Remove\n </MenuItem>\n ) : null,\n ].filter((item) => item);\n }\n\n if (entry === undefined) {\n return <EntryCard size=\"default\" isLoading={true} />;\n }\n\n if (entry === 'failed') {\n return (\n <MissingEntityCard\n entityType=\"Entry\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const entryStatus = entry ? entityHelpers.getEntryStatus(entry.sys) : undefined;\n if (entryStatus === 'deleted') {\n return (\n <MissingEntityCard\n entityType=\"Entry\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const title = entityHelpers.getEntryTitle({\n entry,\n contentType,\n localeCode: props.locale,\n defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n const description = entityHelpers.getEntityDescription({\n entity: entry,\n contentType,\n localeCode: props.locale,\n defaultLocaleCode,\n });\n\n return (\n <EntryCard\n contentType={contentType?.name}\n title={title}\n description={description}\n size=\"default\"\n isSelected={props.isSelected}\n status={entryStatus}\n className={styles.entryCard}\n thumbnailElement={file ? <EntryThumbnail file={file} /> : undefined}\n icon={<EntityStatusIcon entityType=\"Entry\" entity={entry} />}\n withDragHandle={false}\n actions={renderDropdown()}\n />\n );\n}\n","import * as React from 'react';\nimport { AssetCard, AssetType, Menu, Text } from '@contentful/f36-components';\nimport { useEntities, MissingEntityCard } from '@contentful/field-editor-reference';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers, File, shortenStorageUnit } from '@contentful/field-editor-shared';\nimport mimetype from '@contentful/mimetype';\nimport { css } from 'emotion';\nimport get from 'lodash/get';\nimport { EntityStatusIcon } from './EntityStatusIcon';\n\nconst styles = {\n assetCard: css({ cursor: 'pointer' }),\n cardDropdown: css({\n width: '300px',\n }),\n truncated: css({\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }),\n};\ninterface FetchingWrappedAssetCardProps {\n assetId: string;\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n onEdit?: () => void;\n onRemove?: () => unknown;\n sdk: FieldExtensionSDK;\n}\n\nfunction downloadAsset(url: string) {\n window.open(url, '_blank', 'noopener,noreferrer');\n}\n\nexport function renderAssetInfo(props: { entityFile: File }) {\n const { entityFile } = props;\n const fileName = get(entityFile, 'fileName');\n const mimeType = get(entityFile, 'contentType');\n const fileSize = get(entityFile, 'details.size');\n const image = get(entityFile, 'details.image');\n return [\n <Menu.SectionTitle key=\"file-section\">File info</Menu.SectionTitle>,\n fileName && (\n <Menu.Item key=\"file-name\">\n <Text isTruncated>{fileName}</Text>\n </Menu.Item>\n ),\n mimeType && (\n <Menu.Item key=\"file-type\">\n <Text isTruncated>{mimeType}</Text>\n </Menu.Item>\n ),\n fileSize && <Menu.Item key=\"file-size\">{shortenStorageUnit(fileSize, 'B')}</Menu.Item>,\n image && <Menu.Item key=\"file-dimentions\">{`${image.width} × ${image.height}`}</Menu.Item>,\n ].filter((item) => item);\n}\n\nexport function renderActions(props: {\n onEdit?: () => void;\n onRemove?: () => void;\n isDisabled: boolean;\n entityFile?: File;\n}) {\n const { entityFile, isDisabled, onEdit, onRemove } = props;\n\n return [\n <Menu.SectionTitle key=\"section-title\">Actions</Menu.SectionTitle>,\n onEdit ? (\n <Menu.Item key=\"edit\" onClick={onEdit} testId=\"card-action-edit\">\n Edit\n </Menu.Item>\n ) : null,\n entityFile ? (\n <Menu.Item\n key=\"download\"\n onClick={() => {\n if (typeof entityFile.url === 'string') {\n downloadAsset(entityFile.url);\n }\n }}\n testId=\"card-action-download\">\n Download\n </Menu.Item>\n ) : null,\n onRemove ? (\n <Menu.Item key=\"remove\" disabled={isDisabled} onClick={onRemove} testId=\"card-action-remove\">\n Remove\n </Menu.Item>\n ) : null,\n ].filter((item) => item);\n}\n\nexport function FetchingWrappedAssetCard(props: FetchingWrappedAssetCardProps) {\n const { getOrLoadAsset, assets } = useEntities();\n const asset = assets[props.assetId];\n const defaultLocaleCode = props.sdk.locales.default;\n const entityFile: File | undefined = asset?.fields?.file\n ? asset.fields.file[props.locale] || asset.fields.file[defaultLocaleCode]\n : undefined;\n\n React.useEffect(() => {\n getOrLoadAsset(props.assetId);\n }, [props.assetId]); // eslint-disable-line\n\n function getAssetSrc() {\n if (!entityFile?.url) return '';\n\n return `${entityFile.url}?h=300`;\n }\n\n function getFileType(): AssetType {\n const groupToIconMap = {\n image: 'image',\n video: 'video',\n audio: 'audio',\n richtext: 'richtext',\n presentation: 'presentation',\n spreadsheet: 'spreadsheet',\n pdfdocument: 'pdf',\n archive: 'archive',\n plaintext: 'plaintext',\n code: 'code',\n markup: 'markup',\n };\n const archive = groupToIconMap['archive'] as AssetType;\n\n if (!entityFile) {\n return archive;\n }\n\n const groupName: keyof typeof groupToIconMap = mimetype.getGroupLabel({\n type: entityFile.contentType,\n fallbackFileName: entityFile.fileName,\n });\n\n return (groupToIconMap[groupName] as AssetType) || archive;\n }\n\n if (asset === undefined) {\n return <AssetCard size=\"small\" isLoading />;\n }\n\n if (asset === 'failed') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const status = asset ? entityHelpers.getEntryStatus(asset.sys) : undefined;\n if (status === 'deleted') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n asSquare={true}\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const entityTitle = entityHelpers.getAssetTitle({\n asset,\n localeCode: props.locale,\n defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n return (\n <AssetCard\n title={entityTitle}\n isSelected={props.isSelected}\n size=\"small\"\n src={getAssetSrc()}\n type={getFileType()}\n status={status}\n icon={<EntityStatusIcon entityType=\"Asset\" entity={asset} />}\n className={styles.assetCard}\n actions={[\n renderActions({\n entityFile,\n isDisabled: props.isDisabled,\n onEdit: props.onEdit,\n onRemove: props.onRemove,\n }),\n entityFile ? renderAssetInfo({ entityFile }) : null,\n ].filter((item) => item)}\n />\n );\n}\n","/* eslint-disable you-dont-need-lodash-underscore/find */\nimport flow from 'lodash/flow';\nimport find from 'lodash/find';\nimport get from 'lodash/get';\n\n/**\n * Given a field object and a rich text node type, return a list of valid\n * content type IDs associated with the node type, based on that node type's\n * `linkContentType` validation.\n *\n * If there is no such validation or the validation is empty, return an empty\n * array.\n *\n * The navigation here is explained by the `nodes` validation having signature:\n * { nodes: { [nodeType]: validationObject[] } }\n *\n * We defensively navigate through this object because\n * 1) the field may not have a `validations` array,\n * 2) the `validations` array may be empty,\n * 3) the `validations` array may not have a `nodes` validation,\n * 4) the `nodes` validation may not validate the `nodeType`, and\n * 5) the `nodeType` validations may not have a `linkContentType` validation.\n *\n * Note that passing an empty array will result in all possible content types\n * being whitelisted.\n *\n * @param {object} field\n * @param {string} nodeType\n * @returns {string[]}\n */\nexport default function getLinkedContentTypeIdsForNodeType(field, nodeType): string[] {\n return flow(\n (v) => find(v, 'nodes'),\n (v) => get(v, ['nodes', nodeType]),\n (v) => find(v, 'linkContentType'),\n (v) => get(v, 'linkContentType', [])\n )(field.validations);\n}\n","import * as React from 'react';\nimport { INLINES } from '@contentful/rich-text-types';\nimport {\n TextLink,\n Button,\n FormControl,\n FormLabel,\n Select,\n TextInput,\n Form,\n ModalContent,\n ModalControls,\n} from '@contentful/f36-components';\nimport { ModalDialogLauncher, FieldExtensionSDK } from '@contentful/field-editor-shared';\nimport { SPEditor } from '@udecode/plate-core';\nimport { Editor, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { HistoryEditor } from 'slate-history';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { Link } from '@contentful/field-editor-reference/dist/types';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { getNodeEntryFromSelection, insertLink, LINK_TYPES } from '../../helpers/editor';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport getLinkedContentTypeIdsForNodeType from '../../helpers/getLinkedContentTypeIdsForNodeType';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\n\nconst styles = {\n removeSelectionLabel: css`\n margin-left: ${tokens.spacingS};\n `,\n};\n\ninterface HyperlinkModalProps {\n linkText?: string;\n linkType?: string;\n linkTarget?: string;\n linkEntity?: Link;\n onClose: (value: unknown) => void;\n sdk: FieldExtensionSDK;\n}\n\nconst SYS_LINK_TYPES = {\n [INLINES.ENTRY_HYPERLINK]: 'Entry',\n [INLINES.ASSET_HYPERLINK]: 'Asset',\n};\n\nconst LINK_TYPE_SELECTION_VALUES = {\n [INLINES.HYPERLINK]: 'URL',\n [INLINES.ENTRY_HYPERLINK]: 'Entry',\n [INLINES.ASSET_HYPERLINK]: 'Asset',\n};\n\nexport function HyperlinkModal(props: HyperlinkModalProps) {\n const enabledLinkTypes = LINK_TYPES.filter((nodeType) =>\n isNodeTypeEnabled(props.sdk.field, nodeType)\n );\n const [defaultLinkType] = enabledLinkTypes;\n const [linkText, setLinkText] = React.useState(props.linkText ?? '');\n const [linkType, setLinkType] = React.useState(props.linkType ?? defaultLinkType);\n const [linkTarget, setLinkTarget] = React.useState(props.linkTarget ?? '');\n const [linkEntity, setLinkEntity] = React.useState<Link | null>(props.linkEntity ?? null);\n\n function isLinkComplete() {\n const isRegularLink = linkType === INLINES.HYPERLINK;\n if (isRegularLink) {\n return !!(linkText && linkTarget);\n }\n\n const entityLinks: string[] = Object.keys(SYS_LINK_TYPES);\n const isEntityLink = entityLinks.includes(linkType);\n if (isEntityLink) {\n return !!(linkText && linkEntity);\n }\n\n return false;\n }\n\n function handleOnSubmit(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n props.onClose({ linkText, linkType, linkTarget, linkEntity });\n }\n\n function entityToLink(entity): Link {\n const { id, type } = entity.sys;\n\n return { sys: { id, type: 'Link', linkType: type } };\n }\n\n async function selectEntry() {\n const options = {\n locale: props.sdk.field.locale,\n contentTypes: getLinkedContentTypeIdsForNodeType(props.sdk.field, INLINES.ENTRY_HYPERLINK),\n };\n const entry = await props.sdk.dialogs.selectSingleEntry(options);\n setLinkTarget('');\n setLinkEntity(entityToLink(entry));\n }\n\n async function selectAsset() {\n const options = {\n locale: props.sdk.field.locale,\n };\n const asset = await props.sdk.dialogs.selectSingleAsset(options);\n setLinkTarget('');\n setLinkEntity(entityToLink(asset));\n }\n\n function resetLinkEntity(event: React.MouseEvent) {\n event.preventDefault();\n\n setLinkEntity(null);\n }\n\n return (\n <EntityProvider sdk={props.sdk}>\n <React.Fragment>\n <ModalContent>\n <Form>\n <FormControl id=\"link-text\" isRequired>\n <FormControl.Label>Link text</FormControl.Label>\n <TextInput\n testId=\"link-text-input\"\n name=\"link-text\"\n value={linkText}\n onChange={(event) => setLinkText(event.target.value)}\n />\n </FormControl>\n\n {enabledLinkTypes.length > 1 && (\n <FormControl id=\"link-type\">\n <FormControl.Label>Link type</FormControl.Label>\n <Select\n value={linkType}\n onChange={(event: React.ChangeEvent<HTMLSelectElement>) =>\n setLinkType(event.target.value)\n }\n testId=\"link-type-input\">\n {enabledLinkTypes.map((nodeType) => (\n <Select.Option key={nodeType} value={nodeType}>\n {LINK_TYPE_SELECTION_VALUES[nodeType]}\n </Select.Option>\n ))}\n </Select>\n </FormControl>\n )}\n\n {linkType === INLINES.HYPERLINK && (\n <FormControl id=\"linkTarget\" isRequired>\n <FormControl.Label>Link target</FormControl.Label>\n <TextInput\n name=\"linkTarget\"\n value={linkTarget}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => {\n setLinkEntity(null);\n setLinkTarget(event.target.value);\n }}\n testId=\"link-target-input\"\n />\n <FormControl.HelpText>\n A protocol may be required, e.g. https://\n </FormControl.HelpText>\n </FormControl>\n )}\n\n {linkType !== INLINES.HYPERLINK && (\n <div>\n <FormLabel isRequired htmlFor=\"\">\n Link target{' '}\n </FormLabel>\n\n {linkEntity && linkEntity.sys.linkType === SYS_LINK_TYPES[linkType] ? (\n <>\n <TextLink\n testId=\"entity-selection-link\"\n onClick={resetLinkEntity}\n className={styles.removeSelectionLabel}>\n Remove selection\n </TextLink>\n <div>\n {linkType === INLINES.ENTRY_HYPERLINK && (\n <FetchingWrappedEntryCard\n sdk={props.sdk}\n locale={props.sdk.field.locale}\n entryId={linkEntity.sys.id}\n isDisabled={true}\n isSelected={false}\n />\n )}\n {linkType === INLINES.ASSET_HYPERLINK && (\n <FetchingWrappedAssetCard\n sdk={props.sdk}\n locale={props.sdk.field.locale}\n assetId={linkEntity.sys.id}\n isDisabled={true}\n isSelected={false}\n />\n )}\n </div>\n </>\n ) : (\n <div>\n {linkType === INLINES.ENTRY_HYPERLINK && (\n <TextLink testId=\"entity-selection-link\" onClick={selectEntry}>\n Select entry\n </TextLink>\n )}\n {linkType === INLINES.ASSET_HYPERLINK && (\n <TextLink testId=\"entity-selection-link\" onClick={selectAsset}>\n Select asset\n </TextLink>\n )}\n </div>\n )}\n </div>\n )}\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n type=\"button\"\n onClick={() => props.onClose(null)}\n variant=\"secondary\"\n testId=\"cancel-cta\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n type=\"submit\"\n variant=\"positive\"\n size=\"small\"\n isDisabled={!isLinkComplete()}\n onClick={handleOnSubmit}\n testId=\"confirm-cta\">\n {props.linkType ? 'Update' : 'Insert'}\n </Button>\n </ModalControls>\n </React.Fragment>\n </EntityProvider>\n );\n}\n\ninterface HyperLinkDialogData {\n linkText: string;\n linkType: INLINES.HYPERLINK | INLINES.ASSET_HYPERLINK | INLINES.ENTRY_HYPERLINK;\n linkTarget?: string;\n linkEntity?: Link;\n}\n\nexport async function addOrEditLink(\n editor: ReactEditor & HistoryEditor & SPEditor,\n sdk: FieldExtensionSDK\n) {\n if (!editor.selection) return;\n\n let linkType;\n let linkText;\n let linkTarget;\n let linkEntity;\n\n const [node, path] = getNodeEntryFromSelection(editor, LINK_TYPES);\n if (node && path) {\n linkType = node.type;\n linkText = Editor.string(editor, path);\n linkTarget = (node.data as { uri: string }).uri || '';\n linkEntity = (node.data as { target: Link }).target;\n }\n\n const selectionBeforeBlur = { ...editor.selection };\n const currentLinkText = linkText || Editor.string(editor, editor.selection);\n\n const data = await ModalDialogLauncher.openDialog(\n {\n title: linkType ? 'Edit hyperlink' : 'Insert hyperlink',\n width: 'large',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n allowHeightOverflow: true,\n },\n ({ onClose }) => {\n return (\n <HyperlinkModal\n linkTarget={linkTarget}\n linkText={currentLinkText}\n linkType={linkType}\n linkEntity={linkEntity}\n onClose={onClose}\n sdk={sdk}\n />\n );\n }\n );\n\n if (!data) return;\n\n const {\n linkText: text,\n linkTarget: url,\n linkType: type,\n linkEntity: target,\n } = data as HyperLinkDialogData;\n\n Transforms.select(editor, selectionBeforeBlur);\n\n insertLink(editor, { text, url, type, target, path });\n\n ReactEditor.focus(editor);\n}\n","import * as React from 'react';\nimport {\n PlatePlugin,\n getRenderElement,\n getPlatePluginTypes,\n getPlatePluginOptions,\n} from '@udecode/plate-core';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\nimport { EntryAssetTooltip } from './EntryAssetTooltip';\nimport { LinkIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldExtensionSDK, Link, ContentEntityType as EntityType } from '@contentful/app-sdk';\nimport { CustomSlatePluginOptions, CustomRenderElementProps } from '../../types';\nimport { useSdkContext } from '../../SdkProvider';\nimport { addOrEditLink } from './HyperlinkModal';\nimport { isLinkActive, LINK_TYPES, unwrapLink } from '../../helpers/editor';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n hyperlinkWrapper: css({\n display: 'inline',\n position: 'static',\n a: {\n fontSize: 'inherit !important',\n },\n }),\n hyperlink: css({\n fontSize: 'inherit !important',\n display: 'inline !important',\n '&:hover': {\n fill: tokens.gray900,\n },\n '&:focus': {\n fill: tokens.gray900,\n },\n }),\n hyperlinkIEFallback: css({\n color: '#1683d0',\n textDecoration: 'underline',\n }),\n // TODO: use these styles once we can use the icon\n hyperlinkIcon: css({\n position: 'relative',\n top: '4px',\n height: '14px',\n margin: '0 -2px 0 -1px',\n webkitTransition: 'fill 100ms ease-in-out',\n transition: 'fill 100ms ease-in-out',\n '&:hover': {\n fill: tokens.gray900,\n },\n '&:focus': {\n fill: tokens.gray900,\n },\n }),\n};\n\nexport function createHyperlinkPlugin(sdk: FieldExtensionSDK): PlatePlugin {\n return {\n renderElement: getRenderElement(LINK_TYPES),\n pluginKeys: LINK_TYPES,\n inlineTypes: getPlatePluginTypes(LINK_TYPES),\n onKeyDown: buildHyperlinkEventHandler(sdk),\n deserialize: (editor) => {\n const hyperlinkOptions = getPlatePluginOptions(editor, INLINES.HYPERLINK);\n const entryHyperlinkOptions = getPlatePluginOptions(editor, INLINES.ENTRY_HYPERLINK);\n const assetHyperlinkOptions = getPlatePluginOptions(editor, INLINES.ASSET_HYPERLINK);\n\n const isAnchor = (element) =>\n element.nodeName === 'A' &&\n !!element.getAttribute('href') &&\n element.getAttribute('href') !== '#';\n const isEntryAnchor = (element) =>\n isAnchor(element) && element.getAttribute('data-link-type') === 'Entry';\n const isAssetAnchor = (element) =>\n isAnchor(element) && element.getAttribute('data-link-type') === 'Asset';\n\n return {\n element: [\n {\n type: INLINES.HYPERLINK,\n deserialize: (element) => {\n if (!isAnchor(element) || isEntryAnchor(element) || isAssetAnchor(element)) return;\n\n return {\n type: INLINES.HYPERLINK,\n data: {\n uri: element.getAttribute('href'),\n },\n };\n },\n ...hyperlinkOptions.deserialize,\n },\n {\n type: INLINES.ENTRY_HYPERLINK,\n deserialize: (element) => {\n if (!isEntryAnchor(element)) return;\n\n return {\n type: INLINES.ENTRY_HYPERLINK,\n data: {\n target: {\n sys: {\n id: element.getAttribute('data-link-id'),\n linkType: element.getAttribute('data-link-type'),\n type: 'Link',\n },\n },\n },\n };\n },\n ...entryHyperlinkOptions.deserialize,\n },\n {\n type: INLINES.ASSET_HYPERLINK,\n deserialize: (element) => {\n if (!isAssetAnchor(element)) return;\n\n return {\n type: INLINES.ASSET_HYPERLINK,\n data: {\n target: {\n sys: {\n id: element.getAttribute('data-link-id'),\n linkType: element.getAttribute('data-link-type'),\n type: 'Link',\n },\n },\n },\n };\n },\n ...assetHyperlinkOptions.deserialize,\n },\n ],\n };\n },\n };\n}\n\ntype K = 75;\ntype KEvent = React.KeyboardEvent & { keyCode: K };\ntype CtrlEvent = React.KeyboardEvent & { ctrlKey: true };\ntype MetaEvent = React.KeyboardEvent & { metaKey: true };\ntype ModEvent = CtrlEvent | MetaEvent;\ntype HyperlinkEvent = ModEvent & KEvent;\n\nconst isMod = (event: React.KeyboardEvent): event is ModEvent => event.ctrlKey || event.metaKey;\nconst isK = (event: React.KeyboardEvent): event is KEvent => event.keyCode === 75;\nconst wasHyperlinkEventTriggered = (event: React.KeyboardEvent): event is HyperlinkEvent =>\n isMod(event) && isK(event);\n\nexport function buildHyperlinkEventHandler(sdk) {\n return function withHyperlinkEvents(editor) {\n return function handleKeyDown(event: React.KeyboardEvent) {\n if (!editor.selection || !wasHyperlinkEventTriggered(event)) return;\n if (isLinkActive(editor)) {\n unwrapLink(editor);\n } else {\n addOrEditLink(editor, sdk);\n }\n };\n };\n}\n\ntype HyperlinkElementProps = CustomRenderElementProps<{\n uri?: string;\n target?: Link;\n}>;\n\nfunction UrlHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { uri } = props.element.data;\n\n async function handleClick(event: React.MouseEvent<HTMLAnchorElement>) {\n event.preventDefault();\n event.stopPropagation();\n if (!editor) return;\n addOrEditLink(editor, sdk);\n }\n\n return (\n <Tooltip\n content={uri}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\">\n <TextLink\n as=\"a\"\n href={uri}\n rel=\"noopener noreferrer\"\n onClick={handleClick}\n className={styles.hyperlink}>\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n\nfunction EntityHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { target } = props.element.data;\n\n if (!target) return null;\n\n async function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n event.stopPropagation();\n if (!editor) return;\n addOrEditLink(editor, sdk);\n }\n\n return (\n <Tooltip\n content={\n (\n <EntryAssetTooltip\n id={target.sys.id}\n type={target.sys.linkType as EntityType}\n sdk={sdk}\n />\n ) as unknown as string\n }\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\">\n <TextLink\n as=\"button\"\n onClick={handleClick}\n className={styles.hyperlink}\n data-link-type={target.sys.linkType}\n data-link-id={target.sys.id}>\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n\ninterface ToolbarHyperlinkButtonProps {\n isDisabled: boolean | undefined;\n}\n\nexport function ToolbarHyperlinkButton(props: ToolbarHyperlinkButtonProps) {\n const editor = useContentfulEditor();\n const isActive = !!(editor && isLinkActive(editor));\n const sdk: FieldExtensionSDK = useSdkContext();\n\n async function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor) return;\n\n if (isActive) {\n unwrapLink(editor);\n } else {\n addOrEditLink(editor, sdk);\n }\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Hyperlink\"\n testId=\"hyperlink-toolbar-button\"\n onClick={handleClick}\n isActive={isActive}\n isDisabled={props.isDisabled}>\n <LinkIcon />\n </ToolbarButton>\n );\n}\n\nexport const withHyperlinkOptions: CustomSlatePluginOptions = {\n [INLINES.HYPERLINK]: {\n type: INLINES.HYPERLINK,\n component: UrlHyperlink,\n },\n [INLINES.ENTRY_HYPERLINK]: {\n type: INLINES.ENTRY_HYPERLINK,\n component: EntityHyperlink,\n },\n [INLINES.ASSET_HYPERLINK]: {\n type: INLINES.ASSET_HYPERLINK,\n component: EntityHyperlink,\n },\n};\n","import { Transforms } from 'slate';\nimport { SPEditor } from '@udecode/plate-core';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { getAbove, getChildren } from '@udecode/plate-common';\nimport {\n ELEMENT_TABLE,\n ELEMENT_TH,\n ELEMENT_TD,\n ELEMENT_TR,\n insertTable,\n} from '@udecode/plate-table';\n\nimport { isBlockSelected, getNodeEntryFromSelection } from '../../helpers/editor';\n\n/**\n * Sets the UI focus to the first cell of the selected table.\n *\n * This is necessary because udecode's plugin sets the focus to the\n * _last_ cell of the table after selection, which is weird.\n */\nfunction moveToFirstCellFromSelectedTable(editor) {\n const [, tablePath] = getNodeEntryFromSelection(editor, BLOCKS.TABLE);\n if (!tablePath) return;\n const firstTableCellPath = tablePath.concat([\n 0, // -> row\n 0, // -> cell\n 0, // -> paragraph\n 0, // -> text node\n ]);\n const anchor = { path: firstTableCellPath, offset: 0 };\n Transforms.setSelection(editor, { anchor, focus: anchor });\n}\n\nexport function insertTableAndFocusFirstCell(editor: SPEditor): void {\n // FIXME: a table should only be allowed at root level. Currently this\n // code adds it at any level\n insertTable(editor, { header: true });\n moveToFirstCellFromSelectedTable(editor);\n}\n\nexport function isTableActive(editor: SPEditor) {\n const tableElements = [ELEMENT_TABLE, ELEMENT_TH, ELEMENT_TR, ELEMENT_TD];\n return tableElements.some((el) => isBlockSelected(editor, el));\n}\n\nexport function isTableHeaderEnabled(editor: SPEditor) {\n const tableItem = getAbove(editor, {\n match: {\n type: BLOCKS.TABLE,\n },\n });\n\n if (!tableItem) {\n return false;\n }\n\n const firstRow = getChildren(tableItem)[0];\n\n if (!firstRow) {\n return false;\n }\n\n return getChildren(firstRow).every(([node]) => {\n return node.type === BLOCKS.TABLE_HEADER_CELL;\n });\n}\n","import * as React from 'react';\nimport constate from 'constate';\n\nexport type RichTextTrackingActionName =\n | 'insertTable'\n | 'insertTableRow'\n | 'insertTableColumn'\n | 'removeTable'\n | 'removeTableRow'\n | 'removeTableColumn'\n | 'paste';\n\nexport type RichTextTrackingActionHandler = (\n name: RichTextTrackingActionName,\n data: Record<string, unknown>\n) => unknown;\n\ninterface TrackingProviderProps {\n onAction: RichTextTrackingActionHandler;\n}\n\nexport interface TrackingProvider {\n onViewportAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<TrackingProviderProps['onAction']>;\n}\n\nfunction useTracking({ onAction }: TrackingProviderProps): TrackingProvider {\n const trackingMemo = React.useMemo<TrackingProvider>(\n () => ({\n onViewportAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: 'viewport-interaction', ...data }),\n }),\n [] // eslint-disable-line\n );\n\n return trackingMemo;\n}\n\nexport const [TrackingProvider, useTrackingContext] = constate(useTracking);\n","import { Transforms, Path, Editor } from 'slate';\nimport { getAbove, insertNodes, someNode } from '@udecode/plate-common';\nimport { getPlatePluginType, SPEditor, TElement } from '@udecode/plate-core';\nimport { ELEMENT_TABLE, ELEMENT_TR, getEmptyRowNode } from '@udecode/plate-table';\n\nconst addRow = (editor: SPEditor, getNextRowPath: (currentRowPath: Path) => Path) => {\n if (\n someNode(editor, {\n match: { type: getPlatePluginType(editor, ELEMENT_TABLE) },\n })\n ) {\n const currentRowItem = getAbove(editor, {\n match: { type: getPlatePluginType(editor, ELEMENT_TR) },\n });\n\n if (currentRowItem) {\n const [currentRowElem, currentRowPath] = currentRowItem;\n const nextRowPath = getNextRowPath(currentRowPath);\n\n insertNodes<TElement>(\n editor,\n // @ts-expect-error\n getEmptyRowNode(editor, {\n header: false,\n colCount: currentRowElem.children.length,\n }),\n {\n at: nextRowPath,\n // Note: this selects the last cell of the new row\n select: true,\n }\n );\n\n // Select the first cell in the current row\n Transforms.select(editor, Editor.start(editor, nextRowPath));\n }\n }\n};\n\nexport const addRowBelow = (editor: SPEditor) => {\n addRow(editor, (currentRowPath) => {\n return Path.next(currentRowPath);\n });\n};\n\nexport const addRowAbove = (editor: SPEditor) => {\n addRow(editor, (currentRowPath) => {\n // The new row will be in in-place of the old row\n return currentRowPath;\n });\n};\n","import { Path } from 'slate';\nimport { getAbove, insertNodes, someNode } from '@udecode/plate-common';\nimport { getPlatePluginType, SPEditor, TElement } from '@udecode/plate-core';\nimport {\n getEmptyCellNode,\n TablePluginOptions,\n ELEMENT_TABLE,\n ELEMENT_TD,\n ELEMENT_TH,\n} from '@udecode/plate-table';\n\nconst addColumn = (\n editor: SPEditor,\n { header }: TablePluginOptions,\n getNextCellPath: (currentCellPath: Path) => Path\n) => {\n if (\n someNode(editor, {\n match: { type: getPlatePluginType(editor, ELEMENT_TABLE) },\n })\n ) {\n const currentCellItem = getAbove(editor, {\n match: {\n type: [getPlatePluginType(editor, ELEMENT_TD), getPlatePluginType(editor, ELEMENT_TH)],\n },\n });\n\n const currentTableItem = getAbove(editor, {\n match: { type: getPlatePluginType(editor, ELEMENT_TABLE) },\n });\n\n if (currentCellItem && currentTableItem) {\n const nextCellPath = getNextCellPath(currentCellItem[1]);\n const newCellPath = nextCellPath.slice();\n const replacePathPos = newCellPath.length - 2;\n\n currentTableItem[0].children.forEach((_, rowIdx) => {\n newCellPath[replacePathPos] = rowIdx;\n\n insertNodes<TElement>(\n editor,\n // @ts-expect-error\n getEmptyCellNode(editor, { header: header && rowIdx === 0 }),\n {\n at: newCellPath,\n // Select the first cell of the new column\n select: rowIdx === 0,\n }\n );\n });\n }\n }\n};\n\nexport const addColumnRight = (editor: SPEditor, options: TablePluginOptions) => {\n addColumn(editor, options, (currentCellPath) => Path.next(currentCellPath));\n};\n\nexport const addColumnLeft = (editor: SPEditor, options: TablePluginOptions) => {\n addColumn(editor, options, (currentCellPath) => currentCellPath);\n};\n","import { SPEditor } from '@udecode/plate-core';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { getAbove, setNodes, getChildren } from '@udecode/plate-common';\n\nexport const setHeader = (editor: SPEditor, enable?: boolean) => {\n const tableItem = getAbove(editor, {\n match: { type: BLOCKS.TABLE },\n });\n\n if (!tableItem) {\n return;\n }\n\n const firstRow = getChildren(tableItem)[0];\n\n if (!firstRow) {\n return;\n }\n\n getChildren(firstRow).forEach(([, path]) => {\n setNodes(\n editor,\n {\n type: enable ? BLOCKS.TABLE_HEADER_CELL : BLOCKS.TABLE_CELL,\n },\n { at: path }\n );\n });\n};\n","import React from 'react';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\nimport { SPEditor } from '@udecode/plate-core';\nimport { TablePluginOptions, deleteColumn, deleteRow, deleteTable } from '@udecode/plate-table';\nimport { IconButton, Menu } from '@contentful/f36-components';\nimport { ChevronDownIcon } from '@contentful/f36-icons';\nimport { getAbove } from '@udecode/plate-common';\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { isTableHeaderEnabled } from './helpers';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { getNodeEntryFromSelection, getTableSize } from '../../helpers/editor';\nimport { RichTextTrackingActionName, useTrackingContext } from '../../TrackingProvider';\nimport { addRowAbove, addColumnLeft, addColumnRight, addRowBelow, setHeader } from './actions';\n\nexport const styles = {\n topRight: css({\n position: 'absolute',\n top: '6px',\n right: '5px',\n }),\n};\n\nconst getCurrentTableSize = (editor: SPEditor): Record<'numRows' | 'numColumns', number> | null => {\n const [table] = getNodeEntryFromSelection(editor, BLOCKS.TABLE);\n return table ? getTableSize(table) : null;\n};\n\ntype TableAction = (editor: SPEditor, options: TablePluginOptions) => void;\n\nexport const TableActions = () => {\n const editor = useContentfulEditor();\n const { onViewportAction } = useTrackingContext();\n const [isOpen, setOpen] = React.useState(false);\n const [isHeaderEnabled, setHeaderEnabled] = React.useState(false);\n\n const close = React.useCallback(() => {\n setOpen(false);\n\n if (!editor) return;\n\n // Makes sure we keep the editor in focus when clicking on/out\n // the dropdown menu\n Slate.ReactEditor.focus(editor);\n }, [editor]);\n\n React.useEffect(() => {\n setHeaderEnabled(Boolean(editor && isTableHeaderEnabled(editor)));\n }, [editor]);\n\n const canInsertRowAbove = React.useMemo(() => {\n if (!editor) {\n return false;\n }\n\n const headerCell = getAbove(editor, {\n match: {\n type: BLOCKS.TABLE_HEADER_CELL,\n },\n });\n\n return !headerCell;\n }, [editor]);\n\n const toggleHeader = React.useCallback(() => {\n close();\n\n if (!editor) {\n return;\n }\n\n const value = !isHeaderEnabled;\n\n setHeaderEnabled(value);\n setHeader(editor, value);\n }, [editor, close, isHeaderEnabled]);\n\n const action = React.useCallback(\n (cb: TableAction, type: 'insert' | 'remove', element: 'Table' | 'Row' | 'Column') => () => {\n if (!editor?.selection) return;\n close();\n\n const tableSize = getCurrentTableSize(editor);\n\n cb(editor, { header: isHeaderEnabled });\n\n // Tracking\n const actionName = `${type}Table${element === 'Table' ? '' : element}`;\n onViewportAction(actionName as RichTextTrackingActionName, { tableSize });\n },\n [editor, isHeaderEnabled, close, onViewportAction]\n );\n\n return (\n <Menu\n placement=\"left\"\n isOpen={isOpen}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={close}>\n <Menu.Trigger>\n <IconButton\n size=\"small\"\n variant=\"transparent\"\n tabIndex={-1}\n className={styles.topRight}\n icon={<ChevronDownIcon />}\n aria-label=\"Open table menu\"\n testId=\"cf-table-actions-button\"\n />\n </Menu.Trigger>\n <Menu.List>\n <Menu.Item onClick={action(addRowAbove, 'insert', 'Row')} disabled={!canInsertRowAbove}>\n Add row above\n </Menu.Item>\n <Menu.Item onClick={action(addRowBelow, 'insert', 'Row')}>Add row below</Menu.Item>\n <Menu.Item onClick={action(addColumnLeft, 'insert', 'Column')}>Add column left</Menu.Item>\n <Menu.Item onClick={action(addColumnRight, 'insert', 'Column')}>Add column right</Menu.Item>\n <Menu.Divider />\n <Menu.Item onClick={toggleHeader}>\n {isHeaderEnabled ? 'Disable table header' : 'Enable table header'}\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item onClick={action(deleteRow, 'remove', 'Row')}>Delete row</Menu.Item>\n <Menu.Item onClick={action(deleteColumn, 'remove', 'Column')}>Delete column</Menu.Item>\n <Menu.Item onClick={action(deleteTable, 'remove', 'Table')}>Delete table</Menu.Item>\n </Menu.List>\n </Menu>\n );\n};\n","import { css } from 'emotion';\nimport * as React from 'react';\nimport * as Slate from 'slate-react';\nimport { SPEditor } from '@udecode/plate-core';\nimport tokens from '@contentful/f36-tokens';\nimport { TableIcon } from '@contentful/f36-icons';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { BLOCKS, CONTAINERS, TableCell, TableHeaderCell } from '@contentful/rich-text-types';\nimport {\n ELEMENT_TD,\n ELEMENT_TR,\n ELEMENT_TH,\n ELEMENT_TABLE,\n createTablePlugin as createTablePluginFromUdecode,\n getTableOnKeyDown,\n} from '@udecode/plate-table';\nimport { documentToPlainTextString } from '@contentful/rich-text-plain-text-renderer';\nimport { toContentfulDocument } from '@contentful/contentful-slatejs-adapter';\n\nimport schema from '../../constants/Schema';\nimport { TableActions } from './TableActions';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { CustomElement, CustomSlatePluginOptions } from '../../types';\nimport { isTableActive, insertTableAndFocusFirstCell } from './helpers';\nimport { TrackingProvider, useTrackingContext } from '../../TrackingProvider';\nimport { Element, Node, Text, Transforms } from 'slate';\n\nconst styles = {\n [BLOCKS.TABLE]: css`\n margin-bottom: 1.5em;\n border-collapse: collapse;\n border-radius: 5px;\n border-style: hidden;\n box-shadow: 0 0 0 1px ${tokens.gray400};\n width: 100%;\n table-layout: fixed;\n overflow: hidden;\n `,\n [BLOCKS.TABLE_ROW]: css`\n border: 1px solid ${tokens.gray400};\n &:hover td {\n background-color: transparent !important;\n }\n `,\n [BLOCKS.TABLE_HEADER_CELL]: css`\n background-color: ${tokens.gray200};\n border: 1px solid ${tokens.gray400};\n padding: 10px 12px;\n font-weight: ${tokens.fontWeightMedium};\n text-align: left;\n min-width: 48px;\n position: relative;\n div:last-child {\n margin-bottom: 0;\n }\n `,\n [BLOCKS.TABLE_CELL]: css`\n border: 1px solid ${tokens.gray400};\n padding: 10px 12px;\n min-width: 48px;\n position: relative;\n div:last-child {\n margin-bottom: 0;\n }\n `,\n};\n\nconst slateNodeToText = (node: CustomElement): string => {\n const contentfulNode = toContentfulDocument({ document: [node], schema });\n return documentToPlainTextString(contentfulNode);\n};\n\nexport const Table = (props: Slate.RenderElementProps) => (\n <table {...props.attributes} className={styles[BLOCKS.TABLE]}>\n <tbody>{props.children}</tbody>\n </table>\n);\n\nexport const TR = (props: Slate.RenderElementProps) => (\n <tr {...props.attributes} className={styles[BLOCKS.TABLE_ROW]}>\n {props.children}\n </tr>\n);\n\nexport const TH = (props: Slate.RenderElementProps) => {\n const isSelected = Slate.useSelected();\n\n return (\n <th\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n {...(props.element.data as TableHeaderCell['data'])}\n className={styles[BLOCKS.TABLE_HEADER_CELL]}>\n {isSelected && <TableActions />}\n {props.children}\n </th>\n );\n};\nexport const TD = (props: Slate.RenderElementProps) => {\n const isSelected = Slate.useSelected();\n\n return (\n <td\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n {...(props.element.data as TableCell['data'])}\n className={styles[BLOCKS.TABLE_CELL]}>\n {isSelected && <TableActions />}\n {props.children}\n </td>\n );\n};\n\nexport const withTableOptions: CustomSlatePluginOptions = {\n [ELEMENT_TABLE]: {\n type: BLOCKS.TABLE,\n component: Table,\n },\n [ELEMENT_TR]: {\n type: BLOCKS.TABLE_ROW,\n component: TR,\n },\n [ELEMENT_TH]: {\n type: BLOCKS.TABLE_HEADER_CELL,\n component: TH,\n },\n [ELEMENT_TD]: {\n type: BLOCKS.TABLE_CELL,\n component: TD,\n },\n};\n\nfunction addTableTrackingEvents(editor: SPEditor, { onViewportAction }: TrackingProvider) {\n const { insertData } = editor;\n editor.insertData = (data: DataTransfer) => {\n const html = data.getData('text/html');\n\n if (html) {\n const { children: markupBefore } = editor;\n insertData(data);\n const { children: markupAfter } = editor;\n setTimeout(() => {\n if (hasTables(markupBefore)) return;\n if (hasTables(markupAfter)) {\n onViewportAction('paste', {\n tablePasted: true,\n hasHeadersOutsideFirstRow: hasHeadersOutsideFirstRow(markupAfter),\n });\n }\n }, 1);\n } else {\n insertData(data);\n }\n };\n}\n\nconst paragraph = () => ({ type: BLOCKS.PARAGRAPH, data: {}, children: [] });\n\nfunction addTableNormalization(editor) {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [node, path] = entry;\n\n // TODO: This should be enforced by sanitizeSlateDoc() but the internal\n // editor value can be different.\n // cf. https://github.com/ianstormtaylor/slate/issues/2206\n const cellTypes: string[] = [BLOCKS.TABLE_CELL, BLOCKS.TABLE_HEADER_CELL];\n if (Element.isElement(node) && cellTypes.includes((node as CustomElement).type)) {\n for (const [child, childPath] of Node.children(editor, path)) {\n if (Text.isText(child)) {\n Transforms.wrapNodes(editor, paragraph(), { at: childPath });\n } else if (!CONTAINERS[node.type].includes(child.type)) {\n const paragraphWithTextFromNode = {\n ...paragraph(),\n children: [{ text: slateNodeToText(child) }],\n };\n Transforms.removeNodes(editor, { at: childPath });\n Transforms.insertNodes(editor, paragraphWithTextFromNode, { at: childPath });\n }\n }\n }\n\n normalizeNode(entry);\n };\n}\n\nfunction hasTables(nodes: CustomElement[]) {\n return nodes.some(({ type }) => {\n return type === BLOCKS.TABLE;\n });\n}\n\nconst isTableHeaderCell = ({ type }) => type === BLOCKS.TABLE_HEADER_CELL;\nfunction hasHeadersOutsideFirstRow(nodes: CustomElement[]) {\n return nodes\n .filter(({ type }) => type === BLOCKS.TABLE)\n .flatMap(({ children }) => children.slice(1) as CustomElement[])\n .some(({ children }) => (children as CustomElement[]).some(isTableHeaderCell));\n}\n\nfunction createWithTableEvents(tracking: TrackingProvider) {\n return function withTableEvents(editor: SPEditor) {\n addTableTrackingEvents(editor, tracking);\n addTableNormalization(editor);\n return getTableOnKeyDown()(editor);\n };\n}\n\nexport const createTablePlugin = (tracking: TrackingProvider) => ({\n ...createTablePluginFromUdecode(),\n onKeyDown: createWithTableEvents(tracking),\n withOverrides: (editor) => {\n const { insertFragment } = editor;\n\n editor.insertFragment = (fragments) => {\n // We need to make sure we have a new, empty and clean paragraph in order to paste tables as-is due to how Slate behaves\n // More info: https://github.com/ianstormtaylor/slate/pull/4489 and https://github.com/ianstormtaylor/slate/issues/4542\n const fragmentHasTable = fragments.some((fragment) => fragment.type === BLOCKS.TABLE);\n if (fragmentHasTable) {\n const emptyParagraph: CustomElement = {\n type: BLOCKS.PARAGRAPH,\n children: [{ text: '' }],\n data: {},\n isVoid: false,\n };\n Transforms.insertNodes(editor, emptyParagraph);\n }\n\n insertFragment(fragments);\n };\n\n return editor;\n },\n});\n\ninterface ToolbarTableButtonProps {\n isDisabled: boolean | undefined;\n}\n\nexport function ToolbarTableButton(props: ToolbarTableButtonProps) {\n const editor = useContentfulEditor();\n const { onViewportAction } = useTrackingContext();\n const isActive = editor && isTableActive(editor);\n\n async function handleClick(event: React.MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n\n if (!editor) return;\n\n onViewportAction('insertTable');\n insertTableAndFocusFirstCell(editor);\n Slate.ReactEditor.focus(editor);\n }\n\n if (!editor) return null;\n\n return (\n <ToolbarButton\n title=\"Table\"\n testId=\"table-toolbar-button\"\n onClick={handleClick}\n // TODO: active state looks off since the button will be disabled. Do we still need it?\n isActive={isActive}\n isDisabled={props.isDisabled}>\n <TableIcon />\n </ToolbarButton>\n );\n}\n","import * as React from 'react';\nimport { Button, Menu } from '@contentful/f36-components';\n\nimport { PlusIcon, ChevronDownIcon } from '@contentful/f36-icons';\n\ninterface EmbeddedEntityDropdownButtonProps {\n children: React.ReactNode;\n isDisabled: boolean | undefined;\n isOpen: boolean;\n onClose: () => void;\n onToggle: () => void;\n}\n\nexport function EmbeddedEntityDropdownButton({\n children,\n isDisabled,\n isOpen,\n onClose,\n onToggle,\n}: EmbeddedEntityDropdownButtonProps) {\n return (\n <Menu placement=\"bottom-end\" isOpen={isOpen} onClose={onClose} onOpen={onToggle}>\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n testId=\"toolbar-entity-dropdown-toggle\"\n variant=\"secondary\"\n size=\"small\"\n startIcon={<PlusIcon />}\n isDisabled={isDisabled}>\n Embed\n </Button>\n </Menu.Trigger>\n <Menu.List className=\"toolbar-entity-dropdown-list\">{children}</Menu.List>\n </Menu>\n );\n}\n","import React from 'react';\nimport { css } from 'emotion';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport { useSdkContext } from '../../SdkProvider';\nimport { CustomRenderElementProps } from '../../types';\nimport { ReactEditor, useSelected, useReadOnly } from 'slate-react';\nimport { Transforms } from 'slate';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem',\n }),\n};\n\ntype LinkedEntityBlockProps = CustomRenderElementProps<{\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n}>;\n\nexport function LinkedEntityBlock(props: LinkedEntityBlockProps) {\n const { attributes, children, element } = props;\n const isSelected = useSelected();\n const editor = useContentfulEditor();\n const sdk = useSdkContext();\n const isDisabled = useReadOnly();\n const { id: entityId, linkType: entityType } = element.data.target.sys;\n\n const handleEditClick = () => {\n const openEntity = entityType === 'Asset' ? sdk.navigator.openAsset : sdk.navigator.openEntry;\n return openEntity(entityId, { slideIn: true });\n };\n\n const handleRemoveClick = () => {\n if (!editor) return;\n const pathToElement = ReactEditor.findPath(editor, element);\n Transforms.removeNodes(editor, { at: pathToElement });\n };\n\n return (\n <div\n {...attributes}\n className={styles.root}\n data-entity-type={entityType}\n data-entity-id={entityId}>\n <div contentEditable={false}>\n {entityType === 'Entry' && (\n <FetchingWrappedEntryCard\n sdk={sdk}\n entryId={entityId}\n locale={sdk.field.locale}\n isDisabled={isDisabled}\n isSelected={isSelected}\n onRemove={handleRemoveClick}\n onEdit={handleEditClick}\n />\n )}\n {entityType === 'Asset' && (\n <FetchingWrappedAssetCard\n sdk={sdk}\n assetId={entityId}\n locale={sdk.field.locale}\n isDisabled={isDisabled}\n isSelected={isSelected}\n onRemove={handleRemoveClick}\n onEdit={handleEditClick}\n />\n )}\n </div>\n {children}\n </div>\n );\n}\n","import getLinkedContentTypeIdsForNodeType from './getLinkedContentTypeIdsForNodeType';\n\n/**\n * Returns a config for the entity selector based on a given rich text field and a\n * rich text node type that the entity should be picked for. Takes the field\n * validations for the given node type into account.\n *\n * @param {object} field\n * @param {string} nodeType\n * @returns {object}\n */\nexport default function newEntitySelectorConfigFromRichTextField(field, nodeType) {\n return {\n entityType: getEntityTypeFromRichTextNode(nodeType),\n locale: field.locale || null, // Will fall back to default locale.\n contentTypes: getLinkedContentTypeIdsForNodeType(field, nodeType),\n };\n}\n\nfunction getEntityTypeFromRichTextNode(nodeType): 'Entry' | 'Asset' | never {\n const words = nodeType.split('-');\n if (words.indexOf('entry') !== -1) {\n return 'Entry';\n }\n if (words.indexOf('asset') !== -1) {\n return 'Asset';\n }\n throw new Error(`RichText node type \\`${nodeType}\\` has no associated \\`entityType\\``);\n}\n","import { getText } from '@udecode/plate-common';\nimport { Transforms } from 'slate';\nimport * as Slate from 'slate-react';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\n\nexport async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {\n logAction('openCreateEmbedDialog', { nodeType });\n\n const { field, dialogs } = sdk;\n const baseConfig = newEntitySelectorConfigFromRichTextField(field, nodeType);\n const selectEntity =\n baseConfig.entityType === 'Asset' ? dialogs.selectSingleAsset : dialogs.selectSingleEntry;\n const config = { ...baseConfig, withCreate: true };\n try {\n const { selection } = editor;\n const entity = await selectEntity(config);\n if (!entity) {\n return;\n }\n Transforms.select(editor, selection);\n insertBlock(editor, nodeType, entity);\n logAction('insert', { nodeType });\n } catch (error) {\n if (error) {\n throw error;\n } else {\n logAction('cancelCreateEmbedDialog', { nodeType });\n }\n }\n}\n\nconst createNode = (nodeType, entity) => ({\n type: nodeType,\n data: {\n target: {\n sys: {\n id: entity.sys.id,\n type: 'Link',\n linkType: entity.sys.type,\n },\n },\n },\n children: [{ text: '' }],\n isVoid: true,\n});\n\n// TODO: DRY up copied code from HR\nexport function insertBlock(editor, nodeType, entity) {\n if (!editor?.selection) return;\n\n const linkedEntityBlock = createNode(nodeType, entity);\n\n const hasText = editor.selection && !!getText(editor, editor.selection.focus.path);\n\n if (hasText) {\n Transforms.insertNodes(editor, linkedEntityBlock);\n } else {\n Transforms.setNodes(editor, linkedEntityBlock);\n }\n\n Slate.ReactEditor.focus(editor);\n}\n","import React from 'react';\nimport { Flex, Icon, Button, Menu } from '@contentful/f36-components';\n\nimport { AssetIcon, EmbeddedEntryBlockIcon } from '@contentful/f36-icons';\nimport { selectEntityAndInsert } from './Util';\nimport noop from 'lodash/noop';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { useSdkContext } from '../../SdkProvider';\nimport { css } from 'emotion';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nexport const styles = {\n icon: css({\n marginRight: '10px',\n }),\n};\n\ninterface EmbeddedEntityBlockToolbarIconProps {\n isButton?: boolean;\n isDisabled: boolean;\n logAction?: () => void;\n nodeType: string;\n onClose: () => void;\n}\n\nexport function EmbeddedEntityBlockToolbarIcon({\n isButton,\n isDisabled,\n logAction,\n nodeType,\n onClose,\n}: EmbeddedEntityBlockToolbarIconProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n\n onClose();\n selectEntityAndInsert(nodeType, sdk, editor, logAction || noop);\n };\n\n const type = getEntityTypeFromNodeType(nodeType);\n const baseClass = `rich-text__${nodeType}`;\n return isButton ? (\n <Button\n isDisabled={isDisabled}\n className={`${baseClass}-button`}\n size=\"small\"\n onClick={handleClick}\n startIcon={type === 'Asset' ? <AssetIcon /> : <EmbeddedEntryBlockIcon />}\n variant=\"secondary\"\n testId={`toolbar-toggle-${nodeType}`}>\n {`Embed ${type.toLowerCase()}`}\n </Button>\n ) : (\n <Menu.Item\n disabled={isDisabled}\n className={`${baseClass}-list-item`}\n onClick={handleClick}\n testId={`toolbar-toggle-${nodeType}`}>\n <Flex alignItems=\"center\" flexDirection=\"row\">\n <Icon\n as={type === 'Asset' ? AssetIcon : EmbeddedEntryBlockIcon}\n className={`rich-text__embedded-entry-list-icon ${styles.icon}`}\n variant=\"secondary\"\n />\n <span>{type}</span>\n </Flex>\n </Menu.Item>\n );\n}\n\nfunction getEntityTypeFromNodeType(nodeType: string): string | never {\n const words = nodeType.toLowerCase().split('-');\n if (words.includes('entry')) {\n return 'Entry';\n }\n if (words.includes('asset')) {\n return 'Asset';\n }\n throw new Error(`Node type \\`${nodeType}\\` has no associated \\`entityType\\``);\n}\n","import { KeyboardEvent } from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport {\n getRenderElement,\n getPlatePluginTypes,\n PlatePlugin,\n getPlatePluginOptions,\n SPEditor,\n} from '@udecode/plate-core';\nimport { Transforms } from 'slate';\nimport { getNodeEntryFromSelection, moveToTheNextLine } from '../../helpers/editor';\nimport { CustomSlatePluginOptions } from 'types';\nimport { LinkedEntityBlock } from './LinkedEntityBlock';\nimport { selectEntityAndInsert } from './Util';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport noop from 'lodash/noop';\n\nexport { EmbeddedEntityBlockToolbarIcon as ToolbarIcon } from './ToolbarIcon';\n\nconst createEmbeddedEntityPlugin =\n (nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET) =>\n (sdk: FieldExtensionSDK): PlatePlugin => ({\n renderElement: getRenderElement(nodeType),\n pluginKeys: nodeType,\n onKeyDown: getWithEmbeddedEntityEvents(nodeType, sdk),\n voidTypes: getPlatePluginTypes(nodeType),\n deserialize: (editor) => {\n const options = getPlatePluginOptions(editor, nodeType);\n const entityTypes = {\n [BLOCKS.EMBEDDED_ENTRY]: 'Entry',\n [BLOCKS.EMBEDDED_ASSET]: 'Asset',\n };\n\n return {\n element: [\n {\n type: nodeType,\n deserialize: (element) => {\n const entityType = element.getAttribute('data-entity-type');\n const embeddedEntityId = element.getAttribute('data-entity-id');\n const isBlock = entityType === entityTypes[nodeType];\n\n if (!isBlock) return;\n\n return {\n type: nodeType,\n isVoid: true,\n data: {\n target: {\n sys: {\n id: embeddedEntityId,\n linkType: entityType,\n type: 'Link',\n },\n },\n },\n };\n },\n ...options.deserialize,\n },\n ],\n };\n },\n });\n\nexport const createEmbeddedEntryBlockPlugin = createEmbeddedEntityPlugin(BLOCKS.EMBEDDED_ENTRY);\nexport const createEmbeddedAssetBlockPlugin = createEmbeddedEntityPlugin(BLOCKS.EMBEDDED_ASSET);\n\nexport const withEmbeddedEntryBlockOptions: CustomSlatePluginOptions = {\n [BLOCKS.EMBEDDED_ENTRY]: {\n type: BLOCKS.EMBEDDED_ENTRY,\n component: LinkedEntityBlock,\n },\n};\nexport const withEmbeddedAssetBlockOptions: CustomSlatePluginOptions = {\n [BLOCKS.EMBEDDED_ASSET]: {\n type: BLOCKS.EMBEDDED_ASSET,\n component: LinkedEntityBlock,\n },\n};\n\ntype A = 65;\ntype E = 69;\ntype AEvent = KeyboardEvent & { keyCode: A };\ntype EEvent = KeyboardEvent & { keyCode: E };\ntype ShiftEvent = KeyboardEvent & { shiftKey: true };\ntype CtrlEvent = KeyboardEvent & { ctrlKey: true };\ntype MetaEvent = KeyboardEvent & { metaKey: true };\ntype ModEvent = CtrlEvent | MetaEvent;\ntype EmbeddedAssetEvent = ModEvent & ShiftEvent & AEvent;\ntype EmbeddedEntryEvent = ModEvent & ShiftEvent & EEvent;\n\nconst isA = (event: KeyboardEvent): event is AEvent => event.keyCode === 65;\nconst isE = (event: KeyboardEvent): event is EEvent => event.keyCode === 69;\nconst isMod = (event: KeyboardEvent): event is ModEvent => event.ctrlKey || event.metaKey;\nconst isShift = (event: KeyboardEvent): event is ShiftEvent => event.shiftKey;\nconst wasEmbeddedAssetEventTriggered = (event: KeyboardEvent): event is EmbeddedAssetEvent =>\n isMod(event) && isShift(event) && isA(event);\nconst wasEmbeddedEntryEventTriggered = (event: KeyboardEvent): event is EmbeddedEntryEvent =>\n isMod(event) && isShift(event) && isE(event);\n\nexport function getWithEmbeddedEntityEvents(\n nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET,\n sdk: FieldExtensionSDK\n) {\n return function withEmbeddedEntityEvents(editor: SPEditor) {\n // TODO: Dry up copied code from HR\n return function handleEvent(event: KeyboardEvent) {\n if (!editor) return;\n\n const isEnter = event.keyCode === 13;\n const [, pathToSelectedElement] = getNodeEntryFromSelection(editor, nodeType);\n\n if (pathToSelectedElement) {\n if (isEnter) {\n event.preventDefault();\n moveToTheNextLine(editor);\n } else if (event.key === 'Backspace') {\n event.preventDefault();\n Transforms.removeNodes(editor, { at: pathToSelectedElement });\n }\n } else if (\n (nodeType === BLOCKS.EMBEDDED_ENTRY && wasEmbeddedEntryEventTriggered(event)) ||\n (nodeType === BLOCKS.EMBEDDED_ASSET && wasEmbeddedAssetEventTriggered(event))\n ) {\n selectEntityAndInsert(nodeType, sdk, editor, noop);\n }\n };\n };\n}\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { InlineEntryCard, MenuItem } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport { entityHelpers, FieldExtensionSDK } from '@contentful/field-editor-shared';\nimport { useEntities, ScheduledIconWithTooltip } from '@contentful/field-editor-reference';\nimport { INLINES } from '@contentful/rich-text-types';\n\nconst { getEntryTitle, getEntryStatus } = entityHelpers;\n\nconst styles = {\n scheduledIcon: css({\n verticalAlign: 'text-bottom',\n marginRight: tokens.spacing2Xs,\n }),\n};\n\ninterface FetchingWrappedInlineEntryCardProps {\n entryId: string;\n sdk: FieldExtensionSDK;\n isSelected: boolean;\n isDisabled: boolean;\n onEdit: (event: React.MouseEvent<Element, MouseEvent>) => void;\n onRemove: (event: React.MouseEvent<Element, MouseEvent>) => void;\n}\n\nexport function FetchingWrappedInlineEntryCard(props: FetchingWrappedInlineEntryCardProps) {\n const { getOrLoadEntry, loadEntityScheduledActions, entries } = useEntities();\n const entry = React.useMemo(() => entries[props.entryId], [entries, props.entryId]);\n\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n const contentType = React.useMemo(() => {\n if (!entry || entry === 'failed' || !allContentTypes) return undefined;\n\n return allContentTypes.find(\n (contentType) => contentType.sys.id === entry.sys.contentType.sys.id\n );\n }, [allContentTypes, entry]);\n\n const contentTypeName = contentType ? contentType.name : '';\n\n const title = React.useMemo(\n () =>\n getEntryTitle({\n entry,\n contentType,\n localeCode: props.sdk.field.locale,\n defaultLocaleCode: props.sdk.locales.default,\n defaultTitle: 'Untitled',\n }),\n [entry, contentType, props.sdk.field.locale, props.sdk.locales.default]\n );\n\n React.useEffect(() => {\n if (!props.entryId) return;\n getOrLoadEntry(props.entryId);\n // We don't include getOrLoadEntry below because it's part of the constate-derived\n // useEntities(), not props.\n // eslint-disable-next-line\n }, [props.entryId]);\n\n if (entry === 'failed') {\n return (\n <InlineEntryCard\n title=\"Entry missing or inaccessible\"\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n />\n );\n }\n\n if (entry === undefined) {\n return <InlineEntryCard isLoading />;\n }\n\n const status = getEntryStatus(entry.sys);\n if (status === 'deleted') {\n return (\n <InlineEntryCard\n title=\"Entry missing or inaccessible\"\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n actions={[\n <MenuItem key=\"remove\" onClick={props.onRemove} testId=\"card-action-remove\">\n Remove\n </MenuItem>,\n ]}\n />\n );\n }\n\n return (\n <InlineEntryCard\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n title={\n (\n <>\n <span>\n {contentTypeName} {title}\n </span>\n <ScheduledIconWithTooltip\n getEntityScheduledActions={loadEntityScheduledActions}\n entityType=\"Entry\"\n entityId={entry.sys.id}>\n <ClockIcon className={styles.scheduledIcon} variant=\"muted\" testId=\"scheduled-icon\" />\n </ScheduledIconWithTooltip>\n </>\n ) as any\n }\n status={status}\n actions={[\n <MenuItem key=\"edit\" onClick={props.onEdit}>\n Edit\n </MenuItem>,\n <MenuItem\n key=\"edit\"\n onClick={props.onRemove}\n disabled={props.isDisabled}\n testId=\"card-action-remove\">\n Remove\n </MenuItem>,\n ]}\n />\n );\n}\n","import { INLINES } from '@contentful/rich-text-types';\n\nexport function createInlineEntryNode(id: string) {\n return {\n type: INLINES.EMBEDDED_ENTRY,\n children: [{ text: '' }],\n data: {\n target: {\n sys: {\n id,\n type: 'Link',\n linkType: 'Entry',\n },\n },\n },\n };\n}\n","import * as React from 'react';\nimport {\n PlatePlugin,\n getRenderElement,\n getPlatePluginTypes,\n getPlatePluginOptions,\n} from '@udecode/plate-core';\nimport { Transforms } from 'slate';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { useSelected, ReactEditor, useReadOnly } from 'slate-react';\nimport { Button, Menu, Flex } from '@contentful/f36-components';\nimport { EmbeddedEntryInlineIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\nimport { Link, FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Entry } from '@contentful/field-editor-shared';\nimport { CustomSlatePluginOptions, CustomRenderElementProps } from '../../types';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { useSdkContext } from '../../SdkProvider';\nimport { FetchingWrappedInlineEntryCard } from './FetchingWrappedInlineEntryCard';\nimport { createInlineEntryNode } from './Util';\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\n\nconst styles = {\n icon: css({\n marginRight: '10px',\n }),\n\n root: css({\n margin: '0 1px',\n fontSize: 'inherit',\n span: {\n webkitUserSelect: 'none',\n mozUserSelect: 'none',\n msUserSelect: 'none',\n userSelect: 'none',\n },\n }),\n};\n\ntype EmbeddedEntityInlineProps = CustomRenderElementProps<{\n target: Link;\n}>;\n\nfunction EmbeddedEntityInline(props: EmbeddedEntityInlineProps) {\n const editor = useContentfulEditor();\n const sdk = useSdkContext();\n const isSelected = useSelected();\n const { id: entryId } = props.element.data.target.sys;\n const isDisabled = useReadOnly();\n\n function handleEditClick() {\n return sdk.navigator.openEntry(entryId, { slideIn: true });\n }\n\n function handleRemoveClick() {\n if (!editor) return;\n const pathToElement = ReactEditor.findPath(editor, props.element);\n Transforms.removeNodes(editor, { at: pathToElement });\n }\n\n return (\n <span {...props.attributes} className={styles.root} data-embedded-entity-inline-id={entryId}>\n <span contentEditable={false}>\n <FetchingWrappedInlineEntryCard\n sdk={sdk}\n entryId={entryId}\n isSelected={isSelected}\n isDisabled={isDisabled}\n onRemove={handleRemoveClick}\n onEdit={handleEditClick}\n />\n </span>\n {props.children}\n </span>\n );\n}\n\ninterface ToolbarEmbeddedEntityInlineButtonProps {\n onClose: () => void;\n isDisabled: boolean;\n isButton?: boolean;\n}\n\nasync function selectEntityAndInsert(editor, sdk: FieldExtensionSDK) {\n const config = {\n ...newEntitySelectorConfigFromRichTextField(sdk.field, INLINES.EMBEDDED_ENTRY),\n withCreate: true,\n };\n const selection = editor.selection;\n\n const entry = await sdk.dialogs.selectSingleEntry<Entry>(config);\n ReactEditor.focus(editor); // Dialog steals focus from editor, return it.\n if (!entry) return;\n\n const inlineEntryNode = createInlineEntryNode(entry.sys.id);\n\n // Got to wait until focus is really back on the editor or setSelection() won't work.\n setTimeout(() => {\n Transforms.setSelection(editor, selection);\n Transforms.insertNodes(editor, inlineEntryNode);\n }, 0);\n}\n\nexport function ToolbarEmbeddedEntityInlineButton(props: ToolbarEmbeddedEntityInlineButtonProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n\n async function handleClick(event) {\n event.preventDefault();\n\n if (!editor) return;\n\n props.onClose();\n\n await selectEntityAndInsert(editor, sdk);\n }\n\n return props.isButton ? (\n <Button\n isDisabled={props.isDisabled}\n className={`${INLINES.EMBEDDED_ENTRY}-button`}\n size=\"small\"\n onClick={handleClick}\n startIcon={<EmbeddedEntryInlineIcon />}\n variant=\"secondary\"\n testId={`toolbar-toggle-${INLINES.EMBEDDED_ENTRY}`}>\n Embed inline entry\n </Button>\n ) : (\n <Menu.Item\n disabled={props.isDisabled}\n className=\"rich-text__entry-link-block-button\"\n testId={`toolbar-toggle-${INLINES.EMBEDDED_ENTRY}`}\n onClick={handleClick}>\n <Flex alignItems=\"center\" flexDirection=\"row\">\n <EmbeddedEntryInlineIcon\n variant=\"secondary\"\n className={`rich-text__embedded-entry-list-icon ${styles.icon}`}\n />\n <span>Inline entry</span>\n </Flex>\n </Menu.Item>\n );\n}\n\nexport function createEmbeddedEntityInlinePlugin(sdk): PlatePlugin {\n return {\n renderElement: getRenderElement(INLINES.EMBEDDED_ENTRY),\n pluginKeys: INLINES.EMBEDDED_ENTRY,\n inlineTypes: getPlatePluginTypes(INLINES.EMBEDDED_ENTRY),\n onKeyDown: getWithEmbeddedEntryInlineEvents(sdk),\n deserialize: (editor) => {\n const options = getPlatePluginOptions(editor, INLINES.EMBEDDED_ENTRY);\n\n return {\n element: [\n {\n type: INLINES.EMBEDDED_ENTRY,\n deserialize: (element) => {\n const entryId = element.getAttribute('data-embedded-entity-inline-id');\n return entryId ? createInlineEntryNode(entryId) : undefined;\n },\n ...options.deserialize,\n },\n ],\n };\n },\n };\n}\n\nexport const withEmbeddedEntityInlineOptions: CustomSlatePluginOptions = {\n [INLINES.EMBEDDED_ENTRY]: {\n type: INLINES.EMBEDDED_ENTRY,\n component: EmbeddedEntityInline,\n },\n};\n\n// TODO: DRY up types from embedded entry block and elsewhere\ntype TWO = 50;\ntype TwoEvent = React.KeyboardEvent & { keyCode: TWO };\ntype ShiftEvent = React.KeyboardEvent & { shiftKey: true };\ntype CtrlEvent = React.KeyboardEvent & { ctrlKey: true };\ntype MetaEvent = React.KeyboardEvent & { metaKey: true };\ntype ModEvent = CtrlEvent | MetaEvent;\ntype EmbeddedEntryInlineEvent = ModEvent & ShiftEvent & TwoEvent;\n\nconst isTwo = (event: React.KeyboardEvent): event is TwoEvent => event.keyCode === 50;\nconst isMod = (event: React.KeyboardEvent): event is ModEvent => event.ctrlKey || event.metaKey;\nconst isShift = (event: React.KeyboardEvent): event is ShiftEvent => event.shiftKey;\nconst wasEmbeddedEntryInlineEventTriggered = (\n event: React.KeyboardEvent\n): event is EmbeddedEntryInlineEvent => isMod(event) && isShift(event) && isTwo(event);\n\nfunction getWithEmbeddedEntryInlineEvents(sdk) {\n return function withEmbeddedEntryInlineEvents(editor) {\n return function handleEvent(event) {\n if (!editor) return;\n\n if (wasEmbeddedEntryInlineEventTriggered(event)) {\n selectEntityAndInsert(editor, sdk);\n }\n };\n };\n}\n","import React, { useState } from 'react';\n\nimport { EmbeddedEntityDropdownButton } from '../plugins/EmbeddedEntity';\nimport { ToolbarIcon as EmbeddedEntityBlockToolbarIcon } from '../plugins/EmbeddedEntityBlock';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { isNodeTypeEnabled } from '../helpers/validations';\nimport { ToolbarEmbeddedEntityInlineButton } from '../plugins/EmbeddedEntityInline';\nimport { useSdkContext } from '../SdkProvider';\n\nexport interface EmbedEntityWidgetProps {\n isDisabled?: boolean;\n canInsertBlocks?: boolean;\n}\n\nexport const EmbedEntityWidget = ({ isDisabled, canInsertBlocks }: EmbedEntityWidgetProps) => {\n const sdk = useSdkContext();\n const [isEmbedDropdownOpen, setEmbedDropdownOpen] = useState(false);\n const onCloseEntityDropdown = () => setEmbedDropdownOpen(false);\n const onToggleEntityDropdown = () => setEmbedDropdownOpen(!isEmbedDropdownOpen);\n\n const [canAccessAssets, setCanAccessAssets] = useState(false);\n React.useEffect(() => {\n sdk.access.can('read', 'Asset').then(setCanAccessAssets);\n }, [sdk]);\n\n const inlineEntryEmbedEnabled = isNodeTypeEnabled(sdk.field, INLINES.EMBEDDED_ENTRY);\n const blockEntryEmbedEnabled =\n isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ENTRY) && canInsertBlocks;\n const blockAssetEmbedEnabled =\n canAccessAssets && isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ASSET) && canInsertBlocks;\n\n const numEnabledEmbeds = [\n inlineEntryEmbedEnabled,\n blockEntryEmbedEnabled,\n blockAssetEmbedEnabled,\n ].filter(Boolean).length;\n\n const shouldDisplayDropdown = numEnabledEmbeds > 1;\n\n // Avoids UI glitching when switching back and forth between\n // different layouts\n React.useEffect(() => {\n if (!shouldDisplayDropdown) {\n setEmbedDropdownOpen(false);\n }\n }, [shouldDisplayDropdown]);\n\n const actions = (\n <>\n {blockEntryEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ENTRY}\n onClose={onCloseEntityDropdown}\n isButton={!shouldDisplayDropdown}\n />\n )}\n {inlineEntryEmbedEnabled && (\n <ToolbarEmbeddedEntityInlineButton\n isDisabled={!!isDisabled}\n onClose={onCloseEntityDropdown}\n isButton={!shouldDisplayDropdown}\n />\n )}\n {blockAssetEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ASSET}\n onClose={onCloseEntityDropdown}\n isButton={!shouldDisplayDropdown}\n />\n )}\n </>\n );\n\n if (!shouldDisplayDropdown) {\n return actions;\n }\n\n return (\n <EmbeddedEntityDropdownButton\n isDisabled={isDisabled}\n onClose={onCloseEntityDropdown}\n onToggle={onToggleEntityDropdown}\n isOpen={isEmbedDropdownOpen}>\n {actions}\n </EmbeddedEntityDropdownButton>\n );\n};\n","import React, { Fragment } from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { Flex } from '@contentful/f36-components';\nimport { ToolbarHrButton } from '../plugins/Hr';\nimport { ToolbarHeadingButton } from '../plugins/Heading';\nimport { ToolbarQuoteButton } from '../plugins/Quote';\nimport { ToolbarListButton } from '../plugins/List';\nimport { ToolbarBoldButton } from '../plugins/Bold';\nimport { ToolbarCodeButton } from '../plugins/Code';\nimport { ToolbarItalicButton } from '../plugins/Italic';\nimport { ToolbarUnderlineButton } from '../plugins/Underline';\nimport { ToolbarHyperlinkButton } from '../plugins/Hyperlink';\nimport { ToolbarTableButton } from '../plugins/Table';\nimport { BLOCKS, INLINES, MARKS } from '@contentful/rich-text-types';\nimport { isNodeTypeSelected } from '../helpers/editor';\nimport { isNodeTypeEnabled, isMarkEnabled } from '../helpers/validations';\nimport { useSdkContext } from '../SdkProvider';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { EmbedEntityWidget } from './EmbedEntityWidget';\nimport { useContentfulEditor } from '../ContentfulEditorProvider';\n\ntype ToolbarProps = {\n isDisabled?: boolean;\n};\n\nconst styles = {\n toolbar: css({\n border: `1px solid ${tokens.gray400}`,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingXs,\n borderRadius: `${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium} 0 0`,\n }),\n divider: css({\n display: 'inline-block',\n height: '21px',\n width: '1px',\n background: tokens.gray300,\n margin: `0 ${tokens.spacing2Xs}`,\n }),\n embedActionsWrapper: css({\n display: ['-webkit-box', '-ms-flexbox', 'flex'],\n webkitAlignSelf: 'flex-start',\n alignSelf: 'flex-start',\n msFlexItemAlign: 'start',\n marginLeft: 'auto',\n }),\n formattingOptionsWrapper: css({\n display: ['-webkit-box', '-ms-flexbox', 'flex'],\n msFlexAlign: 'center',\n webkitBoxAlign: 'center',\n alignItems: 'center',\n msFlexWrap: 'wrap',\n flexWrap: 'wrap',\n marginRight: '20px',\n }),\n};\n\nconst Toolbar = ({ isDisabled }: ToolbarProps) => {\n const sdk = useSdkContext();\n const editor = useContentfulEditor();\n const canInsertBlocks = !isNodeTypeSelected(editor, BLOCKS.TABLE);\n const validationInfo = React.useMemo(() => getValidationInfo(sdk.field), [sdk.field]);\n\n return (\n <Flex testId=\"toolbar\" className={styles.toolbar} alignItems=\"center\">\n <div className={styles.formattingOptionsWrapper}>\n <ToolbarHeadingButton isDisabled={isDisabled || !canInsertBlocks} />\n\n {validationInfo.isAnyMarkEnabled && <span className={styles.divider} />}\n\n {isMarkEnabled(sdk.field, MARKS.BOLD) && <ToolbarBoldButton isDisabled={isDisabled} />}\n {isMarkEnabled(sdk.field, MARKS.ITALIC) && <ToolbarItalicButton isDisabled={isDisabled} />}\n {isMarkEnabled(sdk.field, MARKS.UNDERLINE) && (\n <ToolbarUnderlineButton isDisabled={isDisabled} />\n )}\n {isMarkEnabled(sdk.field, MARKS.CODE) && <ToolbarCodeButton isDisabled={isDisabled} />}\n\n {validationInfo.isAnyHyperlinkEnabled && (\n <Fragment>\n <span className={styles.divider} />\n <ToolbarHyperlinkButton isDisabled={isDisabled} />\n </Fragment>\n )}\n\n {validationInfo.isAnyBlockFormattingEnabled && <span className={styles.divider} />}\n\n {isNodeTypeEnabled(sdk.field, BLOCKS.QUOTE) && (\n <ToolbarQuoteButton isDisabled={isDisabled || !canInsertBlocks} />\n )}\n <ToolbarListButton isDisabled={isDisabled || !canInsertBlocks} />\n {isNodeTypeEnabled(sdk.field, BLOCKS.HR) && (\n <ToolbarHrButton isDisabled={isDisabled || !canInsertBlocks} />\n )}\n {isNodeTypeEnabled(sdk.field, BLOCKS.TABLE) && (\n <ToolbarTableButton isDisabled={isDisabled || !canInsertBlocks} />\n )}\n </div>\n <div className={styles.embedActionsWrapper}>\n <EmbedEntityWidget isDisabled={isDisabled} canInsertBlocks={canInsertBlocks} />\n </div>\n </Flex>\n );\n};\n\nfunction getValidationInfo(field: FieldExtensionSDK['field']): {\n isAnyMarkEnabled: boolean;\n isAnyHyperlinkEnabled: boolean;\n isAnyBlockFormattingEnabled: boolean;\n} {\n const someWithValidation = (vals, validation) => vals.some((val) => validation(field, val));\n\n const isAnyMarkEnabled = someWithValidation(Object.values(MARKS), isMarkEnabled);\n\n const isAnyHyperlinkEnabled = someWithValidation(\n [INLINES.HYPERLINK, INLINES.ASSET_HYPERLINK, INLINES.ENTRY_HYPERLINK],\n isNodeTypeEnabled\n );\n\n const isAnyBlockFormattingEnabled = someWithValidation(\n [BLOCKS.UL_LIST, BLOCKS.OL_LIST, BLOCKS.QUOTE, BLOCKS.HR],\n isNodeTypeEnabled\n );\n\n return {\n isAnyMarkEnabled,\n isAnyHyperlinkEnabled,\n isAnyBlockFormattingEnabled,\n };\n}\n\nexport default Toolbar;\n","import React, { ReactNode } from 'react';\nimport { css } from 'emotion';\n\nconst styles = {\n nativeSticky: css`\n position: -webkit-sticky;\n position: sticky;\n top: -1px;\n z-index: 2;\n `,\n};\n\ntype StickyToolbarProps = {\n isDisabled?: boolean;\n children: ReactNode;\n};\n\nconst StickyToolbarWrapper = ({ isDisabled, children }: StickyToolbarProps) => (\n <div className={isDisabled ? '' : styles.nativeSticky}>{children}</div>\n);\n\nexport default StickyToolbarWrapper;\n","import { SPEditor } from '@udecode/plate-core';\n\nexport type SanitizerTuple = [Document, SPEditor];\n\ntype Predicate = (node: ChildNode) => boolean;\n\nexport const isHTMLElement = (node: ChildNode): node is HTMLElement =>\n node.nodeType === Node.ELEMENT_NODE;\n\nexport const removeChildNodes = (node: ChildNode, predicate: Predicate = Boolean) =>\n Array.from(node.childNodes)\n .filter(predicate)\n .forEach((table) => node.removeChild(table));\n\nexport const removeChildNodesUsingPredicate =\n (predicate: Predicate) =>\n (nodeList: NodeList): Node[] => {\n const nodes = Array.from(nodeList);\n while (nodes.length > 0) {\n const node = nodes.pop() as ChildNode;\n removeChildNodes(node, predicate);\n for (const childNode of Array.from(node.childNodes)) {\n nodes.push(childNode);\n }\n }\n return nodes;\n };\n","import { removeChildNodesUsingPredicate, SanitizerTuple } from './helpers';\n\nconst isComment = (node: ChildNode): node is Comment => node.nodeType === Node.COMMENT_NODE;\n\nconst removeCommentChildren = removeChildNodesUsingPredicate(isComment);\n\nexport const removeComments = ([doc, editor]: SanitizerTuple): SanitizerTuple => {\n removeCommentChildren(doc.childNodes);\n return [doc, editor];\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { getNodeEntryFromSelection } from '../../../helpers/editor';\nimport { isHTMLElement, removeChildNodesUsingPredicate, SanitizerTuple } from './helpers';\n\nconst TAG_NAME_TABLE = 'TABLE';\nconst TAG_NAME_TABLE_CAPTION = 'CAPTION';\nconst DISALLOWED_TABLE_CHILD_ELEMENTS: Element['tagName'][] = [TAG_NAME_TABLE_CAPTION];\ntype DisallowedTableChildElement = HTMLTableCaptionElement;\n\nconst isTableElement = (node: ChildNode): node is HTMLTableElement =>\n isHTMLElement(node) && node.tagName === TAG_NAME_TABLE;\n\nconst isDisallowedTableChildElement = (node: ChildNode): node is DisallowedTableChildElement =>\n isHTMLElement(node) && DISALLOWED_TABLE_CHILD_ELEMENTS.includes(node.tagName);\n\nconst removeDisallowedTableChildElements = removeChildNodesUsingPredicate(\n isDisallowedTableChildElement\n);\n\nconst removeTableGrandchildren = (nodeList: NodeList) => {\n const nodes = Array.from(nodeList);\n while (nodes.length > 0) {\n const node = nodes.pop() as ChildNode;\n if (isTableElement(node)) {\n removeDisallowedTableChildElements(node.childNodes);\n continue;\n }\n for (const childNode of Array.from(node.childNodes)) {\n nodes.push(childNode);\n }\n }\n return nodes;\n};\n\nexport const sanitizeTables = ([doc, editor]: SanitizerTuple): SanitizerTuple => {\n const [node] = getNodeEntryFromSelection(editor, BLOCKS.TABLE);\n const isTableInCurrentSelection = !!node;\n if (isTableInCurrentSelection) {\n removeDisallowedTableChildElements(doc.childNodes);\n } else {\n removeTableGrandchildren(doc.childNodes);\n }\n return [doc, editor];\n};\n","import { isHTMLElement, removeChildNodes, SanitizerTuple } from './helpers';\n\n/**\n * Ensures the text selection from entity block elements is\n * not included in the paste buffer.\n */\nexport const sanitizeEntityBlocks = ([doc, editor]: SanitizerTuple): SanitizerTuple => {\n const nodes = Array.from(doc.childNodes);\n while (nodes.length > 0) {\n const node = nodes.pop() as ChildNode;\n if (isHTMLElement(node) && node.getAttribute('data-entity-type')) {\n removeChildNodes(node);\n continue;\n }\n for (const childNode of Array.from(node.childNodes)) {\n nodes.push(childNode);\n }\n }\n return [doc, editor];\n};\n","import { PlatePlugin, SPEditor } from '@udecode/plate-core';\nimport * as sanitizers from './sanitizers';\nimport flow from 'lodash/flow';\n\nconst MIME_TYPE_HTML = 'text/html';\n\n// TODO: Upgrade tslib so we can just flow(...sanitizers);\nconst sanitizeDocument = flow.apply(this, Object.values(sanitizers));\n\nconst sanitizeHtml = (html: string, editor: SPEditor): string => {\n const doc = new DOMParser().parseFromString(html, MIME_TYPE_HTML);\n const [sanitizedDoc] = sanitizeDocument([doc, editor]);\n const sanitizedData = new XMLSerializer().serializeToString(sanitizedDoc);\n return sanitizedData;\n};\n\nconst htmlToDataTransfer = (html: string): DataTransfer => {\n const data = new DataTransfer();\n data.setData(MIME_TYPE_HTML, html);\n return data;\n};\n\nfunction withPasteHandling(editor: SPEditor) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (_event: React.KeyboardEvent) => {\n const { insertData } = editor;\n editor.insertData = (data: DataTransfer) => {\n const html = data.getData(MIME_TYPE_HTML);\n if (html) {\n const sanitized = sanitizeHtml(html, editor);\n const newData = htmlToDataTransfer(sanitized);\n insertData(newData);\n } else {\n insertData(data);\n }\n };\n };\n}\n\nexport const createPastePlugin = (): PlatePlugin => ({\n onKeyDown: withPasteHandling,\n});\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport { ELEMENT_PARAGRAPH } from '@udecode/plate-paragraph';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport tokens from '@contentful/f36-tokens';\nimport { RenderElementProps } from 'slate-react';\nimport { PlatePlugin, getRenderElement } from '@udecode/plate-core';\nimport { getToggleElementOnKeyDown } from '@udecode/plate-common';\nimport { CustomSlatePluginOptions } from '../../types';\nimport { deserializeElement } from '../../helpers/deserializer';\n\nconst styles = {\n [BLOCKS.PARAGRAPH]: css`\n line-height: ${tokens.lineHeightDefault};\n margin-bottom: 1.5em;\n `,\n};\n\nexport function Paragraph(props: RenderElementProps) {\n return (\n <div {...props.attributes} className={styles[BLOCKS.PARAGRAPH]}>\n {props.children}\n </div>\n );\n}\n\nexport function createParagraphPlugin(): PlatePlugin {\n const elementKeys: string[] = [ELEMENT_PARAGRAPH, BLOCKS.PARAGRAPH];\n\n return {\n renderElement: getRenderElement(elementKeys),\n pluginKeys: elementKeys,\n onKeyDown: getToggleElementOnKeyDown(BLOCKS.PARAGRAPH),\n deserialize: deserializeElement(BLOCKS.PARAGRAPH, [\n {\n nodeNames: ['P'],\n },\n ]),\n };\n}\n\nexport const withParagraphOptions: CustomSlatePluginOptions = {\n [ELEMENT_PARAGRAPH]: {\n // We convert the default slate plugin `p` to Contentful `BLOCKS.PARAGRAPH`\n type: BLOCKS.PARAGRAPH,\n component: Paragraph,\n },\n [BLOCKS.PARAGRAPH]: {\n type: BLOCKS.PARAGRAPH,\n component: Paragraph,\n hotkey: ['mod+opt+0'],\n },\n};\n","import { KeyboardEvent } from 'react';\nimport { PlatePlugin, SPEditor } from '@udecode/plate-core';\n\nexport function createNewLinePlugin(): PlatePlugin {\n return {\n onKeyDown: function (editor: SPEditor) {\n return (event: KeyboardEvent) => {\n const isEnter = event.key === 'Enter';\n const isShift = event.shiftKey;\n\n if (isEnter && isShift) {\n event.preventDefault();\n editor.insertText('\\n');\n return true; // To prevent the next handler from running\n }\n\n return false; // something like next()\n };\n },\n };\n}\n","import { PlatePlugin } from '@udecode/plate-core';\nimport { isFirstChild } from '../../helpers/editor';\nimport { ExitBreakPluginOptions, createExitBreakPlugin } from '@udecode/plate-break';\n\nexport function createInsertBeforeFirstVoidBlockPlugin(): PlatePlugin {\n const optionsExitBreakPlugin: ExitBreakPluginOptions = {\n rules: [\n {\n hotkey: 'enter',\n before: true,\n query: { filter: ([node, path]) => isFirstChild(path) && !!node.isVoid },\n },\n ],\n };\n\n return createExitBreakPlugin(optionsExitBreakPlugin);\n}\n","import { BLOCKS, INLINES, VOID_BLOCKS, Text } from '@contentful/rich-text-types';\nimport { CustomElement, TextElement, TextOrCustomElement } from 'types';\nimport values from 'lodash/values'; // eslint-disable-line you-dont-need-lodash-underscore/values\n\ntype NodeType = BLOCKS | INLINES | Text['nodeType'];\n\nconst TEXT_PARENT_NODES: string[] = (VOID_BLOCKS as string[])\n .concat(values(INLINES) as string[])\n .concat(\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6\n );\n\nconst isTextElement = (node: TextOrCustomElement): node is TextElement => 'text' in node;\n\nconst wrapNode = (type: BLOCKS, node: TextOrCustomElement): CustomElement => ({\n type,\n data: {},\n children: [node],\n});\n\nfunction wrapOrphanedTextNode(parentNodeType: NodeType, node: TextElement): CustomElement {\n const paragraph = wrapNode(BLOCKS.PARAGRAPH, node);\n switch (parentNodeType) {\n case BLOCKS.OL_LIST:\n case BLOCKS.UL_LIST:\n return wrapNode(BLOCKS.LIST_ITEM, paragraph);\n case BLOCKS.TABLE_ROW:\n return wrapNode(BLOCKS.TABLE_CELL, paragraph);\n case BLOCKS.TABLE:\n return wrapNode(BLOCKS.TABLE_ROW, wrapNode(BLOCKS.TABLE_CELL, paragraph));\n default:\n return paragraph;\n }\n}\n\n/**\n * Ensures \"orphaned\" text node elements (those without a parent capable of\n * validly rendering a text child node) are wrapped with a suitable parent\n * element to prevent failures on the validation layer.\n *\n * It is commonplace for third party plugins (including udecode) to reconcile\n * deletion events by inserting such nodes into their schema. This\n * subprocedure is intended as a guard against such cases.\n */\nexport function sanitizeSlateDoc(\n nodes: TextOrCustomElement[] = [],\n parentNodeType: NodeType = BLOCKS.DOCUMENT\n): TextOrCustomElement[] {\n return nodes.map((node: TextOrCustomElement): TextOrCustomElement => {\n if (isTextElement(node)) {\n return TEXT_PARENT_NODES.includes(parentNodeType)\n ? node\n : wrapOrphanedTextNode(parentNodeType, node);\n }\n return {\n ...node,\n children: sanitizeSlateDoc(node.children, node.type as NodeType),\n };\n });\n}\n\n/**\n * Ensures incoming void nodes have a child leaf text element.\n */\nexport function sanitizeIncomingSlateDoc(nodes: TextOrCustomElement[] = []): TextOrCustomElement[] {\n return nodes.map((node: TextOrCustomElement): TextOrCustomElement => {\n if (isTextElement(node)) {\n return node;\n }\n if (node.isVoid && node.children?.length === 0) {\n return {\n ...node,\n children: [{ text: '', data: {} }],\n };\n }\n return {\n ...node,\n children: sanitizeIncomingSlateDoc(node.children),\n };\n });\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { createTrailingBlockPlugin } from '@udecode/plate-trailing-block';\n\nexport const createTrailingParagraphPlugin = () => {\n return createTrailingBlockPlugin({\n type: BLOCKS.PARAGRAPH,\n level: 0,\n });\n};\n","import React, { useCallback, useState } from 'react';\nimport noop from 'lodash/noop';\nimport { toContentfulDocument, toSlatejsDocument } from '@contentful/contentful-slatejs-adapter';\nimport * as Contentful from '@contentful/rich-text-types';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { css, cx } from 'emotion';\nimport { styles } from './RichTextEditor.styles';\nimport schema from './constants/Schema';\nimport deepEquals from 'fast-deep-equal';\nimport Toolbar from './Toolbar';\nimport StickyToolbarWrapper from './Toolbar/StickyToolbarWrapper';\nimport { createPastePlugin } from './plugins/Paste';\nimport { createListPlugin, withListOptions } from './plugins/List';\nimport {\n Plate,\n createHistoryPlugin,\n createReactPlugin,\n PlatePlugin,\n SPEditor,\n} from '@udecode/plate-core';\nimport { createDeserializeHTMLPlugin } from '@udecode/plate-html-serializer';\nimport { createHrPlugin, withHrOptions } from './plugins/Hr';\nimport { withHeadingOptions, createHeadingPlugin } from './plugins/Heading';\nimport { createBoldPlugin, withBoldOptions } from './plugins/Bold';\nimport { withCodeOptions, createCodePlugin } from './plugins/Code';\nimport { withItalicOptions, createItalicPlugin } from './plugins/Italic';\nimport { createUnderlinePlugin, withUnderlineOptions } from './plugins/Underline';\nimport { createParagraphPlugin, withParagraphOptions } from './plugins/Paragraph';\nimport { createQuotePlugin, withQuoteOptions } from './plugins/Quote';\nimport { createNewLinePlugin } from './plugins/NewLine';\nimport { createInsertBeforeFirstVoidBlockPlugin } from './plugins/InsertBeforeFirstVoidBlock';\nimport { createTablePlugin, withTableOptions } from './plugins/Table';\nimport { createHyperlinkPlugin, withHyperlinkOptions } from './plugins/Hyperlink';\nimport {\n createEmbeddedAssetBlockPlugin,\n createEmbeddedEntryBlockPlugin,\n withEmbeddedAssetBlockOptions,\n withEmbeddedEntryBlockOptions,\n} from './plugins/EmbeddedEntityBlock';\nimport {\n createEmbeddedEntityInlinePlugin,\n withEmbeddedEntityInlineOptions,\n} from './plugins/EmbeddedEntityInline';\nimport { SdkProvider } from './SdkProvider';\nimport {\n RichTextTrackingActionHandler,\n TrackingProvider,\n useTrackingContext,\n} from './TrackingProvider';\nimport { sanitizeIncomingSlateDoc, sanitizeSlateDoc } from './helpers/sanitizeSlateDoc';\nimport { TextOrCustomElement } from './types';\nimport { ContentfulEditorProvider, getContentfulEditorId } from './ContentfulEditorProvider';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport { createTrailingParagraphPlugin } from './plugins/TrailingParagraph';\n\ntype ConnectedProps = {\n sdk: FieldExtensionSDK;\n onAction?: RichTextTrackingActionHandler;\n minHeight?: string | number;\n value?: object;\n isDisabled?: boolean;\n onChange?: (doc: Contentful.Document) => unknown;\n isToolbarHidden?: boolean;\n actionsDisabled?: boolean;\n};\n\nconst getPlugins = (sdk: FieldExtensionSDK, tracking: TrackingProvider) => {\n const plugins = [\n // Core\n createReactPlugin(),\n createHistoryPlugin(),\n\n // Behavior\n createPastePlugin(),\n\n // Global shortcuts\n createNewLinePlugin(),\n createInsertBeforeFirstVoidBlockPlugin(),\n\n // Block Elements\n createParagraphPlugin(),\n createListPlugin(),\n createHrPlugin(),\n createHeadingPlugin(),\n createQuotePlugin(),\n createTablePlugin(tracking),\n createEmbeddedEntryBlockPlugin(sdk),\n createEmbeddedAssetBlockPlugin(sdk),\n\n // Inline elements\n createHyperlinkPlugin(sdk),\n createEmbeddedEntityInlinePlugin(sdk),\n\n // Marks\n createBoldPlugin(),\n createCodePlugin(),\n createItalicPlugin(),\n createUnderlinePlugin(),\n\n // Other\n createTrailingParagraphPlugin(),\n ];\n\n return plugins.concat([createDeserializeHTMLPlugin({ plugins })] as PlatePlugin<SPEditor>[]);\n};\n\nconst options = {\n // Block elements\n ...withParagraphOptions,\n ...withListOptions,\n ...withHrOptions,\n ...withHeadingOptions,\n ...withQuoteOptions,\n ...withTableOptions,\n ...withEmbeddedEntryBlockOptions,\n ...withEmbeddedAssetBlockOptions,\n\n // Inline elements\n ...withHyperlinkOptions,\n ...withEmbeddedEntityInlineOptions,\n\n // Marks\n ...withBoldOptions,\n ...withCodeOptions,\n ...withItalicOptions,\n ...withUnderlineOptions,\n};\nexport const ConnectedRichTextEditor = (props: ConnectedProps) => {\n const tracking = useTrackingContext();\n\n const docFromAdapter = toSlatejsDocument({\n document: props.value || Contentful.EMPTY_DOCUMENT,\n schema,\n });\n\n const doc = sanitizeIncomingSlateDoc(docFromAdapter);\n\n const [value, setValue] = useState(doc);\n\n const classNames = cx(\n styles.editor,\n props.minHeight !== undefined ? css({ minHeight: props.minHeight }) : undefined,\n props.isDisabled ? styles.disabled : styles.enabled,\n props.isToolbarHidden && styles.hiddenToolbar\n );\n\n const plugins = React.useMemo(() => getPlugins(props.sdk, tracking), [props.sdk, tracking]);\n\n return (\n <div className={styles.root} data-test-id=\"rich-text-editor\">\n <Plate\n id={getContentfulEditorId(props.sdk)}\n initialValue={value}\n plugins={plugins}\n editableProps={{\n className: classNames,\n readOnly: props.isDisabled,\n }}\n onChange={(newValue) => {\n const slateDoc = sanitizeSlateDoc(newValue as TextOrCustomElement[]);\n setValue(slateDoc);\n const contentfulDoc = toContentfulDocument({ document: slateDoc, schema });\n props.onChange?.(contentfulDoc);\n }}\n // @ts-expect-error\n options={options}>\n {!props.isToolbarHidden && (\n <StickyToolbarWrapper isDisabled={props.isDisabled}>\n <Toolbar isDisabled={props.isDisabled} />\n </StickyToolbarWrapper>\n )}\n </Plate>\n </div>\n );\n};\n\ntype Props = ConnectedProps & { isInitiallyDisabled: boolean };\n\nconst RichTextEditor = (props: Props) => {\n const { sdk, isInitiallyDisabled, onAction, ...otherProps } = props;\n const isEmptyValue = useCallback(\n (value) => !value || deepEquals(value, Contentful.EMPTY_DOCUMENT),\n []\n );\n return (\n <EntityProvider sdk={sdk}>\n <SdkProvider sdk={sdk}>\n <TrackingProvider onAction={onAction || noop}>\n <FieldConnector\n throttle={0}\n field={sdk.field}\n isInitiallyDisabled={isInitiallyDisabled}\n isEmptyValue={isEmptyValue}\n isEqualValues={deepEquals}>\n {({ lastRemoteValue, disabled, setValue, externalReset }) => (\n <ContentfulEditorProvider sdk={sdk}>\n <ConnectedRichTextEditor\n {...otherProps}\n key={`rich-text-editor-${externalReset}`}\n value={lastRemoteValue}\n sdk={sdk}\n onAction={onAction || noop}\n isDisabled={disabled}\n onChange={setValue}\n />\n </ContentfulEditorProvider>\n )}\n </FieldConnector>\n </TrackingProvider>\n </SdkProvider>\n </EntityProvider>\n );\n};\n\nexport default RichTextEditor;\n","import React from 'react';\nimport { css } from 'emotion';\nimport PropTypes from 'prop-types';\nimport tokens from '@contentful/f36-tokens';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { FetchingWrappedEntryCard } from '../../plugins/shared/FetchingWrappedEntryCard';\nimport { FetchingWrappedAssetCard } from '../../plugins/shared/FetchingWrappedAssetCard';\n\nimport {\n TextLink,\n Button,\n FormControl,\n FormLabel,\n Select,\n TextInput,\n Form,\n ModalContent,\n ModalControls,\n} from '@contentful/f36-components';\n\nexport const LINK_TYPES = {\n URI: 'uri',\n ENTRY: 'Entry',\n ASSET: 'Asset',\n};\n\nfunction isFeaturingEntitySelector(entitySelectorConfigs = {}) {\n return !!entitySelectorConfigs.Entry || !!entitySelectorConfigs.Asset;\n}\n\nfunction entityToLink(entity) {\n const { id, type } = entity.sys;\n return { sys: { id, type: 'Link', linkType: type } };\n}\n\nexport class HyperlinkDialog extends React.Component {\n static propTypes = {\n sdk: PropTypes.object.isRequired,\n labels: PropTypes.shape({\n title: PropTypes.string,\n confirm: PropTypes.string,\n }),\n value: PropTypes.shape({\n text: PropTypes.string,\n uri: PropTypes.string,\n target: PropTypes.object,\n // Will be overwritten accordingly if `uri` or `target.sys.linkType` are set.\n type: PropTypes.oneOf(['uri', 'Entry', 'Asset']),\n }),\n entitySelectorConfigs: PropTypes.object,\n allowedHyperlinkTypes: PropTypes.arrayOf(\n PropTypes.oneOf([LINK_TYPES.ENTRY, LINK_TYPES.ASSET, LINK_TYPES.URI])\n ),\n hideText: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n labels: {\n title: 'Insert link',\n confirm: 'Insert link',\n },\n value: {},\n hideText: false,\n entitySelectorConfigs: {},\n allowedHyperlinkTypes: [LINK_TYPES.ENTRY, LINK_TYPES.ASSET, LINK_TYPES.URI],\n };\n\n constructor(props) {\n super(props);\n\n const { text, type, uri, target } = props.value;\n const isEntityLink = Boolean(target);\n const entityLinks = {\n [LINK_TYPES.ENTRY]: null,\n [LINK_TYPES.ASSET]: null,\n };\n let linkType = type;\n\n if (isEntityLink) {\n linkType = target.sys.linkType;\n entityLinks[linkType] = target;\n } else if (props.allowedHyperlinkTypes.includes(LINK_TYPES.URI)) {\n linkType = LINK_TYPES.URI;\n } else {\n linkType = props.allowedHyperlinkTypes[0];\n }\n\n this.state = { text, uri, entityLinks, type: linkType };\n }\n\n setTargetEntity(type, entity) {\n this.setState((state) => ({\n entityLinks: {\n ...state.entityLinks,\n [type]: entity ? entityToLink(entity) : undefined,\n },\n }));\n }\n\n getValue() {\n const { text, type, uri } = this.state;\n const value = { type };\n if (text) {\n value.text = text;\n }\n if (type === LINK_TYPES.URI) {\n value.uri = uri;\n } else {\n value.target = this.state.entityLinks[type];\n }\n return value;\n }\n\n isLinkComplete() {\n const { text, type, uri, target } = this.getValue();\n const requiresText = !this.props.hideText;\n if (requiresText && !text) {\n return false;\n }\n return (type === LINK_TYPES.URI && uri) || target;\n }\n\n handleSubmit = (event) => {\n event.preventDefault();\n this.props.onClose(this.getValue());\n };\n\n selectEntry = async () => {\n const { locale, contentTypes } = this.props.entitySelectorConfigs.Entry;\n const entry = await this.props.sdk.dialogs.selectSingleEntry({ locale, contentTypes });\n this.setTargetEntity(LINK_TYPES.ENTRY, entry);\n };\n\n selectAsset = async () => {\n const { locale } = this.props.entitySelectorConfigs.Asset;\n const asset = await this.props.sdk.dialogs.selectSingleAsset({ locale });\n this.setTargetEntity(LINK_TYPES.ASSET, asset);\n };\n\n render() {\n const { labels } = this.props;\n return (\n <EntityProvider sdk={this.props.sdk}>\n <React.Fragment>\n <ModalContent>{this.renderFields()}</ModalContent>\n <ModalControls>\n <Button\n type=\"button\"\n onClick={() => this.props.onClose(null)}\n variant=\"secondary\"\n testId=\"cancel-cta\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n type=\"submit\"\n variant=\"positive\"\n onClick={this.handleSubmit}\n isDisabled={!this.isLinkComplete()}\n testId=\"confirm-cta\"\n size=\"small\">\n {labels.confirm}\n </Button>\n </ModalControls>\n </React.Fragment>\n </EntityProvider>\n );\n }\n\n renderFields() {\n const { hideText, allowedHyperlinkTypes, entitySelectorConfigs } = this.props;\n const { uri, text, type } = this.state;\n const isUriInputAutoFocused = type === LINK_TYPES.URI && (hideText || !!text);\n\n return (\n <Form>\n {hideText ? null : (\n <FormControl id=\"link-text\" isRequired>\n <FormControl.Label>Link text</FormControl.Label>\n <TextInput\n testId=\"link-text-input\"\n name=\"link-text\"\n value={text || ''}\n onChange={(e) => this.setState({ text: e.target.value })}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={!isUriInputAutoFocused}\n />\n </FormControl>\n )}\n {isFeaturingEntitySelector(entitySelectorConfigs) && (\n <FormControl id=\"link-type\" name=\"link-type\">\n <FormControl.Label>Link type</FormControl.Label>\n <Select\n value={type}\n onChange={(e) => this.setState({ type: e.target.value })}\n testId=\"link-type-select\">\n {/* Show the option if the link type is allowed or the current link is of type that is no longer valid */}\n {allowedHyperlinkTypes.includes(LINK_TYPES.URI) || type === LINK_TYPES.URI ? (\n <Select.Option value={LINK_TYPES.URI}>URL</Select.Option>\n ) : null}\n {allowedHyperlinkTypes.includes(LINK_TYPES.ENTRY) || type === LINK_TYPES.ENTRY ? (\n <Select.Option value={LINK_TYPES.ENTRY}>Entry</Select.Option>\n ) : null}\n {allowedHyperlinkTypes.includes(LINK_TYPES.ASSET) || type === LINK_TYPES.ASSET ? (\n <Select.Option value={LINK_TYPES.ASSET}>Asset</Select.Option>\n ) : null}\n </Select>\n </FormControl>\n )}\n {type === LINK_TYPES.URI ? (\n <FormControl id=\"link-uri\" isRequired>\n <FormControl.Label>Link target</FormControl.Label>\n <TextInput\n testId=\"link-target-input\"\n name=\"link-uri\"\n value={uri || ''}\n placeholder=\"https://\"\n onChange={(e) => this.setState({ uri: e.target.value })}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={isUriInputAutoFocused}\n />\n <FormControl.HelpText>A protocol may be required, e.g. https://</FormControl.HelpText>\n </FormControl>\n ) : (\n this.renderEntityField()\n )}\n </Form>\n );\n }\n\n renderEntityField() {\n const { type, entityLinks } = this.state;\n const resetEntity = () => this.setTargetEntity(type, null);\n const entityLink = entityLinks[type];\n const isEntitySelectorVisible = !entityLink;\n return (\n <div>\n <FormLabel required htmlFor=\"\">\n Link target\n </FormLabel>\n {!isEntitySelectorVisible && (\n <TextLink\n as=\"button\"\n className={css({ marginLeft: tokens.spacingS })}\n onClick={resetEntity}>\n Remove selection\n </TextLink>\n )}\n {entityLink && (\n <div>\n {type === LINK_TYPES.ENTRY && (\n <FetchingWrappedEntryCard\n sdk={this.props.sdk}\n locale={this.props.entitySelectorConfigs.Entry.locale}\n entryId={entityLink.sys.id}\n isDisabled\n isSelected={false}\n />\n )}\n {type == LINK_TYPES.ASSET && (\n <FetchingWrappedAssetCard\n sdk={this.props.sdk}\n locale={this.props.entitySelectorConfigs.Asset.locale}\n assetId={entityLink.sys.id}\n isDisabled\n isSelected={false}\n />\n )}\n </div>\n )}\n {/* Keep all entity selectors in the DOM for super fast types switching ux.*/}\n {isEntitySelectorVisible && this.renderEntitySelector(type, isEntitySelectorVisible)}\n </div>\n );\n }\n\n renderEntitySelector(type) {\n return (\n <div className={css({ marginTop: tokens.spacingS })}>\n {type === LINK_TYPES.ENTRY && (\n <TextLink as=\"button\" onClick={this.selectEntry}>\n Select entry\n </TextLink>\n )}\n {type === LINK_TYPES.ASSET && (\n <TextLink as=\"button\" onClick={this.selectAsset}>\n Select asset\n </TextLink>\n )}\n </div>\n );\n }\n}\n\nexport const openHyperlinkDialog = (\n dialogs,\n { value, showTextInput, allowedHyperlinkTypes, entitySelectorConfigs }\n) => {\n const isNew = !(value.uri || value.target);\n const props = {\n labels: {\n title: isNew ? 'Insert hyperlink' : 'Edit hyperlink',\n confirm: isNew ? 'Insert' : 'Update',\n },\n value,\n hideText: !showTextInput,\n allowedHyperlinkTypes,\n entitySelectorConfigs,\n };\n\n return dialogs.openCurrent({\n title: props.labels.title,\n width: 'large',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n allowHeightOverflow: true,\n parameters: {\n type: 'rich-text-hyperlink-dialog',\n ...props,\n },\n });\n};\n","import React from 'react';\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\nimport { HyperlinkDialog } from './HypelinkDialog/HyperlinkDialog';\n\nexport const openRichTextDialog = (sdk: DialogExtensionSDK) => (options) => {\n if (options.parameters?.type === 'rich-text-hyperlink-dialog') {\n return ModalDialogLauncher.openDialog(options, ({ onClose }) => {\n return <HyperlinkDialog {...options.parameters} onClose={onClose} sdk={sdk} />;\n });\n }\n return Promise.reject();\n};\n","import React from 'react';\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\nimport { HyperlinkDialog } from './HypelinkDialog/HyperlinkDialog';\n\nexport const renderRichTextDialog = (sdk: DialogExtensionSDK) => {\n const parameters = sdk.parameters.invocation as Record<string, unknown>;\n if (parameters?.type === 'rich-text-hyperlink-dialog') {\n sdk.window.startAutoResizer();\n return <HyperlinkDialog {...sdk.parameters.invocation} onClose={sdk.close} sdk={sdk} />;\n }\n return <div />;\n};\n"],"names":["STYLE_EDITOR_BORDER","tokens","gray400","styles","root","css","position","editor","borderRadius","borderRadiusMedium","border","borderTop","padding","fontSize","spacingM","fontFamily","fontStackPrimary","minHeight","background","colorWhite","outline","whiteSpace","overflowWrap","webkitUserModify","a","span","cursor","margin","hiddenToolbar","enabled","disabled","gray100","inlines","Object","values","INLINES","map","type","document","nodes","types","TOP_LEVEL_BLOCKS","blocks","BLOCKS","PARAGRAPH","match","object","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","VOID_BLOCKS","reduce","nodeType","isVoid","QUOTE","CONTAINERS","min","normalize","error","code","unwrapBlockByKey","node","key","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","EMBEDDED_ENTRY","button","height","width","marginLeft","spacing2Xs","marginRight","tooltip","zIndex","Number","zIndexTooltip","ToolbarButton","event","preventDefault","props","onClick","render","title","testId","isActive","children","className","isDisabled","React","Button","cx","startIcon","handleClick","variant","size","Tooltip","placement","content","Component","LINK_TYPES","LIST_TYPES","OL_LIST","UL_LIST","isBlockSelected","Array","from","Editor","Element","isElement","hasSelectionText","selection","focus","path","some","Text","isText","text","getNodeEntryFromSelection","nodeTypeOrTypes","nodeTypes","isArray","i","length","nodeEntry","slice","includes","isNodeTypeSelected","moveToTheNextLine","Transforms","move","distance","unit","toggleBlock","isList","isQuote","unwrapNodes","isEditor","split","newProperties","LIST_ITEM","setNodes","block","data","wrapNodes","getElementFromCurrentSelection","at","flat","getTableSize","table","numRows","firstRow","numColumns","isFirstChild","insertLink","options","wrapLink","isLinkActive","link","unwrapLink","url","target","isCollapsed","Range","uri","insertText","select","insertNodes","collapse","edge","getAncestorPathFromSelection","undefined","Path","levels","find","level","shouldUnwrapBlockquote","isQuoteSelected","isValidType","HR","unwrapFromRoot","ancestorPath","deserializeLeaf","rules","pluginOptions","getPlatePluginOptions","leaf","getLeafDeserializer","deserialize","deserializeElement","element","getElementDeserializer","getContentfulEditorId","sdk","entry","field","entryId","getSys","id","locale","useContentfulEditorHook","editorId","useStoreEditorRef","constate","ContentfulEditorProvider","useContentfulEditor","container","spacingL","hr","gray300","hrSelected","colorPrimary","withHrEvents","isEnter","keyCode","pathToSelectedHr","removeNodes","ToolbarHrButton","handleOnClick","hasText","getText","Slate","HorizontalRuleIcon","Hr","isSelected","isFocused","attributes","contentEditable","createHrPlugin","renderElement","getRenderElement","pluginKeys","onKeyDown","voidTypes","getPlatePluginTypes","nodeNames","withHrOptions","component","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","DEFAULT_ENABLED_NODE_TYPES","DOCUMENT","getRichTextValidation","validationType","flow","v","get","validations","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","concat","isNodeTypeEnabled","isMarkEnabled","mark","useSdk","sdkMemo","SdkProvider","useSdkContext","dropdown","fontWeightDemiBold","fontSizeL","headings","fontWeightMedium","spacingS","withHeadingEvents","fragment","currentFragment","isCurrentFragmentAHeading","paragraph","heading","currentOffset","offset","currentTextLength","Node","string","cursorIsAtTheBeginning","cursorIsAtTheEnd","splitNodes","headingKeyCodes","isMod","ctrlKey","metaKey","isAltOrOption","altKey","headingKey","toggleNodeType","activeType","inactiveType","LABELS","ToolbarHeadingButton","isOpen","setOpen","selected","setSelected","operations","nodeTypesByEnablement","fromEntries","keys","someHeadingsEnabled","filter","Boolean","handleOnSelectItem","setTimeout","Menu","onClose","Trigger","endIcon","ChevronDownIcon","List","Item","isInitiallyFocused","createHeading","Tag","Heading","H1","H2","H3","H4","H5","H6","createHeadingPlugin","headingType","index","isHeading","nodeName","withHeadingOptions","blockquote","borderLeft","gray200","paddingLeft","fontStyle","color","createBlockQuote","withQuoteEvents","isBackspace","isShift","shiftKey","isOneKey","TABLE","quoteIsEmpty","every","item","ToolbarQuoteButton","QuoteIcon","Quote","createQuotePlugin","withQuoteOptions","ToolbarListButton","toggleList","ListBulletedIcon","ListNumberedIcon","listStyles","lineHeightDefault","createList","UL","OL","LI","withListOptions","ELEMENT_LIC","ELEMENT_LI","ELEMENT_UL","ELEMENT_OL","createListPlugin","createPlateListPlugin","validLiChildrenTypes","LIST_ITEM_BLOCKS","ToolbarBoldButton","toggleMark","MARKS","BOLD","isMarkActive","FormatBoldIcon","bold","fontWeight","Bold","createBoldPlugin","renderLeaf","getRenderLeaf","getToggleMarkOnKeyDown","isGoogleBoldWrapper","startsWith","isBold","style","withBoldOptions","hotkey","ToolbarCodeButton","CODE","CodeIcon","Code","createCodePlugin","deserializeRule","withCodeOptions","ToolbarItalicButton","ITALIC","FormatItalicIcon","italic","Italic","createItalicPlugin","deserializeRules","withItalicOptions","ToolbarUnderlineButton","UNDERLINE","FormatUnderlinedIcon","Underline","createUnderlinePlugin","textDecoration","withUnderlineOptions","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","reverse","pop","iterable","iteratorMethod","isNaN","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","truncate","str","substr","replace","getEntityInfo","entityTitle","entityStatus","contentTypeName","EntryAssetTooltip","setEntityTitle","setEntityStatus","jobs","setJobs","isLoading","setIsLoading","hasError","setHasError","loadContent","actions","Asset","getEntity","space","getAsset","getEntityTitle","args","entityHelpers","getAssetTitle","asset","entity","Entry","getEntry","getEntryTitle","sys","contentType","contentTypeId","contentTypes","getCachedContentTypes","ct","localeCode","defaultLocaleCode","locales","entityType","getEntityScheduledActions","getEntryStatus","console","log","toLowerCase","getScheduleTooltipContent","job","jobsCount","scheduleIcon","EntityStatusIcon","useEntities","loadEntityScheduledActions","ScheduledIconWithTooltip","entityId","ClockIcon","entryCard","EntryThumbnail","file","isValidImage","AssetThumbnail","FetchingWrappedEntryCard","getOrLoadEntry","entries","setFile","getEntryImage","renderDropdown","onEdit","onRemove","MenuItem","EntryCard","MissingEntityCard","entryStatus","defaultTitle","description","getEntityDescription","status","thumbnailElement","icon","withDragHandle","assetCard","cardDropdown","truncated","overflow","textOverflow","downloadAsset","window","open","renderAssetInfo","entityFile","fileName","mimeType","fileSize","image","SectionTitle","isTruncated","shortenStorageUnit","renderActions","FetchingWrappedAssetCard","getOrLoadAsset","assets","assetId","fields","getAssetSrc","getFileType","groupToIconMap","video","audio","richtext","presentation","spreadsheet","pdfdocument","archive","plaintext","markup","groupName","mimetype","getGroupLabel","fallbackFileName","AssetCard","asSquare","src","getLinkedContentTypeIdsForNodeType","removeSelectionLabel","SYS_LINK_TYPES","LINK_TYPE_SELECTION_VALUES","HyperlinkModal","enabledLinkTypes","defaultLinkType","linkText","setLinkText","linkType","setLinkType","linkTarget","setLinkTarget","linkEntity","setLinkEntity","isLinkComplete","isRegularLink","entityLinks","isEntityLink","handleOnSubmit","entityToLink","selectEntry","dialogs","selectSingleEntry","selectAsset","selectSingleAsset","resetLinkEntity","EntityProvider","ModalContent","Form","FormControl","isRequired","Label","TextInput","onChange","Select","Option","HelpText","FormLabel","htmlFor","TextLink","ModalControls","addOrEditLink","selectionBeforeBlur","currentLinkText","ModalDialogLauncher","openDialog","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","allowHeightOverflow","ReactEditor","hyperlinkWrapper","display","hyperlink","fill","gray900","hyperlinkIEFallback","hyperlinkIcon","top","webkitTransition","transition","createHyperlinkPlugin","inlineTypes","buildHyperlinkEventHandler","hyperlinkOptions","entryHyperlinkOptions","assetHyperlinkOptions","isAnchor","getAttribute","isEntryAnchor","isAssetAnchor","isK","wasHyperlinkEventTriggered","withHyperlinkEvents","handleKeyDown","UrlHyperlink","stopPropagation","targetWrapperClassName","maxWidth","as","href","rel","EntityHyperlink","ToolbarHyperlinkButton","LinkIcon","withHyperlinkOptions","moveToFirstCellFromSelectedTable","tablePath","firstTableCellPath","anchor","setSelection","insertTableAndFocusFirstCell","insertTable","header","isTableActive","tableElements","ELEMENT_TABLE","ELEMENT_TH","ELEMENT_TR","ELEMENT_TD","el","isTableHeaderEnabled","tableItem","getAbove","getChildren","TABLE_HEADER_CELL","useTracking","onAction","trackingMemo","onViewportAction","actionName","origin","TrackingProvider","useTrackingContext","addRow","getNextRowPath","someNode","getPlatePluginType","currentRowItem","currentRowElem","currentRowPath","nextRowPath","getEmptyRowNode","colCount","start","addRowBelow","addRowAbove","addColumn","getNextCellPath","currentCellItem","currentTableItem","nextCellPath","newCellPath","replacePathPos","_","rowIdx","getEmptyCellNode","addColumnRight","currentCellPath","addColumnLeft","setHeader","enable","TABLE_CELL","topRight","right","getCurrentTableSize","TableActions","useState","isHeaderEnabled","setHeaderEnabled","close","useCallback","useEffect","canInsertRowAbove","useMemo","headerCell","toggleHeader","action","cb","tableSize","onOpen","IconButton","tabIndex","Divider","deleteRow","deleteColumn","deleteTable","TABLE_ROW","slateNodeToText","contentfulNode","toContentfulDocument","schema","documentToPlainTextString","Table","TR","TH","TD","withTableOptions","addTableTrackingEvents","insertData","html","getData","markupBefore","markupAfter","hasTables","tablePasted","hasHeadersOutsideFirstRow","addTableNormalization","normalizeNode","cellTypes","child","childPath","paragraphWithTextFromNode","isTableHeaderCell","flatMap","createWithTableEvents","tracking","withTableEvents","getTableOnKeyDown","createTablePlugin","createTablePluginFromUdecode","withOverrides","insertFragment","fragments","fragmentHasTable","emptyParagraph","ToolbarTableButton","TableIcon","EmbeddedEntityDropdownButton","onToggle","PlusIcon","marginBottom","LinkedEntityBlock","useSelected","useReadOnly","handleEditClick","openEntity","navigator","openAsset","openEntry","slideIn","handleRemoveClick","pathToElement","findPath","newEntitySelectorConfigFromRichTextField","getEntityTypeFromRichTextNode","words","indexOf","selectEntityAndInsert","logAction","baseConfig","selectEntity","config","withCreate","insertBlock","createNode","linkedEntityBlock","EmbeddedEntityBlockToolbarIcon","isButton","noop","getEntityTypeFromNodeType","baseClass","AssetIcon","EmbeddedEntryBlockIcon","Flex","alignItems","flexDirection","Icon","createEmbeddedEntityPlugin","getWithEmbeddedEntityEvents","entityTypes","EMBEDDED_ASSET","embeddedEntityId","isBlock","createEmbeddedEntryBlockPlugin","createEmbeddedAssetBlockPlugin","withEmbeddedEntryBlockOptions","withEmbeddedAssetBlockOptions","isA","isE","wasEmbeddedAssetEventTriggered","wasEmbeddedEntryEventTriggered","withEmbeddedEntityEvents","handleEvent","pathToSelectedElement","scheduledIcon","verticalAlign","FetchingWrappedInlineEntryCard","allContentTypes","InlineEntryCard","createInlineEntryNode","webkitUserSelect","mozUserSelect","msUserSelect","userSelect","EmbeddedEntityInline","inlineEntryNode","ToolbarEmbeddedEntityInlineButton","EmbeddedEntryInlineIcon","createEmbeddedEntityInlinePlugin","getWithEmbeddedEntryInlineEvents","withEmbeddedEntityInlineOptions","isTwo","wasEmbeddedEntryInlineEventTriggered","withEmbeddedEntryInlineEvents","EmbedEntityWidget","canInsertBlocks","isEmbedDropdownOpen","setEmbedDropdownOpen","onCloseEntityDropdown","onToggleEntityDropdown","canAccessAssets","setCanAccessAssets","access","can","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","numEnabledEmbeds","shouldDisplayDropdown","toolbar","backgroundColor","spacingXs","divider","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Toolbar","validationInfo","getValidationInfo","isAnyMarkEnabled","isAnyHyperlinkEnabled","Fragment","isAnyBlockFormattingEnabled","someWithValidation","vals","validation","val","nativeSticky","StickyToolbarWrapper","isHTMLElement","ELEMENT_NODE","removeChildNodes","predicate","childNodes","removeChild","removeChildNodesUsingPredicate","nodeList","childNode","isComment","COMMENT_NODE","removeCommentChildren","removeComments","doc","TAG_NAME_TABLE","TAG_NAME_TABLE_CAPTION","DISALLOWED_TABLE_CHILD_ELEMENTS","isTableElement","tagName","isDisallowedTableChildElement","removeDisallowedTableChildElements","removeTableGrandchildren","sanitizeTables","isTableInCurrentSelection","sanitizeEntityBlocks","MIME_TYPE_HTML","sanitizeDocument","apply","this","sanitizers","sanitizeHtml","DOMParser","parseFromString","sanitizedDoc","sanitizedData","XMLSerializer","serializeToString","htmlToDataTransfer","DataTransfer","setData","withPasteHandling","_event","sanitized","newData","createPastePlugin","Paragraph","createParagraphPlugin","elementKeys","ELEMENT_PARAGRAPH","getToggleElementOnKeyDown","withParagraphOptions","createNewLinePlugin","createInsertBeforeFirstVoidBlockPlugin","optionsExitBreakPlugin","before","query","createExitBreakPlugin","TEXT_PARENT_NODES","isTextElement","wrapNode","wrapOrphanedTextNode","parentNodeType","sanitizeSlateDoc","sanitizeIncomingSlateDoc","createTrailingParagraphPlugin","createTrailingBlockPlugin","getPlugins","plugins","createReactPlugin","createHistoryPlugin","createDeserializeHTMLPlugin","ConnectedRichTextEditor","docFromAdapter","toSlatejsDocument","Contentful","setValue","classNames","isToolbarHidden","Plate","initialValue","editableProps","readOnly","newValue","slateDoc","contentfulDoc","RichTextEditor","isInitiallyDisabled","otherProps","isEmptyValue","deepEquals","FieldConnector","throttle","isEqualValues","lastRemoteValue","externalReset","URI","ENTRY","ASSET","isFeaturingEntitySelector","entitySelectorConfigs","HyperlinkDialog","handleSubmit","getValue","setTargetEntity","allowedHyperlinkTypes","setState","requiresText","hideText","labels","renderFields","confirm","isUriInputAutoFocused","e","renderEntityField","resetEntity","entityLink","isEntitySelectorVisible","renderEntitySelector","marginTop","propTypes","PropTypes","shape","oneOf","arrayOf","bool","func","defaultProps","openRichTextDialog","parameters","renderRichTextDialog","invocation","startAutoResizer"],"mappings":"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"}