@contentful/field-editor-rich-text 1.1.3 → 2.0.0-next.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -60
- package/README.md +1 -1
- package/dist/ContentfulEditorProvider.d.ts +8 -0
- package/dist/RichTextEditor.d.ts +18 -60
- package/dist/RichTextEditor.styles.d.ts +7 -0
- package/dist/SdkProvider.d.ts +7 -0
- package/dist/Toolbar/components/EmbedEntityWidget.d.ts +5 -0
- package/dist/Toolbar/components/EmbeddedEntityDropdownButton.d.ts +9 -0
- package/dist/Toolbar/components/StickyToolbarWrapper.d.ts +7 -0
- package/dist/Toolbar/index.d.ts +5 -20
- package/dist/TrackingProvider.d.ts +11 -0
- package/dist/constants/Schema.d.ts +93 -11
- package/dist/dialogs/openRichTextDialog.d.ts +2 -1
- package/dist/dialogs/renderRichTextDialog.d.ts +2 -1
- package/dist/field-editor-rich-text.cjs.development.js +4749 -5125
- package/dist/field-editor-rich-text.cjs.development.js.map +1 -1
- package/dist/field-editor-rich-text.cjs.production.min.js +1 -1
- package/dist/field-editor-rich-text.cjs.production.min.js.map +1 -1
- package/dist/field-editor-rich-text.esm.js +4729 -5105
- package/dist/field-editor-rich-text.esm.js.map +1 -1
- package/dist/helpers/editor.d.ts +43 -0
- package/dist/helpers/environment.d.ts +2 -0
- package/dist/helpers/extractNodes.d.ts +7 -0
- package/dist/helpers/formatDateAndTime.d.ts +15 -0
- package/dist/helpers/getLinkedContentTypeIdsForNodeType.d.ts +26 -2
- package/dist/helpers/newEntitySelectorConfigFromRichTextField.d.ts +5 -1
- package/dist/helpers/sanitizeSlateDoc.d.ts +5 -0
- package/dist/helpers/transformers.d.ts +8 -0
- package/dist/helpers/validations.d.ts +10 -0
- package/dist/plugins/Break/createExitBreakPlugin.d.ts +2 -0
- package/dist/plugins/Break/createSoftBreakPlugin.d.ts +2 -0
- package/dist/plugins/Break/index.d.ts +3 -0
- package/dist/plugins/DragAndDrop/index.d.ts +2 -0
- package/dist/plugins/EmbeddedEntityBlock/LinkedEntityBlock.d.ts +14 -0
- package/dist/plugins/EmbeddedEntityBlock/ToolbarIcon.d.ts +11 -10
- package/dist/plugins/EmbeddedEntityBlock/Util.d.ts +2 -23
- package/dist/plugins/EmbeddedEntityBlock/index.d.ts +6 -26
- package/dist/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.d.ts +13 -0
- package/dist/plugins/EmbeddedEntityInline/Util.d.ts +16 -0
- package/dist/plugins/EmbeddedEntityInline/index.d.ts +11 -0
- package/dist/plugins/Heading/components/Heading.d.ts +11 -0
- package/dist/plugins/Heading/components/ToolbarHeadingButton.d.ts +4 -0
- package/dist/plugins/Heading/createHeadingPlugin.d.ts +2 -0
- package/dist/plugins/Heading/index.d.ts +2 -380
- package/dist/plugins/Hr/index.d.ts +12 -61
- package/dist/plugins/Hyperlink/EntryAssetTooltip.d.ts +9 -0
- package/dist/plugins/Hyperlink/HyperlinkModal.d.ts +16 -0
- package/dist/plugins/Hyperlink/index.d.ts +9 -9
- package/dist/plugins/Hyperlink/truncate.d.ts +1 -1
- package/dist/plugins/Hyperlink/utils.d.ts +3 -0
- package/dist/plugins/List/components/List.d.ts +3 -0
- package/dist/plugins/List/components/ListItem.d.ts +2 -0
- package/dist/plugins/List/components/ToolbarListButton.d.ts +4 -0
- package/dist/plugins/List/createListPlugin.d.ts +2 -0
- package/dist/plugins/List/index.d.ts +2 -114
- package/dist/plugins/List/insertListBreak.d.ts +2 -0
- package/dist/plugins/List/insertListFragment.d.ts +2 -0
- package/dist/plugins/List/transforms/insertListItem.d.ts +5 -0
- package/dist/plugins/List/utils.d.ts +14 -0
- package/dist/plugins/List/withList.d.ts +3 -0
- package/dist/plugins/Marks/Bold.d.ts +9 -0
- package/dist/plugins/Marks/Code.d.ts +9 -0
- package/dist/plugins/Marks/Italic.d.ts +9 -0
- package/dist/plugins/Marks/Underline.d.ts +9 -0
- package/dist/plugins/Marks/index.d.ts +2 -0
- package/dist/plugins/Normalizer/baseRules.d.ts +2 -0
- package/dist/plugins/Normalizer/createNormalizerPlugin.d.ts +2 -0
- package/dist/plugins/Normalizer/index.d.ts +2 -0
- package/dist/plugins/Normalizer/types.d.ts +39 -0
- package/dist/plugins/Normalizer/utils.d.ts +8 -0
- package/dist/plugins/Normalizer/withNormalizer.d.ts +2 -0
- package/dist/plugins/Paragraph/Paragraph.d.ts +2 -0
- package/dist/plugins/Paragraph/createParagraphPlugin.d.ts +2 -0
- package/dist/plugins/Paragraph/index.d.ts +1 -5
- package/dist/plugins/Paragraph/utils.d.ts +2 -0
- package/dist/plugins/PasteHTML/createPasteHTMLPlugin.d.ts +2 -0
- package/dist/plugins/PasteHTML/index.d.ts +1 -0
- package/dist/plugins/PasteHTML/utils/sanitizeHTML.d.ts +1 -0
- package/dist/plugins/PasteHTML/utils/sanitizeSheets.d.ts +4 -0
- package/dist/plugins/Quote/components/Quote.d.ts +2 -0
- package/dist/plugins/Quote/components/ToolbarQuoteButton.d.ts +4 -0
- package/dist/plugins/Quote/createQuotePlugin.d.ts +2 -0
- package/dist/plugins/Quote/index.d.ts +2 -59
- package/dist/plugins/Quote/toggleQuote.d.ts +3 -0
- package/dist/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.d.ts +2 -0
- package/dist/plugins/SelectOnBackspace/index.d.ts +1 -0
- package/dist/plugins/Table/actions/addColumn.d.ts +4 -0
- package/dist/plugins/Table/actions/addRow.d.ts +3 -0
- package/dist/plugins/Table/actions/index.d.ts +3 -0
- package/dist/plugins/Table/actions/setHeader.d.ts +2 -0
- package/dist/plugins/Table/addTableTrackingEvents.d.ts +3 -0
- package/dist/plugins/Table/components/Cell.d.ts +2 -0
- package/dist/plugins/Table/components/HeaderCell.d.ts +2 -0
- package/dist/plugins/Table/components/Row.d.ts +2 -0
- package/dist/plugins/Table/components/Table.d.ts +2 -0
- package/dist/plugins/Table/components/TableActions.d.ts +4 -0
- package/dist/plugins/Table/components/ToolbarButton.d.ts +4 -0
- package/dist/plugins/Table/createTablePlugin.d.ts +3 -0
- package/dist/plugins/Table/helpers.d.ts +15 -0
- package/dist/plugins/Table/index.d.ts +2 -0
- package/dist/plugins/Text/createTextPlugin.d.ts +2 -0
- package/dist/plugins/Text/index.d.ts +1 -0
- package/dist/plugins/TrailingParagraph/index.d.ts +1 -0
- package/dist/plugins/Voids/createVoidsPlugin.d.ts +2 -0
- package/dist/plugins/Voids/index.d.ts +1 -0
- package/dist/plugins/Voids/transformVoid.d.ts +6 -0
- package/dist/plugins/index.d.ts +6 -1
- package/dist/plugins/links-tracking.d.ts +7 -0
- package/dist/plugins/shared/EntityStatusIcon.d.ts +7 -0
- package/dist/plugins/shared/FetchingWrappedAssetCard.d.ts +23 -0
- package/dist/plugins/shared/FetchingWrappedEntryCard.d.ts +13 -0
- package/dist/plugins/shared/ToolbarButton.d.ts +11 -0
- package/dist/test-utils/assertOutput.d.ts +8 -0
- package/dist/test-utils/createEditor.d.ts +14 -0
- package/dist/test-utils/index.d.ts +4 -0
- package/dist/test-utils/jsx.d.ts +28 -0
- package/dist/test-utils/mockPlugin.d.ts +2 -0
- package/dist/test-utils/randomId.d.ts +4 -0
- package/dist/test-utils/setEmptyDataAttribute.d.ts +6 -0
- package/dist/test-utils/validation.d.ts +1 -0
- package/dist/types.d.ts +42 -0
- package/package.json +40 -34
- package/LICENSE +0 -21
- package/dist/RichTextEditor.spec.d.ts +0 -1
- package/dist/Toolbar/StickyToolbarWrapper.d.ts +0 -12
- package/dist/Toolbar/Toolbar.spec.d.ts +0 -1
- package/dist/helpers/browserSupport.d.ts +0 -1
- package/dist/plugins/Bold/index.d.ts +0 -64
- package/dist/plugins/Code/index.d.ts +0 -64
- package/dist/plugins/CommandPalette/CommandMark.d.ts +0 -12
- package/dist/plugins/CommandPalette/CommandPalette.d.ts +0 -10
- package/dist/plugins/CommandPalette/CommandPaletteService.d.ts +0 -20
- package/dist/plugins/CommandPalette/CommandPanel/CommandPanelMenu.d.ts +0 -43
- package/dist/plugins/CommandPalette/CommandPanel/InViewport/InViewport.d.ts +0 -37
- package/dist/plugins/CommandPalette/CommandPanel/index.d.ts +0 -37
- package/dist/plugins/CommandPalette/Util.d.ts +0 -5
- package/dist/plugins/CommandPalette/index.d.ts +0 -7
- package/dist/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.d.ts +0 -20
- package/dist/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.styles.d.ts +0 -3
- package/dist/plugins/EmbeddedEntityBlock/FetchingWrappedAssetCard.d.ts +0 -15
- package/dist/plugins/EmbeddedEntityBlock/FetchingWrappedEntryCard.d.ts +0 -15
- package/dist/plugins/EmbeddedEntryInline/EmbeddedEntryInline.d.ts +0 -21
- package/dist/plugins/EmbeddedEntryInline/EmbeddedEntryInline.styles.d.ts +0 -4
- package/dist/plugins/EmbeddedEntryInline/FetchingWrappedInlineEntryCard.d.ts +0 -14
- package/dist/plugins/EmbeddedEntryInline/ToolbarIcon.d.ts +0 -11
- package/dist/plugins/EmbeddedEntryInline/Utils.d.ts +0 -4
- package/dist/plugins/EmbeddedEntryInline/index.d.ts +0 -12
- package/dist/plugins/EntryEmbedDropdown/index.d.ts +0 -14
- package/dist/plugins/Heading/HeadingDropdown.d.ts +0 -28
- package/dist/plugins/Heading/HeadingDropdownItem.d.ts +0 -57
- package/dist/plugins/Heading/Paragraph.d.ts +0 -58
- package/dist/plugins/Hyperlink/Hyperlink.d.ts +0 -13
- package/dist/plugins/Hyperlink/ToolbarIcon.d.ts +0 -7
- package/dist/plugins/Hyperlink/Util.d.ts +0 -43
- package/dist/plugins/Hyperlink/styles.d.ts +0 -12
- package/dist/plugins/Hyperlink/useRequestStatus.d.ts +0 -6
- package/dist/plugins/InsertBeforeFirstVoidBlock/Util.d.ts +0 -14
- package/dist/plugins/InsertBeforeFirstVoidBlock/index.d.ts +0 -3
- package/dist/plugins/Italic/index.d.ts +0 -64
- package/dist/plugins/List/EditListWrapper.d.ts +0 -2
- package/dist/plugins/List/ToolbarDecorator.d.ts +0 -62
- package/dist/plugins/NewLinePlugin/index.d.ts +0 -3
- package/dist/plugins/Paste/Paste.d.ts +0 -1
- package/dist/plugins/Paste/Paste.spec.d.ts +0 -1
- package/dist/plugins/Paste/index.d.ts +0 -7
- package/dist/plugins/Paste/index.spec.d.ts +0 -1
- package/dist/plugins/PasteHtml/PasteHtml.spec.d.ts +0 -1
- package/dist/plugins/PasteHtml/Serializer.d.ts +0 -1
- package/dist/plugins/PasteHtml/index.d.ts +0 -3
- package/dist/plugins/PasteText/PasteText.spec.d.ts +0 -1
- package/dist/plugins/PasteText/index.d.ts +0 -3
- package/dist/plugins/Quote/QuotePlugin.d.ts +0 -10
- package/dist/plugins/Quote/Util.d.ts +0 -2
- package/dist/plugins/Underlined/index.d.ts +0 -64
- package/dist/plugins/shared/BlockSelectDecorator.d.ts +0 -63
- package/dist/plugins/shared/BlockToggleDecorator.d.ts +0 -65
- package/dist/plugins/shared/MarkDecorator.d.ts +0 -12
- package/dist/plugins/shared/MarkPlugin.d.ts +0 -9
- package/dist/plugins/shared/MarkToggleDecorator.d.ts +0 -62
- package/dist/plugins/shared/NodeDecorator.d.ts +0 -15
- package/dist/plugins/shared/PasteTestHelpers.d.ts +0 -35
- package/dist/plugins/shared/PluginApi.d.ts +0 -31
- package/dist/plugins/shared/PropTypes.d.ts +0 -15
- package/dist/plugins/shared/ToolbarDropdownListItem.d.ts +0 -14
- package/dist/plugins/shared/ToolbarIcon.d.ts +0 -16
- package/dist/plugins/shared/Util.d.ts +0 -1
- package/dist/plugins/shared/UtilHave.d.ts +0 -24
- package/dist/setupTests.d.ts +0 -1
- package/dist/validations/index.d.ts +0 -9
- package/dist/validations/validations.spec.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-editor-rich-text.cjs.development.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/Util.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/regenerator-runtime/runtime.js","../src/plugins/EmbeddedEntityBlock/FetchingWrappedEntryCard.js","../src/plugins/EmbeddedEntityBlock/FetchingWrappedAssetCard.js","../src/dialogs/HypelinkDialog/HyperlinkDialog.jsx","../src/helpers/getLinkedContentTypeIdsForNodeType.js","../src/helpers/newEntitySelectorConfigFromRichTextField.js","../src/validations/index.js","../src/plugins/Hyperlink/Util.js","../src/plugins/Hyperlink/ToolbarIcon.js","../src/plugins/Hyperlink/styles.js","../src/helpers/browserSupport.js","../src/plugins/Hyperlink/useRequestStatus.js","../src/plugins/Hyperlink/truncate.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/HeadingDropdownItem.js","../src/plugins/Heading/Paragraph.js","../src/plugins/Heading/index.js","../src/plugins/NewLinePlugin/index.js","../src/plugins/Paragraph/index.js","../src/plugins/EmbeddedEntityBlock/Util.js","../src/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.styles.ts","../src/plugins/EmbeddedEntityBlock/ToolbarIcon.js","../src/plugins/EmbeddedEntityBlock/EmbeddedEntityBlock.js","../src/plugins/EmbeddedEntityBlock/index.js","../src/plugins/EmbeddedEntryInline/Utils.js","../src/plugins/EmbeddedEntryInline/EmbeddedEntryInline.styles.ts","../src/plugins/EmbeddedEntryInline/ToolbarIcon.js","../src/plugins/EmbeddedEntryInline/FetchingWrappedInlineEntryCard.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/plugins/CommandPalette/CommandPaletteService.js","../src/plugins/CommandPalette/CommandPanel/CommandPanelMenu.js","../src/plugins/CommandPalette/CommandPanel/InViewport/InViewport.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","../src/dialogs/openRichTextDialog.jsx","../src/dialogs/renderRichTextDialog.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';\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} sdk\n * @param {function } onAction\n * @returns {{ sdk: {object}, logViewportAction: {function}, createActionLogger: {function}, createActionLogger: {function} }}\n */\nexport const createRichTextAPI = ({ sdk, onAction }) => {\n const richTextAPI = {\n sdk,\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 };\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 sdk: PropTypes.object.isRequired,\n logViewportAction: PropTypes.func.isRequired,\n logShortcutAction: PropTypes.func.isRequired,\n logToolbarAction: PropTypes.func.isRequired,\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 // TODO: Should get rid of this as it's just necessary as a hack to prevent\n // crashes before the user manually set the focus to the Slate input.\n canAutoFocus: PropTypes.bool,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\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\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 children: PropTypes.any.isRequired,\n title: PropTypes.string.isRequired,\n type: PropTypes.string,\n className: PropTypes.string,\n };\n\n handleClick = (event) => {\n event.preventDefault();\n this.props.onToggle(event);\n };\n\n render() {\n const { title, type, isActive, children, className, disabled = false } = this.props;\n\n const button = (\n <Button\n className={cx(styles.button, className)}\n isDisabled={disabled}\n startIcon={children}\n onClick={this.handleClick}\n testId={`toolbar-toggle-${type}`}\n variant={isActive ? 'secondary' : 'transparent'}\n size=\"small\"\n />\n );\n\n if (title) {\n return (\n <Tooltip className={styles.tooltip} placement=\"top\" content={title}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\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 } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nconst styles = {\n // TODO: Ensure a bold mark on a headline makes the heading appear even\n // bolder. Consider to make headings non-bold by default.\n bold: css({\n color: 'inherit',\n fontWeight: tokens.fontWeightDemiBold,\n }),\n italic: css({\n fontStyle: 'italic',\n lineHeight: 1, // Prevents vertical jitter effect when applying code mark.\n }),\n code: css({\n fontFamily: tokens.fontStackMonospace,\n fontSize: '.9em', // Can't use `rem` to account for code inside a heading.\n }),\n};\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: styles[type] })(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","/**\n * Handles setting the focus in the Slate editor (if possible due to Slate restrictions)\n * when clicking on a toolbar acton while the editor got no focus.\n *\n * Ideally we would always focus the editor in his case, but this might result\n * in a Slate crash if the editor hasn't been manually focused by the user at\n * that point.\n */\nexport const toolbarActionHandlerWithSafeAutoFocus = (component, customHandler) => (event) => {\n event.preventDefault();\n\n const { editor, canAutoFocus } = component.props;\n\n if (!editor.value.selection.isFocused) {\n if (canAutoFocus) {\n editor.focus();\n } else {\n // Note: This is only necessary as Slate in 0.4x in our case crashes when\n // working on the document before the user manually focuses. Attempts at\n // programmatically setting focus and a proper value.selection were in vain.\n // TODO: Upgrade Slate or figure out how to editor.setFocus when clicking\n // a toolbar icon without the editor crashing when starting to type.\n return;\n }\n }\n return customHandler(event);\n};\n","import * as React from 'react';\nimport { haveMarks } from './UtilHave';\nimport { toolbarActionHandlerWithSafeAutoFocus } from './Util';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from './PluginApi';\n\nexport default ({ type, title, children }) =>\n (Mark) => {\n return class CommonToggleMark extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = toolbarActionHandlerWithSafeAutoFocus(this, () => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction },\n } = this.props;\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 title={title}\n onToggle={this.handleToggle}\n isActive={haveMarks(editor, type)}\n disabled={disabled}>\n {children}\n </Mark>\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';\nimport { FormatBoldIcon } from '@contentful/f36-icons';\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 children: <FormatBoldIcon />,\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';\nimport { FormatItalicIcon } from '@contentful/f36-icons';\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 children: <FormatItalicIcon />,\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';\nimport { FormatUnderlinedIcon } from '@contentful/f36-icons';\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 children: <FormatUnderlinedIcon />,\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';\nimport { CodeIcon } from '@contentful/f36-icons';\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 children: <CodeIcon />,\n})(Code);\n","import * as React from 'react';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { haveBlocks } from './UtilHave';\nimport { toolbarActionHandlerWithSafeAutoFocus } from './Util';\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 ({ type, title, children, applyChange = toggleChange, isActive = isBlockActive }) =>\n (Block) => {\n return class BlockToggleDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = toolbarActionHandlerWithSafeAutoFocus(this, () => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction },\n } = this.props;\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 title={title}\n onToggle={this.handleToggle}\n isActive={isActive(editor, type)}\n disabled={disabled}\n richTextAPI={richTextAPI}>\n {children}\n </Block>\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/f36-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.gray200}`,\n paddingLeft: '0.875rem',\n fontStyle: 'normal',\n '& a': {\n color: 'inherit',\n },\n }),\n code: css({\n background: tokens.gray200,\n padding: '0px',\n color: tokens.gray700,\n borderRadius: tokens.borderRadiusSmall,\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 =\n (defaultType, tagName, hotkey) =>\n ({ type = defaultType, richTextAPI: { logShortcutAction } }) => {\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 (\n isHotkey('Backspace', e) &&\n isSelectionInQuote(editor) &&\n !haveTextInSomeBlocks(editor)\n ) {\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';\nimport { QuoteIcon } from '@contentful/f36-icons';\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 children: <QuoteIcon />,\n applyChange,\n isActive: isSelectionInQuote,\n})(Blockquote);\n\nexport { default as QuotePlugin } from './QuotePlugin';\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","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { EntryCard } from '@contentful/f36-components';\nimport {\n useEntities,\n MissingEntityCard,\n WrappedEntryCard,\n} from '@contentful/field-editor-reference';\n\nexport function FetchingWrappedEntryCard(props) {\n const { getOrLoadEntry, loadEntityScheduledActions, entries } = useEntities();\n\n React.useEffect(() => {\n getOrLoadEntry(props.entryId);\n }, [props.entryId]);\n\n const entry = entries[props.entryId];\n\n React.useEffect(() => {\n if (entry) {\n props.onEntityFetchComplete && props.onEntityFetchComplete();\n }\n }, [entry]);\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 if (entry === undefined) {\n return <EntryCard isLoading />;\n }\n\n const contentType = props.sdk.space\n .getCachedContentTypes()\n .find((contentType) => contentType.sys.id === entry.sys.contentType.sys.id);\n\n return (\n <WrappedEntryCard\n getAsset={props.sdk.space.getAsset}\n getEntityScheduledActions={loadEntityScheduledActions}\n entryUrl={props.getEntryUrl && props.getEntryUrl(entry.sys.id)}\n isSelected={props.isSelected}\n isDisabled={props.isDisabled}\n localeCode={props.locale}\n defaultLocaleCode={props.sdk.locales.default}\n contentType={contentType}\n entry={entry}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n isClickable={false}\n />\n );\n}\n\nFetchingWrappedEntryCard.propTypes = {\n sdk: PropTypes.object.isRequired,\n entryId: PropTypes.string.isRequired,\n locale: PropTypes.string.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onRemove: PropTypes.func,\n onEdit: PropTypes.func,\n getEntryUrl: PropTypes.func,\n onEntityFetchComplete: PropTypes.func,\n};\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { AssetCard } from '@contentful/f36-components';\nimport {\n useEntities,\n MissingEntityCard,\n WrappedAssetCard,\n} from '@contentful/field-editor-reference';\n\nexport function FetchingWrappedAssetCard(props) {\n const { getOrLoadAsset, loadEntityScheduledActions, assets } = useEntities();\n\n React.useEffect(() => {\n getOrLoadAsset(props.assetId);\n }, [props.assetId]);\n\n const asset = assets[props.assetId];\n\n React.useEffect(() => {\n if (asset) {\n props.onEntityFetchComplete && props.onEntityFetchComplete();\n }\n }, [asset]);\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 if (asset === undefined) {\n return <AssetCard size=\"default\" isLoading title=\"\" src=\"\" href=\"\" />;\n }\n\n return (\n <WrappedAssetCard\n getAsset={props.sdk.space.getAsset}\n getEntityScheduledActions={loadEntityScheduledActions}\n getAssetUrl={props.getAssetUrl}\n size=\"default\"\n isSelected={props.isSelected}\n isDisabled={props.isDisabled}\n localeCode={props.locale}\n defaultLocaleCode={props.sdk.locales.default}\n asset={asset}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n isClickable={false}\n />\n );\n}\n\nFetchingWrappedAssetCard.propTypes = {\n sdk: PropTypes.object.isRequired,\n locale: PropTypes.string.isRequired,\n assetId: PropTypes.string.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n onRemove: PropTypes.func,\n onEdit: PropTypes.func,\n getAssetUrl: PropTypes.func,\n onEntityFetchComplete: PropTypes.func,\n};\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/EmbeddedEntityBlock/FetchingWrappedEntryCard';\nimport { FetchingWrappedAssetCard } from '../../plugins/EmbeddedEntityBlock/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-uri-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","/* 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 contentTypes: getLinkedContentTypeIdsForNodeType(field, nodeType),\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","/* 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 { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { haveInlines } from '../shared/UtilHave';\nimport { openHyperlinkDialog, LINK_TYPES } from '../../dialogs/HypelinkDialog/HyperlinkDialog';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { isNodeTypeEnabled } from '../../validations/index';\n\nconst { HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK } = INLINES;\nconst HYPERLINK_TYPES = [HYPERLINK, ENTRY_HYPERLINK, ASSET_HYPERLINK];\n\nconst nodeToHyperlinkType = {\n [INLINES.ENTRY_HYPERLINK]: LINK_TYPES.ENTRY,\n [INLINES.ASSET_HYPERLINK]: LINK_TYPES.ASSET,\n [INLINES.HYPERLINK]: LINK_TYPES.URI,\n};\n\nfunction getAllowedHyperlinkTypes(field) {\n const hyperlinkTypes = [INLINES.ENTRY_HYPERLINK, INLINES.ASSET_HYPERLINK, INLINES.HYPERLINK];\n if (field.type === 'RichText') {\n return hyperlinkTypes\n .filter((nodeType) => isNodeTypeEnabled(field, nodeType))\n .map((nodeType) => nodeToHyperlinkType[nodeType]);\n }\n\n return hyperlinkTypes.map((nodeType) => nodeToHyperlinkType[nodeType]);\n}\n\nfunction getEntitySelectorConfigs(field) {\n const config = {};\n\n // TODO: Don't pass specific key if CT validation prohibits its type:\n if (isNodeTypeEnabled(field, INLINES.ENTRY_HYPERLINK)) {\n config.Entry = newEntitySelectorConfigFromRichTextField(field, 'entry-hyperlink');\n }\n if (isNodeTypeEnabled(field, INLINES.ASSET_HYPERLINK)) {\n config.Asset = newEntitySelectorConfigFromRichTextField(field, 'asset-hyperlink');\n }\n\n return config;\n}\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 {Object} sdk\n * @param {function} logAction\n * @returns {Promise<void>}\n */\nexport async function toggleLink(editor, sdk, logAction) {\n if (hasHyperlink(editor.value)) {\n removeLinks(editor, logAction);\n } else {\n await insertLink(editor, sdk, logAction);\n }\n}\n\nasync function insertLink(change, sdk, logAction) {\n change.blur(); // Ensures modal input auto-focus will work.\n\n logAction('openCreateHyperlinkDialog');\n const showTextInput = !change.value.isExpanded || change.value.fragment.text.trim() === '';\n\n const result = await openHyperlinkDialog(sdk.dialogs, {\n showTextInput,\n value: { text: change.value.fragment.text || '' },\n allowedHyperlinkTypes: getAllowedHyperlinkTypes(sdk.field),\n entitySelectorConfigs: getEntitySelectorConfigs(sdk.field),\n });\n\n if (!result) {\n logAction('cancelCreateHyperlinkDialog');\n change.focus();\n return;\n }\n const { text, type: linkType, uri, target } = result;\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\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 {Object} sdk\n * @param {function} logAction\n * @returns {Promise<void>}\n */\nexport async function editLink(change, sdk, 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 change.blur(); // Ensures modal input auto-focus will work.\n logAction('openEditHyperlinkDialog');\n const { uri: oldUri, target: oldTarget } = link.data.toJSON();\n const result = await openHyperlinkDialog(sdk.dialogs, {\n showTextInput: false,\n value: oldTarget ? { target: oldTarget } : { uri: oldUri },\n allowedHyperlinkTypes: getAllowedHyperlinkTypes(sdk.field),\n entitySelectorConfigs: getEntitySelectorConfigs(sdk.field),\n });\n if (!result) {\n logAction('cancelEditHyperlinkDialog');\n change.focus();\n return;\n }\n\n const { type: linkType, uri, target } = result;\n const nodeType = linkTypeToNodeType(linkType);\n const data = target ? { target } : { uri };\n change.setInlines({ type: nodeType, data });\n logAction('edit', { nodeType, linkType });\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 { toolbarActionHandlerWithSafeAutoFocus } from '../shared/Util';\nimport { hasHyperlink, toggleLink, hasOnlyHyperlinkInlines } from './Util';\nimport { LinkIcon } from '@contentful/f36-icons';\n\nexport default class HyperlinkToolbarIcon extends Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleClick = toolbarActionHandlerWithSafeAutoFocus(this, async () => {\n const {\n onToggle,\n editor,\n richTextAPI: { sdk, logToolbarAction },\n } = this.props;\n await toggleLink(editor, sdk, 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 title=\"Hyperlink\"\n onToggle={this.handleClick}\n isActive={hasHyperlink(editor.value)}>\n <LinkIcon />\n </ToolbarIcon>\n );\n }\n}\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const hyperlinkTooltipStyles = {\n entityContentType: css({\n color: tokens.gray500,\n marginRight: tokens.spacingXs,\n '&:after': {\n content: '\"\"',\n },\n }),\n entityTitle: css({\n marginRight: tokens.spacingXs,\n }),\n separator: css({\n background: tokens.gray700,\n margin: tokens.spacingXs,\n }),\n};\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 { entityHelpers } from '@contentful/field-editor-shared';\n\nasync function fetchAllData({ sdk, entityId, entityType, localeCode, defaultLocaleCode }) {\n let contentType;\n\n const getEntity = entityType === 'Entry' ? sdk.space.getEntry : sdk.space.getAsset;\n const entity = await getEntity(entityId);\n if (entity.sys.contentType) {\n const contentTypeId = entity.sys.contentType.sys.id;\n contentType = sdk.space.getCachedContentTypes().find((ct) => ct.sys.id === contentTypeId);\n }\n\n const entityTitle =\n entityType === 'Entry'\n ? entityHelpers.getEntryTitle({\n entry: entity,\n contentType,\n localeCode,\n defaultLocaleCode,\n defaultTitle: 'Untitled',\n })\n : entityHelpers.getAssetTitle({\n asset: entity,\n localeCode,\n defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n const entityDescription = entityHelpers.getEntityDescription({\n entity,\n contentType,\n localeCode,\n defaultLocaleCode,\n });\n\n const jobs = await sdk.space.getEntityScheduledActions(entityType, entityId);\n\n const entityStatus = entityHelpers.getEntryStatus(entity.sys);\n\n return {\n jobs,\n entity,\n entityTitle,\n entityDescription,\n entityStatus,\n contentTypeName: contentType ? contentType.name : '',\n };\n}\n\nexport function useRequestStatus({ richTextAPI, target }) {\n const { sdk } = richTextAPI;\n\n const [requestStatus, setRequestStatus] = React.useState({ type: 'loading' });\n\n React.useEffect(() => {\n if (target) {\n fetchAllData({\n sdk,\n entityId: target?.sys?.id,\n entityType: target?.sys?.linkType,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n })\n .then((entityInfo) => {\n setRequestStatus({ type: 'success', data: entityInfo });\n })\n .catch((e) => {\n console.log(e);\n setRequestStatus({ type: 'error', error: e });\n });\n }\n }, [target]); // eslint-disable-line\n\n return requestStatus;\n}\n","export function truncate(str, length) {\n if (str && 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 } else {\n return str;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { cx } from 'emotion';\nimport isHotKey from 'is-hotkey';\nimport styles from './styles';\nimport { SUPPORTS_NATIVE_SLATE_HYPERLINKS } from '../../helpers/browserSupport';\nimport { useRequestStatus } from './useRequestStatus';\nimport { getScheduleTooltipContent } from '@contentful/field-editor-reference';\nimport { truncate } from './truncate';\n\nimport { TextLink, Tooltip } from '@contentful/f36-components';\n\nfunction isUrl(string) {\n return /^(?:[a-z]+:)?\\/\\//i.test(string) || /^mailto:/i.test(string);\n}\n\n// eslint-disable-next-line react/prop-types\nfunction getEntityInfo({ entityTitle, entityStatus, contentTypeName }) {\n const title = truncate(entityTitle, 60) || 'Untitled';\n\n return `${contentTypeName || 'Asset'} \"${title}\", ${entityStatus}`;\n}\n\nexport default function Hyperlink(props) {\n const { children, node } = 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 const target = node.data.get('target');\n const requestStatus = useRequestStatus({ richTextAPI: props.richTextAPI, target });\n\n const getTooltipContent = () => {\n if (requestStatus.type === 'loading') {\n return `Loading ${target.sys.linkType.toLowerCase()}...`;\n }\n let tooltipContent = '';\n if (requestStatus.type === 'error') {\n tooltipContent = `${target.sys.linkType} missing or inaccessible`;\n } else {\n const { jobs, ...entityInfo } = requestStatus.data;\n tooltipContent = `${getEntityInfo(entityInfo)}\n ${jobs.length > 0 ? getScheduleTooltipContent({ job: jobs[0], jobsCount: jobs.length }) : ''}`;\n }\n return tooltipContent;\n };\n\n const onKeyDown = (e) => {\n if (isHotKey('enter', e)) {\n e.preventDefault();\n e.stopPropagation(); // Ensure Slate doesn't interpret as new paragraph.\n props.onEdit(e);\n }\n };\n\n const renderLink = ({ tooltipContent }) => {\n return (\n <Tooltip\n content={tooltipContent}\n className={styles.tooltipContainer}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\">\n {SUPPORTS_NATIVE_SLATE_HYPERLINKS ? (\n <TextLink\n // Allows user to open uri link in new tab.\n href={href}\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 return (\n <span\n {...props.attributes}\n onClick={props.onEdit}\n onKeyDown={(e) => onKeyDown(e)}\n role=\"button\"\n tabIndex={0}>\n {target\n ? renderLink({ tooltipContent: getTooltipContent() })\n : renderLink({ tooltipContent: uri })}\n </span>\n // TODO: Add contentEditable={false} to tooltip to fix text cursor bug\n );\n}\n\nHyperlink.propTypes = {\n attributes: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n children: PropTypes.node,\n editor: PropTypes.object,\n richTextAPI: PropTypes.object.isRequired,\n onEdit: PropTypes.func,\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 { sdk, logViewportAction } = richTextAPI;\n const { node, editor } = props;\n if (isHyperlink(node.type)) {\n return (\n <Hyperlink\n {...props}\n richTextAPI={richTextAPI}\n onEdit={(event) => {\n event.preventDefault(); // Don't follow `href`\n\n editor.moveToRangeOfNode(node).focus();\n if (mayEditLink(editor.value)) {\n editLink(editor, sdk, logViewportAction);\n }\n }}\n />\n );\n }\n return next();\n },\n onKeyDown: (event, editor, next) => {\n const { sdk, logShortcutAction } = richTextAPI;\n const hotkey = ['mod+k'];\n\n if (isHotkey(hotkey, event) && hasOnlyHyperlinkInlines(editor.value)) {\n if (mayEditLink(editor.value)) {\n editLink(editor, sdk, logShortcutAction);\n } else {\n toggleLink(editor, sdk, logShortcutAction);\n }\n return;\n }\n\n return next();\n },\n normalizeNode: (node, editor, next) => {\n if (isHyperlink(node.type)) {\n if (node.text.trim() === '') {\n return () => {\n editor.removeNodeByKey(node.key);\n };\n }\n if (node.getInlines().size > 0) {\n return () => {\n node\n .getInlines()\n .forEach((inlineNode) => editor.unwrapInlineByKey(inlineNode.key, node.type));\n };\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 { Menu } from '@contentful/f36-components';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nconst styles = {\n root: css({\n fontWeight: tokens.fontWeightDemiBold,\n lineHeight: 1.5,\n }),\n h1: css({\n fontSize: '1.625rem',\n }),\n h2: css({\n fontSize: '1.4375rem',\n }),\n h3: css({\n fontSize: '1.25rem',\n }),\n h4: css({\n fontSize: '1.125rem',\n }),\n h5: css({\n fontSize: '1rem',\n }),\n h6: css({\n fontSize: '0.875rem',\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 handleClick = (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 <Menu.Item\n label={title}\n isInitiallyFocused={isActive}\n data-test-id={`toolbar-toggle-${type}`}\n className={cx(styles.root, styles[getStyleForType(type)])}\n onClick={this.handleClick}>\n {children}\n </Menu.Item>\n );\n }\n}\n","import * as React from 'react';\nimport { haveBlocks } from './UtilHave';\nimport { toolbarActionHandlerWithSafeAutoFocus } from './Util';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from './PluginApi';\n\nexport default ({\n type,\n title,\n children,\n applyChange = (editor, type) => editor.setBlocks(type),\n }) =>\n (Block) => {\n return class BlockSelectDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleSelect = toolbarActionHandlerWithSafeAutoFocus(this, () => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction },\n } = this.props;\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 title={title}\n onToggle={this.handleSelect}\n isActive={haveBlocks(editor, type)}\n disabled={disabled}>\n {children}\n </Block>\n );\n }\n };\n };\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nimport { Button, Menu } from '@contentful/f36-components';\n\nimport { ChevronDownIcon } from '@contentful/f36-icons';\n\nconst styles = {\n root: css({\n padding: 0,\n marginRight: tokens.spacing2Xs,\n width: '110px',\n\n [`@media (min-width: ${tokens.contentWidthDefault})`]: {\n width: '145px',\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 onOpen: PropTypes.func,\n currentBlockType: PropTypes.string,\n };\n getStyleNameForChange = () => {\n return blockTitles[this.props.currentBlockType] || blockTitles[BLOCKS.PARAGRAPH];\n };\n\n render() {\n const { onOpen, isOpen, onClose, children } = this.props;\n return (\n <Menu isOpen={isOpen} onClose={onClose} onOpen={onOpen}>\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n data-test-id=\"toolbar-heading-toggle\"\n className={styles.root}\n variant=\"transparent\"\n size=\"small\"\n isDisabled={this.props.disabled}>\n {this.getStyleNameForChange()}\n </Button>\n </Menu.Trigger>\n <Menu.List className=\"toolbar-heading-dropdown-list\">{children}</Menu.List>\n </Menu>\n );\n }\n}\n\nexport default HeadingDropdown;\n","import React, { Component } from 'react';\nimport ToolbarDropdownListItem from '../shared/ToolbarDropdownListItem';\nimport blockSelectDecorator from '../shared/BlockSelectDecorator';\nimport { blockTitles } from './HeadingDropdown';\n\nexport default function newHeadingDropdownItem(nodeType) {\n const title = blockTitles[nodeType];\n\n class Heading extends Component {\n static displayName = title.replace(/\\s/g, '');\n render() {\n return (\n <ToolbarDropdownListItem {...this.props} data-test-id={nodeType}>\n {title}\n </ToolbarDropdownListItem>\n );\n }\n }\n\n return blockSelectDecorator({\n type: nodeType,\n title,\n })(Heading);\n}\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';\nimport newHeadingDropdownItem from './HeadingDropdownItem';\n\nconst newPlugin =\n (defaultType, tagName, hotkey) =>\n ({ 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 const Heading1 = newHeadingDropdownItem(BLOCKS.HEADING_1);\nexport const Heading2 = newHeadingDropdownItem(BLOCKS.HEADING_2);\nexport const Heading3 = newHeadingDropdownItem(BLOCKS.HEADING_3);\nexport const Heading4 = newHeadingDropdownItem(BLOCKS.HEADING_4);\nexport const Heading5 = newHeadingDropdownItem(BLOCKS.HEADING_5);\nexport const Heading6 = newHeadingDropdownItem(BLOCKS.HEADING_6);\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","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 {import('@contentful/field-editor-reference/dist/types').FieldExtensionSDK} sdk\n * @param {slate.Editor} editor\n * @param {function} logAction\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 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 { css } from 'emotion';\n\nexport const styles = {\n icon: css({\n marginRight: '10px',\n }),\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { selectEntityAndInsert } from './Util';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\nimport { toolbarActionHandlerWithSafeAutoFocus } from '../shared/Util';\nimport { styles } from './EmbeddedEntityBlock.styles';\n\nimport { Flex, Icon, Button, Menu } from '@contentful/f36-components';\n\nimport { AssetIcon, EmbeddedEntryBlockIcon } from '@contentful/f36-icons';\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 = (e) => {\n this.handleAction(e);\n };\n\n handleAction = toolbarActionHandlerWithSafeAutoFocus(this, async () => {\n const {\n editor,\n nodeType,\n richTextAPI: { sdk, logToolbarAction },\n } = this.props;\n await selectEntityAndInsert(nodeType, sdk, 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 this.props.isButton ? (\n <Button\n isDisabled={this.props.disabled}\n className={`${baseClass}-button`}\n size=\"small\"\n onClick={this.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={this.props.disabled}\n className={`${baseClass}-list-item`}\n onClick={this.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}\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 { css } from 'emotion';\nimport { FetchingWrappedEntryCard } from './FetchingWrappedEntryCard';\nimport { FetchingWrappedAssetCard } from './FetchingWrappedAssetCard';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem',\n }),\n};\n\nexport default class LinkedEntityBlock extends React.Component {\n static propTypes = {\n sdk: 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.isRequired,\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.sdk;\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 { sdk, editor, isSelected } = this.props;\n const isDisabled = editor.props.readOnly || editor.props.actionsDisabled;\n const { id: entityId, type: entityType } = this.getEntitySys();\n return (\n <div {...this.props.attributes} className={styles.root}>\n {entityType === 'Entry' && (\n <FetchingWrappedEntryCard\n sdk={sdk}\n entryId={entityId}\n locale={sdk.field.locale}\n isDisabled={isDisabled}\n isSelected={isSelected}\n onRemove={this.handleRemoveClick}\n onEdit={this.handleEditClick}\n getEntryUrl={() => {\n const getEntryUrl = sdk.parameters.instance.getEntryUrl;\n return typeof getEntryUrl === 'function' ? getEntryUrl(entityId) : '';\n }}\n onEntityFetchComplete={this.props.onEntityFetchComplete}\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={this.handleRemoveClick}\n onEdit={this.handleEditClick}\n getAssetUrl={() => {\n const getAssetUrl = sdk.parameters.instance.getAssetUrl;\n return typeof getAssetUrl === 'function' ? getAssetUrl(entityId) : '';\n }}\n onEntityFetchComplete={this.props.onEntityFetchComplete}\n />\n )}\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: { sdk, logShortcutAction, logViewportAction },\n nodeType,\n hotkey,\n}) => {\n return {\n renderNode: (props, _editor, next) => {\n const { node, attributes, key } = props;\n if (node.type === nodeType) {\n return (\n <EntityLinkBlock\n sdk={sdk}\n {...props}\n {...attributes}\n onEntityFetchComplete={() => {\n logViewportAction('linkRendered', { key });\n }}\n />\n );\n }\n return next();\n },\n onKeyDown(e, editor, next) {\n if (hotkey && isHotkey(hotkey, e)) {\n selectEntityAndInsert(nodeType, sdk, 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 {import('@contentful/field-editor-reference/dist/types').FieldExtensionSDK} sdk\n * @param {slate.Editor} editor\n * @param {function} logAction\n */\nexport const selectEntryAndInsert = async (sdk, editor, logAction) => {\n const nodeType = INLINES.EMBEDDED_ENTRY;\n logAction('openCreateEmbedDialog', { nodeType });\n\n const { field, dialogs } = sdk;\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 { css } from 'emotion';\n\nexport const styles = {\n icon: css({\n marginRight: '10px',\n }),\n\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","import React, { Component } from 'react';\nimport { INLINES } from '@contentful/rich-text-types';\n\nimport { selectEntryAndInsert, canInsertInline } from './Utils';\nimport { TOOLBAR_PLUGIN_PROP_TYPES } from '../shared/PluginApi';\nimport { toolbarActionHandlerWithSafeAutoFocus } from '../shared/Util';\nimport { styles } from './EmbeddedEntryInline.styles';\n\nimport { Flex, Button, Menu } from '@contentful/f36-components';\n\nimport { EmbeddedEntryInlineIcon } from '@contentful/f36-icons';\n\nexport default class EntryLinkToolbarIcon extends Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n static defaultProps = {\n isButton: false,\n };\n\n handleClick = (e) => {\n this.handleAction(e);\n };\n\n handleAction = toolbarActionHandlerWithSafeAutoFocus(this, async () => {\n const {\n editor,\n richTextAPI: { sdk, logToolbarAction },\n } = this.props;\n await selectEntryAndInsert(sdk, editor, logToolbarAction);\n this.props.onToggle(editor);\n });\n\n render() {\n return this.props.isButton ? (\n <Button\n isDisabled={this.props.disabled}\n className={`${INLINES.EMBEDDED_ENTRY}-button`}\n size=\"small\"\n onClick={(event) => this.handleClick(event)}\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={this.props.disabled || !canInsertInline(this.props.editor)}\n className=\"rich-text__entry-link-block-button\"\n testId={`toolbar-toggle-${INLINES.EMBEDDED_ENTRY}`}\n onClick={this.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}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { InlineEntryCard, MenuItem, Text } from '@contentful/f36-components';\nimport { entityHelpers } from '@contentful/field-editor-shared';\nimport { useEntities, ScheduledIconWithTooltip } from '@contentful/field-editor-reference';\n\nimport { INLINES } from '@contentful/rich-text-types';\n\nimport { ClockIcon } from '@contentful/f36-icons';\n\nconst { getEntryTitle, getEntryStatus } = entityHelpers;\n\nconst styles = {\n scheduledIcon: css({\n verticalAlign: 'text-bottom',\n marginRight: tokens.spacing2Xs,\n }),\n};\n\nexport const FetchingWrappedInlineEntryCard = (props) => {\n const { getOrLoadEntry, loadEntityScheduledActions, entries } = useEntities();\n\n React.useEffect(() => {\n getOrLoadEntry(props.entryId);\n }, [props.entryId]);\n\n const entry = entries[props.entryId];\n\n React.useEffect(() => {\n if (entry) {\n props.onEntityFetchComplete && props.onEntityFetchComplete();\n }\n }, [entry]);\n\n if (entry === 'failed') {\n return (\n <InlineEntryCard testId={INLINES.EMBEDDED_ENTRY} isSelected={props.isSelected}>\n <Text>Entry missing or inaccessible</Text>\n </InlineEntryCard>\n );\n }\n\n if (entry === undefined) {\n return <InlineEntryCard isLoading />;\n }\n\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n\n const contentType = allContentTypes.find(\n (contentType) => contentType.sys.id === entry.sys.contentType.sys.id\n );\n const contentTypeName = contentType ? contentType.name : '';\n\n const status = getEntryStatus(entry.sys);\n\n if (status === 'deleted') {\n return (\n <InlineEntryCard\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n actions={[\n <MenuItem key=\"remove\" onClick={props.onRemove}>\n Remove\n </MenuItem>,\n ]}>\n <Text>Entry missing or inaccessible</Text>\n </InlineEntryCard>\n );\n }\n\n const title = getEntryTitle({\n entry: entry,\n contentType,\n localeCode: props.sdk.field.locale,\n defaultLocaleCode: props.sdk.locales.default,\n defaultTitle: 'Untitled',\n });\n\n return (\n <InlineEntryCard\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n title={`${contentTypeName}: ${title}`}\n status={status}\n actions={\n !props.isReadOnly\n ? [\n <MenuItem key=\"edit\" onClick={props.onEdit}>\n Edit\n </MenuItem>,\n <MenuItem key=\"edit\" onClick={props.onRemove} isDisabled={props.isDisabled}>\n Remove\n </MenuItem>,\n ]\n : undefined\n }>\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 <Text>{title}</Text>\n </InlineEntryCard>\n );\n};\n\nFetchingWrappedInlineEntryCard.propTypes = {\n sdk: PropTypes.object.isRequired,\n entryId: PropTypes.string.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n isReadOnly: PropTypes.bool.isRequired,\n onRemove: PropTypes.func.isRequired,\n onEdit: PropTypes.func.isRequired,\n onEntityFetchComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { FetchingWrappedInlineEntryCard } from './FetchingWrappedInlineEntryCard';\nimport { styles } from './EmbeddedEntryInline.styles';\n\nclass EmbeddedEntryInline extends React.Component {\n static propTypes = {\n sdk: 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.isRequired,\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 { id } = this.getEntitySys();\n return this.props.sdk.navigator.openEntry(id, { slideIn: true });\n };\n\n handleRemoveClick = () => {\n const { editor, node } = this.props;\n editor.removeNodeByKey(node.key);\n };\n\n render() {\n const { sdk, editor, isSelected } = this.props;\n const isDisabled = editor.props.readOnly;\n const isReadOnly = editor.props.actionsDisabled;\n const { id: entryId } = this.getEntitySys();\n return (\n <span {...this.props.attributes} className={styles.root}>\n <FetchingWrappedInlineEntryCard\n sdk={sdk}\n entryId={entryId}\n isSelected={isSelected}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n onRemove={this.handleRemoveClick}\n onEdit={this.handleEditClick}\n onEntityFetchComplete={this.props.onEntityFetchComplete}\n />\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: { sdk, logShortcutAction, logViewportAction },\n}) => ({\n renderNode: (props, _editor, next) => {\n const { node, attributes, key } = props;\n if (node.type === INLINES.EMBEDDED_ENTRY) {\n return (\n <EmbeddedEntryInline\n sdk={sdk}\n {...props}\n {...attributes}\n onEntityFetchComplete={() => {\n logViewportAction('linkRendered', { key });\n }}\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(sdk, 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 { toolbarActionHandlerWithSafeAutoFocus } from '../shared/Util';\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, children }) =>\n (Block) => {\n return class ToolbarDecorator extends React.Component {\n static propTypes = TOOLBAR_PLUGIN_PROP_TYPES;\n\n handleToggle = toolbarActionHandlerWithSafeAutoFocus(this, () => {\n const {\n editor,\n onToggle,\n richTextAPI: { logToolbarAction },\n } = this.props;\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 title={title}\n onToggle={this.handleToggle}\n isActive={isActive(editor, type)}\n disabled={this.props.disabled}>\n {children}\n </Block>\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';\nimport { ListBulletedIcon, ListNumberedIcon } from '@contentful/f36-icons';\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 children: <ListBulletedIcon />,\n})((props) => <ToolbarIcon {...props} />);\n\nexport const OrderedList = listToggleDecorator({\n type: BLOCKS.OL_LIST,\n title: 'OL',\n children: <ListNumberedIcon />,\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/f36-tokens';\nimport { HorizontalRuleIcon } from '@contentful/f36-icons';\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.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\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 children: <HorizontalRuleIcon />,\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","import { isNodeTypeEnabled } from '../../validations';\nimport { INLINES, BLOCKS } from '@contentful/rich-text-types';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n\nconst ACTIONS = {\n EMBED: 'embed',\n CREATE_EMBED: 'create_embed',\n};\n\nexport async function fetchAssets(sdk, query = '') {\n const assets = await sdk.space.getAssets({ query });\n return assets.items.map((asset) => ({\n contentTypeName: 'Asset',\n displayTitle: asset.fields.title ? asset.fields.title[sdk.field.locale] : 'Untitled',\n id: asset.sys.id,\n entry: asset,\n thumbnail:\n asset.fields.file &&\n asset.fields.file[sdk.field.locale] &&\n `${asset.fields.file[sdk.field.locale].url}?h=30`,\n }));\n}\n\nexport async function fetchEntries(sdk, contentType, query = '') {\n const entries = await sdk.space.getEntries({\n content_type: contentType.sys.id,\n query,\n });\n\n return Promise.all(\n entries.items.map(async (entry) => {\n const description = entityHelpers.getEntityDescription({\n contentType,\n entity: entry,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n });\n const displayTitle = entityHelpers.getEntryTitle({\n entry,\n contentType,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n defaultTitle: 'Untitled',\n });\n return {\n contentTypeName: contentType.name,\n displayTitle: displayTitle,\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(sdk) {\n this.sdk = sdk;\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.sdk.field, embedType)) {\n return false;\n }\n const isAsset = !contentType;\n if (!isAsset && !isValidLinkedContentType(this.sdk.field, contentType, embedType)) {\n return false;\n }\n\n return buildAction(embedType, contentType, ACTIONS.EMBED, callback);\n }\n\n async maybeBuildCreateAndEmbedAction(embedType, contentType, callback) {\n if (!isNodeTypeEnabled(this.sdk.field, embedType)) {\n return false;\n }\n\n const isAsset = !contentType;\n if (!isAsset) {\n if (!isValidLinkedContentType(this.sdk.field, contentType, embedType)) {\n return false;\n }\n\n const canCreateEntryOfContentType = await this.sdk.access.can('create', {\n sys: {\n type: 'Entry',\n contentType: {\n sys: contentType.sys,\n },\n },\n });\n\n if (canCreateEntryOfContentType === false) {\n return false;\n }\n } else {\n const canCreateAssets = await this.sdk.access.can('create', 'Asset');\n if (canCreateAssets === false) {\n return false;\n }\n }\n\n return buildAction(embedType, contentType, ACTIONS.CREATE_EMBED, callback);\n }\n}\n\nfunction buildAction(embedType, contentType, actionType, callback) {\n const isAsset = !contentType;\n const isInline = embedType === INLINES.EMBEDDED_ENTRY;\n const label = `${actionType === ACTIONS.EMBED ? 'Embed' : 'Create and embed'} ${\n isAsset ? 'Asset' : contentType.name\n } ${isInline ? ' - Inline' : ''}`;\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/f36-tokens';\nimport uniqBy from 'lodash/uniqBy';\nimport { CloseIcon } from '@contentful/f36-icons';\nimport {\n Spinner,\n SectionHeading,\n SkeletonContainer,\n SkeletonBodyText,\n Icon,\n IconButton,\n} from '@contentful/f36-components';\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.gray400}`,\n borderRadius: tokens.borderRadiusMedium,\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.gray300}`,\n margin: 0,\n color: tokens.gray900,\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.gray400}`,\n margin: 0,\n lineHeight: tokens.lineHeightDefault,\n color: tokens.gray900,\n }),\n icon: css({\n marginRight: 10,\n }),\n isSelected: css({\n background: tokens.gray200,\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 border: 'none',\n background: 'transparent',\n fontSize: tokens.fontSizeM,\n }),\n navBar: css({\n display: 'flex',\n bottom: 0,\n background: tokens.gray100,\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.gray600,\n }),\n closeButton: css({\n marginLeft: 'auto',\n }),\n};\n\nconst itemPropType = PropTypes.shape({\n label: PropTypes.string,\n icon: PropTypes.string,\n thumbnail: 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} as={item.icon} variant=\"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 marginBottom=\"none\">\n {this.props.breadcrumb ? `Embed ${this.props.breadcrumb}` : 'Richtext Commands'}\n </SectionHeading>\n <IconButton\n aria-label=\"Close\"\n className={styles.closeButton}\n icon={<CloseIcon variant=\"muted\" />}\n variant=\"transparent\"\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, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { cx, css } from 'emotion';\n\nconst throttle = (delay = 200, fn) => {\n let lastCall = 0;\n const throttleExec = (...args) => {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n return fn(...args); // eslint-disable-line\n };\n return throttleExec;\n};\n\nconst defaultProps = {\n testId: 'cf-ui-in-viewport',\n offset: 0,\n};\n\nconst isBrowser = typeof window !== 'undefined';\n\nexport class InViewport extends Component {\n static defaultProps = defaultProps;\n\n tGetDomPosition = null;\n nodeRef = null;\n lastOverflowAt = null;\n\n tOnOverflowTop = this.props.onOverflowTop && throttle(100, this.props.onOverflowTop);\n tOnOverflowBottom = this.props.onOverflowBottom && throttle(100, this.props.onOverflowBottom);\n tOnOverflowRight = this.props.onOverflowRight && throttle(100, this.props.onOverflowRight);\n tOnOverflowLeft = this.props.onOverflowLeft && throttle(100, this.props.onOverflowLeft);\n\n componentDidMount() {\n this.getDomPosition();\n this.bindEventListeners();\n }\n\n componentDidUpdate() {\n this.getDomPosition();\n }\n\n componentWillUnmount() {\n if (isBrowser && this.tGetDomPosition) {\n window.removeEventListener('scroll', this.tGetDomPosition, true);\n window.removeEventListener('resize', this.tGetDomPosition);\n }\n }\n\n getDomPosition = () => {\n if (isBrowser && this.nodeRef) {\n const html = document.documentElement;\n const boundingClientRect = this.nodeRef.getBoundingClientRect();\n const windowWidth = window.innerWidth || html.clientWidth;\n const windowHeight = window.innerHeight || html.clientHeight;\n this.handleOverflow(boundingClientRect, windowWidth, windowHeight);\n }\n };\n\n bindEventListeners = () => {\n this.tGetDomPosition = throttle(600, this.getDomPosition);\n if (isBrowser && this.tGetDomPosition) {\n window.addEventListener('scroll', this.tGetDomPosition, true);\n window.addEventListener('resize', this.tGetDomPosition);\n }\n };\n\n handleOverflow = ({ top, left, bottom, right }, windowWidth, windowHeight) => {\n const { offset } = this.props;\n const topThreshold = 0 - offset;\n const leftThreshold = 0 - offset;\n const rightThreshold = windowWidth + offset;\n const bottomThreshold = windowHeight + offset;\n\n if (top + right + bottom + left !== 0) {\n if (top < topThreshold && this.lastOverflowAt !== 'bottom') {\n this.lastOverflowAt = 'top';\n this.tOnOverflowTop && this.tOnOverflowTop();\n } else if (left < leftThreshold && this.lastOverflowAt !== 'right') {\n this.lastOverflowAt = 'left';\n this.tOnOverflowLeft && this.tOnOverflowLeft();\n } else if (bottom > bottomThreshold && this.lastOverflowAt !== 'top') {\n this.lastOverflowAt = 'bottom';\n this.tOnOverflowBottom && this.tOnOverflowBottom();\n } else if (right > rightThreshold && this.lastOverflowAt !== 'left') {\n this.lastOverflowAt = 'right';\n this.tOnOverflowRight && this.tOnOverflowRight();\n }\n }\n };\n\n render() {\n const {\n className,\n children,\n testId,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOverflowBottom,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOverflowLeft,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOverflowRight,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOverflowTop,\n ...otherProps\n } = this.props;\n\n const classNames = cx(css({ display: 'inline-block' }), className);\n\n return (\n <div\n ref={(ref) => {\n this.nodeRef = ref;\n }}\n className={classNames}\n data-test-id={testId}\n {...otherProps}>\n {children}\n </div>\n );\n }\n}\n\nInViewport.propTypes = {\n offset: PropTypes.number,\n onOverflowTop: PropTypes.func,\n onOverflowRight: PropTypes.func,\n onOverflowBottom: PropTypes.func,\n onOverflowLeft: PropTypes.func,\n className: PropTypes.string,\n children: PropTypes.any,\n testId: PropTypes.string,\n};\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 { fetchEntries, fetchAssets, CommandPaletteActionBuilder } from '../CommandPaletteService';\nimport { removeCommand } from '../Util';\nimport CommandPanelMenu from './CommandPanelMenu';\nimport { InViewport } from './InViewport/InViewport';\nimport tokens from '@contentful/f36-tokens';\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 await 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('click', this.handleOutsideClick, true);\n };\n\n removeEventListeners = () => {\n document.removeEventListener('scroll', this.handleScroll, true);\n document.removeEventListener('keydown', this.handleKeyboard, true);\n document.removeEventListener('click', 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 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 { sdk } = richTextAPI;\n removeCommand(editor, command);\n const { createAsset, createEntry } = sdk.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.sys;\n\n nodeType === INLINES.EMBEDDED_ENTRY\n ? insertInline(editor, entity.sys.id, false)\n : insertBlock(editor, nodeType, entity);\n\n richTextAPI.logCommandPaletteAction('insert', {\n nodeType,\n });\n\n const { navigator } = sdk;\n const openEntity = entityType === 'Asset' ? navigator.openAsset : navigator.openEntry;\n return openEntity(entityId, { slideIn: true });\n };\n\n createContentTypeActions = async (actionBuilder, contentType) => {\n const actions = await Promise.all([\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 ]);\n return actions.filter((action) => action);\n };\n\n createAssetActions = async (actionBuilder) => {\n const actions = await Promise.all([\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 ]);\n return actions.filter((action) => action);\n };\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.sdk, command)\n : await fetchEntries(this.props.richTextAPI.sdk, 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 { sdk } = this.props.richTextAPI;\n\n const allContentTypes = sdk.space.getCachedContentTypes();\n\n this.setState({\n isLoading: false,\n });\n\n const actionBuilder = new CommandPaletteActionBuilder(sdk);\n\n const contentTypeActions = flatten(\n await Promise.all(\n allContentTypes.map((ct) => this.createContentTypeActions(actionBuilder, ct))\n )\n );\n\n const assetActions = await this.createAssetActions(actionBuilder);\n\n this.setState((prevState) => ({\n items: [...prevState.items, ...contentTypeActions, ...assetActions],\n }));\n };\n\n handleKeyboard = (e) => {\n const isEscKey = isHotKey('esc', e); // ESC to close menu shouldn't blur editor.\n if (isEscKey || isHotKey('down', e) || isHotKey('up', e) || isHotKey('enter', e)) {\n e.preventDefault();\n e.stopPropagation();\n }\n if (isEscKey || 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 zIndex: tokens.zIndexDropdown,\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.getSelection().getRangeAt(0).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.sdk;\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.splitBlock().moveToStartOfDocument().setBlocks(BLOCKS.PARAGRAPH).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';\n\nimport { Button, Menu } from '@contentful/f36-components';\n\nimport { PlusIcon, ChevronDownIcon } from '@contentful/f36-icons';\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 onOpen: PropTypes.func,\n };\n\n render() {\n const { onOpen, isOpen, onClose, children } = this.props;\n return (\n <Menu placement=\"bottom-end\" isOpen={isOpen} onClose={onClose} onOpen={onOpen}>\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n testId=\"toolbar-entry-dropdown-toggle\"\n className=\"toolbar-entry-dropdown-toggle\"\n variant=\"secondary\"\n size=\"small\"\n startIcon={<PlusIcon />}\n isDisabled={this.props.disabled}>\n Embed\n </Button>\n </Menu.Trigger>\n <Menu.List className=\"toolbar-entry-dropdown-list\">{children}</Menu.List>\n </Menu>\n );\n }\n}\n\nexport default EntryEmbedDropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Flex } from '@contentful/f36-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';\nimport tokens from '@contentful/f36-tokens';\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\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 };\n\n hasMounted = false;\n\n isReadyToSetFocusProgrammatically = false;\n\n state = {\n headingMenuOpen: false,\n canAccessAssets: false,\n ...getValidationInfo(this.props.richTextAPI.sdk.field),\n };\n\n componentDidMount() {\n this.hasMounted = true;\n this.props.richTextAPI.sdk.access.can('read', 'Asset').then((canReadAssets) => {\n if (this.hasMounted) {\n // Prevent setting state on unmounted component\n this.setState({ canAccessAssets: canReadAssets });\n }\n });\n }\n\n componentWillUnmount() {\n this.hasMounted = false;\n }\n\n onChange = (...args) => {\n this.setState({ headingMenuOpen: false });\n this.props.onChange(...args);\n };\n\n handleEmbedDropdownOpen = () =>\n this.setState({\n isEmbedDropdownOpen: true,\n });\n\n handleEmbedDropdownClose = () =>\n this.setState({\n isEmbedDropdownOpen: false,\n });\n\n renderEmbeds = (props) => {\n const field = this.props.richTextAPI.sdk.field;\n\n const inlineEntryEmbedEnabled = isNodeTypeEnabled(field, INLINES.EMBEDDED_ENTRY);\n const blockEntryEmbedEnabled = isNodeTypeEnabled(field, BLOCKS.EMBEDDED_ENTRY);\n const blockAssetEmbedEnabled =\n this.state.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 onOpen={this.handleEmbedDropdownOpen}\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 openHeadingMenu = () =>\n this.setState({\n headingMenuOpen: true,\n });\n\n closeHeadingMenu = () =>\n this.setState({\n headingMenuOpen: false,\n });\n\n render() {\n const { editor, isDisabled, richTextAPI } = this.props;\n if (editor.value.selection.isFocused) {\n // If the Slate input has ever been focused by the user, we can now also\n // programmatically use `editor.setFocus()` without undesired side-effects.\n this.isReadyToSetFocusProgrammatically = true;\n }\n const props = {\n editor,\n onToggle: this.onChange,\n disabled: isDisabled,\n richTextAPI,\n canAutoFocus: this.isReadyToSetFocusProgrammatically,\n };\n const { field } = richTextAPI.sdk;\n const { isAnyHyperlinkEnabled, isAnyListEnabled, isAnyMarkEnabled } = this.state;\n const currentBlockType = props.editor.value.blocks.getIn([0, 'type']);\n return (\n <Flex testId=\"toolbar\" className={styles.toolbar} alignItems=\"center\">\n <div className={styles.formattingOptionsWrapper}>\n <HeadingDropdown\n onOpen={this.openHeadingMenu}\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 && <span className={styles.divider} data-test-id=\"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 <span className={styles.divider} data-test-id=\"hyperlink-divider\" />\n <Hyperlink {...props} />\n </React.Fragment>\n )}\n {isAnyListEnabled && <span className={styles.divider} data-test-id=\"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 </Flex>\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';\nimport { EntityProvider } from '@contentful/field-editor-reference';\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/f36-tokens';\n\nconst STYLE_EDITOR_BORDER = `1px solid ${tokens.gray400}`;\n\nconst 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 fontFamily: tokens.fontStackPrimary,\n fontSize: tokens.spacingM,\n minHeight: '380px',\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.gray100,\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 minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n sdk: PropTypes.shape({\n field: PropTypes.shape({\n id: PropTypes.string.isRequired,\n locale: PropTypes.string.isRequired,\n }).isRequired,\n access: PropTypes.shape({\n can: PropTypes.func.isRequired,\n }).isRequired,\n parameters: PropTypes.shape({\n instance: PropTypes.shape({\n getEntryUrl: PropTypes.func,\n getAssetUrl: PropTypes.func,\n }).isRequired,\n }),\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 };\n\n static defaultProps = {\n value: EMPTY_DOCUMENT,\n onChange: noop,\n onAction: noop,\n isDisabled: false,\n isToolbarHidden: false,\n actionsDisabled: false,\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 sdk: this.props.sdk,\n onAction: this.props.onAction,\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.minHeight !== undefined ? css({ minHeight: this.props.minHeight }) : undefined,\n this.props.isDisabled ? styles.disabled : styles.enabled,\n this.props.isToolbarHidden && styles.hiddenToolbar\n );\n\n return (\n <div className={styles.root} data-test-id=\"rich-text-editor\">\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 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 { sdk, isInitiallyDisabled, ...otherProps } = props;\n return (\n <EntityProvider sdk={sdk}>\n <FieldConnector\n throttle={0}\n field={sdk.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 sdk={sdk}\n isDisabled={disabled}\n onChange={(value) => {\n setValue(value);\n }}\n />\n );\n }}\n </FieldConnector>\n </EntityProvider>\n );\n}\n\nRichTextEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n","import React from 'react';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\nimport { HyperlinkDialog } from './HypelinkDialog/HyperlinkDialog';\n\nexport const openRichTextDialog = (sdk) => (options) => {\n if (options.parameters && 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 { HyperlinkDialog } from './HypelinkDialog/HyperlinkDialog';\n\nexport const renderRichTextDialog = (sdk) => {\n const parameters = sdk.parameters.invocation;\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":["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","sdk","richTextAPI","logViewportAction","logShortcutAction","logToolbarAction","logCommandPaletteAction","EDITOR_PLUGIN_PROP_TYPES","PropTypes","shape","object","isRequired","func","TOOLBAR_PLUGIN_PROP_TYPES","onToggle","disabled","bool","isButton","canAutoFocus","styles","button","css","height","width","marginLeft","tokens","spacing2Xs","marginRight","tooltip","zIndex","Number","zIndexTooltip","ToolbarIcon","handleClick","event","preventDefault","props","render","title","isActive","children","className","React","Button","cx","Tooltip","Component","propTypes","any","string","MarkPropTypes","attributes","mark","NodePropTypes","Tag","tagProps","CommonMark","displayName","haveMarks","value","activeMarks","some","haveBlocks","haveInlines","inline","haveAnyInlines","size","haveEveryInlineOfType","every","haveTextInSomeBlocks","block","text","bold","color","fontWeight","fontWeightDemiBold","italic","fontStyle","lineHeight","fontFamily","fontStackMonospace","fontSize","tagName","hotkey","renderMark","_editor","next","markDecorator","onKeyDown","isHotkey","toggleMark","action","markType","toolbarActionHandlerWithSafeAutoFocus","component","customHandler","selection","isFocused","focus","Mark","handleToggle","React.createElement","BoldPlugin","markPlugin","MARKS","BOLD","Bold","markToggleDecorator","FormatBoldIcon","ItalicPlugin","ITALIC","Italic","FormatItalicIcon","UnderlinedPlugin","UNDERLINE","Underlined","FormatUnderlinedIcon","CodePlugin","CODE","Code","CodeIcon","toggleChange","setBlocks","isBlockActive","applyChange","Block","actionName","getParent","range","start","startBlock","getClosestBlock","isSelectionInQuote","ancestor","unwrapBlock","wrapBlock","headingCss","fontWeightMedium","margin","spacingS","paragraph","lineHeightDefault","marginBottom","blockquote","borderLeft","gray200","paddingLeft","background","padding","gray700","borderRadius","borderRadiusSmall","textLink","orderedList","listStyleType","unorderedList","listItem","listStyle","spacingL","heading1","heading2","heading3","heading4","heading5","heading6","CommonNode","camelCase","newPlugin","defaultType","renderNode","commonNode","e","QuotePlugin","Blockquote","blockToggleDecorator","QuoteIcon","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","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","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","FetchingWrappedEntryCard","useEntities","getOrLoadEntry","loadEntityScheduledActions","entries","entryId","onEntityFetchComplete","MissingEntityCard","isDisabled","onRemove","EntryCard","contentType","space","getCachedContentTypes","find","sys","id","WrappedEntryCard","getAsset","getEntryUrl","isSelected","locale","locales","onEdit","FetchingWrappedAssetCard","getOrLoadAsset","assets","assetId","asset","AssetCard","WrappedAssetCard","getAssetUrl","LINK_TYPES","URI","ENTRY","ASSET","isFeaturingEntitySelector","entitySelectorConfigs","Entry","Asset","entityToLink","entity","linkType","HyperlinkDialog","handleSubmit","onClose","getValue","selectEntry","contentTypes","dialogs","selectSingleEntry","setTargetEntity","selectAsset","selectSingleAsset","uri","target","isEntityLink","Boolean","entityLinks","allowedHyperlinkTypes","includes","setState","isLinkComplete","requiresText","hideText","labels","EntityProvider","ModalContent","renderFields","ModalControls","confirm","isUriInputAutoFocused","Form","FormControl","TextInput","Select","renderEntityField","resetEntity","entityLink","isEntitySelectorVisible","FormLabel","TextLink","renderEntitySelector","marginTop","oneOf","arrayOf","defaultProps","openHyperlinkDialog","showTextInput","isNew","openCurrent","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","allowHeightOverflow","parameters","field","flow","v","get","validations","newEntitySelectorConfigFromRichTextField","entityType","getEntityTypeFromRichTextNode","getLinkedContentTypeIdsForNodeType","words","split","indexOf","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","getRichTextValidation","validationType","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","isNodeTypeEnabled","isMarkEnabled","HYPERLINK_TYPES","nodeToHyperlinkType","getAllowedHyperlinkTypes","hyperlinkTypes","filter","getEntitySelectorConfigs","mayEditLink","isExpanded","hasHyperlink","hasOnlyHyperlinkInlines","toggleLink","logAction","removeLinks","insertLink","change","blur","fragment","trim","last","insertBlock","insertText","moveFocusForward","wrapLink","linkTypeToNodeType","unwrapInline","editLink","link","toJSON","oldUri","oldTarget","setInlines","wrapInline","moveToEnd","HyperlinkToolbarIcon","LinkIcon","hyperlinkWrapper","display","position","a","hyperlink","fill","textColorDark","hyperlinkIEFallback","textDecoration","hyperlinkIcon","top","webkitTransition","transition","browser","detectBrowser","isEdge","SUPPORTS_NATIVE_SLATE_HYPERLINKS","fetchAllData","entityId","localeCode","defaultLocaleCode","getEntity","getEntry","contentTypeId","ct","entityTitle","entityHelpers","getEntryTitle","defaultTitle","getAssetTitle","entityDescription","getEntityDescription","getEntityScheduledActions","jobs","entityStatus","getEntryStatus","contentTypeName","useRequestStatus","useState","requestStatus","setRequestStatus","useEffect","entityInfo","console","log","truncate","str","substr","replace","isUrl","test","getEntityInfo","Hyperlink","href","getTooltipContent","toLowerCase","tooltipContent","getScheduleTooltipContent","job","jobsCount","isHotKey","stopPropagation","renderLink","tooltipContainer","HyperlinkPlugin","isHyperlink","moveToRangeOfNode","normalizeNode","removeNodeByKey","getInlines","inlineNode","unwrapInlineByKey","root","h1","h2","h3","h4","h5","h6","getStyleForType","ToolbarDropdownListItem","Menu","handleSelect","contentWidthDefault","blockTitles","EMBEDDED_ASSET","HeadingDropdown","getStyleNameForChange","currentBlockType","onOpen","isOpen","ChevronDownIcon","newHeadingDropdownItem","Heading","blockSelectDecorator","Paragraph","shouldToggle","currentBlock","offset","initialRange","splitBlock","setBlocksAtRange","Heading1Plugin","Heading2Plugin","Heading3Plugin","Heading4Plugin","Heading5Plugin","Heading6Plugin","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","ParagraphPlugin","hasBlockOfType","selectEntityAndInsert","baseConfig","selectEntity","withCreate","createNode","focusNextLine","linkedEntityBlock","icon","EntityLinkToolbarIcon","handleAction","getEntityTypeFromNodeType","baseClass","AssetIcon","EmbeddedEntryBlockIcon","Flex","Icon","LinkedEntityBlock","handleEditClick","getEntitySys","navigator","openEntity","openAsset","openEntry","slideIn","handleRemoveClick","readOnly","actionsDisabled","instance","EmbeddedEntityBlockPlugin","EntityLinkBlock","EmbeddedEntryBlockPlugin","EmbeddedAssetBlockPlugin","createInlineNode","insertInline","moveToStartOfNextText","hasOnlyInlineEntryInSelection","end","selectEntryAndInsert","canInsertInline","span","webkitUserSelect","mozUserSelect","msUserSelect","userSelect","EntryLinkToolbarIcon","EmbeddedEntryInlineIcon","scheduledIcon","verticalAlign","FetchingWrappedInlineEntryCard","InlineEntryCard","Text","allContentTypes","status","MenuItem","isReadOnly","ScheduledIconWithTooltip","ClockIcon","EmbeddedEntryInline","EmbeddedEntryInlinePlugin","utils","changes","unwrapList","wrapInList","isSelectionInList","getCurrentList","currentList","setNodeByKey","list","EditListWrapper","UnorderedList","listToggleDecorator","ListBulletedIcon","OrderedList","ListNumberedIcon","hr","spacingM","gray300","hrSelected","colorPrimary","HrPlugin","HR","Hr","HorizontalRuleIcon","getCharacterCount","contentfulSlateJSAdapter","documentToPlainTextString","PastePlugin","onPaste","_event","characterCountSelection","global","getSelection","characterCountBefore","setTimeout","characterCountAfter","BLOCK_TAGS","p","ul","ol","MARK_TAGS","strong","b","em","u","isGoogleWrapper","el","startsWith","isGoogleBold","style","isGoogleItalic","isGoogleUnderline","gDocsRules","deserialize","isFromGoogleDocs","ownerDocument","querySelector","childNodes","marks","textNode","leaves","textContent","listItems","links","getAttribute","macOSTrailingBreak","classList","contains","RULES","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","exec","getDecorationOrDefault","inputValue","decoration","anchor","hasCommandPaletteMarkType","hasCommandPaletteDecoration","decorations","getDecorations","isEmpty","commandPaletteDecoration","d","removeCommand","command","anchorOffset","removeTextByKey","ACTIONS","EMBED","CREATE_EMBED","fetchAssets","query","getAssets","items","displayTitle","fields","thumbnail","file","url","fetchEntries","getEntries","content_type","all","description","isValidLinkedContentType","embedType","val","typeVal","linkContentType","reduce","pre","cur","isEmbeddingEnabled","CommandPaletteActionBuilder","maybeBuildEmbedAction","callback","isAsset","buildAction","maybeBuildCreateAndEmbedAction","access","can","canCreateEntryOfContentType","canCreateAssets","actionType","isInline","label","group","commandPanel","colorWhite","boxShadow","border","gray400","borderRadiusMedium","fontStackPrimary","overflowY","commandPanelList","item","fontSizeM","spacingXs","borderBottom","gray900","divider","letterSpacing","letterSpacingWide","fontSizeS","textTransform","skeletonContainer","textAlign","whiteSpace","overflow","textOverflow","alignItems","navBar","bottom","gray100","loader","instruction","gray600","closeButton","itemPropType","CommandPanelItem","listItemRef","componentDidUpdate","scrollIntoView","index","classNames","ref","number","Instruction","CommandPanel","selectedKey","handleKeyboard","selectedItem","renderNavigationBar","SectionHeading","breadcrumb","IconButton","CloseIcon","renderStatusBar","instructions","isUpdating","Spinner","renderSkeleton","SkeletonContainer","SkeletonBodyText","getDerivedStateFromProps","itemsHasUpdated","originalItems","searchStringHasUpdated","searchString","originalSearchString","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","renderGroups","groups","uniqBy","groupName","renderItems","cn","testId","isLoading","throttle","delay","lastCall","throttleExec","now","Date","getTime","isBrowser","window","InViewport","tGetDomPosition","nodeRef","lastOverflowAt","tOnOverflowTop","onOverflowTop","tOnOverflowBottom","onOverflowBottom","tOnOverflowRight","onOverflowRight","tOnOverflowLeft","onOverflowLeft","getDomPosition","documentElement","boundingClientRect","getBoundingClientRect","windowWidth","innerWidth","clientWidth","windowHeight","innerHeight","clientHeight","handleOverflow","bindEventListeners","left","right","topThreshold","leftThreshold","rightThreshold","bottomThreshold","otherProps","DEFAULT_POSITION","CommandPalette","anchorPosition","panelPosition","paletteDimensions","handleScroll","handleOutsideClick","removeEventListeners","palette","isClosed","requestUpdate","currentCommand","createCommands","leading","trailing","createCommand","onCreateAndEmbedEntity","createAsset","createEntry","createEntity","createContentTypeActions","actionBuilder","clearCommand","actions","createAssetActions","nodeName","updatePanelPosition","allEntries","isComponentMounted","createInitialCommands","flatten","contentTypeActions","assetActions","prevState","isEscKey","cancel","body","ReactDOM","createPortal","outline","minWidth","zIndexDropdown","CommandPanelMenu","anchorRect","getRangeAt","PureComponent","embedsEnabled","CommandMark","CommandPalettePlugin","decorateNode","_node","others","renderEditor","_props","commandMark","isVoidBlockFirstAndFocused","getBlocks","first","focusBlock","insertParagraphAndFocusToStartOfDocument","moveToStartOfDocument","InsertBeforeFirstVoidBlockPlugin","buildPlugins","TrailingBlock","NewLinePlugin","EntryEmbedDropdown","PlusIcon","toolbar","backgroundColor","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Toolbar","hasMounted","isReadyToSetFocusProgrammatically","headingMenuOpen","canAccessAssets","getValidationInfo","onChange","handleEmbedDropdownOpen","isEmbedDropdownOpen","handleEmbedDropdownClose","renderEmbeds","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","numEnabledEmbeds","EmbeddedEntityBlock","openHeadingMenu","closeHeadingMenu","canReadAssets","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","shouldComponentUpdate","nextProps","nextState","isStateValueUpdate","is","isPropsValueUpdate","prevProps","isIncomingChange","deepEquals","isDocumentChanged","isToolbarHidden","current","Editor","oneOfType","noop","op","properties","RichTextEditor","isInitiallyDisabled","FieldConnector","value1","value2","lastRemoteValue","setValue","externalReset","openRichTextDialog","options","ModalDialogLauncher","openDialog","renderRichTextDialog","invocation","startAutoResizer","close"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-editor-rich-text.cjs.development.js","sources":["../src/constants/Schema.ts","../src/ContentfulEditorProvider.ts","../src/helpers/sanitizeSlateDoc.ts","../src/plugins/Break/createSoftBreakPlugin.ts","../src/plugins/Break/createExitBreakPlugin.ts","../src/plugins/DragAndDrop/index.tsx","../src/helpers/environment.ts","../src/helpers/editor.ts","../src/plugins/links-tracking.tsx","../src/SdkProvider.tsx","../src/plugins/shared/EntityStatusIcon.tsx","../src/plugins/shared/FetchingWrappedAssetCard.tsx","../src/plugins/shared/FetchingWrappedEntryCard.tsx","../src/plugins/EmbeddedEntityBlock/LinkedEntityBlock.tsx","../../../node_modules/regenerator-runtime/runtime.js","../src/helpers/getLinkedContentTypeIdsForNodeType.ts","../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/helpers/validations.ts","../src/plugins/Heading/components/ToolbarHeadingButton.tsx","../src/helpers/extractNodes.ts","../src/helpers/transformers.ts","../src/plugins/Heading/components/Heading.tsx","../src/plugins/Heading/createHeadingPlugin.ts","../src/plugins/shared/ToolbarButton.tsx","../src/plugins/Hr/index.tsx","../src/plugins/Hyperlink/truncate.ts","../src/plugins/Hyperlink/EntryAssetTooltip.tsx","../src/plugins/Hyperlink/HyperlinkModal.tsx","../src/plugins/Hyperlink/utils.ts","../src/plugins/Hyperlink/index.tsx","../src/plugins/List/components/List.tsx","../src/plugins/List/components/ListItem.tsx","../src/plugins/List/utils.ts","../src/plugins/List/transforms/insertListItem.ts","../src/plugins/List/insertListBreak.ts","../src/plugins/List/insertListFragment.ts","../src/plugins/List/withList.ts","../src/plugins/List/createListPlugin.ts","../src/plugins/List/components/ToolbarListButton.tsx","../src/plugins/Marks/Bold.tsx","../src/plugins/Marks/Code.tsx","../src/plugins/Marks/Italic.tsx","../src/plugins/Marks/Underline.tsx","../src/plugins/Marks/index.ts","../src/plugins/Normalizer/baseRules.ts","../src/plugins/Normalizer/utils.ts","../src/plugins/Normalizer/withNormalizer.ts","../src/plugins/Normalizer/createNormalizerPlugin.ts","../src/plugins/Paragraph/Paragraph.tsx","../src/plugins/Paragraph/utils.ts","../src/plugins/Paragraph/createParagraphPlugin.ts","../src/plugins/PasteHTML/utils/sanitizeSheets.ts","../src/plugins/PasteHTML/utils/sanitizeHTML.ts","../src/plugins/PasteHTML/createPasteHTMLPlugin.ts","../src/plugins/Quote/components/Quote.tsx","../src/plugins/Quote/toggleQuote.ts","../src/plugins/Quote/createQuotePlugin.ts","../src/plugins/Quote/components/ToolbarQuoteButton.tsx","../src/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.ts","../src/plugins/Table/addTableTrackingEvents.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/helpers.ts","../src/plugins/Table/components/TableActions.tsx","../src/plugins/Table/components/Cell.tsx","../src/plugins/Table/components/HeaderCell.tsx","../src/plugins/Table/components/Row.tsx","../src/plugins/Table/components/Table.tsx","../src/plugins/Table/createTablePlugin.ts","../src/plugins/Table/components/ToolbarButton.tsx","../src/plugins/Text/createTextPlugin.ts","../src/plugins/TrailingParagraph/index.ts","../src/plugins/Voids/transformVoid.ts","../src/plugins/Voids/createVoidsPlugin.ts","../src/plugins/index.ts","../src/RichTextEditor.styles.ts","../src/Toolbar/components/EmbeddedEntityDropdownButton.tsx","../src/Toolbar/components/EmbedEntityWidget.tsx","../src/Toolbar/index.tsx","../src/Toolbar/components/StickyToolbarWrapper.tsx","../src/RichTextEditor.tsx","../src/dialogs/HypelinkDialog/HyperlinkDialog.jsx","../src/dialogs/openRichTextDialog.tsx","../src/dialogs/renderRichTextDialog.tsx"],"sourcesContent":["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 { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { usePlateEditorRef } from '@udecode/plate-core';\nimport constate from 'constate';\n\nexport function getContentfulEditorId(sdk: FieldExtensionSDK) {\n const { entry, field } = sdk;\n const sys = entry.getSys();\n\n return `rich-text-editor-${sys.id}-${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 = usePlateEditorRef(editorId);\n\n return editor;\n}\n\nexport const [ContentfulEditorProvider, useContentfulEditor] = constate(useContentfulEditorHook);\n","import { CustomText, TextOrCustomElement } from '../types';\n\nconst isTextElement = (node: TextOrCustomElement): node is CustomText => 'text' in node;\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 {\n createSoftBreakPlugin as createDefaultSoftBreakPlugin,\n SoftBreakRule,\n} from '@udecode/plate-break';\n\nimport { RichTextPlugin } from '../../types';\n\nexport const createSoftBreakPlugin = (): RichTextPlugin =>\n createDefaultSoftBreakPlugin({\n then: (editor) => {\n const rules: SoftBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as RichTextPlugin).softBreak || [];\n });\n\n return {\n options: { rules },\n };\n },\n });\n","import {\n createExitBreakPlugin as createDefaultExitBreakPlugin,\n ExitBreakRule,\n} from '@udecode/plate-break';\n\nimport { RichTextPlugin } from '../../types';\n\nexport const createExitBreakPlugin = (): RichTextPlugin =>\n createDefaultExitBreakPlugin({\n options: {\n rules: [],\n },\n then: (editor) => {\n const rules: ExitBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as RichTextPlugin).exitBreak || [];\n });\n\n return {\n options: { rules },\n };\n },\n });\n","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { getNodes } from '@udecode/plate-core';\n\nimport { RichTextPlugin } from '../../types';\n\nexport function createDragAndDropPlugin(): RichTextPlugin {\n const DRAGGABLE_TYPES: string[] = [\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.HR,\n INLINES.EMBEDDED_ENTRY,\n ];\n\n /**\n * HTML node names where dropping should be allowed\n * Usually for elements where `Transforms.removeNodes` is needed\n * TODO: looking up for html nodes is not the best solution and it won't scale but it works fine for our current cases/elements\n */\n const ON_DROP_ALLOWED_TYPES = {\n TABLE: [INLINES.EMBEDDED_ENTRY],\n };\n\n return {\n key: 'DragAndDropPlugin',\n handlers: {\n // If true, the next handlers will be skipped.\n onDrop: (editor) => (event) => {\n const [draggingBlock] = Array.from(\n getNodes(editor, {\n match: (node) => DRAGGABLE_TYPES.includes(node?.type),\n })\n );\n if (!draggingBlock) return false;\n\n const [draggingNode] = draggingBlock;\n\n if (!event.nativeEvent.target) return false;\n\n // TODO: looking up for html nodes is not the best solution and it won't scale, we need to find a way to know the dropping target slate element\n const dropDisallowed = getParents(event.nativeEvent.target as Node).some((node) => {\n return ON_DROP_ALLOWED_TYPES[node.nodeName]\n ? !ON_DROP_ALLOWED_TYPES[node.nodeName]?.includes(draggingNode.type)\n : false;\n });\n\n if (!dropDisallowed) {\n // Move the drop event to a new undo batch mitigating the bug where undo not only moves it back,\n // but also undoes a previous action: https://github.com/ianstormtaylor/slate/issues/4694\n editor.history.undos.push([]);\n }\n\n return dropDisallowed;\n },\n },\n };\n}\n\nfunction getParents(el: Node): Node[] {\n const parents: Node[] = [];\n\n parents.push(el);\n while (el.parentNode) {\n parents.unshift(el.parentNode);\n el = el.parentNode;\n }\n\n return parents;\n}\n","// \"modern\" Edge was released at 79.x\nconst IS_EDGE_LEGACY =\n typeof navigator !== 'undefined' && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])/i.test(navigator.userAgent);\n\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nconst IS_CHROME_LEGACY =\n typeof navigator !== 'undefined' &&\n /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);\n\ntype CustomInputEvent = {\n getTargetRanges?: (() => StaticRange[]) | undefined;\n} & InputEvent;\n\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nexport const HAS_BEFORE_INPUT_SUPPORT =\n !IS_CHROME_LEGACY &&\n !IS_EDGE_LEGACY &&\n // globalThis is undefined in older browsers\n typeof globalThis !== 'undefined' &&\n globalThis.InputEvent &&\n typeof (globalThis.InputEvent.prototype as CustomInputEvent).getTargetRanges === 'function'; // The `getTargetRanges` property isn't recognized.\n\nexport const IS_SAFARI =\n typeof navigator !== 'undefined' && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\n","import { Link } from '@contentful/field-editor-reference/dist/types';\nimport { BLOCKS, HEADINGS, INLINES, TABLE_BLOCKS } from '@contentful/rich-text-types';\nimport { getText, PlateEditor } from '@udecode/plate-core';\nimport { Text, Editor, Element, Transforms, Path, Range, Node } from 'slate';\nimport { ReactEditor } from 'slate-react';\n\nimport { CustomElement } from '../types';\nimport { IS_SAFARI } from './environment';\n\nexport const LINK_TYPES: INLINES[] = [\n INLINES.HYPERLINK,\n INLINES.ENTRY_HYPERLINK,\n INLINES.ASSET_HYPERLINK,\n];\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 isRootLevel(path: Path): boolean {\n return path.length === 1;\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 getElementFromCurrentSelection(editor) {\n if (!editor.selection) return [];\n\n return Array.from(\n Editor.nodes(editor, {\n /**\n * editor.select is a Range, which includes anchor and focus, the beginning and the end of a selection\n * when using only editor.selection.focus, we might get only the end of the selection, or where the text cursor is\n * and in some cases getting the next element instead of the one we want\n **/\n at: editor.selection,\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\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\n// TODO: move to hyperlink plugin\nexport function insertLink(editor, options: InsertLinkOptions) {\n if (editor.selection) {\n wrapLink(editor, options);\n }\n}\n\n// TODO: move to hyperlink plugin\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\n// TODO: move to hyperlink plugin\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\n// TODO: move to hyperlink plugin\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: PlateEditor) {\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: PlateEditor, type: BLOCKS) {\n const isQuoteSelected = isBlockSelected(editor, BLOCKS.QUOTE);\n const isValidType = [...HEADINGS, BLOCKS.OL_LIST, BLOCKS.UL_LIST, BLOCKS.HR].includes(type);\n\n return isQuoteSelected && isValidType;\n}\n\nexport function unwrapFromRoot(editor: PlateEditor) {\n const ancestorPath = getAncestorPathFromSelection(editor);\n Transforms.unwrapNodes(editor, { at: ancestorPath });\n}\n\nexport const isAtEndOfTextSelection = (editor: PlateEditor) =>\n editor.selection?.focus.offset === getText(editor, editor.selection?.focus.path).length;\n\nexport function currentSelectionStartsTableCell(editor: PlateEditor): boolean {\n const [tableCellNode, path] = getNodeEntryFromSelection(editor, [\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL,\n ]);\n return !!tableCellNode && (!getText(editor, path) || editor.selection?.focus.offset === 0);\n}\n\n/**\n * This traversal strategy is unfortunately necessary because Slate doesn't\n * expose something like Node.next(editor).\n */\nexport function getNextNode(editor: PlateEditor): CustomElement | null {\n if (!editor.selection) {\n return null;\n }\n const descendants = Node.descendants(editor, { from: editor.selection.focus.path });\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = descendants.next();\n if (done) {\n return null;\n }\n const [node, path] = value as NodeEntry;\n if (Path.isCommon(path, editor.selection.focus.path)) {\n continue;\n }\n return node as CustomElement;\n }\n}\n\n// TODO: move to table plugin\nexport function currentSelectionPrecedesTableCell(editor: PlateEditor): boolean {\n const nextNode = getNextNode(editor);\n return (\n !!nextNode && TABLE_BLOCKS.includes(nextNode.type as BLOCKS) && isAtEndOfTextSelection(editor)\n );\n}\n\nexport const INLINE_TYPES = Object.values(INLINES) as string[];\n\nexport const isInlineOrText = (node: Node) => {\n // either text or inline elements\n return Text.isText(node) || (Element.isElement(node) && INLINE_TYPES.includes(node.type));\n};\n\nexport const focus = (editor: PlateEditor) => {\n const x = window.scrollX;\n const y = window.scrollY;\n\n ReactEditor.focus(editor);\n\n // Safari has issues with `editor.focus({ preventScroll: true })`, it ignores the option `preventScroll`\n if (IS_SAFARI) {\n setTimeout(function () {\n window.scrollTo(x, y); // restore position\n }, 0);\n }\n};\n","import React, { ComponentProps } from 'react';\n\nimport { TrackingProvider } from '../TrackingProvider';\n\ntype WithEntityFetchProps = {\n onEntityFetchComplete: VoidFunction;\n} & JSX.IntrinsicAttributes;\n\nexport function withLinkTracking(\n tracking: TrackingProvider,\n Component: React.ComponentType<WithEntityFetchProps>\n) {\n return function ComponentWithTracking(props: ComponentProps<typeof Component>) {\n return (\n <Component\n {...props}\n onEntityFetchComplete={() => {\n tracking.onViewportAction('linkRendered');\n }}\n />\n );\n };\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport constate from 'constate';\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';\n\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { useEntities, ScheduledIconWithTooltip } from '@contentful/field-editor-reference';\nimport { Entry, Asset } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\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';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { AssetCard, AssetType, Menu, Text, Notification } from '@contentful/f36-components';\nimport { useEntities, MissingEntityCard } from '@contentful/field-editor-reference';\nimport { entityHelpers, File, shortenStorageUnit } from '@contentful/field-editor-shared';\nimport mimetype from '@contentful/mimetype';\nimport { css } from 'emotion';\nimport get from 'lodash/get';\n\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 onEntityFetchComplete?: VoidFunction;\n}\n\nfunction downloadAsset(url: string, fileName: string) {\n // This method won't work if we have CORS disabled(asset not on the contentful server)\n fetch(url, {\n method: 'GET',\n headers: {},\n })\n .then((response) => {\n response.arrayBuffer().then(function (buffer) {\n const url = window.URL.createObjectURL(new Blob([buffer]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', fileName); //or any other extension\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n });\n })\n .catch((err) => {\n Notification.error('Failed to download asset');\n console.log(err);\n });\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\" disabled={isDisabled} 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, get(entityFile, 'fileName'));\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 const { onEntityFetchComplete } = props;\n React.useEffect(() => {\n getOrLoadAsset(props.assetId);\n }, [props.assetId]); // eslint-disable-line\n\n React.useEffect(() => {\n if (!asset) {\n return;\n }\n onEntityFetchComplete?.();\n }, [asset, onEntityFetchComplete]);\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","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { EntryCard, MenuItem } from '@contentful/f36-components';\nimport { useEntities, MissingEntityCard, AssetThumbnail } from '@contentful/field-editor-reference';\nimport { entityHelpers, File, isValidImage } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\n\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 onEntityFetchComplete?: VoidFunction;\n onEdit?: VoidFunction;\n onRemove?: VoidFunction;\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, getOrLoadAsset } = 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 const { onEntityFetchComplete } = props;\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 getOrLoadAsset\n )\n .then(setFile)\n .catch(() => setFile(null));\n }, [entry, contentType, props.locale, defaultLocaleCode, props.sdk, file, getOrLoadAsset]);\n\n React.useEffect(() => {\n getOrLoadEntry(props.entryId);\n }, [props.entryId]); // eslint-disable-line\n\n React.useEffect(() => {\n if (!entry) {\n return;\n }\n onEntityFetchComplete?.();\n }, [entry, onEntityFetchComplete]);\n\n function renderDropdown() {\n if (!props.onEdit || !props.onRemove) return undefined;\n\n return [\n props.onEdit ? (\n <MenuItem\n key=\"edit\"\n disabled={props.isDisabled}\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 disabled={props.isDisabled}\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 React from 'react';\n\nimport { css } from 'emotion';\nimport { Transforms } from 'slate';\nimport { ReactEditor, useSelected, useReadOnly } from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { HAS_BEFORE_INPUT_SUPPORT } from '../../helpers/environment';\nimport { useSdkContext } from '../../SdkProvider';\nimport { CustomRenderElementProps } from '../../types';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem !important',\n }),\n};\n\ntype LinkedEntityBlockProps = CustomRenderElementProps<{\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n}> & {\n onEntityFetchComplete: VoidFunction;\n};\n\nexport function LinkedEntityBlock(props: LinkedEntityBlockProps) {\n const { attributes, children, element, onEntityFetchComplete } = 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 // COMPAT: This makes copy & paste work for Firefox\n contentEditable={!HAS_BEFORE_INPUT_SUPPORT ? false : undefined}\n draggable={!HAS_BEFORE_INPUT_SUPPORT ? true : undefined}>\n <div\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={HAS_BEFORE_INPUT_SUPPORT ? false : undefined}\n draggable={HAS_BEFORE_INPUT_SUPPORT ? true : undefined}>\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 onEntityFetchComplete={onEntityFetchComplete}\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 onEntityFetchComplete={onEntityFetchComplete}\n />\n )}\n </div>\n {children}\n </div>\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 define(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 = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(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 define(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 define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(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, in modern engines\n // we can explicitly access globalThis. In older engines 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 if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\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';\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 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-core';\nimport { Transforms } from 'slate';\n\nimport { focus } from '../../helpers/editor';\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 focus(editor);\n}\n","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex, Icon, Button, Menu } from '@contentful/f36-components';\nimport { AssetIcon, EmbeddedEntryBlockIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\nimport noop from 'lodash/noop';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { useSdkContext } from '../../SdkProvider';\nimport { selectEntityAndInsert } from './Util';\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';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { KeyboardHandler, HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\nimport noop from 'lodash/noop';\nimport { Transforms } from 'slate';\nimport { TrackingProvider } from 'TrackingProvider';\n\nimport { getNodeEntryFromSelection } from '../../helpers/editor';\nimport { RichTextPlugin, CustomElement } from '../../types';\nimport { withLinkTracking } from '../links-tracking';\nimport { LinkedEntityBlock } from './LinkedEntityBlock';\nimport { selectEntityAndInsert } from './Util';\n\nexport { EmbeddedEntityBlockToolbarIcon as ToolbarIcon } from './ToolbarIcon';\n\nconst entityTypes = {\n [BLOCKS.EMBEDDED_ENTRY]: 'Entry',\n [BLOCKS.EMBEDDED_ASSET]: 'Asset',\n};\n\nfunction getWithEmbeddedEntityEvents(\n nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET,\n sdk: FieldExtensionSDK\n): KeyboardHandler<{}, HotkeyPlugin> {\n return (editor, { options: { hotkey } }) =>\n (event: KeyboardEvent) => {\n const [, pathToSelectedElement] = getNodeEntryFromSelection(editor, nodeType);\n\n if (pathToSelectedElement) {\n const isDelete = event.key === 'Delete';\n const isBackspace = event.key === 'Backspace';\n\n if (isDelete || isBackspace) {\n event.preventDefault();\n Transforms.removeNodes(editor, { at: pathToSelectedElement });\n }\n\n return;\n }\n\n if (hotkey && isHotkey(hotkey, event)) {\n selectEntityAndInsert(nodeType, sdk, editor, noop);\n }\n };\n}\n\nconst createEmbeddedEntityPlugin =\n (nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET, hotkey: string) =>\n (sdk: FieldExtensionSDK, tracking: TrackingProvider): RichTextPlugin => ({\n key: nodeType,\n type: nodeType,\n isElement: true,\n isVoid: true,\n component: withLinkTracking(tracking, LinkedEntityBlock),\n options: { hotkey },\n handlers: {\n onKeyDown: getWithEmbeddedEntityEvents(nodeType, sdk),\n },\n deserializeHtml: {\n rules: [\n {\n validAttribute: {\n 'data-entity-type': entityTypes[nodeType],\n },\n },\n ],\n withoutChildren: true,\n getNode: (el): CustomElement => ({\n type: nodeType,\n children: [{ text: '' }],\n isVoid: true,\n data: {\n target: {\n sys: {\n id: el.getAttribute('data-entity-id'),\n linkType: el.getAttribute('data-entity-type'),\n type: 'Link',\n },\n },\n },\n }),\n },\n });\n\nexport const createEmbeddedEntryBlockPlugin = createEmbeddedEntityPlugin(\n BLOCKS.EMBEDDED_ENTRY,\n 'mod+shift+e'\n);\nexport const createEmbeddedAssetBlockPlugin = createEmbeddedEntityPlugin(\n BLOCKS.EMBEDDED_ASSET,\n 'mod+shift+a'\n);\n","import React from 'react';\n\nimport { InlineEntryCard, MenuItem } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { useEntities, ScheduledIconWithTooltip } from '@contentful/field-editor-reference';\nimport { entityHelpers, FieldExtensionSDK } from '@contentful/field-editor-shared';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { css } from 'emotion';\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 onEntityFetchComplete?: VoidFunction;\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 { onEntityFetchComplete } = props;\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 React.useEffect(() => {\n if (!entry) {\n return;\n }\n onEntityFetchComplete?.();\n }, [entry, onEntityFetchComplete]);\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} disabled={props.isDisabled}>\n Edit\n </MenuItem>,\n <MenuItem\n key=\"remove\"\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';\n\nimport { Link, FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Button, Menu, Flex } from '@contentful/f36-components';\nimport { EmbeddedEntryInlineIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { Entry } from '@contentful/field-editor-shared';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { HotkeyPlugin, KeyboardHandler } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport isHotkey from 'is-hotkey';\nimport { Transforms } from 'slate';\nimport { useSelected, ReactEditor, useReadOnly } from 'slate-react';\nimport { TrackingProvider } from 'TrackingProvider';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus } from '../../helpers/editor';\nimport { HAS_BEFORE_INPUT_SUPPORT } from '../../helpers/environment';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { useSdkContext } from '../../SdkProvider';\nimport { RichTextPlugin, CustomElement, CustomRenderElementProps } from '../../types';\nimport { withLinkTracking } from '../links-tracking';\nimport { FetchingWrappedInlineEntryCard } from './FetchingWrappedInlineEntryCard';\nimport { createInlineEntryNode } from './Util';\n\nconst styles = {\n icon: css({\n marginRight: '10px',\n }),\n\n root: css({\n display: 'inline-block',\n margin: `0 ${tokens.spacing2Xs}`,\n fontSize: 'inherit',\n span: {\n userSelect: 'none',\n },\n }),\n};\n\ntype EmbeddedEntityInlineProps = CustomRenderElementProps<{\n target: Link;\n}> & {\n onEntityFetchComplete: VoidFunction;\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\n {...props.attributes}\n className={styles.root}\n data-embedded-entity-inline-id={entryId}\n // COMPAT: This makes copy & paste work for Firefox\n contentEditable={!HAS_BEFORE_INPUT_SUPPORT ? false : undefined}\n draggable={!HAS_BEFORE_INPUT_SUPPORT ? true : undefined}>\n <span\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={HAS_BEFORE_INPUT_SUPPORT ? false : undefined}\n draggable={HAS_BEFORE_INPUT_SUPPORT ? true : undefined}>\n <FetchingWrappedInlineEntryCard\n sdk={sdk}\n entryId={entryId}\n isSelected={isSelected}\n isDisabled={isDisabled}\n onRemove={handleRemoveClick}\n onEdit={handleEditClick}\n onEntityFetchComplete={props.onEntityFetchComplete}\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 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(\n sdk: FieldExtensionSDK,\n tracking: TrackingProvider\n): RichTextPlugin {\n const htmlAttributeName = 'data-embedded-entity-inline-id';\n\n return {\n key: INLINES.EMBEDDED_ENTRY,\n type: INLINES.EMBEDDED_ENTRY,\n isElement: true,\n isInline: true,\n isVoid: true,\n component: withLinkTracking(tracking, EmbeddedEntityInline),\n options: {\n hotkey: 'mod+shift+2',\n },\n handlers: {\n onKeyDown: getWithEmbeddedEntryInlineEvents(sdk),\n },\n deserializeHtml: {\n rules: [\n {\n validAttribute: htmlAttributeName,\n },\n ],\n withoutChildren: true,\n getNode: (el): CustomElement =>\n createInlineEntryNode(el.getAttribute(htmlAttributeName) as string),\n },\n };\n}\n\nfunction getWithEmbeddedEntryInlineEvents(\n sdk: FieldExtensionSDK\n): KeyboardHandler<{}, HotkeyPlugin> {\n return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {\n return function handleEvent(event) {\n if (!editor) return;\n\n if (hotkey && isHotkey(hotkey, event)) {\n selectEntityAndInsert(editor, sdk);\n }\n };\n };\n}\n","/* eslint-disable you-dont-need-lodash-underscore/find */\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS, INLINES, TOP_LEVEL_BLOCKS } from '@contentful/rich-text-types';\nimport find from 'lodash/find';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\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';\n\nimport { Menu, Button } from '@contentful/f36-components';\nimport { ChevronDownIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { toggleNodeType } from '@udecode/plate-core';\nimport { css, cx } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport {\n getElementFromCurrentSelection,\n shouldUnwrapBlockquote,\n unwrapFromRoot,\n focus,\n} from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { CustomElement } from '../../../types';\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};\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\nexport interface 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 const prevOnChange = editor.onChange;\n /*\n The focus might happen at point in time when\n `toggleNodeType` changes aren't rendered yet, causing the browser\n to place the cursor at the start of the text.\n We wait for the change event before focusing\n the editor again. This ensures the cursor is back at the previous\n position.*/\n editor.onChange = (...args) => {\n focus(editor);\n editor.onChange = prevOnChange;\n prevOnChange(...args);\n };\n toggleNodeType(editor, { activeType: type, inactiveType: type });\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 isDisabled={props.isDisabled}\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","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { NodeMatch, PlateEditor, getNodes } from '@udecode/plate-core';\nimport { Path } from 'slate';\n\nimport { CustomElement } from '../types';\n\nfunction extractNodes(editor: PlateEditor, path: Path, match: NodeMatch) {\n return Array.from(\n getNodes(editor, {\n match,\n at: path,\n mode: 'all',\n })\n ).map(([node]) => node as CustomElement);\n}\n\n/**\n * It filters out all paragraphs and headings from a path and convert them into paragraphs.\n */\nexport function extractParagraphs(editor: PlateEditor, path: Path): CustomElement[] {\n return extractNodes(editor, path, {\n type: TEXT_CONTAINERS,\n }).map((node) => ({\n ...node,\n type: BLOCKS.PARAGRAPH,\n }));\n}\n","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { PlateEditor } from '@udecode/plate-core';\nimport { NodeEntry, Transforms } from 'slate';\n\nimport { extractParagraphs } from './extractNodes';\n\nexport const transformRemove = (editor: PlateEditor, [, path]: NodeEntry) => {\n Transforms.removeNodes(editor, { at: path });\n};\n\nexport const transformParagraphs = (editor: PlateEditor, entry: NodeEntry) => {\n const path = entry[1];\n const nodes = extractParagraphs(editor, path);\n\n transformRemove(editor, entry);\n Transforms.insertNodes(editor, nodes, { at: path });\n};\n\nexport const transformUnwrap = (editor: PlateEditor, [, path]: NodeEntry) => {\n Transforms.unwrapNodes(editor, {\n at: path,\n });\n};\n\nexport const transformWrapIn =\n (type: BLOCKS | INLINES) =>\n (editor: PlateEditor, [, path]: NodeEntry) => {\n Transforms.wrapNodes(editor, { type, data: {}, children: [] }, { at: path });\n };\n\nexport const transformLift = (editor: PlateEditor, [, path]: NodeEntry) => {\n Transforms.liftNodes(editor, { at: path });\n};\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { css, cx } from 'emotion';\nimport * as Slate from 'slate-react';\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createHeading(Tag: any, 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 HeadingComponents = {\n [BLOCKS.HEADING_1]: React.memo(createHeading('h1', BLOCKS.HEADING_1)),\n [BLOCKS.HEADING_2]: React.memo(createHeading('h2', BLOCKS.HEADING_2)),\n [BLOCKS.HEADING_3]: React.memo(createHeading('h3', BLOCKS.HEADING_3)),\n [BLOCKS.HEADING_4]: React.memo(createHeading('h4', BLOCKS.HEADING_4)),\n [BLOCKS.HEADING_5]: React.memo(createHeading('h5', BLOCKS.HEADING_5)),\n [BLOCKS.HEADING_6]: React.memo(createHeading('h6', BLOCKS.HEADING_6)),\n};\n","import { BLOCKS, HEADINGS } from '@contentful/rich-text-types';\nimport { getAbove, onKeyDownToggleElement } from '@udecode/plate-core';\n\nimport { isInlineOrText } from '../../helpers/editor';\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { RichTextPlugin } from '../../types';\nimport { HeadingComponents } from './components/Heading';\n\nexport const createHeadingPlugin = (): RichTextPlugin => ({\n key: 'HeadingPlugin',\n softBreak: [\n // create a new line with SHIFT+Enter inside a heading\n {\n hotkey: 'shift+enter',\n query: {\n allow: HEADINGS,\n },\n },\n ],\n normalizer: [\n {\n match: {\n type: HEADINGS,\n },\n validChildren: (_, [node]) => isInlineOrText(node),\n transform: {\n [BLOCKS.PARAGRAPH]: transformUnwrap,\n default: transformLift,\n },\n },\n ],\n then: (editor) => {\n return {\n exitBreak: [\n // Pressing ENTER at the start or end of a heading text inserts a\n // normal paragraph.\n {\n hotkey: 'enter',\n query: {\n allow: HEADINGS,\n end: true,\n start: true,\n\n // Exclude headings inside lists as it interferes with the list's\n // insertBreak implementation\n filter: ([, path]) =>\n !getAbove(editor, {\n at: path,\n match: { type: BLOCKS.LIST_ITEM },\n }),\n },\n },\n ],\n } as Partial<RichTextPlugin>;\n },\n plugins: HEADINGS.map((nodeType, idx) => {\n const level = idx + 1;\n const tagName = `h${level}`;\n\n return {\n key: nodeType,\n type: nodeType,\n isElement: true,\n component: HeadingComponents[nodeType],\n options: {\n hotkey: [`mod+alt+${level}`],\n },\n handlers: {\n onKeyDown: onKeyDownToggleElement,\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: tagName.toUpperCase(),\n },\n ],\n },\n };\n }),\n});\n","import React from 'react';\n\nimport { Button, Tooltip } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\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: () => void;\n isActive?: boolean;\n isDisabled?: boolean;\n children: any;\n title: string;\n className?: string;\n testId?: string;\n}\n\nexport function ToolbarButton(props: ToolbarButtonProps) {\n const { title, testId, isActive, children, className, isDisabled = false } = props;\n const handleClick = (event) => {\n event.preventDefault();\n props.onClick();\n };\n\n const button = (\n <Button\n className={cx(styles.button, className)}\n isDisabled={isDisabled}\n startIcon={children}\n onClick={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","import * as React from 'react';\n\nimport { HorizontalRuleIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { PlateEditor, getText, setNodes } from '@udecode/plate-core';\nimport { css, cx } from 'emotion';\nimport { Transforms } from 'slate';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport {\n getNodeEntryFromSelection,\n isBlockSelected,\n moveToTheNextLine,\n shouldUnwrapBlockquote,\n unwrapFromRoot,\n focus,\n} from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { ToolbarButton } from '../shared/ToolbarButton';\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: PlateEditor) {\n return (event: React.KeyboardEvent) => {\n if (!editor) return;\n\n const [, pathToSelectedHr] = getNodeEntryFromSelection(editor, BLOCKS.HR);\n if (pathToSelectedHr) {\n if (shouldUnwrapBlockquote(editor, BLOCKS.HR)) {\n unwrapFromRoot(editor);\n }\n\n const isBackspace = event.key === 'Backspace';\n const isDelete = event.key === 'Delete';\n if (isBackspace || isDelete) {\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() {\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 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\n {...props.attributes}\n className={styles.container}\n // COMPAT: To make HR copyable in Safari, we verify this attribute below on `deserialize`\n data-void-element={BLOCKS.HR}>\n <div\n draggable={true}\n // Moving `contentEditable` to this div makes it to be selectable when being the first void element, e.g pressing ctrl + a to select everything\n contentEditable={false}>\n <hr className={cx(styles.hr, isSelected && isFocused ? styles.hrSelected : undefined)} />\n </div>\n {props.children}\n </div>\n );\n}\n\nexport const createHrPlugin = (): RichTextPlugin => ({\n key: BLOCKS.HR,\n type: BLOCKS.HR,\n isVoid: true,\n isElement: true,\n component: Hr,\n handlers: {\n onKeyDown: withHrEvents,\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['HR'],\n },\n {\n validAttribute: {\n 'data-void-element': BLOCKS.HR,\n },\n },\n ],\n withoutChildren: true,\n },\n});\n","export function truncate(str: string, length: number) {\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';\n\nimport { getScheduleTooltipContent } from '@contentful/field-editor-reference';\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';\n\nimport { truncate } from './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';\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';\nimport tokens from '@contentful/f36-tokens';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { Link } from '@contentful/field-editor-reference/dist/types';\nimport { ModalDialogLauncher, FieldExtensionSDK } from '@contentful/field-editor-shared';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { PlateEditor } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport { Editor, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { ReactEditor } from 'slate-react';\n\nimport { getNodeEntryFromSelection, insertLink, LINK_TYPES, focus } from '../../helpers/editor';\nimport getLinkedContentTypeIdsForNodeType from '../../helpers/getLinkedContentTypeIdsForNodeType';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\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 {!props.linkType && (\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\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 & PlateEditor,\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 Editor.withoutNormalizing(editor, () => {\n insertLink(editor, { text, url, type, target, path });\n });\n\n focus(editor);\n}\n","import { PlateEditor, isAncestorEmpty } from '@udecode/plate-core';\nimport { NodeEntry, Ancestor, Node } from 'slate';\n\nexport const hasText = (editor: PlateEditor, entry: NodeEntry) => {\n const [node] = entry;\n return !isAncestorEmpty(editor, node as Ancestor) && Node.string(node).trim() !== '';\n};\n","import * as React from 'react';\n\nimport { FieldExtensionSDK, Link, ContentEntityType as EntityType } from '@contentful/app-sdk';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\nimport { LinkIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { AnyObject, KeyboardHandler, HotkeyPlugin } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport isHotkey from 'is-hotkey';\nimport { useReadOnly } from 'slate-react';\nimport { TrackingProvider } from 'TrackingProvider';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { isLinkActive, unwrapLink } from '../../helpers/editor';\nimport { transformRemove } from '../../helpers/transformers';\nimport { useSdkContext } from '../../SdkProvider';\nimport { RichTextPlugin, CustomRenderElementProps, CustomElement } from '../../types';\nimport { withLinkTracking } from '../links-tracking';\nimport { ToolbarButton } from '../shared/ToolbarButton';\nimport { EntryAssetTooltip } from './EntryAssetTooltip';\nimport { addOrEditLink } from './HyperlinkModal';\nimport { hasText } from './utils';\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\ntype HyperlinkElementProps = CustomRenderElementProps<{\n uri?: string;\n target?: Link;\n onEntityFetchComplete?: VoidFunction;\n}>;\n\nfunction UrlHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const isReadOnly = useReadOnly();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { uri } = props.element.data;\n\n 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 isDisabled={isReadOnly}\n className={styles.hyperlink}>\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n\nfunction EntityHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const isReadOnly = useReadOnly();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { target } = props.element.data;\n const { onEntityFetchComplete } = props;\n\n React.useEffect(() => {\n // The real entity loading happens in the tooltip\n // Since that is deferred the link is considered rendered as soon\n // the component mounts (link text displayed)\n onEntityFetchComplete?.();\n }, [onEntityFetchComplete]);\n if (!target) return null;\n\n 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={\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=\"a\"\n onClick={handleClick}\n isDisabled={isReadOnly}\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() {\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\nconst isAnchor = (element: HTMLElement) =>\n element.nodeName === 'A' &&\n !!element.getAttribute('href') &&\n element.getAttribute('href') !== '#';\n\nconst isEntryAnchor = (element: HTMLElement) =>\n element.nodeName === 'A' && element.getAttribute('data-link-type') === 'Entry';\n\nconst isAssetAnchor = (element: HTMLElement) =>\n element.nodeName === 'A' && element.getAttribute('data-link-type') === 'Asset';\n\nconst buildHyperlinkEventHandler =\n (sdk: FieldExtensionSDK): KeyboardHandler<{}, HotkeyPlugin> =>\n (editor, { options: { hotkey } }) => {\n return (event: React.KeyboardEvent) => {\n if (!editor.selection) {\n return;\n }\n\n if (hotkey && !isHotkey(hotkey, event)) {\n return;\n }\n\n if (isLinkActive(editor)) {\n unwrapLink(editor);\n } else {\n addOrEditLink(editor, sdk);\n }\n };\n };\n\nconst getNodeOfType =\n (type: INLINES) =>\n (el: HTMLElement, node: AnyObject): CustomElement<HyperlinkElementProps> => ({\n type,\n children: node.children,\n data:\n type === INLINES.HYPERLINK\n ? {\n uri: el.getAttribute('href'),\n }\n : {\n target: {\n sys: {\n id: el.getAttribute('data-link-id'),\n linkType: el.getAttribute('data-link-type'),\n type: 'Link',\n },\n },\n },\n });\n\nexport const createHyperlinkPlugin = (\n sdk: FieldExtensionSDK,\n tracking: TrackingProvider\n): RichTextPlugin => {\n const common: Partial<RichTextPlugin> = {\n isElement: true,\n isInline: true,\n };\n\n return {\n key: 'HyperlinkPlugin',\n options: {\n hotkey: 'mod+k',\n },\n handlers: {\n onKeyDown: buildHyperlinkEventHandler(sdk),\n },\n plugins: [\n // URL Hyperlink\n {\n ...common,\n key: INLINES.HYPERLINK,\n type: INLINES.HYPERLINK,\n component: UrlHyperlink,\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['A'],\n },\n ],\n query: (el) => isAnchor(el) && !(isEntryAnchor(el) || isAssetAnchor(el)),\n getNode: getNodeOfType(INLINES.HYPERLINK),\n },\n },\n // Entry Hyperlink\n {\n ...common,\n key: INLINES.ENTRY_HYPERLINK,\n type: INLINES.ENTRY_HYPERLINK,\n component: withLinkTracking(tracking, EntityHyperlink),\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['A'],\n },\n ],\n query: (el) => isEntryAnchor(el),\n getNode: getNodeOfType(INLINES.ENTRY_HYPERLINK),\n },\n },\n // Asset Hyperlink\n {\n ...common,\n key: INLINES.ASSET_HYPERLINK,\n type: INLINES.ASSET_HYPERLINK,\n component: withLinkTracking(tracking, EntityHyperlink),\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['A'],\n },\n ],\n query: (el) => isAssetAnchor(el),\n getNode: getNodeOfType(INLINES.ASSET_HYPERLINK),\n },\n },\n ],\n normalizer: [\n {\n match: {\n type: [INLINES.HYPERLINK, INLINES.ASSET_HYPERLINK, INLINES.ENTRY_HYPERLINK],\n },\n validNode: hasText,\n transform: transformRemove,\n },\n ],\n };\n};\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { css, cx } from 'emotion';\nimport * as Slate from 'slate-react';\n\nconst baseStyle = css`\n padding: 0;\n margin: 0 0 1.25rem 1.25rem;\n\n div:first-child {\n margin: 0;\n line-height: ${tokens.lineHeightDefault};\n }\n`;\n\nconst styles = {\n [BLOCKS.UL_LIST]: css`\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 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};\n\nfunction createList(Tag, block: BLOCKS) {\n return function List(props: Slate.RenderElementProps) {\n return (\n <Tag {...props.attributes} className={cx(baseStyle, styles[block])}>\n {props.children}\n </Tag>\n );\n };\n}\n\nexport const ListUL = createList('ul', BLOCKS.UL_LIST);\nexport const ListOL = createList('ol', BLOCKS.OL_LIST);\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nconst style = css`\n margin: 0;\n list-style: inherit;\n margin-top: ${tokens.spacingXs};\n\n ol,\n ul {\n margin: 0 0 0 ${tokens.spacingL};\n }\n`;\n\nexport function ListItem(props: Slate.RenderElementProps) {\n return (\n <li {...props.attributes} className={style}>\n {props.children}\n </li>\n );\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { PlateEditor, getAbove, getParent } from '@udecode/plate-core';\nimport { NodeEntry, Transforms, Path, Node, Text } from 'slate';\n\nimport { CustomElement } from '../../types';\n\nconst isList = (node: CustomElement) =>\n [BLOCKS.OL_LIST, BLOCKS.UL_LIST].includes(node.type as BLOCKS);\n\nexport const hasListAsDirectParent = (editor: PlateEditor, [, path]: NodeEntry) => {\n const [parentNode] = (getParent(editor, path) || []) as NodeEntry;\n return isList(parentNode as CustomElement);\n};\n\nconst getNearestListAncestor = (editor: PlateEditor, path: Path) => {\n return getAbove(editor, { at: path, mode: 'lowest', match: isList }) || [];\n};\n\n/**\n * Places orphaned list items in a list. If there's a list somewhere\n * in the node's ancestors, defaults to that list type, else places\n * the list item in an unordered list.\n */\nexport const normalizeOrphanedListItem = (editor: PlateEditor, [, path]: NodeEntry) => {\n const [parentList] = getNearestListAncestor(editor, path);\n const parentListType = parentList?.type;\n Transforms.wrapNodes(\n editor,\n { type: parentListType || BLOCKS.UL_LIST, children: [], data: {} },\n { at: path }\n );\n};\n\nexport const isNonEmptyListItem = (editor: PlateEditor, [, path]: NodeEntry) => {\n const listItemChildren = Array.from(Node.children(editor, path));\n\n return listItemChildren.length !== 0;\n};\n\nexport const firstNodeIsNotList = (_editor: PlateEditor, [node]: NodeEntry<CustomElement>) => {\n if (node.children.length === 1) {\n const firstNode = node.children[0];\n\n return !Text.isText(firstNode) && !isList(firstNode);\n }\n\n return true;\n};\n\nexport const insertParagraphAsChild = (editor: PlateEditor, [, path]: NodeEntry) => {\n Transforms.insertNodes(editor, [{ type: BLOCKS.PARAGRAPH, data: {}, children: [{ text: '' }] }], {\n at: path.concat([0]),\n });\n};\n\nexport const replaceNodeWithListItems = (editor, entry) => {\n const [node, path] = entry;\n\n Transforms.removeNodes(editor, { at: path });\n Transforms.insertNodes(editor, node.children[0].children, { at: path });\n};\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport {\n getAbove,\n getParent,\n insertNodes,\n isFirstChild,\n isSelectionAtBlockEnd,\n isSelectionAtBlockStart,\n moveChildren,\n PlateEditor,\n} from '@udecode/plate-core';\nimport { Editor, Path, Transforms } from 'slate';\n\nimport { CustomElement } from '../../../types';\n\n/**\n * Build a new list item node while preserving marks\n */\nconst emptyListItemNode = (editor: PlateEditor, withChildren = false): CustomElement => {\n let children: CustomElement[] = [];\n\n if (withChildren) {\n const marks = Editor.marks(editor) || {};\n\n children = [\n {\n type: BLOCKS.PARAGRAPH,\n data: {},\n children: [{ text: '', ...marks }],\n },\n ];\n }\n\n return {\n type: BLOCKS.LIST_ITEM,\n data: {},\n children,\n };\n};\n\n/**\n * Insert list item if selection is in li>p.\n */\nexport const insertListItem = (editor: PlateEditor): boolean => {\n if (!editor.selection) {\n return false;\n }\n\n // Naming it paragraph for simplicity but can be a heading as well\n const paragraph = getAbove(editor, { match: { type: TEXT_CONTAINERS } });\n if (!paragraph) {\n return false;\n }\n\n const [, paragraphPath] = paragraph;\n const listItem = getParent(editor, paragraphPath);\n\n if (!listItem) {\n return false;\n }\n\n const [listItemNode, listItemPath] = listItem;\n\n if (listItemNode.type !== BLOCKS.LIST_ITEM) {\n return false;\n }\n\n // We are in a li>p (or heading)\n\n Editor.withoutNormalizing(editor, () => {\n if (!editor.selection) {\n return;\n }\n\n // Check the cursor position in the current paragraph\n const isAtStart = isSelectionAtBlockStart(editor);\n const isAtEnd = isSelectionAtBlockEnd(editor);\n\n const isAtStartOfListItem = isAtStart && isFirstChild(paragraphPath);\n const shouldSplit = !isAtStart && !isAtEnd;\n\n // Split the current paragraph content if necessary\n if (shouldSplit) {\n Transforms.splitNodes(editor);\n }\n\n // Insert the new li\n const newListItemPath = isAtStartOfListItem ? listItemPath : Path.next(listItemPath);\n\n insertNodes(\n editor,\n // Add an empty paragraph to the new li if We will not move some\n // paragraphs over there.\n emptyListItemNode(editor, !shouldSplit),\n { at: newListItemPath }\n );\n\n // Move children *after* selection to the new li\n const fromPath = isAtStart ? paragraphPath : Path.next(paragraphPath);\n const fromStartIndex = fromPath[fromPath.length - 1] || 0;\n\n // On split we don't add paragraph to the new li so we move\n // content to the very beginning. Otherwise, account for the empty\n // paragraph at the beginning by moving the content after\n const toPath = newListItemPath.concat([shouldSplit ? 0 : 1]);\n\n if (!isAtStartOfListItem) {\n moveChildren(editor, {\n at: listItemPath,\n to: toPath,\n fromStartIndex,\n });\n }\n\n // Move cursor to the start of the new li\n Transforms.select(editor, newListItemPath);\n Transforms.collapse(editor, { edge: 'start' });\n });\n\n // Returning True skips processing other editor.insertBreak handlers\n return true;\n};\n","/**\n * Credit: Copied & modified version from Plate's list plugin to support\n * list items with multiple children.\n *\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport {\n ELEMENT_DEFAULT,\n getPluginType,\n isBlockAboveEmpty,\n mockPlugin,\n PlateEditor,\n} from '@udecode/plate-core';\nimport { getListItemEntry, moveListItemUp, unwrapList, ELEMENT_LI } from '@udecode/plate-list';\nimport { onKeyDownResetNode, ResetNodePlugin, SIMULATE_BACKSPACE } from '@udecode/plate-reset-node';\n\nimport { insertListItem } from './transforms/insertListItem';\n\nconst listBreak = (editor: PlateEditor): boolean => {\n if (!editor.selection) return false;\n\n const res = getListItemEntry(editor, {});\n let moved: boolean | undefined;\n\n // If selection is in a li\n if (res) {\n const { list, listItem } = res;\n\n const childNode = listItem[0].children[0];\n\n // If selected li is empty, move it up.\n if (\n isBlockAboveEmpty(editor) &&\n listItem[0].children.length === 1 &&\n TEXT_CONTAINERS.includes(childNode.type as BLOCKS)\n ) {\n moved = moveListItemUp(editor, {\n list,\n listItem,\n });\n\n if (moved) return true;\n }\n }\n\n const didReset = onKeyDownResetNode(\n editor,\n mockPlugin<ResetNodePlugin>({\n options: {\n rules: [\n {\n types: [getPluginType(editor, ELEMENT_LI)],\n defaultType: getPluginType(editor, ELEMENT_DEFAULT),\n predicate: () => !moved && isBlockAboveEmpty(editor),\n onReset: (_editor) => unwrapList(_editor as PlateEditor),\n },\n ],\n },\n })\n )(SIMULATE_BACKSPACE);\n if (didReset) {\n return true;\n }\n\n /**\n * If selection is in li > p, insert li.\n */\n if (!moved) {\n const inserted = insertListItem(editor);\n if (inserted) return true;\n }\n\n return false;\n};\n\nexport const insertListBreak = (editor: PlateEditor) => {\n const { insertBreak } = editor;\n\n return () => {\n if (listBreak(editor)) return;\n\n insertBreak();\n };\n};\n","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { TEXT_CONTAINERS, BLOCKS } from '@contentful/rich-text-types';\nimport { findNode, PlateEditor, TDescendant } from '@udecode/plate-core';\nimport { Editor, Node, NodeEntry, Path, Transforms } from 'slate';\n\nconst getFirstAncestorOfType = (root: TDescendant, entry: NodeEntry): NodeEntry<TDescendant> => {\n let ancestor: Path = Path.parent(entry[1]);\n while ((Node.get(root, ancestor) as TDescendant).type !== BLOCKS.LIST_ITEM) {\n ancestor = Path.parent(ancestor);\n }\n\n return [Node.get(root, ancestor), ancestor];\n};\n\nconst isListRoot = (node: TDescendant): boolean =>\n [BLOCKS.UL_LIST, BLOCKS.OL_LIST].includes(node.type);\n\n/**\n * Removes the \"empty\" leading lis. Empty in this context means lis only with other lis as children.\n *\n * @returns If argument is not a list root, returns it, otherwise returns ul[] or li[].\n */\nconst trimList = <T extends TDescendant>(listRoot: T): T[] => {\n if (!isListRoot(listRoot)) {\n return [listRoot];\n }\n\n const textEntries = Array.from(Node.texts(listRoot));\n\n const commonAncestorEntry = textEntries.reduce<NodeEntry<TDescendant>>(\n (commonAncestor, textEntry) =>\n Path.isAncestor(commonAncestor[1], textEntry[1])\n ? commonAncestor\n : Node.common(listRoot, textEntry[1], commonAncestor[1]),\n // any list item would do, we grab the first one\n getFirstAncestorOfType(listRoot, textEntries[0])\n );\n\n return isListRoot(commonAncestorEntry[0])\n ? commonAncestorEntry[0].children\n : [commonAncestorEntry[0]];\n};\n\n/**\n * Removes leading li when pasting a single li with a single child.\n */\nconst trimLiWrapper = <T extends TDescendant>(nodes: T[]): T[] => {\n if (nodes.length !== 1) {\n return nodes;\n }\n\n const node = nodes[0];\n\n if (node.type !== BLOCKS.LIST_ITEM || node.children.length !== 1) {\n return nodes;\n }\n\n return node.children;\n};\n\nconst unwrapTextContainerAtStart = <T extends TDescendant>(nodes: T[]): T[] => {\n const node = nodes[0];\n\n if (TEXT_CONTAINERS.includes(node.type)) {\n return [...node.children, ...nodes.slice(1)];\n }\n\n return nodes;\n};\n\nexport const insertListFragment = (editor: PlateEditor) => {\n const { insertFragment } = editor;\n\n return (fragment: TDescendant[]) => {\n if (!editor.selection) {\n return;\n }\n\n const liEntry = findNode(editor, {\n match: { type: BLOCKS.LIST_ITEM },\n mode: 'lowest',\n });\n\n if (liEntry) {\n const nodes = unwrapTextContainerAtStart(\n trimLiWrapper(fragment.flatMap((node) => trimList(node)))\n );\n\n let firstBlockIndex = nodes.findIndex((node) => Editor.isBlock(editor, node));\n\n if (firstBlockIndex < 0) {\n firstBlockIndex = nodes.length;\n }\n\n const inlines = nodes.slice(0, firstBlockIndex);\n const blocks = nodes.slice(firstBlockIndex);\n\n // Two calls to insertNodes are required here. Otherwise, all blocks\n // after a text or inline element occurrence will be unwrapped for\n // some reason.\n Transforms.insertNodes(editor, inlines, {\n at: editor.selection,\n select: true,\n });\n\n return Transforms.insertNodes(editor, blocks, {\n at: editor.selection,\n select: true,\n });\n }\n\n const filtered: TDescendant[] = isListRoot(fragment[0])\n ? [{ text: '' }, ...fragment]\n : fragment;\n\n return insertFragment(filtered);\n };\n};\n","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';\nimport { WithOverride } from '@udecode/plate-core';\nimport {\n ListPlugin,\n normalizeList,\n deleteFragmentList,\n deleteForwardList,\n deleteBackwardList,\n} from '@udecode/plate-list';\n\nimport { insertListBreak } from './insertListBreak';\nimport { insertListFragment } from './insertListFragment';\n\nconst validLiChildrenTypes = LIST_ITEM_BLOCKS;\n\nexport const withList: WithOverride<{}, ListPlugin> = (editor) => {\n const { deleteBackward, deleteForward, deleteFragment } = editor;\n\n editor.deleteBackward = (unit) => {\n if (deleteBackwardList(editor, unit)) return;\n\n deleteBackward(unit);\n };\n\n editor.deleteForward = (unit) => {\n if (deleteForwardList(editor)) return;\n\n deleteForward(unit);\n };\n\n editor.deleteFragment = () => {\n if (deleteFragmentList(editor)) return;\n\n deleteFragment();\n };\n\n editor.insertBreak = insertListBreak(editor);\n\n editor.insertFragment = insertListFragment(editor);\n\n // TODO: replace with Normalizer rules\n editor.normalizeNode = normalizeList(editor, { validLiChildrenTypes });\n\n return editor;\n};\n","import { BLOCKS, LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';\nimport {\n createListPlugin as createPlateListPlugin,\n ELEMENT_LI,\n ELEMENT_UL,\n ELEMENT_OL,\n ELEMENT_LIC,\n} from '@udecode/plate-list';\n\nimport { transformParagraphs, transformWrapIn } from '../../helpers/transformers';\nimport { RichTextPlugin } from '../../types';\nimport { ListOL, ListUL } from './components/List';\nimport { ListItem } from './components/ListItem';\nimport {\n isNonEmptyListItem,\n hasListAsDirectParent,\n insertParagraphAsChild,\n normalizeOrphanedListItem,\n firstNodeIsNotList,\n replaceNodeWithListItems,\n} from './utils';\nimport { withList } from './withList';\n\nexport const createListPlugin = (): RichTextPlugin =>\n createPlateListPlugin({\n normalizer: [\n {\n match: {\n type: [BLOCKS.UL_LIST, BLOCKS.OL_LIST],\n },\n validChildren: [BLOCKS.LIST_ITEM],\n transform: transformWrapIn(BLOCKS.LIST_ITEM),\n },\n ],\n overrideByKey: {\n [ELEMENT_UL]: {\n type: BLOCKS.UL_LIST,\n component: ListUL,\n // The withList is added on ELEMENT_UL plugin in upstream code\n // so we need to override it here\n withOverrides: withList,\n },\n [ELEMENT_OL]: {\n type: BLOCKS.OL_LIST,\n component: ListOL,\n },\n // ELEMENT_LIC is a child of li, Slate does ul > li > lic + ul\n [ELEMENT_LIC]: {\n type: BLOCKS.PARAGRAPH,\n },\n [ELEMENT_LI]: {\n type: BLOCKS.LIST_ITEM,\n component: ListItem,\n normalizer: [\n {\n validNode: hasListAsDirectParent,\n transform: normalizeOrphanedListItem,\n },\n {\n validNode: isNonEmptyListItem,\n transform: insertParagraphAsChild,\n },\n {\n validChildren: LIST_ITEM_BLOCKS,\n transform: transformParagraphs,\n },\n {\n validNode: firstNodeIsNotList,\n transform: replaceNodeWithListItems,\n },\n ],\n },\n },\n } as Partial<RichTextPlugin>);\n","import * as React from 'react';\n\nimport { ListBulletedIcon, ListNumberedIcon } from '@contentful/f36-icons';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { toggleList } from '@udecode/plate-list';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport {\n isBlockSelected,\n unwrapFromRoot,\n shouldUnwrapBlockquote,\n focus,\n} from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\n\nexport interface 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): () => void {\n return () => {\n if (!editor?.selection) return;\n\n if (shouldUnwrapBlockquote(editor, type)) {\n unwrapFromRoot(editor);\n }\n\n toggleList(editor, { type });\n\n 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","import * as React from 'react';\n\nimport { FormatBoldIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createBoldPlugin as createDefaultBoldPlugin } from '@udecode/plate-basic-marks';\nimport { isMarkActive, toggleMark, someHtmlElement } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus } from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { ToolbarButton } from '../shared/ToolbarButton';\n\ninterface ToolbarBoldButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarBoldButton(props: ToolbarBoldButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick() {\n if (!editor?.selection) return;\n\n toggleMark(editor, { key: MARKS.BOLD });\n 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\nconst isGoogleBoldWrapper = (el: HTMLElement) =>\n el.id.startsWith('docs-internal-guid') && el.nodeName === 'B';\n\nexport const createBoldPlugin = (): RichTextPlugin =>\n createDefaultBoldPlugin({\n type: MARKS.BOLD,\n component: Bold,\n options: {\n hotkey: ['mod+b'],\n },\n deserializeHtml: {\n rules: [\n { validNodeName: ['STRONG', 'B'] },\n {\n validStyle: {\n fontWeight: ['600', '700', 'bold'],\n },\n },\n ],\n query: (el) => {\n return (\n !isGoogleBoldWrapper(el) &&\n !someHtmlElement(el, (node) => node.style.fontWeight === 'normal')\n );\n },\n },\n });\n","import * as React from 'react';\n\nimport { CodeIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createCodePlugin as createDefaultCodePlugin } from '@udecode/plate-basic-marks';\nimport { isMarkActive, toggleMark } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus } from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { ToolbarButton } from '../shared/ToolbarButton';\n\ninterface ToolbarCodeButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarCodeButton(props: ToolbarCodeButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick() {\n if (!editor?.selection) return;\n\n toggleMark(editor, { key: MARKS.CODE });\n 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 const createCodePlugin = (): RichTextPlugin =>\n createDefaultCodePlugin({\n type: MARKS.CODE,\n component: Code,\n options: {\n hotkey: ['mod+/'],\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['CODE', 'PRE'],\n },\n {\n validStyle: {\n fontFamily: ['Consolas', 'monospace'],\n },\n },\n ],\n },\n });\n","import * as React from 'react';\n\nimport { FormatItalicIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createItalicPlugin as createDefaultItalicPlugin } from '@udecode/plate-basic-marks';\nimport { toggleMark, isMarkActive, someHtmlElement } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus } from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { ToolbarButton } from '../shared/ToolbarButton';\n\ninterface ToolbarItalicButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarItalicButton(props: ToolbarItalicButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick() {\n if (!editor?.selection) return;\n\n toggleMark(editor, { key: MARKS.ITALIC });\n 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 const createItalicPlugin = (): RichTextPlugin =>\n createDefaultItalicPlugin({\n type: MARKS.ITALIC,\n component: Italic,\n options: {\n hotkey: ['mod+i'],\n },\n deserializeHtml: {\n rules: [\n { validNodeName: ['I', 'EM'] },\n {\n validStyle: {\n fontStyle: 'italic',\n },\n },\n ],\n query: (el) => {\n return !someHtmlElement(el, (node) => node.style.fontStyle === 'normal');\n },\n },\n });\n","import * as React from 'react';\n\nimport { FormatUnderlinedIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createUnderlinePlugin as createDefaultUnderlinePlugin } from '@udecode/plate-basic-marks';\nimport { toggleMark, isMarkActive, someHtmlElement } from '@udecode/plate-core';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus } from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { ToolbarButton } from '../shared/ToolbarButton';\n\ninterface ToolbarUnderlineButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarUnderlineButton(props: ToolbarUnderlineButtonProps) {\n const editor = useContentfulEditor();\n\n function handleClick() {\n if (!editor?.selection) return;\n\n toggleMark(editor, { key: MARKS.UNDERLINE });\n 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 const createUnderlinePlugin = (): RichTextPlugin =>\n createDefaultUnderlinePlugin({\n type: MARKS.UNDERLINE,\n component: Underline,\n options: {\n hotkey: ['mod+u'],\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['U'],\n },\n {\n validStyle: {\n textDecoration: ['underline'],\n },\n },\n ],\n query: (el) => {\n return !someHtmlElement(el, (node) => node.style.textDecoration === 'none');\n },\n },\n });\n","import { RichTextPlugin } from '../../types';\nimport { createBoldPlugin } from './Bold';\nimport { createCodePlugin } from './Code';\nimport { createItalicPlugin } from './Italic';\nimport { createUnderlinePlugin } from './Underline';\n\nexport const createMarksPlugin = (): RichTextPlugin => ({\n key: 'Marks',\n plugins: [createBoldPlugin(), createCodePlugin(), createItalicPlugin(), createUnderlinePlugin()],\n});\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { getParent } from '@udecode/plate-core';\nimport { Text } from 'slate';\nimport { CustomElement } from 'types';\n\nimport { INLINE_TYPES } from '../../helpers/editor';\nimport { transformWrapIn } from '../../helpers/transformers';\nimport { NormalizerRule } from './types';\n\nconst isInline = (node: CustomElement) => INLINE_TYPES.includes(node.type);\nconst isTextContainer = (node: CustomElement) => TEXT_CONTAINERS.includes(node.type as BLOCKS);\n\n// Base rules are rules that must be enforced at all times regardless\n// of which plugins are enabled.\nexport const baseRules: Required<NormalizerRule>[] = [\n {\n // Wrap orphaned text nodes in a paragraph\n match: Text.isText,\n validNode: (editor, [, path]) => {\n const parent = getParent(editor, path)?.[0] as CustomElement;\n return !!parent && (isTextContainer(parent) || isInline(parent) || editor.isVoid(parent));\n },\n transform: (editor, entry) => {\n return transformWrapIn(BLOCKS.PARAGRAPH)(editor, entry);\n },\n },\n {\n // Wrap orphaned inline nodes in a paragraph,\n match: {\n type: INLINE_TYPES,\n },\n validNode: (editor, [, path]) => {\n const parent = getParent(editor, path)?.[0] as CustomElement;\n return !!parent && isTextContainer(parent);\n },\n transform: transformWrapIn(BLOCKS.PARAGRAPH),\n },\n];\n","import { PlateEditor } from '@udecode/plate-core';\nimport { NodeEntry, Text, Node, Element } from 'slate';\n\nimport { NodeValidator, NodeTransformer } from './types';\n\nexport class NormalizerError extends Error {}\n\nexport const createValidatorFromTypes =\n (types: string[]): NodeValidator =>\n (_, [node]) => {\n return Element.isElement(node) && types.includes(node.type);\n };\n\nexport const getChildren = (editor: PlateEditor, [node, path]: NodeEntry): NodeEntry[] => {\n if (Text.isText(node)) {\n return [];\n }\n\n return Array.from(Node.children(editor, path));\n};\n\nexport const createTransformerFromObject = (\n transforms: Record<string, NodeTransformer>\n): NodeTransformer => {\n // A default transformer must always be provided\n const fallback = transforms['default'];\n\n if (!fallback) {\n throw new NormalizerError('A default transformer MUST be provided');\n }\n\n return (editor, entry) => {\n const [node] = entry;\n const key = Element.isElement(node) ? node.type : 'default';\n\n const transformer = transforms[key] || fallback;\n\n return transformer(editor, entry);\n };\n};\n","import { WithOverride, match, getPluginType } from '@udecode/plate-core';\nimport isPlainObject from 'is-plain-obj';\nimport { Editor, NodeEntry } from 'slate';\n\nimport { transformRemove } from '../../helpers/transformers';\nimport { RichTextPlugin } from '../../types';\nimport { baseRules } from './baseRules';\nimport { NormalizerRule, NodeTransformer, NodeValidator } from './types';\nimport {\n NormalizerError,\n createValidatorFromTypes,\n getChildren,\n createTransformerFromObject,\n} from './utils';\n\nexport const withNormalizer: WithOverride = (editor) => {\n const rules: Required<NormalizerRule>[] = baseRules;\n\n // Drive normalization rules from other plugin's configurations\n for (const p of editor.plugins as RichTextPlugin[]) {\n const { normalizer: _rules } = p;\n\n if (!_rules) {\n continue;\n }\n\n for (const _rule of _rules) {\n // Clone to avoid mutation bugs\n const rule = { ..._rule };\n\n if (!rule.match && !p.isElement) {\n throw new NormalizerError('rule.match MUST be defined in a non-element plugin');\n }\n\n // By default we filter elements with given plugin type\n if (!rule.match) {\n rule.match = {\n type: getPluginType(editor, p.key),\n };\n }\n\n // Conditional transformation e.g.\n // {\n // [BLOCKS.EMBEDDED_ASSET]: transformLift,\n // default?: transformRemove\n // }\n //\n if (isPlainObject(rule.transform)) {\n if ('validNode' in rule) {\n // I can't think of a use case. Disabled to prevent misuse\n throw new NormalizerError(\n 'conditional transformations are not supported in validNode rules'\n );\n }\n\n rule.transform = createTransformerFromObject({\n default: transformRemove,\n ...rule.transform,\n });\n }\n\n // By default all invalid nodes are removed.\n if (!rule.transform) {\n rule.transform = transformRemove;\n }\n\n // Convert Types array syntax to a validator function\n if ('validChildren' in rule && Array.isArray(rule.validChildren)) {\n rule.validChildren = createValidatorFromTypes(rule.validChildren);\n }\n\n rules.push(rule as Required<NormalizerRule>);\n }\n }\n\n // Wrap transformer in a withoutNormalizing() call to avoid unnecessary\n // normalization cycles.\n const _transform = (tr: NodeTransformer, entry: NodeEntry) => {\n Editor.withoutNormalizing(editor, () => {\n tr(editor, entry);\n });\n };\n\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [node] = entry;\n const children = getChildren(editor, entry);\n\n // The order of validNode rules Vs validChildren doesn't matter. Slate\n // will always perform normalization in a depth-first fashion.\n for (const rule of rules) {\n if (!match(node, rule.match)) {\n continue;\n }\n\n // Normalize node\n if ('validNode' in rule && !rule.validNode(editor, entry)) {\n _transform(rule.transform as NodeTransformer, entry);\n return;\n }\n\n // Normalize node.children\n if ('validChildren' in rule) {\n // It can not be an array since we enforced it earlier\n const isValidChild = rule.validChildren as NodeValidator;\n\n const invalidChildEntry = children.find((entry) => !isValidChild(editor, entry));\n\n if (invalidChildEntry) {\n _transform(rule.transform as NodeTransformer, invalidChildEntry);\n return;\n }\n }\n }\n\n return normalizeNode(entry);\n };\n\n return editor;\n};\n","import { RichTextPlugin } from '../../types';\nimport { withNormalizer } from './withNormalizer';\n\nexport const createNormalizerPlugin = (): RichTextPlugin => ({\n key: 'NormalizerPlugin',\n withOverrides: withNormalizer,\n});\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { css } from 'emotion';\nimport { RenderElementProps } from 'slate-react';\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","export function isEmbedElement(element: HTMLElement) {\n return (\n element.hasAttribute('data-embedded-entity-inline-id') ||\n element.hasAttribute('data-entity-type')\n );\n}\n\nexport function isEmptyElement(element: HTMLElement) {\n return element.textContent === '';\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { createParagraphPlugin as createDefaultParagraphPlugin } from '@udecode/plate-paragraph';\n\nimport { isInlineOrText } from '../../helpers/editor';\nimport { transformUnwrap, transformLift } from '../../helpers/transformers';\nimport { RichTextPlugin } from '../../types';\nimport { Paragraph } from './Paragraph';\nimport { isEmbedElement, isEmptyElement } from './utils';\n\nexport const createParagraphPlugin = (): RichTextPlugin => {\n const config: Partial<RichTextPlugin> = {\n type: BLOCKS.PARAGRAPH,\n component: Paragraph,\n options: {\n hotkey: ['mod+opt+0'],\n },\n softBreak: [\n // create a new line with SHIFT+Enter inside a paragraph\n {\n hotkey: 'shift+enter',\n query: {\n allow: BLOCKS.PARAGRAPH,\n },\n },\n ],\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['P', 'DIV'],\n },\n ],\n query: (el) => !isEmptyElement(el) && !isEmbedElement(el),\n },\n normalizer: [\n {\n validChildren: (_, [node]) => isInlineOrText(node),\n transform: {\n [BLOCKS.PARAGRAPH]: transformUnwrap,\n default: transformLift,\n },\n },\n ],\n };\n\n return createDefaultParagraphPlugin(config);\n};\n","/**\n * Remove empty spreadsheets columns/rows for performance reasons.\n */\nexport const sanitizeSheets = (doc: Document): Document => {\n // Ensure we are inside a spreadsheet i.e. not pasting\n // a table from within the editor\n const supported = [\n // Google Sheets\n 'google-sheets-html-origin',\n // MS Excel\n 'meta[content=\"Excel.Sheet\"]',\n 'meta[content*=\"Microsoft Excel\"]',\n ];\n\n if (!supported.some((selector) => !!doc.querySelector(selector))) {\n return doc;\n }\n\n const isEmptyElement = (el: Element) => {\n return (el.textContent ?? '').trim() === '';\n };\n\n const tables = Array.from(doc.querySelectorAll('table'));\n\n for (const table of tables) {\n // Remove empty columns first!\n table.querySelectorAll('tr').forEach((row) => {\n isEmptyElement(row) && row.remove();\n });\n\n const rows = Array.from(table.querySelectorAll('tr'));\n\n // CSS :nth-of-type index starts from 1\n let colIndex = 1;\n\n // eslint-disable-next-line\n while (true) {\n const cells = rows\n .map((row) => row.querySelector(`th:nth-of-type(${colIndex}), td:nth-of-type(${colIndex})`))\n .filter((cell): cell is Element => !!cell);\n\n // No more columns\n if (cells.length === 0) {\n break;\n }\n\n const isEmpty = cells.every((cell) => isEmptyElement(cell));\n\n // Don't increment on deletion because columns will be shifted\n // left anyway. Incrementing may result in skipping\n if (!isEmpty) {\n colIndex += 1;\n continue;\n }\n\n cells.forEach((cell) => cell.remove());\n }\n }\n\n return doc;\n};\n","import { sanitizeSheets } from './sanitizeSheets';\n\n/**\n * Remove all <style> tags\n */\nconst stripStyleTags = (doc: Document): Document => {\n doc.querySelectorAll('style').forEach((e) => {\n e.remove();\n });\n\n return doc;\n};\n\nconst transformers = [stripStyleTags, sanitizeSheets];\n\nexport const sanitizeHTML = (html: string): string => {\n // Parse the HTML string and pipe it through our transformers\n const doc = transformers.reduce(\n (value, cb) => cb(value),\n new DOMParser().parseFromString(html, 'text/html')\n );\n\n // Remove whitespace between tags\n return doc.body.innerHTML.replace(/>\\s+</g, '><');\n};\n","import { KEY_DESERIALIZE_HTML } from '@udecode/plate-core';\n\nimport { RichTextPlugin } from '../../types';\nimport { sanitizeHTML } from './utils/sanitizeHTML';\n\nexport const createPasteHTMLPlugin = (): RichTextPlugin => ({\n key: 'PasteHTMLPlugin',\n inject: {\n pluginsByKey: {\n [KEY_DESERIALIZE_HTML]: {\n editor: {\n insertData: {\n format: 'text/html',\n // Perform custom content transformation *before* pasting\n transformData: sanitizeHTML,\n },\n },\n },\n },\n },\n});\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { RenderElementProps } from 'slate-react';\n\nconst style = 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\nexport function Quote(props: RenderElementProps) {\n return (\n <blockquote {...props.attributes} className={style}>\n {props.children}\n </blockquote>\n );\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { HotkeyPlugin, KeyboardHandler, PlateEditor } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\nimport { Transforms, Element, Editor } from 'slate';\n\nimport { isBlockSelected } from '../../helpers/editor';\nimport { CustomElement } from '../../types';\n\nexport function toggleQuote(editor: PlateEditor): void {\n if (!editor.selection) return;\n\n const isActive = isBlockSelected(editor, BLOCKS.QUOTE);\n\n Editor.withoutNormalizing(editor, () => {\n if (!editor.selection) return;\n\n Transforms.unwrapNodes(editor, {\n match: (node) => Element.isElement(node) && (node as CustomElement).type === BLOCKS.QUOTE,\n split: true,\n });\n\n const { anchor, focus } = editor.selection;\n const isTripleSelection =\n anchor.path[0] !== focus.path[0] && anchor.offset === 0 && focus.offset === 0;\n\n if (!isActive) {\n const quote = {\n type: BLOCKS.QUOTE,\n data: {},\n children: [],\n };\n\n Transforms.wrapNodes(editor, quote, {\n at: isTripleSelection ? editor.selection.anchor : undefined,\n });\n }\n });\n}\n\nexport const onKeyDownToggleQuote: KeyboardHandler<{}, HotkeyPlugin> =\n (editor, plugin) => (event) => {\n const { hotkey } = plugin.options;\n\n if (hotkey && isHotkey(hotkey, event)) {\n event.preventDefault();\n toggleQuote(editor);\n }\n };\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\n\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { RichTextPlugin } from '../../types';\nimport { Quote } from './components/Quote';\nimport { onKeyDownToggleQuote } from './toggleQuote';\n\nexport function createQuotePlugin(): RichTextPlugin {\n return {\n key: BLOCKS.QUOTE,\n type: BLOCKS.QUOTE,\n isElement: true,\n component: Quote,\n options: {\n hotkey: 'mod+shift+1',\n },\n handlers: {\n onKeyDown: onKeyDownToggleQuote,\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: 'BLOCKQUOTE',\n },\n ],\n },\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.QUOTE],\n transform: {\n [BLOCKS.QUOTE]: transformUnwrap,\n [BLOCKS.HEADING_1]: transformUnwrap,\n [BLOCKS.HEADING_2]: transformUnwrap,\n [BLOCKS.HEADING_3]: transformUnwrap,\n [BLOCKS.HEADING_4]: transformUnwrap,\n [BLOCKS.HEADING_5]: transformUnwrap,\n [BLOCKS.HEADING_6]: transformUnwrap,\n default: transformLift,\n },\n },\n ],\n };\n}\n","import * as React from 'react';\n\nimport { QuoteIcon } from '@contentful/f36-icons';\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { isBlockSelected, focus } from '../../../helpers/editor';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { toggleQuote } from '../toggleQuote';\n\nexport interface ToolbarQuoteButtonProps {\n isDisabled?: boolean;\n}\n\nexport function ToolbarQuoteButton(props: ToolbarQuoteButtonProps) {\n const editor = useContentfulEditor();\n\n function handleOnClick() {\n if (!editor) return;\n\n toggleQuote(editor);\n 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","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\nimport { createSelectOnBackspacePlugin as createDefaultSelectPlugin } from '@udecode/plate-select';\n\nimport { RichTextPlugin } from '../../types';\n\nexport const createSelectOnBackspacePlugin = (): RichTextPlugin =>\n createDefaultSelectPlugin({\n options: {\n query: {\n allow: [BLOCKS.EMBEDDED_ASSET, BLOCKS.EMBEDDED_ENTRY, BLOCKS.HR, INLINES.EMBEDDED_ENTRY],\n },\n },\n });\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { PlateEditor } from '@udecode/plate-core';\n\nimport { TrackingProvider } from '../../TrackingProvider';\nimport { CustomElement } from '../../types';\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;\n\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\nexport function addTableTrackingEvents(\n editor: PlateEditor,\n { onViewportAction }: TrackingProvider\n) {\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","import * as React from 'react';\n\nimport constate from 'constate';\n\nexport type RichTextTrackingActionName =\n | 'insertTable'\n | 'insertTableRow'\n | 'insertTableColumn'\n | 'removeTable'\n | 'removeTableRow'\n | 'removeTableColumn'\n | 'paste'\n | 'linkRendered';\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 {\n getPluginType,\n PlateEditor,\n TElement,\n getAbove,\n insertNodes,\n someNode,\n} from '@udecode/plate-core';\nimport { ELEMENT_TABLE, ELEMENT_TR, getEmptyRowNode } from '@udecode/plate-table';\nimport { Transforms, Path, Editor } from 'slate';\n\nconst addRow = (editor: PlateEditor, getNextRowPath: (currentRowPath: Path) => Path) => {\n if (\n someNode(editor, {\n match: { type: getPluginType(editor, ELEMENT_TABLE) },\n })\n ) {\n const currentRowItem = getAbove(editor, {\n match: { type: getPluginType(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: PlateEditor) => {\n addRow(editor, (currentRowPath) => {\n return Path.next(currentRowPath);\n });\n};\n\nexport const addRowAbove = (editor: PlateEditor) => {\n addRow(editor, (currentRowPath) => {\n // The new row will be in in-place of the old row\n return currentRowPath;\n });\n};\n","import {\n getPluginType,\n PlateEditor,\n TElement,\n getAbove,\n insertNodes,\n someNode,\n} from '@udecode/plate-core';\nimport {\n getEmptyCellNode,\n TablePluginOptions,\n ELEMENT_TABLE,\n ELEMENT_TD,\n ELEMENT_TH,\n} from '@udecode/plate-table';\nimport { Path } from 'slate';\n\nconst addColumn = (\n editor: PlateEditor,\n { header }: TablePluginOptions,\n getNextCellPath: (currentCellPath: Path) => Path\n) => {\n if (\n someNode(editor, {\n match: { type: getPluginType(editor, ELEMENT_TABLE) },\n })\n ) {\n const currentCellItem = getAbove(editor, {\n match: {\n type: [getPluginType(editor, ELEMENT_TD), getPluginType(editor, ELEMENT_TH)],\n },\n });\n\n const currentTableItem = getAbove(editor, {\n match: { type: getPluginType(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: PlateEditor, options: TablePluginOptions) => {\n addColumn(editor, options, (currentCellPath) => Path.next(currentCellPath));\n};\n\nexport const addColumnLeft = (editor: PlateEditor, options: TablePluginOptions) => {\n addColumn(editor, options, (currentCellPath) => currentCellPath);\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { PlateEditor, getAbove, setNodes, getChildren } from '@udecode/plate-core';\n\nexport const setHeader = (editor: PlateEditor, 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 { BLOCKS } from '@contentful/rich-text-types';\nimport { getParent, PlateEditor } from '@udecode/plate-core';\nimport { getAbove, getChildren, isFirstChild, isAncestorEmpty } from '@udecode/plate-core';\nimport {\n ELEMENT_TABLE,\n ELEMENT_TH,\n ELEMENT_TD,\n ELEMENT_TR,\n insertTable,\n} from '@udecode/plate-table';\nimport { Node, NodeEntry } from 'slate';\nimport { Transforms, Path, Editor, Ancestor } from 'slate';\n\nimport { isBlockSelected, getAncestorPathFromSelection } from '../../helpers/editor';\nimport { CustomElement } from '../../types';\n\nexport function insertTableAndFocusFirstCell(editor: PlateEditor): void {\n insertTable(editor, { header: true });\n replaceEmptyParagraphWithTable(editor);\n}\n\nexport function isTableActive(editor: PlateEditor) {\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: PlateEditor) {\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\nexport function replaceEmptyParagraphWithTable(editor: PlateEditor) {\n const tablePath = getAncestorPathFromSelection(editor);\n if (!tablePath || isFirstChild(tablePath)) return;\n\n const previousPath = Path.previous(tablePath);\n if (!previousPath) return;\n\n const [nodes] = Editor.nodes(editor, {\n at: previousPath,\n match: (node) => (node as CustomElement).type === BLOCKS.PARAGRAPH,\n });\n if (!nodes) return;\n\n const [previousNode] = nodes;\n const isPreviousNodeTextEmpty = isAncestorEmpty(editor, previousNode as Ancestor);\n if (isPreviousNodeTextEmpty) {\n // Switch table with previous empty paragraph\n Transforms.moveNodes(editor, { at: tablePath, to: previousPath });\n // Remove previous paragraph that now is under the table\n Transforms.removeNodes(editor, { at: tablePath });\n }\n}\n\n/**\n * Returns the number of cells in a given row vs the table width\n *\n * Note: We should only get different table rows cell counts in between\n * normalization cycles.\n */\nexport const getNoOfMissingTableCellsInRow = (editor: PlateEditor, [, rowPath]: NodeEntry) => {\n const parent = getParent(editor, rowPath);\n\n // This is ensured by normalization. The error is here just in case\n if (!parent) {\n throw new Error('table rows must be wrapped in a table node');\n }\n\n const [, tablePath] = parent;\n\n // The longest table row determines its width\n const tableWidth = Math.max(\n ...Array.from(Node.children(editor, tablePath)).map(\n ([, path]) => Array.from(Node.children(editor, path)).length\n )\n );\n\n const rowWidth = Array.from(Node.children(editor, rowPath)).length;\n\n return tableWidth - rowWidth;\n};\n\nexport const createEmptyTableCells = (count: number): Node[] => {\n const emptyTableCell = {\n type: BLOCKS.TABLE_CELL,\n data: {},\n children: [\n {\n type: BLOCKS.PARAGRAPH,\n data: {},\n children: [{ text: '' }],\n },\n ],\n };\n\n return new Array(count).fill(emptyTableCell);\n};\n\nexport const isNotEmpty = (editor: PlateEditor, [, path]: NodeEntry) => {\n return Array.from(Node.children(editor, path)).length !== 0;\n};\n","import React from 'react';\n\nimport { IconButton, Menu } from '@contentful/f36-components';\nimport { ChevronDownIcon } from '@contentful/f36-icons';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { PlateEditor, getAbove } from '@udecode/plate-core';\nimport { TablePluginOptions, deleteColumn, deleteRow, deleteTable } from '@udecode/plate-table';\nimport { css } from 'emotion';\nimport { Editor } from 'slate';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { getNodeEntryFromSelection, getTableSize } from '../../../helpers/editor';\nimport { RichTextTrackingActionName, useTrackingContext } from '../../../TrackingProvider';\nimport { addRowAbove, addColumnLeft, addColumnRight, addRowBelow, setHeader } from '../actions';\nimport { isTableHeaderEnabled } from '../helpers';\n\nexport const styles = {\n topRight: css({\n position: 'absolute',\n top: '6px',\n right: '5px',\n }),\n};\n\nconst getCurrentTableSize = (\n editor: PlateEditor\n): Record<'numRows' | 'numColumns', number> | null => {\n const [table] = getNodeEntryFromSelection(editor, BLOCKS.TABLE);\n return table ? getTableSize(table) : null;\n};\n\ntype TableAction = (editor: PlateEditor, options: TablePluginOptions) => void;\n\nexport const TableActions = () => {\n const editor = useContentfulEditor();\n const isDisabled = Slate.useReadOnly();\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\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 Editor.withoutNormalizing(editor, () => {\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 if (isDisabled) {\n return null;\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 * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { TableCell } from '@contentful/rich-text-types';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { TableActions } from './TableActions';\n\nconst style = css`\n border: 1px solid ${tokens.gray400};\n border-collapse: collapse;\n padding: 10px 12px;\n min-width: 48px;\n position: relative;\n vertical-align: top;\n\n div:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const Cell = (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={style}>\n {isSelected && <TableActions />}\n {props.children}\n </td>\n );\n};\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { TableHeaderCell } from '@contentful/rich-text-types';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { TableActions } from './TableActions';\n\nconst style = css`\n background-color: ${tokens.gray200};\n border: 1px solid ${tokens.gray400};\n border-collapse: collapse;\n padding: 10px 12px;\n font-weight: ${tokens.fontWeightMedium};\n text-align: left;\n min-width: 48px;\n position: relative;\n\n div:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const HeaderCell = (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={style}>\n {isSelected && <TableActions />}\n {props.children}\n </th>\n );\n};\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nconst style = css`\n border: 1px solid ${tokens.gray400};\n border-collapse: collapse;\n\n &:hover td {\n background-color: transparent !important;\n }\n`;\n\nexport const Row = (props: Slate.RenderElementProps) => (\n <tr {...props.attributes} className={style}>\n {props.children}\n </tr>\n);\n","import * as React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport * as Slate from 'slate-react';\n\nconst style = 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\nexport const Table = (props: Slate.RenderElementProps) => (\n <table {...props.attributes} className={style}>\n <tbody>{props.children}</tbody>\n </table>\n);\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\nimport {\n getBlockAbove,\n getParent,\n HotkeyPlugin,\n KeyboardHandler,\n getLastChildPath,\n} from '@udecode/plate-core';\nimport {\n createTablePlugin as createDefaultTablePlugin,\n ELEMENT_TABLE,\n ELEMENT_TD,\n ELEMENT_TH,\n ELEMENT_TR,\n onKeyDownTable,\n} from '@udecode/plate-table';\nimport { NodeEntry, Path, Transforms } from 'slate';\n\nimport {\n currentSelectionPrecedesTableCell,\n currentSelectionStartsTableCell,\n isRootLevel,\n} from '../../helpers/editor';\nimport { transformLift, transformParagraphs, transformWrapIn } from '../../helpers/transformers';\nimport { TrackingProvider } from '../../TrackingProvider';\nimport { RichTextPlugin, CustomElement } from '../../types';\nimport { addTableTrackingEvents } from './addTableTrackingEvents';\nimport { Cell } from './components/Cell';\nimport { HeaderCell } from './components/HeaderCell';\nimport { Row } from './components/Row';\nimport { Table } from './components/Table';\nimport { createEmptyTableCells, getNoOfMissingTableCellsInRow, isNotEmpty } from './helpers';\n\nconst createTableOnKeyDown: KeyboardHandler<{}, HotkeyPlugin> = (editor, plugin) => {\n const defaultHandler = onKeyDownTable(editor, plugin);\n\n return (event) => {\n if (\n (event.key === 'Backspace' && currentSelectionStartsTableCell(editor)) ||\n (event.key === 'Delete' && currentSelectionPrecedesTableCell(editor))\n ) {\n // The default behavior here would be to delete the preceding or forthcoming\n // leaf node, in this case a cell or header cell. But we don't want to do that,\n // because it would leave us with a non-standard number of table cells.\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n defaultHandler(event);\n };\n};\n\nexport const createTablePlugin = (tracking: TrackingProvider): RichTextPlugin =>\n createDefaultTablePlugin({\n type: BLOCKS.TABLE,\n handlers: {\n onKeyDown: createTableOnKeyDown,\n },\n withOverrides: (editor) => {\n addTableTrackingEvents(editor, tracking);\n\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(\n (fragment) => (fragment as CustomElement).type === BLOCKS.TABLE\n );\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 overrideByKey: {\n [ELEMENT_TABLE]: {\n type: BLOCKS.TABLE,\n component: Table,\n normalizer: [\n {\n validNode: isNotEmpty,\n },\n {\n // Move to root level unless nested\n validNode: (editor, [, path]) => {\n const isNestedTable = !!getBlockAbove(editor, {\n at: path,\n match: {\n type: [BLOCKS.TABLE_CELL, BLOCKS.TABLE_HEADER_CELL],\n },\n });\n\n return isRootLevel(path) || isNestedTable;\n },\n transform: transformLift,\n },\n {\n validChildren: CONTAINERS[BLOCKS.TABLE],\n },\n ],\n },\n [ELEMENT_TR]: {\n type: BLOCKS.TABLE_ROW,\n component: Row,\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.TABLE_ROW],\n transform: transformWrapIn(BLOCKS.TABLE_CELL),\n },\n {\n // Remove empty rows\n validNode: isNotEmpty,\n },\n {\n // Parent must be a table\n validNode: (editor, [, path]) => {\n const parent = getParent(editor, path)?.[0];\n return parent && parent.type === BLOCKS.TABLE;\n },\n transform: transformWrapIn(BLOCKS.TABLE),\n },\n {\n // ensure consistent number of cells in each row\n validNode: (editor, entry) => {\n return getNoOfMissingTableCellsInRow(editor, entry) === 0;\n },\n transform: (editor, entry) => {\n const howMany = getNoOfMissingTableCellsInRow(editor, entry);\n const at = Path.next(getLastChildPath(entry as NodeEntry<CustomElement>));\n\n Transforms.insertNodes(editor, createEmptyTableCells(howMany), {\n at,\n });\n },\n },\n ],\n },\n [ELEMENT_TH]: {\n type: BLOCKS.TABLE_HEADER_CELL,\n component: HeaderCell,\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.TABLE_HEADER_CELL],\n transform: transformParagraphs,\n },\n ],\n },\n [ELEMENT_TD]: {\n type: BLOCKS.TABLE_CELL,\n component: Cell,\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.TABLE_CELL],\n transform: transformParagraphs,\n },\n ],\n },\n } as Record<string, Partial<RichTextPlugin>>,\n });\n","import * as React from 'react';\n\nimport { TableIcon } from '@contentful/f36-icons';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { focus } from '../../../helpers/editor';\nimport { useTrackingContext } from '../../../TrackingProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { insertTableAndFocusFirstCell, isTableActive } from './../helpers';\n\nexport interface 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() {\n if (!editor) return;\n\n onViewportAction('insertTable');\n insertTableAndFocusFirstCell(editor);\n 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 { TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { getAbove, isAncestorEmpty } from '@udecode/plate-core';\nimport { Editor, Ancestor, Transforms, Range } from 'slate';\n\nimport { RichTextPlugin } from '../../types';\n\nexport function createTextPlugin(): RichTextPlugin {\n return {\n key: 'TextPlugin',\n withOverrides: (editor) => {\n // Reverts the change made upstream that caused the cursor\n // to be trapped inside inline elements.\n //\n // Reverts https://github.com/ianstormtaylor/slate/pull/4578/\n // Related https://github.com/ianstormtaylor/slate/issues/4704\n const { insertText } = editor;\n\n editor.insertText = (text) => {\n const { selection } = editor;\n\n // If the cursor is at the end of an inline, move it outside\n // before inserting\n if (selection && Range.isCollapsed(selection)) {\n const inlinePath = Editor.above(editor, {\n match: (n) => Editor.isInline(editor, n),\n mode: 'highest',\n })?.[1];\n\n if (inlinePath && Editor.isEnd(editor, selection.anchor, inlinePath)) {\n const point = Editor.after(editor, inlinePath);\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point,\n });\n }\n }\n\n return insertText(text);\n };\n\n // When pressing delete instead of backspace\n const { deleteForward, deleteBackward } = editor;\n\n editor.deleteBackward = (unit) => {\n deleteEmptyParagraph(unit, editor, deleteBackward);\n };\n\n editor.deleteForward = (unit) => {\n deleteEmptyParagraph(unit, editor, deleteForward);\n };\n\n return editor;\n },\n };\n}\n\nfunction deleteEmptyParagraph(unit: String, editor: Editor, deleteFunction: Function) {\n const entry = getAbove(editor, {\n match: {\n type: TEXT_CONTAINERS,\n },\n });\n\n if (entry) {\n const [paragraphOrHeading, path] = entry;\n const isTextEmpty = isAncestorEmpty(editor, paragraphOrHeading as Ancestor);\n // We ignore paragraphs/headings that are children of ul, ol, blockquote, tables, etc\n const isRootLevel = path.length === 1;\n\n if (isTextEmpty && isRootLevel) {\n Transforms.removeNodes(editor, { at: path });\n } else {\n deleteFunction(unit);\n }\n } else {\n deleteFunction(unit);\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 options: {\n type: BLOCKS.PARAGRAPH,\n level: 0,\n },\n });\n};\n","import { PlateEditor } from '@udecode/plate-core';\nimport { NodeEntry, Transforms } from 'slate';\n\n/**\n * Re-creates a void node with valid children.\n */\nexport const transformVoid = (editor: PlateEditor, [node, path]: NodeEntry) => {\n const validVoid = {\n ...node,\n children: [{ text: '' }],\n };\n\n // A workaround because Slate doesn't allow adjusting void nodes children\n Transforms.removeNodes(editor, { at: path });\n Transforms.insertNodes(editor, [validVoid], { at: path });\n};\n","import { isFirstChild } from '@udecode/plate-core';\nimport { Node, Text } from 'slate';\n\nimport { isRootLevel } from '../../helpers/editor';\nimport { RichTextPlugin } from '../../types';\nimport { transformVoid } from './transformVoid';\n\nexport const createVoidsPlugin = (): RichTextPlugin => ({\n key: 'VoidsPlugin',\n exitBreak: [\n {\n // Inserts a new paragraph *before* a void element if it's the very first\n // node on the editor\n hotkey: 'enter',\n before: true,\n query: {\n filter: ([node, path]) => isRootLevel(path) && isFirstChild(path) && !!node.isVoid,\n },\n },\n {\n // Inserts a new paragraph on enter when a void element is focused\n hotkey: 'enter',\n // exploit the internal use of Array.slice(0, level + 1) by the exitBreak plugin\n // to stay in the parent element\n level: -2,\n query: {\n filter: ([node, path]) => !(isRootLevel(path) && isFirstChild(path)) && !!node.isVoid,\n },\n },\n ],\n normalizer: [\n {\n match: {\n isVoid: true,\n },\n validNode: (editor, [, path]) => {\n const children = Array.from(Node.children(editor, path));\n\n if (children.length !== 1) {\n return false;\n }\n\n const [textNode] = children[0];\n\n return Text.isText(textNode) && textNode.text === '';\n },\n transform: transformVoid,\n },\n ],\n});\n","import { FieldExtensionSDK } from '@contentful/app-sdk';\nimport {\n createDeserializeAstPlugin,\n createDeserializeHtmlPlugin,\n PlateProps,\n} from '@udecode/plate-core';\nimport { createDeserializeDocxPlugin } from '@udecode/plate-serializer-docx';\n\nimport { TrackingProvider } from '../TrackingProvider';\nimport { RichTextPlugin } from '../types';\nimport { createSoftBreakPlugin, createExitBreakPlugin } from './Break';\nimport { createDragAndDropPlugin } from './DragAndDrop';\nimport {\n createEmbeddedAssetBlockPlugin,\n createEmbeddedEntryBlockPlugin,\n} from './EmbeddedEntityBlock';\nimport { createEmbeddedEntityInlinePlugin } from './EmbeddedEntityInline';\nimport { createHeadingPlugin } from './Heading';\nimport { createHrPlugin } from './Hr';\nimport { createHyperlinkPlugin } from './Hyperlink';\nimport { createListPlugin } from './List';\nimport { createMarksPlugin } from './Marks';\nimport { createNormalizerPlugin } from './Normalizer';\nimport { createParagraphPlugin } from './Paragraph';\nimport { createPasteHTMLPlugin } from './PasteHTML';\nimport { createQuotePlugin } from './Quote';\nimport { createSelectOnBackspacePlugin } from './SelectOnBackspace';\nimport { createTablePlugin } from './Table';\nimport { createTextPlugin } from './Text';\nimport { createTrailingParagraphPlugin } from './TrailingParagraph';\nimport { createVoidsPlugin } from './Voids';\n\nexport const getPlugins = (\n sdk: FieldExtensionSDK,\n tracking: TrackingProvider\n): RichTextPlugin[] => [\n // AST must come after the HTML deserializer\n createDeserializeHtmlPlugin(),\n createDeserializeAstPlugin(),\n createDeserializeDocxPlugin(),\n\n // Global shortcuts\n createDragAndDropPlugin(),\n\n // Block Elements\n createParagraphPlugin(),\n createListPlugin(),\n createHrPlugin(),\n createHeadingPlugin(),\n createQuotePlugin(),\n createTablePlugin(tracking),\n createEmbeddedEntryBlockPlugin(sdk, tracking),\n createEmbeddedAssetBlockPlugin(sdk, tracking),\n\n // Inline elements\n createHyperlinkPlugin(sdk, tracking),\n createEmbeddedEntityInlinePlugin(sdk, tracking),\n\n // Marks\n createMarksPlugin(),\n\n // Other\n createTrailingParagraphPlugin(),\n createTextPlugin(),\n createVoidsPlugin(),\n createSelectOnBackspacePlugin(),\n\n // Pasting content from other sources\n createPasteHTMLPlugin(),\n\n // These plugins drive their configurations from the list of plugins\n // above. They MUST come last.\n createSoftBreakPlugin(),\n createExitBreakPlugin(),\n createNormalizerPlugin(),\n];\n\nexport const disableCorePlugins: PlateProps['disableCorePlugins'] = {\n // Temporarily until the upstream issue is fixed.\n // See: https://github.com/udecode/plate/issues/1329#issuecomment-1005935946\n deserializeAst: true,\n deserializeHtml: true,\n\n // Note: Enabled by default since v9.0.0 but it causes Cypress's\n // .click() command to fail\n eventEditor: true,\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\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 * as React from 'react';\n\nimport { Button, Menu } from '@contentful/f36-components';\nimport { PlusIcon, ChevronDownIcon } from '@contentful/f36-icons';\n\nexport interface 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, { useState } from 'react';\n\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { isLinkActive } from '../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { ToolbarIcon as EmbeddedEntityBlockToolbarIcon } from '../../plugins/EmbeddedEntityBlock';\nimport { ToolbarEmbeddedEntityInlineButton } from '../../plugins/EmbeddedEntityInline';\nimport { useSdkContext } from '../../SdkProvider';\nimport { EmbeddedEntityDropdownButton } from './EmbeddedEntityDropdownButton';\n\nexport interface EmbedEntityWidgetProps {\n isDisabled?: boolean;\n canInsertBlocks?: boolean;\n}\n\nexport const EmbedEntityWidget = ({ isDisabled, canInsertBlocks }: EmbedEntityWidgetProps) => {\n const sdk = useSdkContext();\n const editor = useContentfulEditor();\n\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 || isDisabled;\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 || isLinkActive(editor)}\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 from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { BLOCKS, INLINES, MARKS } from '@contentful/rich-text-types';\nimport { css } from 'emotion';\n\nimport { useContentfulEditor } from '../ContentfulEditorProvider';\nimport { isNodeTypeSelected } from '../helpers/editor';\nimport { isNodeTypeEnabled, isMarkEnabled } from '../helpers/validations';\nimport { ToolbarHeadingButton } from '../plugins/Heading';\nimport { ToolbarHrButton } from '../plugins/Hr';\nimport { ToolbarHyperlinkButton } from '../plugins/Hyperlink';\nimport { ToolbarListButton } from '../plugins/List';\nimport { ToolbarBoldButton } from '../plugins/Marks/Bold';\nimport { ToolbarCodeButton } from '../plugins/Marks/Code';\nimport { ToolbarItalicButton } from '../plugins/Marks/Italic';\nimport { ToolbarUnderlineButton } from '../plugins/Marks/Underline';\nimport { ToolbarQuoteButton } from '../plugins/Quote';\nimport { ToolbarTableButton } from '../plugins/Table';\nimport { useSdkContext } from '../SdkProvider';\nimport { EmbedEntityWidget } from './components/EmbedEntityWidget';\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 const isListSelected =\n isNodeTypeSelected(editor, BLOCKS.UL_LIST) || isNodeTypeSelected(editor, BLOCKS.OL_LIST);\n const isBlockquoteSelected = isNodeTypeSelected(editor, BLOCKS.QUOTE);\n const shouldDisableTables =\n isDisabled || !canInsertBlocks || isListSelected || isBlockquoteSelected;\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 <>\n <span className={styles.divider} />\n <ToolbarHyperlinkButton isDisabled={isDisabled} />\n </>\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={shouldDisableTables} />\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';\n\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 React, { useCallback, useState } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { toContentfulDocument, toSlatejsDocument } from '@contentful/contentful-slatejs-adapter';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport * as Contentful from '@contentful/rich-text-types';\nimport { Plate, PlateProps } from '@udecode/plate-core';\nimport { css, cx } from 'emotion';\nimport deepEquals from 'fast-deep-equal';\nimport noop from 'lodash/noop';\nimport { Editor } from 'slate';\n\nimport schema from './constants/Schema';\nimport {\n ContentfulEditorProvider,\n getContentfulEditorId,\n useContentfulEditor,\n} from './ContentfulEditorProvider';\nimport { sanitizeIncomingSlateDoc } from './helpers/sanitizeSlateDoc';\nimport { disableCorePlugins, getPlugins } from './plugins';\nimport { styles } from './RichTextEditor.styles';\nimport { SdkProvider } from './SdkProvider';\nimport Toolbar from './Toolbar';\nimport StickyToolbarWrapper from './Toolbar/components/StickyToolbarWrapper';\nimport {\n RichTextTrackingActionHandler,\n TrackingProvider,\n useTrackingContext,\n} from './TrackingProvider';\nimport { TextOrCustomElement } from './types';\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\nexport const ConnectedRichTextEditor = (props: ConnectedProps) => {\n const tracking = useTrackingContext();\n\n const editor = useContentfulEditor();\n\n const [value, setValue] = useState<PlateProps['value']>([]);\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 React.useEffect(() => {\n if (!editor) {\n return;\n }\n\n const docFromAdapter = toSlatejsDocument({\n document: props.value || Contentful.EMPTY_DOCUMENT,\n schema,\n });\n const doc = sanitizeIncomingSlateDoc(docFromAdapter);\n\n // Slate throws an error if the value on the initial render is invalid\n // so we directly set the value on the editor in order\n // to be able to trigger normalization on the initial value before rendering\n // TODO: use https://plate.udecode.io/docs/Plate#normalizeinitialvalue when working\n editor.children = doc;\n Editor.normalize(editor, { force: true });\n // We set the value so that the rendering can take over from here\n setValue(editor.children);\n }, [props.value, editor]);\n\n return (\n <div className={styles.root} data-test-id=\"rich-text-editor\">\n <Plate\n id={getContentfulEditorId(props.sdk)}\n value={value}\n plugins={plugins}\n disableCorePlugins={disableCorePlugins}\n editableProps={{\n className: classNames,\n readOnly: props.isDisabled,\n }}\n onChange={(slateDoc) => {\n setValue(slateDoc as TextOrCustomElement[]);\n const contentfulDoc = toContentfulDocument({ document: slateDoc, schema });\n props.onChange?.(contentfulDoc);\n }}>\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';\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';\nimport tokens from '@contentful/f36-tokens';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { css } from 'emotion';\nimport PropTypes from 'prop-types';\n\nimport { FetchingWrappedAssetCard } from '../../plugins/shared/FetchingWrappedAssetCard';\nimport { FetchingWrappedEntryCard } from '../../plugins/shared/FetchingWrappedEntryCard';\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';\n\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\n\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';\n\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\n\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":["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","editor","error","code","unwrapBlockByKey","node","key","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","EMBEDDED_ENTRY","getContentfulEditorId","sdk","entry","field","sys","getSys","id","locale","useContentfulEditorHook","editorId","usePlateEditorRef","constate","ContentfulEditorProvider","useContentfulEditor","isTextElement","sanitizeIncomingSlateDoc","children","length","text","data","createSoftBreakPlugin","createDefaultSoftBreakPlugin","then","rules","plugins","flatMap","p","softBreak","options","createExitBreakPlugin","createDefaultExitBreakPlugin","exitBreak","createDragAndDropPlugin","DRAGGABLE_TYPES","EMBEDDED_ASSET","HR","ON_DROP_ALLOWED_TYPES","TABLE","handlers","onDrop","event","Array","from","getNodes","includes","draggingBlock","draggingNode","nativeEvent","target","dropDisallowed","getParents","some","nodeName","history","undos","push","el","parents","parentNode","unshift","IS_EDGE_LEGACY","navigator","test","userAgent","IS_CHROME_LEGACY","HAS_BEFORE_INPUT_SUPPORT","globalThis","InputEvent","prototype","getTargetRanges","IS_SAFARI","LINK_TYPES","isBlockSelected","Editor","Element","isElement","isRootLevel","path","getNodeEntryFromSelection","nodeTypeOrTypes","selection","nodeTypes","isArray","focus","i","nodeEntry","slice","isNodeTypeSelected","moveToTheNextLine","Transforms","move","distance","unit","getElementFromCurrentSelection","at","flat","getTableSize","table","numRows","firstRow","numColumns","insertLink","wrapLink","isLinkActive","isEditor","link","unwrapLink","unwrapNodes","url","isCollapsed","Range","uri","setNodes","insertText","select","insertNodes","wrapNodes","split","collapse","edge","getAncestorPathFromSelection","undefined","Path","levels","find","level","shouldUnwrapBlockquote","isQuoteSelected","isValidType","HEADINGS","OL_LIST","UL_LIST","unwrapFromRoot","ancestorPath","isAtEndOfTextSelection","offset","getText","currentSelectionStartsTableCell","TABLE_CELL","TABLE_HEADER_CELL","tableCellNode","getNextNode","descendants","Node","next","done","value","isCommon","currentSelectionPrecedesTableCell","nextNode","TABLE_BLOCKS","INLINE_TYPES","isInlineOrText","Text","isText","x","window","scrollX","y","scrollY","ReactEditor","setTimeout","scrollTo","withLinkTracking","tracking","Component","ComponentWithTracking","props","React","onEntityFetchComplete","onViewportAction","useSdk","sdkMemo","SdkProvider","useSdkContext","styles","scheduleIcon","css","marginRight","tokens","spacing2Xs","EntityStatusIcon","entity","entityType","useEntities","loadEntityScheduledActions","ScheduledIconWithTooltip","getEntityScheduledActions","entityId","ClockIcon","className","size","color","testId","assetCard","cursor","cardDropdown","width","truncated","overflow","whiteSpace","textOverflow","downloadAsset","fileName","fetch","method","headers","response","arrayBuffer","buffer","URL","createObjectURL","Blob","createElement","href","setAttribute","body","appendChild","click","removeChild","err","Notification","console","log","renderAssetInfo","entityFile","get","mimeType","fileSize","image","Menu","SectionTitle","Item","isTruncated","shortenStorageUnit","height","filter","item","renderActions","isDisabled","onEdit","onRemove","disabled","onClick","FetchingWrappedAssetCard","getOrLoadAsset","assets","asset","assetId","defaultLocaleCode","locales","fields","file","getAssetSrc","getFileType","groupToIconMap","video","audio","richtext","presentation","spreadsheet","pdfdocument","archive","plaintext","markup","groupName","mimetype","getGroupLabel","contentType","fallbackFileName","AssetCard","isLoading","MissingEntityCard","status","entityHelpers","getEntryStatus","asSquare","entityTitle","getAssetTitle","localeCode","defaultTitle","title","isSelected","src","icon","actions","entryCard","EntryThumbnail","isValidImage","AssetThumbnail","FetchingWrappedEntryCard","getOrLoadEntry","entries","setFile","entryId","space","getCachedContentTypes","getEntryImage","renderDropdown","MenuItem","EntryCard","entryStatus","getEntryTitle","description","getEntityDescription","name","thumbnailElement","withDragHandle","root","marginBottom","LinkedEntityBlock","attributes","element","useSelected","useReadOnly","linkType","handleEditClick","openEntity","openAsset","openEntry","slideIn","handleRemoveClick","pathToElement","findPath","removeNodes","contentEditable","draggable","runtime","exports","Op","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","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","displayName","defineIteratorMethods","forEach","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","keys","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","getLinkedContentTypeIdsForNodeType","flow","v","validations","newEntitySelectorConfigFromRichTextField","getEntityTypeFromRichTextNode","contentTypes","words","indexOf","selectEntityAndInsert","logAction","dialogs","baseConfig","selectEntity","selectSingleAsset","selectSingleEntry","config","withCreate","insertBlock","createNode","linkedEntityBlock","hasText","EmbeddedEntityBlockToolbarIcon","isButton","onClose","handleClick","preventDefault","noop","getEntityTypeFromNodeType","baseClass","Button","startIcon","AssetIcon","EmbeddedEntryBlockIcon","variant","toLowerCase","Flex","alignItems","flexDirection","Icon","as","entityTypes","getWithEmbeddedEntityEvents","hotkey","pathToSelectedElement","isDelete","isBackspace","isHotkey","createEmbeddedEntityPlugin","component","onKeyDown","deserializeHtml","validAttribute","withoutChildren","getNode","getAttribute","createEmbeddedEntryBlockPlugin","createEmbeddedAssetBlockPlugin","scheduledIcon","verticalAlign","FetchingWrappedInlineEntryCard","useMemo","allContentTypes","useEffect","contentTypeName","InlineEntryCard","createInlineEntryNode","display","margin","fontSize","span","userSelect","EmbeddedEntityInline","inlineEntryNode","setSelection","ToolbarEmbeddedEntityInlineButton","EmbeddedEntryInlineIcon","createEmbeddedEntityInlinePlugin","htmlAttributeName","isInline","getWithEmbeddedEntryInlineEvents","withEmbeddedEntryInlineEvents","handleEvent","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","DEFAULT_ENABLED_NODE_TYPES","DOCUMENT","getRichTextValidation","validationType","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","concat","isNodeTypeEnabled","isMarkEnabled","dropdown","fontWeightDemiBold","fontSizeL","LABELS","ToolbarHeadingButton","isOpen","setOpen","selected","setSelected","operations","nodeTypesByEnablement","fromEntries","someHeadingsEnabled","Boolean","handleOnSelectItem","prevOnChange","onChange","toggleNodeType","activeType","inactiveType","Trigger","endIcon","ChevronDownIcon","List","isInitiallyFocused","cx","extractNodes","mode","extractParagraphs","TEXT_CONTAINERS","transformRemove","transformParagraphs","transformUnwrap","transformWrapIn","transformLift","liftNodes","headings","fontWeightMedium","spacingS","createHeading","Tag","block","Heading","HeadingComponents","createHeadingPlugin","query","allow","normalizer","validChildren","_","transform","end","start","getAbove","LIST_ITEM","idx","tagName","onKeyDownToggleElement","validNodeName","toUpperCase","button","marginLeft","tooltip","zIndex","Number","zIndexTooltip","ToolbarButton","isActive","Tooltip","placement","content","container","spacingL","hr","spacingM","gray300","hrSelected","colorPrimary","withHrEvents","pathToSelectedHr","ToolbarHrButton","handleOnClick","HorizontalRuleIcon","Hr","Slate","isFocused","createHrPlugin","truncate","str","substr","replace","getEntityInfo","entityStatus","EntryAssetTooltip","setEntityTitle","setEntityStatus","jobs","setJobs","setIsLoading","hasError","setHasError","loadContent","Asset","getEntity","getAsset","getEntityTitle","args","Entry","getEntry","contentTypeId","ct","getScheduleTooltipContent","job","jobsCount","removeSelectionLabel","SYS_LINK_TYPES","LINK_TYPE_SELECTION_VALUES","HyperlinkModal","enabledLinkTypes","defaultLinkType","linkText","setLinkText","setLinkType","linkTarget","setLinkTarget","linkEntity","setLinkEntity","isLinkComplete","isRegularLink","entityLinks","isEntityLink","handleOnSubmit","entityToLink","selectEntry","selectAsset","resetLinkEntity","EntityProvider","ModalContent","Form","FormControl","isRequired","Label","TextInput","Select","Option","HelpText","FormLabel","htmlFor","TextLink","ModalControls","addOrEditLink","string","selectionBeforeBlur","currentLinkText","ModalDialogLauncher","openDialog","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","allowHeightOverflow","withoutNormalizing","isAncestorEmpty","trim","hyperlinkWrapper","position","a","hyperlink","fill","gray900","hyperlinkIEFallback","textDecoration","hyperlinkIcon","top","webkitTransition","transition","UrlHyperlink","isReadOnly","stopPropagation","targetWrapperClassName","maxWidth","rel","EntityHyperlink","ToolbarHyperlinkButton","LinkIcon","isAnchor","isEntryAnchor","isAssetAnchor","buildHyperlinkEventHandler","getNodeOfType","createHyperlinkPlugin","common","validNode","baseStyle","lineHeightDefault","createList","ListUL","ListOL","style","spacingXs","ListItem","isList","hasListAsDirectParent","getParent","getNearestListAncestor","normalizeOrphanedListItem","parentList","parentListType","isNonEmptyListItem","listItemChildren","firstNodeIsNotList","_editor","firstNode","insertParagraphAsChild","replaceNodeWithListItems","emptyListItemNode","withChildren","marks","insertListItem","paragraph","paragraphPath","listItem","listItemNode","listItemPath","isAtStart","isSelectionAtBlockStart","isAtEnd","isSelectionAtBlockEnd","isAtStartOfListItem","isFirstChild","shouldSplit","splitNodes","newListItemPath","fromPath","fromStartIndex","toPath","moveChildren","to","listBreak","res","getListItemEntry","moved","list","childNode","isBlockAboveEmpty","moveListItemUp","didReset","onKeyDownResetNode","mockPlugin","getPluginType","ELEMENT_LI","defaultType","ELEMENT_DEFAULT","predicate","onReset","unwrapList","SIMULATE_BACKSPACE","inserted","insertListBreak","insertBreak","getFirstAncestorOfType","ancestor","parent","isListRoot","trimList","listRoot","textEntries","texts","commonAncestorEntry","commonAncestor","textEntry","isAncestor","trimLiWrapper","unwrapTextContainerAtStart","insertListFragment","insertFragment","fragment","liEntry","findNode","firstBlockIndex","findIndex","isBlock","filtered","validLiChildrenTypes","LIST_ITEM_BLOCKS","withList","deleteBackward","deleteForward","deleteFragment","deleteBackwardList","deleteForwardList","deleteFragmentList","normalizeNode","normalizeList","createListPlugin","createPlateListPlugin","overrideByKey","ELEMENT_UL","withOverrides","ELEMENT_OL","ELEMENT_LIC","ToolbarListButton","toggleList","ListBulletedIcon","ListNumberedIcon","ToolbarBoldButton","toggleMark","MARKS","BOLD","isMarkActive","FormatBoldIcon","bold","fontWeight","Bold","isGoogleBoldWrapper","startsWith","createBoldPlugin","createDefaultBoldPlugin","validStyle","someHtmlElement","ToolbarCodeButton","CODE","CodeIcon","fontFamily","Code","createCodePlugin","createDefaultCodePlugin","ToolbarItalicButton","ITALIC","FormatItalicIcon","italic","fontStyle","Italic","createItalicPlugin","createDefaultItalicPlugin","ToolbarUnderlineButton","UNDERLINE","FormatUnderlinedIcon","Underline","createUnderlinePlugin","createDefaultUnderlinePlugin","createMarksPlugin","isTextContainer","baseRules","NormalizerError","createValidatorFromTypes","getChildren","createTransformerFromObject","transforms","fallback","transformer","withNormalizer","_rules","_rule","rule","isPlainObject","_transform","tr","isValidChild","invalidChildEntry","createNormalizerPlugin","Paragraph","isEmbedElement","hasAttribute","isEmptyElement","textContent","createParagraphPlugin","createDefaultParagraphPlugin","sanitizeSheets","doc","supported","selector","querySelector","tables","querySelectorAll","row","remove","rows","colIndex","cells","cell","isEmpty","every","stripStyleTags","e","transformers","sanitizeHTML","html","cb","DOMParser","parseFromString","innerHTML","createPasteHTMLPlugin","inject","pluginsByKey","KEY_DESERIALIZE_HTML","insertData","format","transformData","borderLeft","gray200","paddingLeft","Quote","toggleQuote","anchor","isTripleSelection","quote","onKeyDownToggleQuote","plugin","createQuotePlugin","ToolbarQuoteButton","QuoteIcon","createSelectOnBackspacePlugin","createDefaultSelectPlugin","hasTables","isTableHeaderCell","hasHeadersOutsideFirstRow","addTableTrackingEvents","getData","markupBefore","markupAfter","tablePasted","useTracking","onAction","trackingMemo","actionName","origin","TrackingProvider","useTrackingContext","addRow","getNextRowPath","someNode","ELEMENT_TABLE","currentRowItem","ELEMENT_TR","currentRowElem","currentRowPath","nextRowPath","getEmptyRowNode","header","colCount","addRowBelow","addRowAbove","addColumn","getNextCellPath","currentCellItem","ELEMENT_TD","ELEMENT_TH","currentTableItem","nextCellPath","newCellPath","replacePathPos","rowIdx","getEmptyCellNode","addColumnRight","currentCellPath","addColumnLeft","setHeader","enable","tableItem","insertTableAndFocusFirstCell","insertTable","replaceEmptyParagraphWithTable","isTableActive","tableElements","isTableHeaderEnabled","tablePath","previousPath","previous","previousNode","isPreviousNodeTextEmpty","moveNodes","getNoOfMissingTableCellsInRow","rowPath","tableWidth","Math","max","rowWidth","createEmptyTableCells","count","emptyTableCell","isNotEmpty","topRight","right","getCurrentTableSize","TableActions","useState","isHeaderEnabled","setHeaderEnabled","close","useCallback","canInsertRowAbove","headerCell","toggleHeader","action","tableSize","onOpen","IconButton","tabIndex","Divider","deleteRow","deleteColumn","deleteTable","gray400","Cell","HeaderCell","Row","Table","createTableOnKeyDown","defaultHandler","onKeyDownTable","createTablePlugin","createDefaultTablePlugin","fragments","fragmentHasTable","emptyParagraph","isNestedTable","getBlockAbove","TABLE_ROW","howMany","getLastChildPath","ToolbarTableButton","TableIcon","createTextPlugin","inlinePath","above","n","isEnd","point","after","deleteEmptyParagraph","deleteFunction","paragraphOrHeading","isTextEmpty","createTrailingParagraphPlugin","createTrailingBlockPlugin","transformVoid","validVoid","createVoidsPlugin","before","textNode","getPlugins","createDeserializeHtmlPlugin","createDeserializeAstPlugin","createDeserializeDocxPlugin","disableCorePlugins","deserializeAst","eventEditor","STYLE_EDITOR_BORDER","borderRadius","borderRadiusMedium","border","borderTop","padding","fontStackPrimary","minHeight","background","colorWhite","outline","overflowWrap","webkitUserModify","hiddenToolbar","enabled","gray100","EmbeddedEntityDropdownButton","onToggle","PlusIcon","EmbedEntityWidget","canInsertBlocks","isEmbedDropdownOpen","setEmbedDropdownOpen","onCloseEntityDropdown","onToggleEntityDropdown","canAccessAssets","setCanAccessAssets","access","can","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","numEnabledEmbeds","shouldDisplayDropdown","toolbar","backgroundColor","divider","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Toolbar","validationInfo","getValidationInfo","isListSelected","isBlockquoteSelected","shouldDisableTables","isAnyMarkEnabled","isAnyHyperlinkEnabled","isAnyBlockFormattingEnabled","someWithValidation","vals","validation","val","nativeSticky","StickyToolbarWrapper","ConnectedRichTextEditor","setValue","classNames","isToolbarHidden","docFromAdapter","toSlatejsDocument","Contentful","schema","force","Plate","editableProps","readOnly","slateDoc","contentfulDoc","toContentfulDocument","RichTextEditor","isInitiallyDisabled","otherProps","isEmptyValue","deepEquals","FieldConnector","throttle","isEqualValues","lastRemoteValue","externalReset","URI","ENTRY","ASSET","isFeaturingEntitySelector","entitySelectorConfigs","HyperlinkDialog","handleSubmit","getValue","setTargetEntity","allowedHyperlinkTypes","setState","requiresText","hideText","render","labels","renderFields","confirm","isUriInputAutoFocused","renderEntityField","resetEntity","entityLink","isEntitySelectorVisible","renderEntitySelector","marginTop","propTypes","PropTypes","shape","oneOf","arrayOf","bool","func","defaultProps","openRichTextDialog","parameters","renderRichTextDialog","invocation","startAutoResizer"],"mappings":"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"}
|