@contentful/field-editor-rich-text 3.4.10 → 3.4.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 +6 -0
- package/dist/field-editor-rich-text.cjs.development.js +57 -1
- 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 +61 -5
- package/dist/field-editor-rich-text.esm.js.map +1 -1
- package/dist/plugins/PasteHTML/utils/sanitizeAnchors.d.ts +19 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-editor-rich-text.cjs.development.js","sources":["../src/internal/hooks.ts","../src/ContentfulEditorProvider.ts","../src/internal/misc.ts","../src/plugins/Break/createSoftBreakPlugin.ts","../src/plugins/Break/createExitBreakPlugin.ts","../src/plugins/Break/createResetNodePlugin.ts","../src/plugins/CommandPalette/utils/trimLeadingSlash.ts","../src/SdkProvider.tsx","../src/plugins/CommandPalette/hooks/useCommandList.tsx","../src/internal/queries.ts","../src/internal/transforms.ts","../src/helpers/environment.ts","../src/helpers/editor.ts","../src/helpers/validations.ts","../src/plugins/CommandPalette/constants.ts","../src/plugins/CommandPalette/utils/createInlineEntryNode.ts","../../../node_modules/regenerator-runtime/runtime.js","../src/plugins/CommandPalette/utils/fetchAssets.ts","../src/plugins/CommandPalette/utils/fetchEntries.ts","../src/plugins/CommandPalette/utils/insertBlock.ts","../src/plugins/CommandPalette/useCommands.ts","../src/plugins/CommandPalette/components/CommandList.styles.ts","../src/plugins/CommandPalette/components/CommandList.tsx","../src/plugins/CommandPalette/components/CommandPrompt.tsx","../src/plugins/CommandPalette/onKeyDown.ts","../src/plugins/CommandPalette/createCommandPalettePlugin.ts","../src/plugins/DragAndDrop/index.tsx","../src/plugins/links-tracking.tsx","../src/plugins/shared/FetchingWrappedAssetCard.tsx","../src/plugins/shared/FetchingWrappedEntryCard.tsx","../src/plugins/EmbeddedEntityBlock/LinkedEntityBlock.tsx","../src/helpers/getLinkedContentTypeIdsForNodeType.ts","../src/helpers/newEntitySelectorConfigFromRichTextField.ts","../src/helpers/sdkNavigatorSlideIn.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/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/HyperlinkModal.tsx","../src/plugins/Hyperlink/components/ToolbarHyperlinkButton.tsx","../src/plugins/Hyperlink/utils.ts","../src/plugins/Hyperlink/useEntityInfo.ts","../src/plugins/Hyperlink/components/styles.ts","../src/plugins/Hyperlink/components/EntityHyperlink.tsx","../src/plugins/Hyperlink/components/UrlHyperlink.tsx","../src/plugins/Hyperlink/createHyperlinkPlugin.ts","../src/plugins/List/components/List.tsx","../src/plugins/List/components/ListItem.tsx","../src/plugins/List/transforms/moveListItemDown.ts","../src/plugins/List/transforms/moveListItems.ts","../src/internal/constants.ts","../src/plugins/List/transforms/unwrapList.ts","../src/plugins/List/transforms/toggleList.ts","../src/plugins/List/onKeyDownList.ts","../src/plugins/List/utils.ts","../src/plugins/List/transforms/insertListItem.ts","../src/plugins/List/insertListBreak.ts","../src/plugins/List/insertListFragment.ts","../src/plugins/List/transforms/deleteBackwardList.ts","../src/plugins/List/withList.ts","../src/plugins/List/createListPlugin.ts","../src/plugins/List/components/ToolbarListButton.tsx","../src/plugins/Marks/helpers.ts","../src/plugins/Marks/components/MarkToolbarButton.tsx","../src/plugins/Marks/Bold.tsx","../src/plugins/Marks/Code.tsx","../src/plugins/Marks/Italic.tsx","../src/plugins/Marks/Subscript.tsx","../src/plugins/Marks/Superscript.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/shouldResetQuote.ts","../src/plugins/Quote/toggleQuote.ts","../src/plugins/Quote/withQuote.ts","../src/plugins/Quote/createQuotePlugin.ts","../src/plugins/Quote/components/ToolbarQuoteButton.tsx","../src/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.ts","../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/insertTableFragment.ts","../src/plugins/Table/onKeyDownTable.ts","../src/constants/Schema.ts","../src/plugins/Tracking/utils.ts","../src/plugins/Tracking/createTrackingPlugin.ts","../src/plugins/Table/tableTracking.ts","../src/plugins/Table/createTablePlugin.ts","../src/plugins/Table/components/ToolbarButton.tsx","../src/plugins/Text/createTextPlugin.ts","../src/plugins/TrailingParagraph/index.ts","../src/plugins/Voids/createVoidsPlugin.ts","../src/plugins/index.ts","../src/helpers/sanitizeIncomingSlateDoc.ts","../src/prepareDocument.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/helpers/removeInternalMarks.ts","../src/useOnValueChanged.ts","../src/RichTextEditor.tsx","../src/dialogs/HypelinkDialog/HyperlinkDialog.jsx","../src/dialogs/openRichTextDialog.tsx","../src/dialogs/renderRichTextDialog.tsx"],"sourcesContent":["import * as p from '@udecode/plate-core';\nimport * as sr from 'slate-react';\n\nexport const useReadOnly = sr.useReadOnly;\nexport const usePlateEditorRef = p.usePlateEditorRef;\nexport const usePlateEditorState = p.usePlateEditorState;\n","import { createContext, useContext } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\n\nimport { usePlateEditorRef, usePlateEditorState } from './internal/hooks';\nimport { Value, PlateEditor } from './internal/types';\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\nexport const editorContext = createContext('');\n\nexport const ContentfulEditorIdProvider = editorContext.Provider;\n\nexport function useContentfulEditorId(id?: string) {\n const contextId = useContext(editorContext);\n\n if (id) {\n return id;\n }\n\n if (!contextId) {\n throw new Error(\n 'could not find editor id. Please ensure the component is wrapped in <ContentfulEditorIdProvider> '\n );\n }\n\n return contextId;\n}\n\n// This hook re-renders when the value changes\n// Use case: Toolbar icons, for example\nexport function useContentfulEditor(id?: string) {\n const editorId = useContentfulEditorId(id);\n const editor = usePlateEditorState<Value, PlateEditor>(editorId);\n\n return editor;\n}\n\n// This doesn't re-render when the value changes\nexport function useContentfulEditorRef(id?: string) {\n const editorId = useContentfulEditorId(id);\n const editor = usePlateEditorRef<Value, PlateEditor>(editorId);\n\n return editor;\n}\n","import * as p from '@udecode/plate-core';\nimport { StoreApiGet } from '@udecode/zustood';\nimport * as s from 'slate';\n\nimport type { Value, PlateEditor, Location, PlatePlugin } from './types';\n\nexport type CreatePlateEditorOptions = Omit<\n p.CreatePlateEditorOptions<Value, PlateEditor>,\n 'plugins'\n> & {\n plugins?: PlatePlugin[];\n};\nexport const createPlateEditor = (options: CreatePlateEditorOptions = {}) => {\n return p.createPlateEditor<Value, PlateEditor>(\n options as p.CreatePlateEditorOptions<Value, PlateEditor>\n );\n};\n\nexport const withoutNormalizing = (editor: PlateEditor, fn: () => boolean | void) => {\n return p.withoutNormalizing(editor, fn);\n};\n\nexport const focusEditor = (editor: PlateEditor, target?: Location) => {\n p.focusEditor(editor, target);\n};\n\nexport const blurEditor = (editor: PlateEditor) => {\n p.blurEditor(editor);\n};\n\nexport const selectEditor = (editor: PlateEditor, opts: p.SelectEditorOptions) => {\n p.selectEditor(editor, opts);\n};\n\nexport const fromDOMPoint = (\n editor: PlateEditor,\n domPoint: [Node /* DOM Node*/, number],\n opts = { exactMatch: false, suppressThrow: false }\n): s.BasePoint | null | undefined => {\n return p.toSlatePoint(editor, domPoint, opts);\n};\n\nexport const mockPlugin = (plugin?: Partial<PlatePlugin> | undefined) => {\n return p.mockPlugin(\n // TODO check if there is a way around this ugly casting\n plugin as unknown as\n | Partial<p.PlatePlugin<p.AnyObject, p.Value, p.PlateEditor<p.Value>>>\n | undefined\n );\n};\n\nexport const getPlateSelectors = (\n id?: string | undefined\n): StoreApiGet<p.PlateStoreState<Value, PlateEditor>, {}> => {\n return p.getPlateSelectors(id);\n};\n","import {\n createSoftBreakPlugin as createDefaultSoftBreakPlugin,\n SoftBreakRule,\n} from '@udecode/plate-break';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createSoftBreakPlugin = (): PlatePlugin =>\n createDefaultSoftBreakPlugin({\n then: (editor) => {\n const rules: SoftBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).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 { PlatePlugin } from '../../internal/types';\n\nexport const createExitBreakPlugin = (): PlatePlugin =>\n createDefaultExitBreakPlugin({\n options: {\n rules: [],\n },\n then: (editor) => {\n const rules: ExitBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).exitBreak || [];\n });\n\n return {\n options: { rules },\n };\n },\n });\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport {\n createResetNodePlugin as createDefaultResetNodePlugin,\n ResetNodePlugin,\n} from '@udecode/plate-reset-node';\n\nimport { PlatePlugin, Value, PlateEditor } from '../../internal/types';\n\nexport const createResetNodePlugin = (): PlatePlugin =>\n createDefaultResetNodePlugin<ResetNodePlugin<Value, PlateEditor>, Value, PlateEditor>({\n options: {\n rules: [],\n },\n then: (editor) => {\n const rules = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).resetNode || [];\n });\n\n // set defaultType to Paragraph if not set\n for (const rule of rules) {\n if (!rule.defaultType) {\n rule.defaultType = BLOCKS.PARAGRAPH;\n }\n }\n\n return {\n options: { rules },\n };\n },\n });\n","/**\n * Trim leading slash character if found. Bails otherwise.\n *\n * @example\n * trimLeadingSlash(\"/my query\") // --> \"my query\"\n */\nexport function trimLeadingSlash(text: string) {\n if (!text.startsWith('/')) {\n return text;\n }\n\n return text.slice(1);\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 -- TODO: explain this disable\n\n return sdkMemo;\n}\n\nexport const [SdkProvider, useSdkContext] = constate(useSdk);\n","import * as React from 'react';\n\nimport isHotkey from 'is-hotkey';\n\nexport const useCommandList = (commandItems, container) => {\n const [selectedItem, setSelectedItem] = React.useState<string>(() => {\n // select the first item on initial render\n if (!commandItems.length) {\n return '';\n }\n if ('group' in commandItems[0]) {\n return commandItems[0].commands[0].id;\n }\n return commandItems[0].id;\n });\n const [isOpen, setIsOpen] = React.useState(commandItems.length > 0);\n\n React.useEffect(() => {\n if (!container.current) {\n return;\n }\n const buttons = Array.from(container.current.querySelectorAll('button')) as HTMLButtonElement[];\n const currBtn = buttons.find((btn) => btn.id === selectedItem);\n const currIndex = currBtn ? buttons.indexOf(currBtn) : 0;\n const shouldSelectFirstBtn = !currBtn && buttons.length;\n\n if (shouldSelectFirstBtn) {\n setSelectedItem(buttons[0].id);\n buttons[0].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (isHotkey('up', event)) {\n event.preventDefault();\n if (currIndex === 0) {\n return;\n }\n setSelectedItem(buttons[currIndex - 1].id);\n buttons[currIndex - 1].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n } else if (isHotkey('down', event)) {\n event.preventDefault();\n if (currIndex === buttons.length - 1) {\n return;\n }\n setSelectedItem(buttons[currIndex + 1].id);\n buttons[currIndex + 1].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n } else if (isHotkey('enter', event)) {\n event.preventDefault();\n if (currBtn) {\n setSelectedItem('');\n currBtn.click();\n }\n }\n //TODO: handle shift+enter, which must be detected using separate events\n }\n\n if (commandItems.length) {\n window.addEventListener('keydown', handleKeyDown);\n }\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [commandItems, container, selectedItem]);\n\n React.useEffect(() => {\n const handleMousedown = (event) => {\n if (container.current && !container.current.contains(event.target)) {\n setIsOpen(false);\n }\n };\n document.addEventListener('mousedown', handleMousedown);\n return () => {\n document.removeEventListener('mousedown', handleMousedown);\n };\n }, [container]);\n\n return {\n selectedItem,\n isOpen,\n };\n};\n","/**\n * Re-exporting Plate/Slate queries (aka selectors) to reduce\n * the blast radius of version upgrades\n */\nimport * as p from '@udecode/plate-core';\nimport * as s from 'slate';\n\nimport type {\n Value,\n PlateEditor,\n Location,\n Node,\n NodeEntry,\n BaseRange,\n Element,\n Text,\n Ancestor,\n BasePoint,\n Path,\n} from './types';\n\n/**\n * Get text content at location\n */\nexport const getText = (editor: PlateEditor, at?: Location) => {\n return p.getEditorString(editor, at);\n};\n\nexport const isText = (value: unknown): value is Text => {\n return p.isText(value);\n};\n\nexport const getEndPoint = (editor: PlateEditor, at: Location) => {\n return p.getEndPoint(editor, at);\n};\n\nexport const getStartPoint = (editor: PlateEditor, at: Location) => {\n return p.getStartPoint(editor, at);\n};\n\nexport const isNode = (value: unknown): value is Node => {\n return p.isNode(value);\n};\n\nexport const isSelectionAtBlockEnd = (\n editor: PlateEditor,\n options?: p.GetAboveNodeOptions<Value>\n) => {\n return p.isSelectionAtBlockEnd(editor, options);\n};\n\nexport const isSelectionAtBlockStart = (\n editor: PlateEditor,\n options?: p.GetAboveNodeOptions<Value>\n) => {\n return p.isSelectionAtBlockStart(editor, options);\n};\n\nexport const getBlockAbove = (editor: PlateEditor, options?: p.GetAboveNodeOptions<p.Value>) => {\n return p.getBlockAbove(editor, options);\n};\n\nexport const getNodeEntry = (editor: PlateEditor, at: Location, options?: s.EditorNodeOptions) => {\n return p.getNodeEntry(editor, at, options);\n};\n\nexport const getNodeEntries = (editor: PlateEditor, options?: p.GetNodeEntriesOptions) => {\n return p.getNodeEntries(editor, options);\n};\n\n// TODO: Ancestor may not be the correct type for root\nexport const getNodeChildren = (\n root: Ancestor,\n path: Path,\n options?: s.NodeChildrenOptions | undefined\n) => {\n return p.getNodeChildren(root, path, options);\n};\n\nexport const getParentNode = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorParentOptions\n) => {\n return p.getParentNode(editor, at, options) as NodeEntry | undefined;\n};\n\nexport const someNode = (editor: PlateEditor, options: p.FindNodeOptions) => {\n return p.someNode(editor, options);\n};\n\nexport const getChildren = (entry: NodeEntry) => {\n // Node.children crashes when given a text node\n if (s.Text.isText(entry[0])) {\n return [];\n }\n\n return p.getChildren(entry) as NodeEntry[];\n};\n\nexport const isFirstChild = (path: Path) => {\n return p.isFirstChild(path);\n};\n\nexport const getDescendantNodeByPath = (root: Node, path: s.Path): Node => {\n // @ts-expect-error\n return s.Node.get(root, path);\n};\n\nexport const getNodeDescendants = (\n root: PlateEditor | Node,\n options?: s.NodeDescendantsOptions\n) => {\n return p.getNodeDescendants(root, { ...options, pass: undefined });\n};\n\nexport const isRangeCollapsed = (range?: BaseRange) => {\n return p.isCollapsed(range);\n};\n\n// TODO: simplify\nexport const isRangeAcrossBlocks = (\n editor: p.TEditor<p.Value>,\n options?:\n | (Omit<p.GetAboveNodeOptions<p.Value>, 'at'> & { at?: s.BaseRange | null | undefined })\n | undefined\n) => {\n return p.isRangeAcrossBlocks(editor, options);\n};\n\nexport const isRangeExpanded = (range?: BaseRange) => {\n return p.isExpanded(range);\n};\n\nexport const getRange = (editor: PlateEditor, at: Location, to?: Location) => {\n return p.getRange(editor, at, to);\n};\n\nexport const getRangeEdges = (range: BaseRange) => {\n return s.Range.edges(range);\n};\n\nexport const getRangeStart = (range: BaseRange) => {\n return s.Range.start(range);\n};\n\nexport const getRangeEnd = (range: BaseRange) => {\n return s.Range.end(range);\n};\n\nexport const getAboveNode = (editor: PlateEditor, opts?: p.GetAboveNodeOptions<Value>) => {\n return p.getAboveNode(editor, opts) as NodeEntry | undefined;\n};\n\nexport const getNextNode = (editor: PlateEditor, opts?: p.GetNextNodeOptions<Value>) => {\n return p.getNextNode(editor, opts) as NodeEntry | undefined;\n};\n\nexport const getCommonNode = (\n root: PlateEditor | Node,\n path: s.Path,\n another: s.Path\n): NodeEntry => {\n return p.getCommonNode(root, path, another);\n};\n\nexport const getNodeTexts = (\n root: Node,\n opts?: {\n from?: s.Path;\n to?: s.Path;\n pass?: (ne: NodeEntry) => boolean;\n reverse?: boolean;\n }\n) => {\n return p.getNodeTexts(root, opts);\n};\n\nexport const findNode = (editor: PlateEditor, options?: p.FindNodeOptions<p.Value> | undefined) => {\n return p.findNode(editor, options);\n};\n\nexport const isMarkActive = (editor: PlateEditor, type: string) => {\n return p.isMarkActive(editor, type);\n};\n\nexport const getMarks = (editor: PlateEditor) => {\n return p.getMarks(editor);\n};\n\nexport const isEditor = (value: unknown): value is PlateEditor => {\n return p.isEditor(value);\n};\n\nexport const isEditorReadOnly = (editor: PlateEditor) => {\n return p.isEditorReadOnly(editor);\n};\n\nexport const isElement = (value: unknown): value is Element => {\n return p.isElement(value);\n};\n\nexport const isBlockNode = (editor: PlateEditor, value: unknown): value is Element => {\n return p.isBlock(editor, value);\n};\n\nexport const findNodePath = (editor: PlateEditor, node: Node) => {\n return p.findNodePath(editor, node);\n};\n\nexport const isAncestorPath = (path: s.Path, another: s.Path) => {\n return s.Path.isAncestor(path, another);\n};\n\nexport const isAncestorEmpty = (editor: PlateEditor, node: Ancestor) => {\n return p.isAncestorEmpty(editor, node);\n};\n\nexport const getParentPath = (path: s.Path) => {\n return s.Path.parent(path);\n};\n\nexport const getNextPath = (path: s.Path) => {\n return s.Path.next(path);\n};\n\nexport const getPreviousPath = (path: s.Path) => {\n return s.Path.previous(path);\n};\n\nexport const getLastChildPath = (nodeEntry: NodeEntry) => {\n return p.getLastChildPath(nodeEntry);\n};\n\nexport const getPathLevels = (path: s.Path, options?: s.PathLevelsOptions) => {\n return s.Path.levels(path, options);\n};\n\nexport const isCommonPath = (path: s.Path, anotherPath: s.Path) => {\n return s.Path.isCommon(path, anotherPath);\n};\n\nexport const isFirstChildPath = (path: s.Path) => {\n return p.isFirstChild(path);\n};\n\nexport const isLastChildPath = (entry: NodeEntry, childPath: s.Path) => {\n return p.isLastChild(entry, childPath);\n};\n\nexport const isChildPath = (path: s.Path, another: s.Path) => {\n return s.Path.isChild(path, another);\n};\n\nexport const matchNode = (node: Node, path: s.Path, fn: p.Predicate<PlateEditor | Node>) => {\n return p.match(node, path, fn);\n};\n\nexport const someHtmlElement = (\n rootNode: globalThis.Node,\n predicate: (node: HTMLElement) => boolean\n) => {\n return p.someHtmlElement(rootNode, predicate);\n};\n\nexport const getPointBefore = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorBeforeOptions\n) => {\n return p.getPointBefore(editor, at, options);\n};\n\nexport const getPointAfter = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorAfterOptions\n) => {\n return p.getPointAfter(editor, at, options);\n};\n\nexport const isEndPoint = (\n editor: PlateEditor,\n point: BasePoint | null | undefined,\n at: Location\n) => {\n return p.isEndPoint(editor, point, at);\n};\n\nexport const isInline = (editor: PlateEditor, value: unknown) => {\n return p.isInline(editor, value);\n};\n\nexport const queryNode = (entry?: NodeEntry, options?: p.QueryNodeOptions) => {\n return p.queryNode(entry, options);\n};\n\nexport const getPluginType = (editor: PlateEditor, key: string) => {\n return p.getPluginType(editor, key);\n};\n\nexport const createPathRef = (editor: PlateEditor, at: Path) => {\n return p.createPathRef(editor, at);\n};\n\nexport const match = (obj: Node, path: Path, predicate?: p.Predicate<Node> | undefined) => {\n return p.match(obj, path, predicate);\n};\n\nexport const getLastNodeByLevel = (editor: PlateEditor, level: number): NodeEntry | undefined => {\n return p.getLastNodeByLevel(editor, level);\n};\n","import * as p from '@udecode/plate-core';\nimport * as s from 'slate';\nimport { Except } from 'type-fest';\n\nimport {\n PlateEditor,\n Node,\n ToggleNodeTypeOptions,\n EditorNodesOptions,\n BaseRange,\n Value,\n SelectionMoveOptions,\n TextInsertTextOptions,\n Element,\n SelectionCollapseOptions,\n Path,\n Span,\n BasePoint,\n Location,\n} from './types';\n\n/**\n * Apply editor normalization rules\n */\nexport const normalize = (\n editor: PlateEditor,\n options: s.EditorNormalizeOptions = { force: true }\n) => {\n return p.normalizeEditor(editor, options);\n};\n\n/**\n * Set the selection to a location\n */\nexport const setSelection = (editor: PlateEditor, props: Partial<BaseRange>) => {\n return p.setSelection(editor, props);\n};\n\nexport const select = (editor: PlateEditor, location: Location) => {\n return p.select(editor, location);\n};\n\nexport const moveSelection = (editor: PlateEditor, options?: SelectionMoveOptions) => {\n return p.moveSelection(editor, options);\n};\n\nexport const moveChildren = (editor: PlateEditor, options: p.MoveChildrenOptions<Value>) => {\n return p.moveChildren(editor, options);\n};\n\nexport const collapseSelection = (editor: PlateEditor, options?: SelectionCollapseOptions) => {\n return p.collapseSelection(editor, options);\n};\n\nexport const setNodes = (\n editor: PlateEditor,\n attrs: Partial<Except<Node, 'children' | 'text'>>,\n opts?: p.SetNodesOptions<Value>\n) => {\n p.setNodes(editor, attrs, opts);\n};\n\nexport const unsetNodes = (\n editor: PlateEditor,\n props: string | number | (string | number)[],\n options?: p.UnsetNodesOptions<Value> | undefined\n) => {\n p.unsetNodes(editor, props, options);\n};\n\nexport const insertNodes = (\n editor: PlateEditor,\n nodes: Node | Node[],\n opts?: p.InsertNodesOptions\n) => {\n return p.insertNodes(editor, nodes, opts);\n};\n\nexport const splitNodes = (editor: PlateEditor, options?: p.SplitNodesOptions<Value>) => {\n return p.splitNodes(editor, options);\n};\n\nexport const liftNodes = (editor: PlateEditor, options?: p.LiftNodesOptions<Value> | undefined) => {\n return p.liftNodes(editor, options);\n};\n\nexport const unwrapNodes = (editor: PlateEditor, options?: p.UnwrapNodesOptions<Value>) => {\n return p.unwrapNodes(editor, options);\n};\n\nexport const wrapNodes = (\n editor: PlateEditor,\n element: Element,\n options?: p.WrapNodesOptions<Value>\n) => {\n return p.wrapNodes(editor, element, options);\n};\n\nexport const toggleNodeType = (\n editor: PlateEditor,\n options: ToggleNodeTypeOptions,\n editorOptions?: Omit<EditorNodesOptions, 'match'>\n) => {\n p.toggleNodeType(editor, options, editorOptions);\n};\n\nexport const removeMark = (editor: PlateEditor, type: string, at: BaseRange) => {\n p.removeMark(editor, { key: type, at });\n};\n\nexport const unhangRange = (\n editor: PlateEditor,\n range?: Path | BasePoint | BaseRange | Span | null | undefined,\n options?: p.UnhangRangeOptions | undefined\n) => {\n return p.unhangRange(editor, range, options);\n};\n\nexport const toggleMark = (\n editor: PlateEditor,\n options: p.ToggleMarkOptions<Value, keyof p.TText>\n) => {\n return p.toggleMark(editor, options);\n};\n\nexport const addMark = (editor: PlateEditor, type: string, value: unknown = true) => {\n p.addMark(editor, type, value);\n};\n\nexport const insertText = (editor: PlateEditor, text: string, options?: TextInsertTextOptions) => {\n return p.insertText(editor, text, options);\n};\n\nexport const deleteText = (editor: PlateEditor, opts?: Parameters<typeof p.deleteText>['1']) => {\n p.deleteText(editor, opts);\n};\n\nexport const removeNodes = (editor: PlateEditor, opts?: p.RemoveNodesOptions<Value>) => {\n p.removeNodes(editor, opts);\n};\n\nexport const moveNodes = (editor: PlateEditor, opts?: p.MoveNodesOptions<Value>) => {\n p.moveNodes(editor, opts);\n};\n\nexport const deleteFragment = (\n editor: PlateEditor,\n options?: s.EditorFragmentDeletionOptions | undefined\n) => {\n return p.deleteFragment(editor, options);\n};\n","export const IS_SAFARI =\n typeof navigator !== 'undefined' && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\n\nexport const IS_CHROME = /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9.]+)(:?\\s|$)/.test(\n navigator.userAgent\n);\n","import { Link } from '@contentful/field-editor-reference/dist/types';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { focusEditor } from '../internal/misc';\nimport {\n getText,\n getNodeEntries,\n getNodeEntry,\n getNodeDescendants,\n isText,\n isRangeCollapsed as isSelectionCollapsed,\n isEditor,\n isElement,\n getPathLevels,\n isCommonPath,\n} from '../internal/queries';\nimport {\n setNodes,\n select,\n insertNodes,\n toggleNodeType,\n moveSelection,\n unwrapNodes,\n insertText,\n wrapNodes,\n deleteText,\n collapseSelection,\n} from '../internal/transforms';\nimport { EditorNodesOptions, ToggleNodeTypeOptions, Node, Path } from '../internal/types';\nimport { Element, PlateEditor } from '../internal/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: PlateEditor, type: string): boolean {\n const [match] = Array.from(\n getNodeEntries(editor, {\n match: (node) => isElement(node) && node.type === type,\n })\n );\n return !!match;\n}\n\nexport function isRootLevel(path: Path): boolean {\n return path.length === 1;\n}\n\ntype NodeEntry = [Element, Path];\ntype NodeType = BLOCKS | INLINES;\nexport function getNodeEntryFromSelection(\n editor: PlateEditor,\n nodeTypeOrTypes: NodeType | NodeType[],\n path?: Path\n): NodeEntry | [] {\n path = path ?? editor.selection?.focus.path;\n if (!path) return [];\n const nodeTypes = Array.isArray(nodeTypeOrTypes) ? nodeTypeOrTypes : [nodeTypeOrTypes];\n for (let i = 0; i < path.length; i++) {\n const nodeEntry = getNodeEntry(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(\n editor: PlateEditor | null,\n nodeType: BLOCKS | INLINES\n): boolean {\n if (!editor) return false;\n const [node] = getNodeEntryFromSelection(editor, nodeType);\n return !!node;\n}\n\nexport function moveToTheNextLine(editor: PlateEditor) {\n moveSelection(editor, { distance: 1, unit: 'line' });\n}\n\nexport function moveToTheNextChar(editor: PlateEditor) {\n moveSelection(editor, { distance: 1, unit: 'offset' });\n}\n\nexport function insertEmptyParagraph(editor: PlateEditor, options?) {\n const emptyParagraph: Element = {\n type: BLOCKS.PARAGRAPH,\n children: [{ text: '' }],\n data: {},\n isVoid: false,\n };\n insertNodes(editor, emptyParagraph, options);\n}\n\nexport function getElementFromCurrentSelection(editor: PlateEditor) {\n if (!editor.selection) return [];\n\n return Array.from(\n getNodeEntries(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) => isElement(node),\n })\n ).flat();\n}\n\nexport function isList(editor?: PlateEditor) {\n if (!editor) {\n return false;\n }\n\n const element = getElementFromCurrentSelection(editor);\n\n return element.some(\n (element) => isElement(element) && LIST_TYPES.includes(element.type as BLOCKS)\n );\n}\n\nexport function getTableSize(table: Element): 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 Element).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?: PlateEditor | null) {\n if (!editor) {\n return false;\n }\n\n const [link] = Array.from(\n getNodeEntries(editor, {\n match: (node) =>\n !isEditor(node) && isElement(node) && LINK_TYPES.includes(node.type as INLINES),\n })\n );\n return !!link;\n}\n\n// TODO: move to hyperlink plugin\nexport function unwrapLink(editor) {\n unwrapNodes(editor, {\n match: (node) =>\n !isEditor(node) && isElement(node) && LINK_TYPES.includes(node.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 && isSelectionCollapsed(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 setNodes(editor, link, { at: path });\n insertText(editor, text, { at: path });\n select(editor, path);\n } else if (isCollapsed) {\n insertNodes(editor, link);\n } else {\n wrapNodes(editor, link, { split: true });\n deleteText(editor);\n insertText(editor, text);\n collapseSelection(editor, { edge: 'end' });\n }\n}\n\nexport function getAncestorPathFromSelection(editor: PlateEditor) {\n if (!editor.selection) return undefined;\n\n return getPathLevels(editor.selection.focus.path).find((level) => level.length === 1);\n}\n\nexport const isAtEndOfTextSelection = (editor: PlateEditor) =>\n editor.selection?.focus.offset === getText(editor, editor.selection?.focus.path).length;\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): Element | null {\n if (!editor.selection) {\n return null;\n }\n const descendants = getNodeDescendants(editor, { from: editor.selection.focus.path });\n // eslint-disable-next-line no-constant-condition -- TODO: explain this disable\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 (isCommonPath(path, editor.selection.focus.path)) {\n continue;\n }\n return node as Element;\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 isText(node) || (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 focusEditor(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\nexport function toggleElement(\n editor: PlateEditor,\n options: ToggleNodeTypeOptions,\n editorOptions?: EditorNodesOptions\n) {\n toggleNodeType(editor, options, editorOptions);\n\n // We must reset `data` from one element to another\n setNodes(editor, { data: {} });\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","export const COMMAND_PROMPT = 'command-prompt';\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","/**\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","import { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n\nexport async function fetchAssets(sdk: FieldExtensionSDK, query: string) {\n const assets = await sdk.space.getAssets({ query });\n\n return assets.items.map((asset) => {\n const displayTitle = entityHelpers.getAssetTitle({\n asset,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n defaultTitle: 'Untitled',\n });\n\n return {\n contentTypeName: 'Asset',\n displayTitle,\n id: asset.sys.id,\n entity: 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}\n","import { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\nimport { ContentTypeProps } from 'contentful-management/types';\n\nexport async function fetchEntries(\n sdk: FieldExtensionSDK,\n contentType: ContentTypeProps,\n query: string\n) {\n const entries = await sdk.space.getEntries({\n content_type: contentType.sys.id,\n query,\n });\n\n return entries.items.map((entry) => {\n const description = entityHelpers.getEntityDescription({\n contentType,\n // @ts-expect-error inconsistent in typing between app-sdk & field-editors-shared\n entity: entry,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n });\n\n const displayTitle = entityHelpers.getEntryTitle({\n // @ts-expect-error inconsistent in typing between app-sdk & field-editors-shared\n entry,\n contentType,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n defaultTitle: 'Untitled',\n });\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","import { focus } from '../../../helpers/editor';\nimport { getText } from '../../../internal/queries';\nimport { setNodes, insertNodes } from '../../../internal/transforms';\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\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 insertNodes(editor, linkedEntityBlock);\n } else {\n setNodes(editor, linkedEntityBlock);\n }\n\n focus(editor);\n}\n","import { useState } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { isNodeTypeSelected } from '../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { getRange, getAboveNode } from '../../internal/queries';\nimport { select, insertNodes, deleteText, removeMark } from '../../internal/transforms';\nimport { PlateEditor } from '../../internal/types';\nimport { COMMAND_PROMPT } from './constants';\nimport { createInlineEntryNode } from './utils/createInlineEntryNode';\nimport { fetchAssets } from './utils/fetchAssets';\nimport { fetchEntries } from './utils/fetchEntries';\nimport { insertBlock } from './utils/insertBlock';\n\nexport interface Command {\n id: string;\n thumbnail?: string;\n label: string;\n callback?: () => void;\n}\n\nexport interface CommandGroup {\n group: string;\n commands: Command[];\n}\n\nexport type CommandList = (Command | CommandGroup)[];\n\nconst removeCommand = (editor: PlateEditor) => {\n const [, path] = getAboveNode(editor)!;\n const range = getRange(editor, path);\n\n select(editor, range.focus.path);\n\n removeMark(editor, COMMAND_PROMPT, range);\n deleteText(editor);\n};\n\nconst removeQuery = (editor: PlateEditor) => {\n const [, path] = getAboveNode(editor)!;\n const range = getRange(editor, path);\n\n if (range.focus.offset - range.anchor.offset > 1) {\n deleteText(editor, { at: range.focus, distance: range.focus.offset - 1, reverse: true });\n }\n};\n\nexport function isCommandPromptPluginEnabled(sdk: FieldExtensionSDK) {\n const inlineAllowed = isNodeTypeEnabled(sdk.field, INLINES.EMBEDDED_ENTRY);\n const entriesAllowed = isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ENTRY);\n const assetsAllowed = isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ASSET);\n\n return {\n inlineAllowed,\n entriesAllowed,\n assetsAllowed,\n };\n}\n\nfunction getCommandPermissions(sdk: FieldExtensionSDK, editor: PlateEditor) {\n const canInsertBlocks = !isNodeTypeSelected(editor, BLOCKS.TABLE);\n const { inlineAllowed, entriesAllowed, assetsAllowed } = isCommandPromptPluginEnabled(sdk);\n\n return {\n inlineAllowed,\n entriesAllowed: entriesAllowed && canInsertBlocks,\n assetsAllowed: assetsAllowed && canInsertBlocks,\n };\n}\n\nexport const useCommands = (sdk: FieldExtensionSDK, query: string, editor: PlateEditor) => {\n const contentTypes = sdk.space.getCachedContentTypes();\n const { inlineAllowed, entriesAllowed, assetsAllowed } = getCommandPermissions(sdk, editor);\n\n const [commands, setCommands] = useState((): CommandList => {\n const getEmbedEntry = (contentType) => {\n return {\n id: contentType.sys.id,\n label: `Embed ${contentType.name}`,\n callback: () => {\n fetchEntries(sdk, contentType, query).then((entries) => {\n removeQuery(editor);\n if (!entries.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n entries.map((entry) => {\n return {\n id: `${entry.id}-${entry.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: entry.displayTitle,\n callback: () => {\n removeCommand(editor);\n if (editor.selection) {\n const selection = editor.selection;\n editor.insertSoftBreak();\n insertBlock(editor, BLOCKS.EMBEDDED_ENTRY, entry.entry);\n select(editor, selection);\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ENTRY,\n });\n }\n },\n };\n })\n );\n }\n });\n },\n };\n };\n\n const getEmbedInline = (contentType) => {\n return {\n id: `${contentType.sys.id}-inline`,\n label: `Embed ${contentType.name} - Inline`,\n callback: () => {\n fetchEntries(sdk, contentType, query).then((entries) => {\n removeQuery(editor);\n if (!entries.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n entries.map((entry) => {\n return {\n id: `${entry.id}-${entry.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: entry.displayTitle,\n callback: () => {\n const inlineNode = createInlineEntryNode(entry.id);\n removeCommand(editor);\n insertNodes(editor, inlineNode);\n editor.insertText('');\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: INLINES.EMBEDDED_ENTRY,\n });\n },\n };\n })\n );\n }\n });\n },\n };\n };\n const contentTypeCommands =\n entriesAllowed || inlineAllowed\n ? contentTypes.map((contentType) => {\n return {\n group: contentType.name,\n commands:\n entriesAllowed && inlineAllowed\n ? [getEmbedEntry(contentType), getEmbedInline(contentType)]\n : entriesAllowed\n ? [getEmbedEntry(contentType)]\n : [getEmbedInline(contentType)],\n };\n })\n : [];\n if (assetsAllowed) {\n const assetCommand = {\n group: 'Assets',\n commands: [\n {\n id: 'embed-asset',\n label: 'Embed Asset',\n callback: () => {\n fetchAssets(sdk, query).then((assets) => {\n removeQuery(editor);\n if (!assets.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n assets.map((asset) => {\n return {\n id: `${asset.id}-${asset.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: asset.displayTitle,\n thumbnail: asset.thumbnail,\n callback: () => {\n removeCommand(editor);\n if (editor.selection) {\n const selection = editor.selection;\n editor.insertSoftBreak();\n insertBlock(editor, BLOCKS.EMBEDDED_ASSET, asset.entity);\n select(editor, selection);\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ASSET,\n });\n }\n },\n };\n })\n );\n }\n });\n },\n },\n ],\n };\n return [...contentTypeCommands, assetCommand];\n }\n return contentTypeCommands;\n });\n\n /* filter both commands and groups of commands with the user typed query */\n return query\n ? commands.reduce((list, nextItem) => {\n if ('group' in nextItem) {\n const subcommands = nextItem.commands.filter((command) => {\n return command.label.toLowerCase().includes(query.toLowerCase());\n });\n if (subcommands.length > 0) {\n list.push(nextItem);\n }\n } else {\n if (nextItem.label.toLowerCase().includes(query.toLowerCase())) {\n list.push(nextItem);\n }\n }\n return list;\n }, [] as CommandList)\n : commands;\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nconst styles = {\n container: css({\n position: 'absolute',\n zIndex: tokens.zIndexNotification,\n fontWeight: tokens.fontWeightNormal,\n fontStyle: 'normal',\n fontFamily: tokens.fontStackPrimary,\n 'ul, ol, dl': {\n listStyle: 'none',\n marginLeft: 0,\n },\n }),\n menuPoper: css({\n zIndex: tokens.zIndexModal,\n }),\n menuContent: css({\n width: '400px',\n maxHeight: '300px',\n }),\n menuList: css({\n overflow: 'auto',\n maxHeight: '200px',\n }),\n menuItem: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n menuItemSelected: css({\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n }),\n menuDivider: css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n }),\n menuHeader: css({\n zIndex: tokens.zIndexDefault,\n top: 0,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingM,\n }),\n menuFooter: css({\n position: 'sticky',\n bottom: 0,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingM,\n }),\n footerList: css({\n listStyle: 'none',\n color: tokens.gray600,\n fontSize: tokens.fontSizeM,\n }),\n thumbnail: css({\n width: '30px',\n height: '30px',\n objectFit: 'cover',\n }),\n};\n\nexport default styles;\n","import * as React from 'react';\nimport { usePopper } from 'react-popper';\n\nimport { Popover, Stack, SectionHeading, ScreenReaderOnly, Flex } from '@contentful/f36-components';\nimport { Portal } from '@contentful/f36-utils';\nimport { cx } from 'emotion';\n\nimport { PlateEditor } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { useCommandList } from '../hooks/useCommandList';\nimport { CommandList as CommandItems, Command, useCommands, CommandGroup } from '../useCommands';\nimport styles from './CommandList.styles';\n\nexport interface CommandListProps {\n query: string;\n editor: PlateEditor;\n textContainer?: HTMLSpanElement;\n}\n\nconst Group = ({\n commandGroup,\n selectedItem,\n}: {\n commandGroup: CommandGroup;\n selectedItem: string;\n}) => (\n <section key={commandGroup.group}>\n <SectionHeading\n as=\"h3\"\n marginBottom=\"spacingS\"\n marginTop=\"spacingS\"\n marginLeft=\"spacingM\"\n marginRight=\"spacingM\"\n >\n {commandGroup.group}\n </SectionHeading>\n {commandGroup.commands.map((command: Command) => (\n <button\n key={command.id}\n id={command.id}\n className={cx(styles.menuItem, {\n [styles.menuItemSelected]: command.id === selectedItem,\n })}\n onClick={command.callback}\n >\n {command.label}\n </button>\n ))}\n <hr className={styles.menuDivider} aria-orientation=\"horizontal\" />\n </section>\n);\n\nconst Asset = ({ command, selectedItem }: { command: Command; selectedItem: string }) => (\n <button\n key={command.id}\n id={command.id}\n className={cx(styles.menuItem, {\n [styles.menuItemSelected]: command.id === selectedItem,\n })}\n onClick={command.callback}\n >\n <Flex alignItems=\"center\" gap=\"spacingS\">\n {command.thumbnail && (\n <img width=\"30\" height=\"30\" src={command.thumbnail} alt=\"\" className={styles.thumbnail} />\n )}\n <span>{command.label}</span>\n </Flex>\n </button>\n);\n\nconst Item = ({ command }: { command: Command }) => (\n <button key={command.id} id={command.id} className={styles.menuItem}>\n {command.label}\n </button>\n);\n\nconst CommandListItems = ({\n commandItems,\n selectedItem,\n}: {\n commandItems: CommandItems;\n selectedItem: string;\n}) => {\n return (\n <>\n {commandItems.map((command) => {\n return 'group' in command ? (\n <Group commandGroup={command} selectedItem={selectedItem} />\n ) : command.callback ? (\n <Asset command={command} selectedItem={selectedItem} />\n ) : (\n <Item command={command} />\n );\n })}\n </>\n );\n};\n\nexport const CommandList = ({ query, editor, textContainer }: CommandListProps) => {\n const sdk = useSdkContext();\n const popoverContainer = React.useRef<HTMLDivElement>(null);\n const popper = usePopper(textContainer, popoverContainer?.current, {\n placement: 'bottom-start',\n });\n const commandItems = useCommands(sdk, query, editor);\n const { selectedItem, isOpen } = useCommandList(commandItems, popoverContainer);\n\n if (!commandItems.length) {\n return null;\n }\n\n return (\n <div className={styles.container} tabIndex={-1} contentEditable={false}>\n {/*\n We have to make it visually appear as if the buttons have focus, because we can not set both the\n focus on the textarea and the focus on the button. In HTML you can only set focus on one element at a time.\n So we have to manually tell the screenreader which item has received focus. The actual code of the\n popover we will hide from the screenreader, since it is not accessibly relevant and to avoid reading\n out everything twice.\n We use role alert here because we want to make the screenreader immediately announce the selected\n button, and also when the \"fake focus\" changes.\n */}\n <div role=\"alert\">\n <ScreenReaderOnly>\n {/* TODO - show the label here and not the id */}\n Richtext commands. Currently focused item: {selectedItem}. Press <kbd>enter</kbd> to\n select, <kbd>arrows</kbd> to navigate, <kbd>escape</kbd> to close.\n </ScreenReaderOnly>\n </div>\n <Portal>\n <div\n aria-hidden={true}\n ref={popoverContainer}\n className={styles.menuPoper}\n style={popper.styles.popper}\n {...popper.attributes.popper}\n >\n <Popover\n isOpen={isOpen}\n usePortal={false}\n /* eslint-disable-next-line jsx-a11y/no-autofocus -- we want to keep focus on text input*/\n autoFocus={false}\n >\n {/* we need an empty trigger here for the positioning of the menu list */}\n <Popover.Trigger>\n <span />\n </Popover.Trigger>\n <Popover.Content className={styles.menuContent} testId=\"rich-text-commands\">\n <header className={styles.menuHeader}>\n <SectionHeading marginBottom=\"none\">Richtext commands</SectionHeading>\n </header>\n <div className={styles.menuList} data-test-id=\"rich-text-commands-list\">\n <CommandListItems commandItems={commandItems} selectedItem={selectedItem} />\n </div>\n <footer className={styles.menuFooter}>\n <Stack\n as=\"ul\"\n margin=\"none\"\n padding=\"none\"\n spacing=\"spacingS\"\n className={styles.footerList}\n >\n <li>\n <kbd>↑</kbd>\n <kbd>↓</kbd> to navigate\n </li>\n <li>\n <kbd>↵</kbd> to confirm\n </li>\n <li>\n <kbd>esc</kbd> to close\n </li>\n </Stack>\n </footer>\n </Popover.Content>\n </Popover>\n </div>\n </Portal>\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { PlateEditor, RenderLeafProps } from '../../../internal/types';\nimport { trimLeadingSlash } from '../utils/trimLeadingSlash';\nimport { CommandList } from './CommandList';\n\nexport const CommandPrompt = (props: RenderLeafProps & { editor: PlateEditor }) => {\n const query = React.useMemo(() => trimLeadingSlash(props.text.text), [props.text.text]);\n const editor = props.editor;\n const [textElement, setTextElement] = React.useState<HTMLSpanElement>();\n\n return (\n <span\n ref={(e) => {\n setTextElement(e as HTMLSpanElement);\n }}\n {...props.attributes}\n >\n {props.children}\n <CommandList query={query} editor={editor} textContainer={textElement} />\n </span>\n );\n};\n","import isHotkey from 'is-hotkey';\n\nimport { getRange, getAboveNode, isMarkActive, addMark, removeMark } from '../../internal';\nimport { focusEditor } from '../../internal/misc';\nimport { KeyboardHandler, NodeEntry } from '../../internal/types';\nimport { COMMAND_PROMPT } from './constants';\n\nexport const createOnKeyDown = (): KeyboardHandler => {\n return (editor) => {\n return (event) => {\n // Support for different keyboard layouts:\n // `isHotKey` uses by default `event.which`, which will never generates a match for all layouts (QWERTY: `/`, QWERTZ: `shift+7`)\n // with `byKey: true` `isHotKey` uses `event.key` which will return the interpreted key '/'\n // It would still fail without the the optional `shift?` param, as it first checks the modKeys (`shiftKey` would be true on QWERTZ)\n if (isHotkey('shift?+/', { byKey: true }, event)) {\n addMark(editor, COMMAND_PROMPT);\n editor.tracking.onCommandPaletteAction('openRichTextCommandPalette');\n }\n\n const isActive = isMarkActive(editor, COMMAND_PROMPT);\n\n if (!isActive) {\n return;\n }\n\n if (isHotkey('enter', event)) {\n return event.preventDefault();\n }\n\n const [, path] = getAboveNode(editor) as NodeEntry;\n const range = getRange(editor, path);\n\n if (isHotkey('backspace', event)) {\n // if it is the last character in the command string\n if (range.focus.offset - range.anchor.offset === 1) {\n removeMark(editor, COMMAND_PROMPT, range);\n }\n }\n\n if (isHotkey('escape', event)) {\n event.stopPropagation();\n removeMark(editor, COMMAND_PROMPT, range);\n editor.tracking.onCommandPaletteAction('cancelRichTextCommandPalette');\n focusEditor(editor);\n }\n };\n };\n};\n","import { PlatePlugin } from '../../internal/types';\nimport { CommandPrompt } from './components/CommandPrompt';\nimport { COMMAND_PROMPT } from './constants';\nimport { createOnKeyDown } from './onKeyDown';\n\n/**\n * A command palette plugin (aka slash commands)\n *\n * How does it work?\n * * When the user presses the slash key, the editor will show a command palette\n * * When the user presses a key, the command palette will show the command suggestions\n * * When the user presses enter, the command palette will execute the command\n * * When the user presses escape, the command palette will hide\n * * When the user presses a letter, number, or space, the command palette will show the command suggestions\n * * When the user presses backspace, the command palette will remove the last character from the command string\n */\nexport const createCommandPalettePlugin = (): PlatePlugin => {\n return {\n key: COMMAND_PROMPT,\n type: COMMAND_PROMPT,\n isLeaf: true,\n component: CommandPrompt,\n handlers: {\n onKeyDown: createOnKeyDown(),\n },\n };\n};\n","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { getNodeEntries } from '../../internal/queries';\nimport { PlatePlugin } from '../../internal/types';\n\nexport function createDragAndDropPlugin(): PlatePlugin {\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 getNodeEntries(editor, {\n match: (node) => DRAGGABLE_TYPES.includes(node.type as string),\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","import React, { ComponentProps } from 'react';\n\nimport { useContentfulEditorRef } from '../ContentfulEditorProvider';\nimport { HyperlinkElementProps } from './Hyperlink/components/EntityHyperlink';\n\nexport function withLinkTracking(Component: React.ComponentType<HyperlinkElementProps>) {\n return function ComponentWithTracking(props: ComponentProps<typeof Component>) {\n const editor = useContentfulEditorRef();\n\n const onEntityFetchComplete = React.useCallback(\n () => editor?.tracking.onViewportAction('linkRendered'),\n [editor]\n );\n\n return <Component {...props} onEntityFetchComplete={onEntityFetchComplete} />;\n };\n}\n","import * as React from 'react';\n\nimport { Asset, FieldExtensionSDK, ScheduledAction } from '@contentful/app-sdk';\nimport { AssetCard } from '@contentful/f36-components';\nimport {\n useEntity,\n useEntityLoader,\n MissingEntityCard,\n WrappedAssetCard,\n} from '@contentful/field-editor-reference';\nimport areEqual from 'fast-deep-equal';\n\ninterface InternalAssetCardProps {\n asset?: Asset | 'failed';\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n onEdit?: () => void;\n onRemove?: () => unknown;\n sdk: FieldExtensionSDK;\n loadEntityScheduledActions: (entityType: string, entityId: string) => Promise<ScheduledAction[]>;\n}\n\nconst InternalAssetCard = React.memo((props: InternalAssetCardProps) => {\n if (props.asset === undefined) {\n return <AssetCard size=\"default\" isLoading />;\n }\n\n if (props.asset === 'failed') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n return (\n <WrappedAssetCard\n getEntityScheduledActions={props.loadEntityScheduledActions}\n size=\"small\"\n isSelected={props.isSelected}\n isDisabled={props.isDisabled}\n localeCode={props.locale}\n defaultLocaleCode={props.sdk.locales.default}\n asset={props.asset}\n onEdit={props.onEdit}\n onRemove={props.isDisabled ? undefined : props.onRemove}\n isClickable={false}\n />\n );\n}, areEqual);\n\nInternalAssetCard.displayName = 'InternalAssetCard';\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\nexport function FetchingWrappedAssetCard(props: FetchingWrappedAssetCardProps) {\n const { onEntityFetchComplete } = props;\n const { data: asset, status } = useEntity<Asset>('Asset', props.assetId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Asset', props.assetId),\n [getEntityScheduledActions, props.assetId]\n );\n\n React.useEffect(() => {\n if (status === 'success') {\n onEntityFetchComplete?.();\n }\n }, [onEntityFetchComplete, status]);\n\n return (\n <InternalAssetCard\n asset={asset as Asset | undefined}\n sdk={props.sdk}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n loadEntityScheduledActions={loadEntityScheduledActions}\n locale={props.locale}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n />\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { ScheduledAction, Entry } from '@contentful/app-sdk';\nimport { EntryCard } from '@contentful/f36-components';\nimport {\n useEntity,\n MissingEntityCard,\n WrappedEntryCard,\n useEntityLoader,\n} from '@contentful/field-editor-reference';\nimport areEqual from 'fast-deep-equal';\n\ninterface InternalEntryCard {\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n sdk: FieldExtensionSDK;\n loadEntityScheduledActions: (entityType: string, entityId: string) => Promise<ScheduledAction[]>;\n entry?: Entry | 'failed';\n onEdit?: VoidFunction;\n onRemove?: VoidFunction;\n}\n\nconst InternalEntryCard = React.memo((props: InternalEntryCard) => {\n const { entry, sdk, loadEntityScheduledActions } = props;\n\n if (entry === undefined) {\n return <EntryCard isLoading />;\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 contentType = sdk.space\n .getCachedContentTypes()\n .find((contentType) => contentType.sys.id === entry.sys.contentType.sys.id);\n\n return (\n <WrappedEntryCard\n size=\"default\"\n getAsset={props.sdk.space.getAsset}\n getEntityScheduledActions={loadEntityScheduledActions}\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.isDisabled ? undefined : props.onRemove}\n isClickable={false}\n />\n );\n}, areEqual);\n\nInternalEntryCard.displayName = 'ReferenceCard';\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\nexport const FetchingWrappedEntryCard = (props: FetchingWrappedEntryCardProps) => {\n const { entryId, onEntityFetchComplete } = props;\n const { data: entry, status } = useEntity<Entry>('Entry', entryId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Entry', entryId),\n [getEntityScheduledActions, entryId]\n );\n\n React.useEffect(() => {\n if (status === 'success') {\n onEntityFetchComplete?.();\n }\n }, [onEntityFetchComplete, status]);\n\n return (\n <InternalEntryCard\n entry={entry}\n sdk={props.sdk}\n locale={props.locale}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n loadEntityScheduledActions={loadEntityScheduledActions}\n />\n );\n};\n","import React from 'react';\n\nimport { css } from 'emotion';\nimport { useSelected, useReadOnly } from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { IS_CHROME } from '../../helpers/environment';\nimport { findNodePath } from '../../internal/queries';\nimport { removeNodes } from '../../internal/transforms';\nimport { Element, RenderElementProps } from '../../internal/types';\nimport { useSdkContext } from '../../SdkProvider';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem !important',\n display: 'block',\n }),\n container: css({\n // The next 2 properties ensure Entity card won't be aligned above\n // a list item marker (i.e. bullet)\n display: 'inline-block',\n verticalAlign: 'text-top',\n width: '100%',\n }),\n};\n\ntype LinkedEntityBlockProps = {\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\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 = React.useCallback(() => {\n const openEntity = entityType === 'Asset' ? sdk.navigator.openAsset : sdk.navigator.openEntry;\n return openEntity(entityId, { slideIn: true });\n }, [sdk, entityId, entityType]);\n\n const handleRemoveClick = React.useCallback(() => {\n if (!editor) return;\n const pathToElement = findNodePath(editor, element);\n removeNodes(editor, { at: pathToElement });\n }, [editor, element]);\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={IS_CHROME ? undefined : false}\n draggable={IS_CHROME ? true : undefined}\n >\n <div\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={IS_CHROME ? false : undefined}\n draggable={IS_CHROME ? true : undefined}\n className={styles.container}\n >\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","/* 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 { NavigatorAPI } from '@contentful/app-sdk';\nimport noop from 'lodash/noop';\n\n/**\n * Allows to observe when the current slide-in navigation slide gets e.g.\n * re-activated after opening another slide on top. This is useful as the sdk\n * does not give full insights into e.g. whether sdk.dialogs.selectSingleEntry()\n * with `withCreate: true` option opens the slide-in navigation to edit the\n * created entry after returning it.\n */\nexport function watchCurrentSlide(navigator: NavigatorAPI) {\n const onActiveCallbacks = new Set<Function>();\n let wasSlideClosed = false;\n let initialSlideLevel;\n let lastSlideLevel;\n const status = () => ({\n wasClosed: wasSlideClosed,\n isActive: !wasSlideClosed && lastSlideLevel === initialSlideLevel,\n });\n const off = navigator.onSlideInNavigation(({ oldSlideLevel, newSlideLevel }) => {\n if (initialSlideLevel === undefined) {\n initialSlideLevel = oldSlideLevel;\n }\n lastSlideLevel = newSlideLevel;\n if (newSlideLevel < initialSlideLevel) {\n wasSlideClosed = true;\n off(); // No more point in watching, slide got closed.\n onActiveCallbacks.clear();\n }\n if (status().isActive && newSlideLevel !== oldSlideLevel) {\n onActiveCallbacks.forEach((cb) => cb());\n }\n });\n\n /**\n * Call to unsubscribe from navigator events when the watcher is no longer\n * needed.\n */\n function unwatch() {\n off();\n onActiveCallbacks.clear();\n }\n\n /**\n * Fires immediately when the slide is currently active, or at the point when\n * it becomes active again, if there are slides on top that get closed. Does not\n * fire when the observed slide gets closed, and then re-opened through browser\n * back, as this technically opens a new slide and editor instance.\n */\n function onActive(cb: Function) {\n if (wasSlideClosed) return noop; // Can't re-activate already closed slide.\n if (status().isActive) {\n cb();\n }\n onActiveCallbacks.add(cb);\n return () => onActiveCallbacks.delete(cb);\n }\n return {\n status,\n onActive,\n unwatch,\n };\n}\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { focus, insertEmptyParagraph, moveToTheNextChar } from '../../helpers/editor';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { watchCurrentSlide } from '../../helpers/sdkNavigatorSlideIn';\nimport { getText, getAboveNode, getLastNodeByLevel } from '../../internal/queries';\nimport { insertNodes, setNodes } from '../../internal/transforms';\nimport { PlateEditor } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\n\nexport async function selectEntityAndInsert(\n nodeType,\n sdk,\n editor,\n logAction: TrackingPluginActions['onToolbarAction'] | TrackingPluginActions['onShortcutAction']\n) {\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\n const rteSlide = watchCurrentSlide(sdk.navigator);\n const entity = await selectEntity(config);\n\n if (!entity) {\n logAction('cancelCreateEmbedDialog', { nodeType });\n } else {\n insertBlock(editor, nodeType, entity);\n ensureFollowingParagraph(editor);\n logAction('insert', { nodeType });\n }\n // If user chose to create a new entity, this might open slide-in to edit the\n // entity. In this case, no point in focusing RTE which is now in the slide below.\n rteSlide.onActive(() => {\n rteSlide.unwatch();\n focus(editor);\n });\n}\n\n// TODO: incorporate this logic inside the trailingParagraph plugin instead\nfunction ensureFollowingParagraph(editor: PlateEditor) {\n const entityBlock = getAboveNode(editor, {\n match: {\n type: [BLOCKS.EMBEDDED_ASSET, BLOCKS.EMBEDDED_ENTRY],\n },\n });\n\n if (!entityBlock) {\n return;\n }\n\n const level = entityBlock[1].length - 1;\n const lastNode = getLastNodeByLevel(editor, level);\n\n const isTextContainer = (TEXT_CONTAINERS as string[]).includes(\n (lastNode?.[0].type ?? '') as string\n );\n\n // If the new block isn't followed by a sibling text container (e.g. paragraph)\n // we insert a new empty one. Level 0 is handled by the trailingParagraph plugin\n if (level !== 0 && !isTextContainer) {\n insertEmptyParagraph(editor);\n }\n\n moveToTheNextChar(editor);\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: PlateEditor, nodeType: string, 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 insertNodes(editor, linkedEntityBlock);\n } else {\n setNodes(editor, linkedEntityBlock);\n }\n}\n","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex, Icon, Menu } from '@contentful/f36-components';\nimport { AssetIcon, EmbeddedEntryBlockIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\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 isDisabled: boolean;\n nodeType: string;\n onClose: () => void;\n}\n\nexport function EmbeddedEntityBlockToolbarIcon({\n isDisabled,\n nodeType,\n onClose,\n}: EmbeddedEntityBlockToolbarIconProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n\n const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (!editor) {\n return;\n }\n\n onClose();\n await selectEntityAndInsert(nodeType, sdk, editor, editor.tracking.onToolbarAction);\n };\n\n const type = getEntityTypeFromNodeType(nodeType);\n const baseClass = `rich-text__${nodeType}`;\n return (\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 { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\n\nimport { getNodeEntryFromSelection } from '../../helpers/editor';\nimport { removeNodes } from '../../internal/transforms';\nimport { KeyboardHandler, PlatePlugin } from '../../internal/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) => {\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 removeNodes(editor, { at: pathToSelectedElement });\n }\n\n return;\n }\n\n if (hotkey && isHotkey(hotkey, event)) {\n selectEntityAndInsert(nodeType, sdk, editor, editor.tracking.onShortcutAction);\n }\n };\n}\n\nconst createEmbeddedEntityPlugin =\n (nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET, hotkey: string) =>\n (sdk: FieldExtensionSDK): PlatePlugin => ({\n key: nodeType,\n type: nodeType,\n isElement: true,\n isVoid: true,\n component: withLinkTracking(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) => ({\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, Text } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport {\n useEntity,\n useEntityLoader,\n ScheduledIconWithTooltip,\n} from '@contentful/field-editor-reference';\nimport { Entry, 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 { data: entry, status: requestStatus } = useEntity<Entry>('Entry', props.entryId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = () => getEntityScheduledActions('Entry', props.entryId);\n\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n const { onEntityFetchComplete } = props;\n const contentType = React.useMemo(() => {\n if (!entry || !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 (requestStatus !== 'success') {\n return;\n }\n onEntityFetchComplete?.();\n }, [requestStatus, 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 if (requestStatus === 'error') {\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 (requestStatus === 'loading') {\n return <InlineEntryCard isLoading />;\n }\n\n const entryStatus = getEntryStatus(entry.sys);\n if (entryStatus === '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=\"delete\">\n Remove\n </MenuItem>,\n ]}\n />\n );\n }\n\n return (\n <InlineEntryCard\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n title={`${contentTypeName}: ${title}`}\n status={entryStatus}\n actions={[\n <MenuItem key=\"edit\" onClick={props.onEdit}>\n Edit\n </MenuItem>,\n <MenuItem key=\"remove\" onClick={props.onRemove} disabled={props.isDisabled} testId=\"delete\">\n Remove\n </MenuItem>,\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","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 { 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 } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport isHotkey from 'is-hotkey';\nimport { useSelected, useReadOnly } from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus, moveToTheNextChar } from '../../helpers/editor';\nimport { IS_CHROME } from '../../helpers/environment';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { watchCurrentSlide } from '../../helpers/sdkNavigatorSlideIn';\nimport { findNodePath } from '../../internal/queries';\nimport { insertNodes, removeNodes } from '../../internal/transforms';\nimport { KeyboardHandler, PlatePlugin, Node } from '../../internal/types';\nimport { Element, RenderElementProps } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\nimport { useSdkContext } from '../../SdkProvider';\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 = {\n target: Link;\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\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: { waitForClose: true } }).then(() => {\n editor && focus(editor);\n });\n }\n\n function handleRemoveClick() {\n if (!editor) return;\n const pathToElement = findNodePath(editor, props.element);\n 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={IS_CHROME ? undefined : false}\n draggable={IS_CHROME ? true : undefined}\n >\n <span\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={IS_CHROME ? false : undefined}\n draggable={IS_CHROME ? true : undefined}\n >\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}\n\nasync function selectEntityAndInsert(\n editor,\n sdk: FieldExtensionSDK,\n logAction: TrackingPluginActions['onShortcutAction'] | TrackingPluginActions['onToolbarAction']\n) {\n logAction('openCreateEmbedDialog', { nodeType: INLINES.EMBEDDED_ENTRY });\n\n const config = {\n ...newEntitySelectorConfigFromRichTextField(sdk.field, INLINES.EMBEDDED_ENTRY),\n withCreate: true,\n };\n const rteSlide = watchCurrentSlide(sdk.navigator);\n const entry = await sdk.dialogs.selectSingleEntry<Entry>(config);\n\n if (!entry) {\n logAction('cancelCreateEmbedDialog', { nodeType: INLINES.EMBEDDED_ENTRY });\n } else {\n insertNodes(editor, createInlineEntryNode(entry.sys.id));\n logAction('insert', { nodeType: INLINES.EMBEDDED_ENTRY });\n }\n rteSlide.onActive(() => {\n rteSlide.unwatch();\n focus(editor);\n });\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, editor.tracking.onToolbarAction);\n moveToTheNextChar(editor);\n }\n\n return (\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 >\n <Flex alignItems=\"center\" flexDirection=\"row\">\n <EmbeddedEntryInlineIcon\n variant=\"secondary\"\n className={`rich-text__embedded-entry-list-icon ${styles.icon}`}\n />\n <span>Inline entry</span>\n </Flex>\n </Menu.Item>\n );\n}\n\nexport function createEmbeddedEntityInlinePlugin(sdk: FieldExtensionSDK): PlatePlugin {\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(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): Node => createInlineEntryNode(el.getAttribute(htmlAttributeName) as string),\n },\n };\n}\n\nfunction getWithEmbeddedEntryInlineEvents(sdk: FieldExtensionSDK): 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, editor.tracking.onShortcutAction);\n }\n };\n };\n}\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 { css, cx } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport {\n getElementFromCurrentSelection,\n focus,\n isBlockSelected,\n toggleElement,\n} from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { Element } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\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 Element).type;\n\n setSelected(LABELS[type] ? type : BLOCKS.PARAGRAPH);\n }, [editor?.operations, editor?.selection]); // eslint-disable-line -- TODO: explain this disable\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 const prevOnChange = editor.onChange;\n /*\n The focus might happen at point in time when\n `toggleElement` (helper for 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\n const isActive = isBlockSelected(editor, type);\n editor.tracking.onToolbarAction(isActive ? 'remove' : 'insert', { nodeType: type });\n\n toggleElement(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 >\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 >\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';\n\nimport { getNodeEntries } from '../internal/queries';\nimport { PlateEditor, Node, Path, NodeMatch } from '../internal/types';\n\nfunction extractNodes(editor: PlateEditor, path: Path, match: NodeMatch) {\n return Array.from(\n getNodeEntries(editor, {\n match,\n at: path,\n mode: 'lowest',\n })\n ).map(([node]) => node);\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): Node[] {\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';\n\nimport {\n insertNodes,\n removeNodes,\n unwrapNodes,\n wrapNodes,\n liftNodes,\n} from '../internal/transforms';\nimport { PlateEditor, NodeEntry } from '../internal/types';\nimport { extractParagraphs } from './extractNodes';\n\nexport const transformRemove = (editor: PlateEditor, [, path]: NodeEntry) => {\n 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 insertNodes(editor, nodes, { at: path });\n};\n\nexport const transformUnwrap = (editor: PlateEditor, [, path]: NodeEntry) => {\n unwrapNodes(editor, {\n at: path,\n });\n};\n\nexport const transformWrapIn =\n (type: BLOCKS | INLINES) =>\n (editor: PlateEditor, [, path]: NodeEntry) => {\n wrapNodes(editor, { type, data: {}, children: [] }, { at: path });\n };\n\nexport const transformLift = (editor: PlateEditor, [, path]: NodeEntry) => {\n 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 -- TODO: explain this disable\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 isHotkey from 'is-hotkey';\n\nimport { isBlockSelected, isInlineOrText, toggleElement } from '../../helpers/editor';\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { isMarkActive, getAboveNode } from '../../internal/queries';\nimport { KeyboardHandler, PlatePlugin, HotkeyPlugin } from '../../internal/types';\nimport { COMMAND_PROMPT } from '../CommandPalette/constants';\nimport { HeadingComponents } from './components/Heading';\n\nconst buildHeadingEventHandler =\n (type: BLOCKS): KeyboardHandler<HotkeyPlugin> =>\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n const isActive = isBlockSelected(editor, type);\n editor.tracking.onShortcutAction(isActive ? 'remove' : 'insert', { nodeType: type });\n\n toggleElement(editor, { activeType: type, inactiveType: BLOCKS.PARAGRAPH });\n }\n };\n\nexport const createHeadingPlugin = (): PlatePlugin => ({\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 !getAboveNode(editor, {\n at: path,\n match: { type: BLOCKS.LIST_ITEM },\n }) && !isMarkActive(editor, COMMAND_PROMPT),\n },\n },\n ],\n } as Partial<PlatePlugin>;\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: buildHeadingEventHandler(nodeType),\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 { css, cx } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport {\n getNodeEntryFromSelection,\n isBlockSelected,\n moveToTheNextLine,\n focus,\n} from '../../helpers/editor';\nimport { getText } from '../../internal/queries';\nimport { insertNodes, setNodes, removeNodes } from '../../internal/transforms';\nimport { PlatePlugin, PlateEditor } from '../../internal/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 const isBackspace = event.key === 'Backspace';\n const isDelete = event.key === 'Delete';\n if (isBackspace || isDelete) {\n event.preventDefault();\n 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 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 ? 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 = (): PlatePlugin => ({\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","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 { css } from 'emotion';\n\nimport { getNodeEntryFromSelection, insertLink, LINK_TYPES, focus } from '../../helpers/editor';\nimport getLinkedContentTypeIdsForNodeType from '../../helpers/getLinkedContentTypeIdsForNodeType';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { withoutNormalizing } from '../../internal';\nimport { getText, isEditorReadOnly } from '../../internal/queries';\nimport { select } from '../../internal/transforms';\nimport { PlateEditor, Path } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\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 readonly: boolean;\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 isDisabled={props.readonly}\n >\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 isDisabled={props.readonly}\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 {!props.readonly && (\n <TextLink\n testId=\"entity-selection-link\"\n onClick={resetLinkEntity}\n className={styles.removeSelectionLabel}\n >\n Remove selection\n </TextLink>\n )}\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 >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n variant=\"positive\"\n size=\"small\"\n isDisabled={props.readonly || !isLinkComplete()}\n onClick={handleOnSubmit}\n testId=\"confirm-cta\"\n >\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: PlateEditor,\n sdk: FieldExtensionSDK,\n logAction:\n | TrackingPluginActions['onToolbarAction']\n | TrackingPluginActions['onShortcutAction']\n | TrackingPluginActions['onViewportAction'],\n targetPath?: Path\n) {\n const isReadOnly = isEditorReadOnly(editor);\n const selectionBeforeBlur = editor.selection ? { ...editor.selection } : undefined;\n if (!targetPath && !selectionBeforeBlur) return;\n\n let linkType;\n let linkText;\n let linkTarget;\n let linkEntity;\n const [node, path] = getNodeEntryFromSelection(editor, LINK_TYPES, targetPath);\n if (node && path) {\n linkType = node.type;\n linkText = getText(editor, path);\n linkTarget = (node.data as { uri: string }).uri || '';\n linkEntity = (node.data as { target: Link }).target;\n }\n\n const selectionAfterFocus =\n targetPath ?? (selectionBeforeBlur as NonNullable<typeof selectionBeforeBlur>);\n\n const currentLinkText = linkText || (editor.selection ? getText(editor, editor.selection) : '');\n const isEditing = Boolean(node && path);\n\n logAction(isEditing ? 'openEditHyperlinkDialog' : 'openCreateHyperlinkDialog');\n\n const data = await ModalDialogLauncher.openDialog(\n {\n title: isEditing ? '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 readonly={isReadOnly}\n />\n );\n }\n );\n select(editor, selectionAfterFocus);\n\n if (!data) {\n focus(editor);\n logAction(isEditing ? 'cancelEditHyperlinkDialog' : 'cancelCreateHyperlinkDialog');\n return;\n }\n\n const {\n linkText: text,\n linkTarget: url,\n linkType: type,\n linkEntity: target,\n } = data as HyperLinkDialogData;\n\n withoutNormalizing(editor, () => {\n insertLink(editor, { text, url, type, target, path });\n });\n\n logAction(isEditing ? 'edit' : 'insert', {\n nodeType: type,\n linkType: target?.sys.linkType ?? 'uri', // we want to keep the same values we've been using for the old editor, which can be `uri`, `Asset` or `Entry`\n });\n\n focus(editor);\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { LinkIcon } from '@contentful/f36-icons';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { isLinkActive, unwrapLink } from '../../../helpers/editor';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { addOrEditLink } from '../HyperlinkModal';\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 editor.tracking.onToolbarAction('unlinkHyperlinks');\n } else {\n addOrEditLink(editor, sdk, editor.tracking.onToolbarAction);\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","import { getScheduleTooltipContent } from '@contentful/field-editor-reference';\nimport { isAncestorEmpty } from '@udecode/plate-core';\n\nimport { getText } from '../../internal/queries';\nimport { NodeEntry } from '../../internal/types';\nimport { PlateEditor } from '../../internal/types';\nimport { FetchedEntityData } from './useEntityInfo';\n\nexport const hasText = (editor: PlateEditor, entry: NodeEntry) => {\n const [node, path] = entry;\n return !isAncestorEmpty(editor, node as any) && getText(editor, path).trim() !== '';\n};\n\nfunction 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\nexport function getEntityInfo(data?: FetchedEntityData) {\n if (!data) {\n return '';\n }\n const { entityTitle, contentTypeName, entityStatus, jobs } = data;\n\n const title = truncate(entityTitle, 60) || 'Untitled';\n\n const scheduledActions =\n jobs.length > 0 ? getScheduleTooltipContent({ job: jobs[0], jobsCount: jobs.length }) : '';\n\n return `${contentTypeName || 'Asset'} \"${title}\", ${entityStatus} ${scheduledActions}`;\n}\n","import { useEffect, useState } from 'react';\n\nimport {\n Asset,\n ContentEntityType,\n Entry,\n FieldExtensionSDK,\n Link,\n ScheduledAction,\n} from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n\nimport { getEntityInfo } from './utils';\n\nexport type FetchedEntityData = {\n jobs: ScheduledAction[];\n entity: Entry | Asset;\n entityTitle: string;\n entityDescription: string;\n entityStatus: ReturnType<typeof entityHelpers.getEntryStatus>;\n contentTypeName: string;\n};\n\nasync function fetchAllData({\n sdk,\n entityId,\n entityType,\n localeCode,\n defaultLocaleCode,\n}: {\n sdk: FieldExtensionSDK;\n entityId: string;\n entityType: ContentEntityType;\n localeCode: string;\n defaultLocaleCode: string;\n}): Promise<FetchedEntityData> {\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 type EntityInfoProps = {\n target: Link<ContentEntityType>;\n sdk: FieldExtensionSDK;\n onEntityFetchComplete?: VoidFunction;\n};\n\nfunction useRequestStatus({ sdk, target, onEntityFetchComplete }: EntityInfoProps) {\n const [requestStatus, setRequestStatus] = useState<{\n type: 'success' | 'loading' | 'error';\n data?: FetchedEntityData;\n error?: Error;\n }>({ type: 'loading' });\n\n 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 .finally(() => {\n onEntityFetchComplete?.();\n });\n }\n }, [sdk, target, onEntityFetchComplete]);\n\n return requestStatus;\n}\n\nexport function useEntityInfo(props: EntityInfoProps) {\n const status = useRequestStatus(props);\n\n const { linkType } = props.target.sys;\n\n if (status.type === 'loading') {\n return `Loading ${linkType.toLowerCase()}...`;\n }\n\n if (status.type === 'error') {\n return `${linkType} missing or inaccessible`;\n }\n\n return getEntityInfo(status.data);\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const 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};\n","import * as React from 'react';\n\nimport { FieldExtensionSDK, Link } from '@contentful/app-sdk';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { fromDOMPoint } from '../../../internal';\nimport { Element, RenderElementProps } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { addOrEditLink } from '../HyperlinkModal';\nimport { useEntityInfo } from '../useEntityInfo';\nimport { styles } from './styles';\n\nexport type HyperlinkElementProps = {\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n target: Link;\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\n onEntityFetchComplete: VoidFunction;\n};\n\nexport function EntityHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { target } = props.element.data;\n const { onEntityFetchComplete } = props;\n\n const tooltipContent = useEntityInfo({\n target,\n sdk,\n onEntityFetchComplete,\n });\n\n if (!target) return null;\n\n function handleClick(event: React.MouseEvent<HTMLAnchorElement>) {\n event.preventDefault();\n event.stopPropagation();\n if (!editor) return;\n\n const p = fromDOMPoint(editor, [event.target as Node, 0]);\n\n if (p) {\n addOrEditLink(editor, sdk, editor.tracking.onViewportAction, p.path);\n }\n }\n\n return (\n <Tooltip\n content={tooltipContent}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\"\n >\n <TextLink\n as=\"a\"\n onClick={handleClick}\n className={styles.hyperlink}\n data-link-type={target.sys.linkType}\n data-link-id={target.sys.id}\n >\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK, Link } from '@contentful/app-sdk';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { fromDOMPoint } from '../../../internal';\nimport { Element, RenderElementProps } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { addOrEditLink } from '../HyperlinkModal';\nimport { styles } from './styles';\n\ntype HyperlinkElementProps = {\n element: Element & {\n data: {\n uri?: string;\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n target?: Link;\n onEntityFetchComplete?: VoidFunction;\n children: Pick<RenderElementProps, 'children'>;\n};\n\nexport function UrlHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\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 const p = fromDOMPoint(editor, [event.target as Node, 0], {\n exactMatch: false,\n suppressThrow: false,\n });\n addOrEditLink(editor, sdk, editor.tracking.onViewportAction, p?.path);\n }\n\n return (\n <Tooltip\n content={uri}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\"\n >\n <TextLink\n as=\"a\"\n href={uri}\n rel=\"noopener noreferrer\"\n onClick={handleClick}\n className={styles.hyperlink}\n >\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { AnyObject, HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\n\nimport { isLinkActive, unwrapLink } from '../../helpers/editor';\nimport { transformRemove } from '../../helpers/transformers';\nimport { PlatePlugin, KeyboardHandler } from '../../internal/types';\nimport { withLinkTracking } from '../links-tracking';\nimport { EntityHyperlink } from './components/EntityHyperlink';\nimport { UrlHyperlink } from './components/UrlHyperlink';\nimport { addOrEditLink } from './HyperlinkModal';\nimport { hasText } from './utils';\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 editor.tracking.onShortcutAction('unlinkHyperlinks');\n } else {\n addOrEditLink(editor, sdk, editor.tracking.onShortcutAction);\n }\n };\n };\n\nconst getNodeOfType = (type: INLINES) => (el: HTMLElement, node: AnyObject) => ({\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 = (sdk: FieldExtensionSDK): PlatePlugin => {\n const common: Partial<PlatePlugin> = {\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(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(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","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { getListTypes } from '@udecode/plate-list';\n\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n getNodeEntry,\n getNodeChildren,\n getNextPath,\n getPreviousPath,\n getLastChildPath,\n match,\n} from '../../../internal/queries';\nimport { wrapNodes, moveNodes } from '../../../internal/transforms';\nimport { NodeEntry, PlateEditor, Element, Path } from '../../../internal/types';\n\nexport interface MoveListItemDownOptions {\n list: NodeEntry;\n listItem: NodeEntry;\n}\n\nexport const moveListItemDown = (\n editor: PlateEditor,\n { list, listItem }: MoveListItemDownOptions\n) => {\n const [listNode] = list;\n const [, listItemPath] = listItem;\n\n let previousListItemPath: Path;\n\n try {\n previousListItemPath = getPreviousPath(listItemPath);\n } catch (e) {\n return;\n }\n\n // Previous sibling is the new parent\n const previousSiblingItem = getNodeEntry(editor, previousListItemPath) as NodeEntry;\n\n if (previousSiblingItem) {\n const [, previousPath] = previousSiblingItem;\n\n const subList = Array.from(getNodeChildren(editor, previousPath)).find(([n, path]) =>\n match(n, path, { type: getListTypes(editor) })\n ) as NodeEntry | undefined;\n\n const newPath = getNextPath(getLastChildPath(subList ?? previousSiblingItem));\n\n withoutNormalizing(editor, () => {\n if (!subList) {\n // Create new sub-list\n wrapNodes(editor, { type: listNode.type, children: [], data: {} } as Element, {\n at: listItemPath,\n });\n }\n\n // Move the current item to the sub-list\n moveNodes(editor, {\n at: listItemPath,\n to: newPath,\n });\n });\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 { isListNested, ELEMENT_LIC, getListItemEntry, moveListItemUp } from '@udecode/plate-list';\n\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n getNodeEntries,\n getPluginType,\n createPathRef,\n getParentPath,\n isAncestorPath,\n} from '../../../internal/queries';\nimport { EditorNodesOptions, PlateEditor, Path, PathRef } from '../../../internal/types';\nimport { moveListItemDown } from './moveListItemDown';\n\nexport type MoveListItemsOptions = {\n increase?: boolean;\n at?: EditorNodesOptions['at'];\n};\n\nexport const moveListItems = (\n editor: PlateEditor,\n { increase = true, at = editor.selection ?? undefined }: MoveListItemsOptions = {}\n) => {\n const _nodes = getNodeEntries(editor, {\n at,\n match: {\n type: getPluginType(editor, ELEMENT_LIC),\n },\n });\n\n // Get the selected lic\n const lics = Array.from(_nodes);\n\n if (!lics.length) return;\n\n const highestLicPaths: Path[] = [];\n const highestLicPathRefs: PathRef[] = [];\n\n // Filter out the nested lic, we just need to move the highest ones\n lics.forEach((lic) => {\n const licPath = lic[1];\n const liPath = getParentPath(licPath);\n\n const isAncestor = highestLicPaths.some((path) => {\n const highestLiPath = getParentPath(path);\n\n return isAncestorPath(highestLiPath, liPath);\n });\n if (!isAncestor) {\n highestLicPaths.push(licPath);\n highestLicPathRefs.push(createPathRef(editor, licPath));\n }\n });\n\n const licPathRefsToMove = increase ? highestLicPathRefs : highestLicPathRefs.reverse();\n\n withoutNormalizing(editor, () => {\n licPathRefsToMove.forEach((licPathRef) => {\n const licPath = licPathRef.unref();\n if (!licPath) return;\n\n const liEntry = getListItemEntry(editor, { at: licPath });\n\n if (!liEntry) {\n return;\n }\n\n if (increase) {\n moveListItemDown(editor, liEntry);\n } else if (isListNested(editor, liEntry.list[1])) {\n moveListItemUp(editor, liEntry);\n }\n });\n });\n};\n","import * as p from '@udecode/plate-core';\n\nexport const ELEMENT_DEFAULT = p.ELEMENT_DEFAULT;\n","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { withoutNormalizing } from '../../../internal';\nimport { getNodeEntries, isElement } from '../../../internal/queries';\nimport { unwrapNodes, liftNodes } from '../../../internal/transforms';\nimport { PlateEditor, Path } from '../../../internal/types';\n\nfunction hasUnliftedListItems(editor: PlateEditor, at?: Path) {\n return getNodeEntries(editor, {\n at,\n match: (node, path) => isElement(node) && node.type === BLOCKS.LIST_ITEM && path.length >= 2,\n }).next().done;\n}\nexport const unwrapList = (editor: PlateEditor, { at }: { at?: Path } = {}) => {\n withoutNormalizing(editor, () => {\n do {\n // lift list items to the root level\n liftNodes(editor, {\n at,\n match: (node) => isElement(node) && node.type === BLOCKS.LIST_ITEM,\n mode: 'lowest',\n });\n } while (!hasUnliftedListItems(editor, at));\n\n // finally unwrap all lifted items\n unwrapNodes(editor, {\n at,\n match: { type: BLOCKS.LIST_ITEM },\n split: false,\n });\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 { BLOCKS } from '@contentful/rich-text-types';\nimport { ELEMENT_LIC } from '@udecode/plate-list';\nimport { getListItemEntry } from '@udecode/plate-list';\n\nimport { ELEMENT_DEFAULT } from '../../../internal/constants';\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n findNode,\n getNodeEntries,\n isRangeCollapsed,\n getRangeEdges,\n isRangeAcrossBlocks,\n getParentNode,\n getPluginType,\n getCommonNode,\n getRangeStart,\n getRangeEnd,\n} from '../../../internal/queries';\nimport { setNodes, wrapNodes } from '../../../internal/transforms';\nimport { PlateEditor, Element, Location, NodeEntry } from '../../../internal/types';\nimport { unwrapList } from './unwrapList';\n\nconst listTypes = [BLOCKS.UL_LIST, BLOCKS.OL_LIST] as string[];\n\nexport const toggleList = (editor: PlateEditor, { type }: { type: string }) =>\n withoutNormalizing(editor, () => {\n if (!editor.selection) {\n return;\n }\n\n if (isRangeCollapsed(editor.selection) || !isRangeAcrossBlocks(editor)) {\n // selection is collapsed\n const res = getListItemEntry(editor);\n\n if (res) {\n const { list } = res;\n if (list[0].type !== type) {\n setNodes(\n editor,\n { type },\n {\n at: editor.selection,\n match: (n) => listTypes.includes(n.type as string),\n mode: 'lowest',\n }\n );\n } else {\n unwrapList(editor);\n }\n } else {\n const list = { type, children: [], data: {} };\n wrapNodes(editor, list);\n\n const nodes = [\n ...getNodeEntries(editor, {\n match: { type: getPluginType(editor, ELEMENT_DEFAULT) },\n }),\n ];\n\n const listItem = {\n type: BLOCKS.LIST_ITEM,\n children: [],\n data: {},\n };\n\n for (const [, path] of nodes) {\n wrapNodes(editor, listItem, {\n at: path,\n });\n }\n }\n } else {\n // selection is a range\n\n const [startPoint, endPoint] = getRangeEdges(editor.selection);\n const commonEntry = getCommonNode(editor, startPoint.path, endPoint.path) as NodeEntry;\n\n if (\n listTypes.includes((commonEntry[0] as Element).type) ||\n commonEntry[0].type === BLOCKS.LIST_ITEM\n ) {\n let listType = commonEntry[0].type;\n if (commonEntry[0].type === BLOCKS.LIST_ITEM) {\n listType = (getParentNode(editor, commonEntry[1] as Location)?.[0] as Element | undefined)\n ?.type;\n }\n if (listType !== type) {\n const startList = findNode(editor, {\n at: getRangeStart(editor.selection),\n match: { type: listTypes },\n mode: 'lowest',\n });\n\n const endList = findNode(editor, {\n at: getRangeEnd(editor.selection),\n match: { type: listTypes },\n mode: 'lowest',\n });\n\n if (!startList || !endList) {\n return;\n }\n\n const rangeLength = Math.min(startList[1].length, endList[1].length);\n setNodes(\n editor,\n { type },\n {\n at: editor.selection,\n match: (n, path) =>\n listTypes.includes(n.type as string) && path.length >= rangeLength,\n mode: 'all',\n }\n );\n } else {\n unwrapList(editor);\n }\n } else {\n const rootPathLength = commonEntry[1].length;\n const nodes = (\n Array.from(\n getNodeEntries(editor, {\n mode: 'all',\n })\n ) as NodeEntry[]\n )\n .filter(([, path]) => path.length === rootPathLength + 1)\n .reverse();\n\n nodes.forEach((n) => {\n if (listTypes.includes(n[0].type as string)) {\n setNodes(editor, { type }, { at: n[1] });\n } else {\n setNodes(editor, { type: getPluginType(editor, ELEMENT_LIC) }, { at: n[1] });\n\n const listItem = {\n type: BLOCKS.LIST_ITEM,\n children: [],\n data: {},\n };\n\n wrapNodes(editor, listItem, {\n at: n[1],\n });\n\n const list = { type, children: [], data: {} };\n wrapNodes(editor, list, { at: n[1] });\n }\n });\n }\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 { HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\nimport castArray from 'lodash/castArray';\n\nimport { getAboveNode } from '../../internal/queries';\nimport { KeyboardHandler } from '../../internal/types';\nimport { moveListItems } from './transforms/moveListItems';\nimport { toggleList } from './transforms/toggleList';\n\nexport const onKeyDownList: KeyboardHandler<HotkeyPlugin> =\n (editor, { type, options: { hotkey } }) =>\n (e) => {\n if (e.key === 'Tab' && editor.selection) {\n const listSelected = getAboveNode(editor, {\n at: editor.selection,\n match: { type },\n });\n\n if (listSelected) {\n e.preventDefault();\n moveListItems(editor, { increase: !e.shiftKey });\n return;\n }\n }\n\n if (!hotkey) return;\n\n const hotkeys = castArray(hotkey);\n\n for (const _hotkey of hotkeys) {\n if (isHotkey(_hotkey)(e)) {\n toggleList(editor, { type });\n }\n }\n };\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport {\n isText,\n getCommonNode,\n isRangeExpanded,\n getRangeEdges,\n getChildren,\n getAboveNode,\n getBlockAbove,\n getParentNode,\n} from '../../internal/queries';\nimport { insertNodes, removeNodes, wrapNodes } from '../../internal/transforms';\nimport { Node, NodeEntry, PlateEditor, Path, Element } from '../../internal/types';\n\nconst isList = (node: Node) => [BLOCKS.OL_LIST, BLOCKS.UL_LIST].includes(node.type as BLOCKS);\n\nexport const hasListAsDirectParent = (editor: PlateEditor, [, path]: NodeEntry) => {\n const [parentNode] = (getParentNode(editor, path) || []) as NodeEntry;\n return isList(parentNode);\n};\n\nconst getNearestListAncestor = (editor: PlateEditor, path: Path) => {\n return getAboveNode(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 as string | undefined;\n\n wrapNodes(\n editor,\n { type: parentListType || BLOCKS.UL_LIST, children: [], data: {} },\n { at: path }\n );\n};\n\nexport const isNonEmptyListItem = (_: PlateEditor, entry: NodeEntry) => {\n const listItemChildren = getChildren(entry);\n\n return listItemChildren.length !== 0;\n};\n\nexport const firstNodeIsNotList = (_editor: PlateEditor, [node]: NodeEntry<Element>) => {\n if (node.children.length === 1) {\n const firstNode = node.children[0];\n\n return !isText(firstNode) && !isList(firstNode);\n }\n\n return true;\n};\n\nexport const insertParagraphAsChild = (editor: PlateEditor, [, path]: NodeEntry) => {\n insertNodes(editor, [{ type: BLOCKS.PARAGRAPH, data: {}, children: [{ text: '' }] }], {\n at: path.concat([0]),\n });\n};\n\nexport const replaceNodeWithListItems = (editor: PlateEditor, entry: NodeEntry<Element>) => {\n const [node, path] = entry;\n\n removeNodes(editor, { at: path });\n insertNodes(editor, (node.children[0] as Element).children, { at: path });\n};\n\nexport const isListTypeActive = (editor: PlateEditor, type: BLOCKS): boolean => {\n const { selection } = editor;\n\n if (!selection) {\n return false;\n }\n\n if (isRangeExpanded(selection)) {\n const [start, end] = getRangeEdges(selection);\n const node = getCommonNode(editor, start.path, end.path);\n\n if (node[0].type === type) {\n return true;\n }\n }\n\n // Lists can be nested. Here, we take the list type at the lowest level\n const listNode = getBlockAbove(editor, {\n match: {\n type: [BLOCKS.OL_LIST, BLOCKS.UL_LIST],\n },\n mode: 'lowest',\n });\n\n return listNode?.[0].type === type;\n};\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { withoutNormalizing } from '../../../internal';\nimport {\n getAboveNode,\n getParentNode,\n isFirstChildPath,\n isSelectionAtBlockEnd,\n isSelectionAtBlockStart,\n getMarks,\n getNextPath,\n} from '../../../internal/queries';\nimport {\n select,\n insertNodes,\n moveChildren,\n splitNodes,\n collapseSelection,\n} from '../../../internal/transforms';\nimport { Element, PlateEditor } from '../../../internal/types';\n\n/**\n * Build a new list item node while preserving marks\n */\nconst emptyListItemNode = (editor: PlateEditor, withChildren = false): Element => {\n let children: Element[] = [];\n\n if (withChildren) {\n const marks = getMarks(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 = getAboveNode(editor, { match: { type: TEXT_CONTAINERS } });\n if (!paragraph) {\n return false;\n }\n\n const [, paragraphPath] = paragraph;\n const listItem = getParentNode(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 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 && isFirstChildPath(paragraphPath);\n const shouldSplit = !isAtStart && !isAtEnd;\n\n // Split the current paragraph content if necessary\n if (shouldSplit) {\n splitNodes(editor);\n }\n\n // Insert the new li\n const newListItemPath = isAtStartOfListItem ? listItemPath : getNextPath(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 : getNextPath(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 select(editor, newListItemPath);\n collapseSelection(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 { ELEMENT_DEFAULT, getPluginType, isBlockAboveEmpty, mockPlugin } 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 { PlateEditor, Value } from '../../internal/types';\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, Value, PlateEditor>({\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),\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 } from '@udecode/plate-core';\n\nimport {\n isBlockNode,\n isAncestorPath,\n getCommonNode,\n getNodeTexts,\n getParentPath,\n getDescendantNodeByPath,\n} from '../../internal/queries';\nimport { insertNodes } from '../../internal/transforms';\nimport { PlateEditor, NodeEntry, Node, Element } from '../../internal/types';\n\nconst getFirstAncestorOfType = (root: Node, entry: NodeEntry): NodeEntry => {\n let ancestor = getParentPath(entry[1]);\n while (getDescendantNodeByPath(root, ancestor).type !== BLOCKS.LIST_ITEM) {\n ancestor = getParentPath(ancestor);\n }\n\n return [getDescendantNodeByPath(root, ancestor), ancestor];\n};\n\nconst isListRoot = (node: Node): boolean =>\n [BLOCKS.UL_LIST, BLOCKS.OL_LIST].includes((node as Element).type as BLOCKS);\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 = (listRoot: Node): Node[] => {\n if (!isListRoot(listRoot)) {\n return [listRoot];\n }\n\n const textEntries = Array.from(getNodeTexts(listRoot));\n\n const commonAncestorEntry = textEntries.reduce<NodeEntry>(\n (commonAncestor, textEntry) =>\n isAncestorPath(commonAncestor[1], textEntry[1])\n ? commonAncestor\n : getCommonNode(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 as Node[])\n : [commonAncestorEntry[0]];\n};\n\n/**\n * Removes leading li when pasting a single li with a single child.\n */\nconst trimLiWrapper = (nodes: Node[]): Node[] => {\n if (nodes.length !== 1) {\n return nodes;\n }\n\n const node = nodes[0];\n\n if (node.type !== BLOCKS.LIST_ITEM || (node as Element).children.length !== 1) {\n return nodes;\n }\n\n return node.children as Node[];\n};\n\nconst unwrapTextContainerAtStart = (nodes: Node[]): Node[] => {\n const node = nodes[0];\n\n if (TEXT_CONTAINERS.includes((node as Element).type as BLOCKS)) {\n return [...(node as Element).children, ...nodes.slice(1)];\n }\n\n return nodes;\n};\n\nexport const insertListFragment = (editor: PlateEditor) => {\n const { insertFragment } = editor;\n\n return (fragment: Node[]) => {\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) => isBlockNode(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 insertNodes(editor, inlines, {\n at: editor.selection,\n select: true,\n });\n\n return insertNodes(editor, blocks, {\n at: editor.selection,\n select: true,\n });\n }\n\n const filtered = isListRoot(fragment[0]) ? [{ text: '' }, ...fragment] : 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 { BLOCKS } from '@contentful/rich-text-types';\nimport {\n getListItemEntry,\n removeFirstListItem,\n removeListItem,\n isListNested,\n} from '@udecode/plate-list';\nimport { onKeyDownResetNode, SIMULATE_BACKSPACE } from '@udecode/plate-reset-node';\n\nimport { withoutNormalizing } from '../../../internal';\nimport { mockPlugin } from '../../../internal/misc';\nimport { isSelectionAtBlockStart, isFirstChild } from '../../../internal/queries';\nimport { deleteFragment } from '../../../internal/transforms';\nimport { PlateEditor } from '../../../internal/types';\nimport { unwrapList } from './unwrapList';\n\nexport const deleteBackwardList = (\n editor: PlateEditor,\n unit: 'character' | 'word' | 'line' | 'block'\n) => {\n const res = getListItemEntry(editor, {});\n\n let moved: boolean | undefined = false;\n\n if (res) {\n const { list, listItem } = res;\n\n if (\n isSelectionAtBlockStart(editor, {\n match: (node) => node.type === BLOCKS.LIST_ITEM,\n })\n ) {\n withoutNormalizing(editor, () => {\n moved = removeFirstListItem(editor, { list, listItem });\n if (moved) return;\n\n moved = removeListItem(editor, { list, listItem });\n if (moved) return;\n\n if (isFirstChild(listItem[1]) && !isListNested(editor, list[1])) {\n onKeyDownResetNode(\n editor,\n // TODO look into this\n // @ts-expect-error\n mockPlugin({\n options: {\n rules: [\n {\n types: [BLOCKS.LIST_ITEM],\n defaultType: BLOCKS.PARAGRAPH,\n hotkey: 'backspace',\n predicate: () => isSelectionAtBlockStart(editor),\n onReset: (e: PlateEditor) => unwrapList(e),\n },\n ],\n },\n })\n )(SIMULATE_BACKSPACE);\n moved = true;\n return;\n }\n\n deleteFragment(editor, {\n // FIXME: see if we can remove unit\n // @ts-expect-error\n unit: unit,\n reverse: true,\n });\n moved = true;\n });\n }\n }\n\n return moved;\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 { normalizeList, deleteFragmentList, deleteForwardList } from '@udecode/plate-list';\n\nimport { WithOverride } from '../../internal/types';\nimport { insertListBreak } from './insertListBreak';\nimport { insertListFragment } from './insertListFragment';\nimport { deleteBackwardList } from './transforms/deleteBackwardList';\n\nconst validLiChildrenTypes = LIST_ITEM_BLOCKS;\n\nexport const withList: WithOverride = (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 our own 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 { PlatePlugin, PlateEditor, Value } from '../../internal/types';\nimport { ListOL, ListUL } from './components/List';\nimport { ListItem } from './components/ListItem';\nimport { onKeyDownList } from './onKeyDownList';\nimport {\n isNonEmptyListItem,\n hasListAsDirectParent,\n insertParagraphAsChild,\n normalizeOrphanedListItem,\n firstNodeIsNotList,\n replaceNodeWithListItems,\n} from './utils';\nimport { withList } from './withList';\n\nexport const createListPlugin = (): PlatePlugin =>\n createPlateListPlugin<any, Value, PlateEditor>({\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 handlers: {\n onKeyDown: onKeyDownList,\n },\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 handlers: {\n onKeyDown: onKeyDownList,\n },\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 // @ts-expect-error\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 });\n","import * as React from 'react';\n\nimport { ListBulletedIcon, ListNumberedIcon } from '@contentful/f36-icons';\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { focus } from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { toggleList } from '../transforms/toggleList';\nimport { isListTypeActive } from '../utils';\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 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={isListTypeActive(editor, BLOCKS.UL_LIST)}\n isDisabled={props.isDisabled}\n >\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={isListTypeActive(editor, BLOCKS.OL_LIST)}\n isDisabled={props.isDisabled}\n >\n <ListNumberedIcon />\n </ToolbarButton>\n )}\n </React.Fragment>\n );\n}\n","import { MARKS } from '@contentful/rich-text-types';\nimport isHotkey from 'is-hotkey';\n\nimport { isMarkActive } from '../../internal/queries';\nimport { toggleMark } from '../../internal/transforms';\nimport { PlateEditor, HotkeyPlugin, KeyboardHandler } from '../../internal/types';\n\nexport const toggleMarkAndDeactivateConflictingMarks = (editor: PlateEditor, mark: MARKS) => {\n const subs = [MARKS.SUPERSCRIPT, MARKS.SUBSCRIPT];\n const clear = subs.includes(mark) ? subs : [];\n toggleMark(editor, { key: mark, clear });\n};\n\nexport const buildMarkEventHandler =\n (type: MARKS): KeyboardHandler<HotkeyPlugin> =>\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n event.preventDefault();\n\n const isActive = isMarkActive(editor, type);\n editor.tracking.onShortcutAction(isActive ? 'unmark' : 'mark', { markType: type });\n toggleMarkAndDeactivateConflictingMarks(editor, type);\n }\n };\n","import * as React from 'react';\n\nimport { Menu } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { css, cx } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { focus } from '../../../helpers/editor';\nimport { isMarkActive } from '../../../internal/queries';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { toggleMarkAndDeactivateConflictingMarks } from '../helpers';\n\nexport interface MarkOptions {\n mark: MARKS;\n title: string;\n icon?: React.ReactElement;\n}\n\nconst styles = {\n isActive: css({\n backgroundColor: tokens.blue100,\n color: tokens.blue600,\n }),\n};\n\nexport const createMarkToolbarButton = ({ mark, title, icon }: MarkOptions) => {\n const Mark = ({ isDisabled }: { isDisabled?: boolean }) => {\n const editor = useContentfulEditor();\n\n const handleClick = React.useCallback(() => {\n if (!editor?.selection) return;\n\n const isActive = isMarkActive(editor, mark);\n editor.tracking.onToolbarAction(isActive ? 'unmark' : 'mark', { markType: mark });\n\n toggleMarkAndDeactivateConflictingMarks(editor, mark);\n focus(editor);\n }, [editor]);\n\n if (!editor) return null;\n\n if (!icon) {\n return (\n <Menu.Item\n onClick={handleClick}\n disabled={isDisabled}\n className={cx({\n [styles.isActive]: isMarkActive(editor, mark),\n })}\n testId={`${mark}-toolbar-button`}\n >\n {title}\n </Menu.Item>\n );\n }\n\n return (\n <ToolbarButton\n title={title}\n testId={`${mark}-toolbar-button`}\n onClick={handleClick}\n isActive={isMarkActive(editor, mark)}\n isDisabled={isDisabled}\n >\n {icon}\n </ToolbarButton>\n );\n };\n\n Mark.displayName = mark;\n\n return Mark;\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 { css } from 'emotion';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarBoldButton = createMarkToolbarButton({\n title: 'Bold',\n mark: MARKS.BOLD,\n icon: <FormatBoldIcon />,\n});\n\nconst styles = {\n bold: css({\n fontWeight: 600,\n }),\n};\n\nexport function Bold(props: 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 = (): PlatePlugin =>\n createDefaultBoldPlugin({\n type: MARKS.BOLD,\n component: Bold,\n options: {\n hotkey: ['mod+b'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.BOLD),\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 { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarCodeButton = createMarkToolbarButton({\n title: 'Code',\n mark: MARKS.CODE,\n icon: <CodeIcon />,\n});\n\nexport const ToolbarDropdownCodeButton = createMarkToolbarButton({\n title: 'Code',\n mark: MARKS.CODE,\n});\n\nconst styles = {\n code: css({\n fontFamily: 'monospace',\n fontSize: '.9em',\n }),\n};\n\nexport function Code(props: RenderLeafProps) {\n return (\n <code {...props.attributes} className={styles.code}>\n {props.children}\n </code>\n );\n}\n\nexport const createCodePlugin = (): PlatePlugin =>\n createDefaultCodePlugin({\n type: MARKS.CODE,\n component: Code,\n options: {\n // We need to define multiple hotkeys here,\n // - mod+/ -> QWERTY keyboard layout\n // - mod+shift+7 -> QWERTZ keyboard layout\n // The workaround like in packages/rich-text/src/plugins/CommandPalette/onKeyDown.ts is sadly not working here,\n // as `shift+7` is not interpreted as `/` with the `mod` key by the OS.\n // TODO: there are a lot more different keyboard layouts out there\n hotkey: ['mod+/', 'mod+shift+7'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.CODE),\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 { css } from 'emotion';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarItalicButton = createMarkToolbarButton({\n title: 'Italic',\n mark: MARKS.ITALIC,\n icon: <FormatItalicIcon />,\n});\n\nconst styles = {\n italic: css({\n fontStyle: 'italic',\n }),\n};\n\nexport function Italic(props: RenderLeafProps) {\n return (\n <em {...props.attributes} className={styles.italic}>\n {props.children}\n </em>\n );\n}\n\nexport const createItalicPlugin = (): PlatePlugin =>\n createDefaultItalicPlugin({\n type: MARKS.ITALIC,\n component: Italic,\n options: {\n hotkey: ['mod+i'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.ITALIC),\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 { SubscriptIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createSubscriptPlugin as createDefaultSubscriptPlugin } from '@udecode/plate-basic-marks';\nimport { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nconst styles = {\n subscript: css({\n verticalAlign: 'sub',\n fontSize: 'smaller',\n }),\n};\n\nexport const ToolbarSubscriptButton = createMarkToolbarButton({\n title: 'Subscript',\n mark: MARKS.SUBSCRIPT,\n icon: <SubscriptIcon viewBox=\"0 0 23 18\" />,\n});\n\nexport const ToolbarDropdownSubscriptButton = createMarkToolbarButton({\n title: 'Subscript',\n mark: MARKS.SUBSCRIPT,\n});\n\nexport function Subscript(props: RenderLeafProps) {\n return (\n <sub {...props.attributes} className={styles.subscript}>\n {props.children}\n </sub>\n );\n}\n\nexport const createSubscriptPlugin = (): PlatePlugin =>\n createDefaultSubscriptPlugin({\n type: MARKS.SUBSCRIPT,\n component: Subscript,\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.SUBSCRIPT),\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['SUB'],\n },\n ],\n },\n });\n","import * as React from 'react';\n\nimport { SuperscriptIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createSuperscriptPlugin as createDefaultSuperscriptPlugin } from '@udecode/plate-basic-marks';\nimport { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nconst styles = {\n superscript: css({\n verticalAlign: 'super',\n fontSize: 'smaller',\n }),\n};\n\nexport const ToolbarSuperscriptButton = createMarkToolbarButton({\n title: 'Superscript',\n mark: MARKS.SUPERSCRIPT,\n icon: <SuperscriptIcon />,\n});\n\nexport const ToolbarDropdownSuperscriptButton = createMarkToolbarButton({\n title: 'Superscript',\n mark: MARKS.SUPERSCRIPT,\n});\n\nexport function Superscript(props: RenderLeafProps) {\n return (\n <sup {...props.attributes} className={styles.superscript}>\n {props.children}\n </sup>\n );\n}\n\nexport const createSuperscriptPlugin = (): PlatePlugin =>\n createDefaultSuperscriptPlugin({\n type: MARKS.SUPERSCRIPT,\n component: Superscript,\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.SUPERSCRIPT),\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['SUP'],\n },\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';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarUnderlineButton = createMarkToolbarButton({\n title: 'Underline',\n mark: MARKS.UNDERLINE,\n icon: <FormatUnderlinedIcon />,\n});\n\nexport function Underline(props: RenderLeafProps) {\n return <u {...props.attributes}>{props.children}</u>;\n}\n\nexport const createUnderlinePlugin = (): PlatePlugin =>\n createDefaultUnderlinePlugin({\n type: MARKS.UNDERLINE,\n component: Underline,\n options: {\n hotkey: ['mod+u'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.UNDERLINE),\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 { PlatePlugin } from '../../internal/types';\nimport { createBoldPlugin } from './Bold';\nimport { createCodePlugin } from './Code';\nimport { createItalicPlugin } from './Italic';\nimport { createSubscriptPlugin } from './Subscript';\nimport { createSuperscriptPlugin } from './Superscript';\nimport { createUnderlinePlugin } from './Underline';\n\nexport const createMarksPlugin = (): PlatePlugin => ({\n key: 'Marks',\n plugins: [\n createBoldPlugin(),\n createCodePlugin(),\n createItalicPlugin(),\n createUnderlinePlugin(),\n createSuperscriptPlugin(),\n createSubscriptPlugin(),\n ],\n});\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { INLINE_TYPES } from '../../helpers/editor';\nimport { transformWrapIn } from '../../helpers/transformers';\nimport { getParentNode, isText } from '../../internal/queries';\nimport { Element } from '../../internal/types';\nimport { NormalizerRule } from './types';\n\nconst isInline = (node: Element) => INLINE_TYPES.includes(node.type);\nconst isTextContainer = (node: Element) => 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: isText,\n validNode: (editor, [, path]) => {\n const parent = getParentNode(editor, path)?.[0] as Element;\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 = getParentNode(editor, path)?.[0] as Element;\n return !!parent && isTextContainer(parent);\n },\n transform: transformWrapIn(BLOCKS.PARAGRAPH),\n },\n];\n","import { isElement } from '../../internal/queries';\nimport { NodeValidator, NodeTransformer } from './types';\n\nexport class NormalizerError extends Error {}\n\nexport const createValidatorFromTypes =\n (types: string[]): NodeValidator =>\n (_, [node]) => {\n return isElement(node) && types.includes(node.type);\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 = isElement(node) ? node.type : 'default';\n\n const transformer = transforms[key] || fallback;\n\n return transformer(editor, entry);\n };\n};\n","import isPlainObject from 'is-plain-obj';\n\nimport { transformRemove } from '../../helpers/transformers';\nimport { withoutNormalizing } from '../../internal';\nimport { getChildren, matchNode, getPluginType } from '../../internal/queries';\nimport { PlateEditor, PlatePlugin, NodeEntry } from '../../internal/types';\nimport { baseRules } from './baseRules';\nimport { NormalizerRule, NodeTransformer, NodeValidator } from './types';\nimport { NormalizerError, createValidatorFromTypes, createTransformerFromObject } from './utils';\n\nexport const withNormalizer = (editor: PlateEditor) => {\n const rules: Required<NormalizerRule>[] = baseRules;\n\n // Derive normalization rules from other plugin's configurations\n for (const p of editor.plugins as PlatePlugin[]) {\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 withoutNormalizing(editor, () => {\n tr(editor, entry);\n });\n };\n\n const { normalizeNode } = editor;\n\n // @ts-expect-error\n editor.normalizeNode = (entry: NodeEntry) => {\n const [node, path] = entry;\n const children = getChildren(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 (!matchNode(node, path, 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 { PlatePlugin } from '../../internal/types';\nimport { withNormalizer } from './withNormalizer';\n\nexport const createNormalizerPlugin = (): PlatePlugin => ({\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';\n\nimport { RenderElementProps } from '../../internal/types';\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';\nimport isHotkey from 'is-hotkey';\n\nimport { isInlineOrText, toggleElement } from '../../helpers/editor';\nimport { transformUnwrap, transformLift } from '../../helpers/transformers';\nimport { PlatePlugin, KeyboardHandler, HotkeyPlugin } from '../../internal/types';\nimport { Paragraph } from './Paragraph';\nimport { isEmbedElement, isEmptyElement } from './utils';\n\nconst buildParagraphKeyDownHandler: KeyboardHandler<HotkeyPlugin> =\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n toggleElement(editor, { activeType: BLOCKS.PARAGRAPH, inactiveType: BLOCKS.PARAGRAPH });\n }\n };\n\nexport const createParagraphPlugin = (): PlatePlugin => {\n const config: Partial<PlatePlugin> = {\n type: BLOCKS.PARAGRAPH,\n component: Paragraph,\n options: {\n hotkey: ['mod+opt+0'],\n },\n handlers: {\n onKeyDown: buildParagraphKeyDownHandler,\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 -- TODO: explain this disable\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\n/**\n * Remove all <meta /> tags\n */\nconst stripMetaTags = (doc: Document): Document => {\n doc.querySelectorAll('meta').forEach((el) => el.remove());\n\n return doc;\n};\n\n// Attention: Order is important\nconst transformers = [stripStyleTags, sanitizeSheets, stripMetaTags];\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 let previous: string;\n do {\n // save previous first before doing modifications\n previous = doc.body.innerHTML;\n // Update the body with the cleaned up content\n doc.body.innerHTML = doc.body.innerHTML\n // remove div container from tables\n // capture groups explained:\n // 1. and 3. every content/linebreaks before and after the div container\n // 2. the table inside the container, including content and linebreaks\n // The div container including attributes and possible linebreaks inside wil be removed\n .replace(/(.*\\s)?<div.*>\\s*(<table(?:.|\\s)*<\\/table>)\\s*<\\/div>(.*\\s)?/g, '$1$2$3')\n // remove whitespaces between some tags, as this can lead to unwanted behaviour:\n // - table -> empty table cells\n // - list -> leading whitespaces\n .replace(\n /<(\\/)?(table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)(.*)>\\s+</g,\n '<$1$2$3><'\n );\n } while (doc.body.innerHTML !== previous);\n\n return doc.body.innerHTML;\n};\n","import { KEY_DESERIALIZE_HTML } from '@udecode/plate-core';\n\nimport { PlatePlugin } from '../../internal/types';\nimport { sanitizeHTML } from './utils/sanitizeHTML';\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nexport const getSlateFragmentAttribute = (dataTransfer: DataTransfer): string | void => {\n const htmlData = dataTransfer.getData('text/html');\n const [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const ensureXSlateFragment = (dataTransfer: DataTransfer): DataTransfer => {\n if (!dataTransfer.getData('application/x-slate-fragment')) {\n const fragment = getSlateFragmentAttribute(dataTransfer);\n if (fragment) {\n const clipboardData = new DataTransfer();\n dataTransfer.types.forEach((type) => {\n clipboardData.setData(type, dataTransfer.getData(type));\n });\n clipboardData.setData('application/x-slate-fragment', fragment);\n return clipboardData;\n }\n }\n return dataTransfer;\n};\n\nexport const createPasteHTMLPlugin = (): PlatePlugin => ({\n key: 'PasteHTMLPlugin',\n withOverrides: (editor) => {\n const { insertData } = editor;\n editor.insertData = (data) => insertData(ensureXSlateFragment(data));\n return editor;\n },\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';\n\nimport { RenderElementProps } from '../../../internal/types';\n\nconst style = css({\n margin: '0 0 1.3125rem',\n borderLeft: `6px solid ${tokens.gray200}`,\n paddingLeft: '0.875rem',\n fontStyle: 'normal',\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, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { isLastChild, hasSingleChild } from '@udecode/plate-core';\n\nimport { getAboveNode, getBlockAbove, isAncestorEmpty } from '../../internal/queries';\nimport { PlateEditor, Ancestor } from '../../internal/types';\n\n/**\n * Returns true if we are:\n * 1) Inside a blockquote\n * 2) With no only one child paragraph/heading and\n * 3) that child is empty\n */\nexport const shouldResetQuoteOnBackspace = (editor: PlateEditor) => {\n const container = getAboveNode(editor, {\n match: { type: TEXT_CONTAINERS },\n mode: 'lowest',\n });\n\n if (!container) {\n return false;\n }\n\n if (!isAncestorEmpty(editor, container[0] as Ancestor)) {\n return false;\n }\n\n const quote = getBlockAbove(editor, {\n match: { type: BLOCKS.QUOTE },\n mode: 'lowest',\n });\n\n if (!quote) {\n return false;\n }\n\n if (hasSingleChild(quote[0]) && isLastChild(quote, container[1])) {\n return true;\n }\n\n return false;\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport isHotkey from 'is-hotkey';\n\nimport { isBlockSelected } from '../../helpers/editor';\nimport { withoutNormalizing, wrapNodes, unwrapNodes, isElement } from '../../internal';\nimport { KeyboardHandler, HotkeyPlugin, PlateEditor } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\n\nexport function toggleQuote(\n editor: PlateEditor,\n logAction?: TrackingPluginActions['onShortcutAction'] | TrackingPluginActions['onToolbarAction']\n): void {\n if (!editor.selection) return;\n\n const isActive = isBlockSelected(editor, BLOCKS.QUOTE);\n\n logAction?.(isActive ? 'remove' : 'insert', { nodeType: BLOCKS.QUOTE });\n\n withoutNormalizing(editor, () => {\n if (!editor.selection) return;\n\n unwrapNodes(editor, {\n match: (node) => isElement(node) && node.type === BLOCKS.QUOTE,\n split: true,\n });\n\n if (!isActive) {\n const quote = {\n type: BLOCKS.QUOTE,\n data: {},\n children: [],\n };\n\n wrapNodes(editor, quote);\n }\n });\n}\n\nexport const onKeyDownToggleQuote: KeyboardHandler<HotkeyPlugin> = (editor, plugin) => (event) => {\n const { hotkey } = plugin.options;\n\n if (hotkey && isHotkey(hotkey, event)) {\n event.preventDefault();\n toggleQuote(editor, editor.tracking.onShortcutAction);\n }\n};\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { BaseRange, BaseSelection, Element, Point } from 'slate';\n\nimport { getAboveNode, getText } from '../../internal/queries';\nimport { deleteText, insertNodes } from '../../internal/transforms';\nimport { WithOverride } from '../../internal/types';\n\nexport const withQuote: WithOverride = (editor) => {\n const { insertFragment } = editor;\n\n editor.insertFragment = (fragment) => {\n const startingNode = fragment.length && fragment[0];\n const startsWithBlockquote =\n Element.isElement(startingNode) && startingNode.type === BLOCKS.QUOTE;\n\n const containerEntry = getAboveNode(editor, {\n match: {\n type: TEXT_CONTAINERS,\n },\n });\n\n const containerIsNotEmpty = containerEntry && getText(editor, containerEntry[1]) !== '';\n\n if (startsWithBlockquote && containerIsNotEmpty) {\n const { selection } = editor;\n const isContentSelected = (selection: BaseSelection): selection is BaseRange =>\n !!selection && Point.compare(selection.anchor, selection.focus) !== 0;\n // if something is selected (highlighted) we replace the selection\n if (isContentSelected(selection)) {\n deleteText(editor, { at: selection });\n }\n\n // get the cursor entry again, it may be different after deletion\n const containerEntry = getAboveNode(editor, {\n match: {\n type: TEXT_CONTAINERS,\n },\n });\n\n const containerIsNotEmpty = containerEntry && getText(editor, containerEntry[1]) !== '';\n\n if (containerIsNotEmpty) {\n insertNodes(editor, fragment);\n return;\n }\n }\n\n insertFragment(fragment);\n };\n\n return editor;\n};\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\n\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { PlatePlugin } from '../../internal/types';\nimport { Quote } from './components/Quote';\nimport { shouldResetQuoteOnBackspace } from './shouldResetQuote';\nimport { onKeyDownToggleQuote, toggleQuote } from './toggleQuote';\nimport { withQuote } from './withQuote';\n\nexport function createQuotePlugin(): PlatePlugin {\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 resetNode: [\n {\n // toggle off blockquote on backspace when it's empty\n hotkey: 'backspace',\n types: [BLOCKS.QUOTE],\n predicate: shouldResetQuoteOnBackspace,\n onReset: toggleQuote,\n },\n ],\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.QUOTE],\n transform: {\n [BLOCKS.QUOTE]: transformUnwrap,\n default: transformLift,\n },\n },\n ],\n withOverrides: withQuote,\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, editor.tracking.onToolbarAction);\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 >\n <QuoteIcon />\n </ToolbarButton>\n );\n}\n","import { INLINES } from '@contentful/rich-text-types';\nimport { createSelectOnBackspacePlugin as createDefaultSelectPlugin } from '@udecode/plate-select';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createSelectOnBackspacePlugin = (): PlatePlugin =>\n createDefaultSelectPlugin({\n options: {\n query: {\n // `createTextPlugin` is taking care of block elements\n allow: [INLINES.EMBEDDED_ENTRY],\n },\n },\n });\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { getEmptyRowNode } from '@udecode/plate-table';\n\nimport { getAboveNode, someNode, getStartPoint, getNextPath } from '../../../internal/queries';\nimport { select, insertNodes } from '../../../internal/transforms';\nimport { PlateEditor, NodeEntry, Element, Path, Location } from '../../../internal/types';\n\nconst addRow = (editor: PlateEditor, getNextRowPath: (currentRowPath: Path) => Path) => {\n if (\n someNode(editor, {\n match: { type: BLOCKS.TABLE },\n })\n ) {\n const currentRowItem = getAboveNode(editor, {\n match: { type: BLOCKS.TABLE_ROW },\n }) as NodeEntry<Element> | undefined;\n\n if (currentRowItem) {\n const [currentRowElem, currentRowPath] = currentRowItem;\n const nextRowPath = getNextRowPath(currentRowPath);\n\n insertNodes(\n editor,\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 select(editor, getStartPoint(editor, nextRowPath as Location));\n }\n }\n};\n\nexport const addRowBelow = (editor: PlateEditor) => {\n addRow(editor, (currentRowPath) => {\n return getNextPath(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 { BLOCKS } from '@contentful/rich-text-types';\nimport { getEmptyCellNode } from '@udecode/plate-table';\n\nimport { getAboveNode, getNextPath, someNode } from '../../../internal/queries';\nimport { insertNodes } from '../../../internal/transforms';\nimport { PlateEditor, Path, Element, NodeEntry } from '../../../internal/types';\n\ninterface AddColumnOptions {\n header?: boolean;\n}\n\nconst addColumn = (\n editor: PlateEditor,\n { header }: AddColumnOptions,\n getNextCellPath: (currentCellPath: Path) => Path\n) => {\n if (\n someNode(editor, {\n match: { type: BLOCKS.TABLE },\n })\n ) {\n const currentCellItem = getAboveNode(editor, {\n match: {\n type: [BLOCKS.TABLE_HEADER_CELL, BLOCKS.TABLE_CELL],\n },\n });\n\n const currentTableItem = getAboveNode(editor, {\n match: { type: BLOCKS.TABLE },\n }) as NodeEntry<Element> | undefined;\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(\n editor,\n\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: AddColumnOptions) => {\n addColumn(editor, options, (currentCellPath) => getNextPath(currentCellPath));\n};\n\nexport const addColumnLeft = (editor: PlateEditor, options: AddColumnOptions) => {\n addColumn(editor, options, (currentCellPath) => currentCellPath);\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { getAboveNode, getChildren } from '../../../internal/queries';\nimport { setNodes } from '../../../internal/transforms';\nimport { PlateEditor } from '../../../internal/types';\n\nexport const setHeader = (editor: PlateEditor, enable?: boolean) => {\n const tableItem = getAboveNode(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 {\n ELEMENT_TABLE,\n ELEMENT_TH,\n ELEMENT_TD,\n ELEMENT_TR,\n getEmptyRowNode,\n} from '@udecode/plate-table';\n\nimport { isBlockSelected, getAncestorPathFromSelection } from '../../helpers/editor';\nimport { selectEditor } from '../../internal';\nimport {\n getBlockAbove,\n getStartPoint,\n getAboveNode,\n getChildren,\n isFirstChildPath,\n isAncestorEmpty,\n getParentNode,\n isElement,\n getNodeEntries,\n getPreviousPath,\n} from '../../internal/queries';\nimport { insertNodes, removeNodes, moveNodes } from '../../internal/transforms';\nimport { PlateEditor, NodeEntry, Ancestor, Node } from '../../internal/types';\n\nexport function insertTableAndFocusFirstCell(editor: PlateEditor): void {\n const table = {\n type: BLOCKS.TABLE,\n data: {},\n children: [\n getEmptyRowNode(editor, { colCount: 2, header: true }),\n getEmptyRowNode(editor, { colCount: 2 }),\n ],\n };\n\n insertNodes(editor, table);\n\n if (editor.selection) {\n const tableEntry = getBlockAbove(editor, {\n match: { type: BLOCKS.TABLE },\n });\n if (!tableEntry) return;\n\n selectEditor(editor, { at: getStartPoint(editor, tableEntry[1]) });\n }\n\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 = getAboveNode(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 || isFirstChildPath(tablePath)) return;\n\n const previousPath = getPreviousPath(tablePath);\n if (!previousPath) return;\n\n const [nodes] = getNodeEntries(editor, {\n at: previousPath,\n match: (node) => node.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 moveNodes(editor, { at: tablePath, to: previousPath });\n // Remove previous paragraph that now is under the table\n 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, rowEntry: NodeEntry) => {\n const [, rowPath] = rowEntry;\n const parent = getParentNode(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 // The longest table row determines its width\n const tableWidth = Math.max(...getChildren(parent).map((entry) => getChildren(entry).length));\n\n const rowWidth = getChildren(rowEntry).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 = (_: PlateEditor, entry: NodeEntry) => {\n return getChildren(entry).length !== 0;\n};\n\nexport const isTable = (node: Node) => {\n return isElement(node) && node.type === BLOCKS.TABLE;\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 { deleteColumn, deleteRow, deleteTable } from '@udecode/plate-table';\nimport { css } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { getNodeEntryFromSelection, getTableSize } from '../../../helpers/editor';\nimport { withoutNormalizing } from '../../../internal';\nimport { useReadOnly } from '../../../internal/hooks';\nimport { getAboveNode } from '../../../internal/queries';\nimport { PlateEditor } from '../../../internal/types';\nimport { RichTextTrackingActionName } from '../../../plugins/Tracking';\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\n// FIXME: TablePluginOptions no longer exported so using any\ntype TableAction = (editor: PlateEditor, options: any) => void;\n\nexport const TableActions = () => {\n const editor = useContentfulEditor();\n const isDisabled = useReadOnly();\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 = getAboveNode(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 withoutNormalizing(editor, () => {\n cb(editor, { header: isHeaderEnabled });\n });\n // Tracking\n const actionName = `${type}Table${element === 'Table' ? '' : element}`;\n editor.tracking.onViewportAction(actionName as RichTextTrackingActionName, { tableSize });\n },\n [editor, isHeaderEnabled, close]\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 >\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 { useSelected } from 'slate-react';\n\nimport { RenderElementProps } from '../../../internal/types';\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: RenderElementProps) => {\n const isSelected = useSelected();\n return (\n <td\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n // FIXME: figure out what is going wrong with type here\n // @ts-expect-error\n {...(props.element.data as TableCell['data'])}\n className={style}\n >\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 { useSelected } from 'slate-react';\n\nimport { RenderElementProps } from '../../../internal/types';\nimport { TableActions } from './TableActions';\n\nconst style = css`\n background-clip: padding-box;\n background-color: ${tokens.gray200};\n border: 1px solid ${tokens.gray400};\n border-collapse: collapse;\n padding: 10px 12px;\n font-weight: ${tokens.fontWeightNormal};\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: RenderElementProps) => {\n const isSelected = useSelected();\n\n return (\n <th\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n // FIXME: figure out what is going wrong with type here\n // @ts-expect-error\n {...(props.element.data as TableHeaderCell['data'])}\n className={style}\n >\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 { BLOCKS } from '@contentful/rich-text-types';\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 return (\n <div data-block-type={BLOCKS.TABLE}>\n <table className={style} {...props.attributes}>\n <tbody>{props.children}</tbody>\n </table>\n </div>\n );\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { insertEmptyParagraph } from '../../helpers/editor';\nimport { getText, isElement } from '../../internal/queries';\nimport { Node } from '../../internal/types';\nimport { Element, PlateEditor } from '../../internal/types';\nimport { isTable } from './helpers';\n\n/**\n * Removes table wrappers when pasting a single table cell\n *\n * In Plate/Slate, copying the content of a table cell wraps\n * it in a <table><tr><td>{content}</td></tr></table> even\n * when copying partial cell content.\n *\n * That's really annoying as there is no way to remove the table\n * wrappers in that case.\n */\nconst trimUnnecessaryTableWrapper = (node: Node): Node[] => {\n if (!isElement(node)) {\n return [node];\n }\n\n // must be a table with a single row\n if (node.type !== BLOCKS.TABLE || node.children?.length !== 1) {\n return [node];\n }\n\n const row = node.children[0] as Element;\n\n // the row must contain a single cell\n if (row?.children?.length !== 1) {\n return [node];\n }\n\n const cell = row.children[0] as Element;\n\n return cell.children;\n};\n\nexport const insertTableFragment = (editor: PlateEditor) => {\n const { insertFragment } = editor;\n\n return (fragments: Node[]) => {\n if (!editor.selection) {\n return;\n }\n\n fragments = fragments.flatMap(trimUnnecessaryTableWrapper);\n\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 isInsertingTable = fragments.some((fragment) => isTable(fragment as Element));\n const isTableFirstFragment =\n fragments.findIndex((fragment) => isTable(fragment as Element)) === 0;\n const currentLineHasText = getText(editor, editor.selection?.focus.path) !== '';\n\n if (isInsertingTable && isTableFirstFragment && currentLineHasText) {\n insertEmptyParagraph(editor);\n }\n\n return insertFragment(fragments);\n };\n};\n","import { KeyboardEvent } from 'react';\n\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { getTableEntries, onKeyDownTable as defaultKeyDownTable } from '@udecode/plate-table';\n\nimport { insertEmptyParagraph } from '../../helpers/editor';\nimport { blurEditor } from '../../internal/misc';\nimport { getAboveNode, isLastChildPath } from '../../internal/queries';\nimport { KeyboardHandler, HotkeyPlugin, NodeEntry } from '../../internal/types';\nimport { addRowBelow } from './actions';\n\nexport const onKeyDownTable: KeyboardHandler<HotkeyPlugin> = (editor, plugin) => {\n const defaultHandler = defaultKeyDownTable(editor, plugin);\n\n return (event: KeyboardEvent) => {\n // This fixes `Cannot resolve a Slate point from DOM point:\n // [object HTMLDivElement]` when typing while the cursor is before table\n const windowSelection = window.getSelection();\n if (windowSelection) {\n // @ts-expect-error\n // this attribute comes from `plugins/Table/components/Table.tsx`\n const blockType = windowSelection.anchorNode.attributes?.['data-block-type']?.value;\n const isBeforeTable = blockType === BLOCKS.TABLE;\n\n if (isBeforeTable) {\n if (event.key === 'Enter') {\n const above = getAboveNode(editor, { match: { type: BLOCKS.TABLE } });\n\n if (!above) return;\n\n const [, tablePath] = above;\n\n insertEmptyParagraph(editor, { at: tablePath, select: true });\n }\n\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n // Pressing Tab on the last cell creates a new row\n // Otherwise, jumping between cells is handled in the defaultKeyDownTable\n if (event.key === 'Tab' && !event.shiftKey) {\n event.preventDefault();\n const entry = getTableEntries(editor, {});\n\n if (entry) {\n const { table, row, cell } = entry;\n\n const isLastCell = isLastChildPath(row as NodeEntry, cell[1]);\n const isLastRow = isLastChildPath(table as NodeEntry, row[1]);\n\n if (isLastRow && isLastCell) {\n addRowBelow(editor);\n\n // skip default handler\n return;\n } else {\n defaultHandler(event);\n }\n }\n }\n\n if (event.key === 'Escape') {\n blurEditor(editor);\n }\n };\n};\n","import {\n BLOCKS,\n INLINES,\n TOP_LEVEL_BLOCKS,\n VOID_BLOCKS,\n CONTAINERS,\n} from '@contentful/rich-text-types';\n\nconst inlines = Object.values(INLINES).map((type) => ({ type }));\n\nexport default {\n document: {\n nodes: [\n {\n types: TOP_LEVEL_BLOCKS.map((type) => ({ type })),\n },\n ],\n },\n\n blocks: {\n [BLOCKS.PARAGRAPH]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_1]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_2]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_3]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_4]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_5]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_6]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n\n ...VOID_BLOCKS.reduce(\n (blocks, nodeType) => ({\n ...blocks,\n [nodeType]: { isVoid: true },\n }),\n {}\n ),\n\n // TODO: add list schema\n\n [BLOCKS.QUOTE]: {\n nodes: [\n {\n match: [CONTAINERS[BLOCKS.QUOTE].map((type) => ({ type }))],\n min: 1,\n },\n ],\n normalize: (editor, error) => {\n if (error.code === 'child_type_invalid') {\n return editor.unwrapBlockByKey(error.node.key, BLOCKS.QUOTE);\n }\n },\n },\n },\n\n inlines: {\n [INLINES.HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ENTRY_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ASSET_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.EMBEDDED_ENTRY]: {\n isVoid: true,\n },\n },\n};\n","import * as contentfulSlateJSAdapter from '@contentful/contentful-slatejs-adapter';\nimport { documentToPlainTextString } from '@contentful/rich-text-plain-text-renderer';\n\nimport Schema from '../../constants/Schema';\nimport { PlateEditor } from '../../internal/types';\n\nexport function getCharacterCount(editor: PlateEditor) {\n const document = contentfulSlateJSAdapter.toContentfulDocument({\n document: editor.children,\n schema: Schema,\n });\n\n return documentToPlainTextString(document).length;\n}\n","import { PlatePlugin } from '../../internal/types';\nimport { getCharacterCount } from './utils';\n\nexport type RichTextTrackingActionName =\n // Elements\n | 'edit'\n | 'insert'\n | 'remove'\n // Marks\n | 'mark'\n | 'unmark'\n // Tables\n | 'insertTable'\n | 'insertTableRow'\n | 'insertTableColumn'\n | 'removeTable'\n | 'removeTableRow'\n | 'removeTableColumn'\n // Copy & Paste\n | 'paste'\n | 'invalidTablePaste'\n // Hyperlinks\n | 'cancelCreateHyperlinkDialog'\n | 'cancelEditHyperlinkDialog'\n | 'linkRendered'\n | 'openCreateHyperlinkDialog'\n | 'openEditHyperlinkDialog'\n | 'unlinkHyperlinks'\n // Embeds\n | 'openCreateEmbedDialog'\n | 'cancelCreateEmbedDialog'\n // CommandPalette\n | 'openRichTextCommandPalette'\n | 'cancelRichTextCommandPalette';\n\nexport type RichTextTrackingActionHandler = (\n name: RichTextTrackingActionName,\n data: Record<string, unknown>\n) => unknown;\n\nexport interface TrackingPluginActions {\n onViewportAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onShortcutAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onToolbarAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onCommandPaletteAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n}\n\nconst actionOrigin = {\n TOOLBAR: 'toolbar-icon',\n SHORTCUT: 'shortcut',\n VIEWPORT: 'viewport-interaction',\n COMMAND_PALETTE: 'command-palette',\n};\n\nexport function getPastingSource(data: DataTransfer) {\n const textHtml = data.getData('text/html');\n const doc = new DOMParser().parseFromString(textHtml, 'text/html');\n\n if (doc.querySelector('[id*=\"docs-internal-guid\"]')) {\n return 'Google Docs';\n }\n\n if (doc.querySelector('google-sheets-html-origin') || doc.querySelector('[data-sheets-value]')) {\n return 'Google Spreadsheets';\n }\n\n if (doc.querySelector('meta[content*=\"Microsoft Excel\"]')) {\n return 'Microsoft Excel';\n }\n\n if (doc.querySelector('meta[content*=\"Microsoft Word\"]')) {\n return 'Microsoft Word';\n }\n\n // TODO: MS Word Online doesn't give us specific tags, we might need to have a closer look at its tracking result since we are using generic values to identify it\n if (\n doc.querySelector('[style*=\"Arial_MSFontService\"]') &&\n (doc.querySelector('.TextRun') || doc.querySelector('.OutlineElement'))\n ) {\n return 'Microsoft Word Online';\n }\n\n if (doc.querySelector('meta[content=\"Cocoa HTML Writer\"]')) {\n return 'Apple Notes';\n }\n\n if (doc.querySelector('[style*=\"Slack-Lato, Slack-Fractions\"]')) {\n return 'Slack';\n }\n\n return 'Unknown';\n}\n\nexport const createTrackingPlugin = (onAction: RichTextTrackingActionHandler): PlatePlugin => {\n const trackingActions: TrackingPluginActions = {\n onViewportAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.VIEWPORT, ...data }),\n\n onShortcutAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.SHORTCUT, ...data }),\n\n onToolbarAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.TOOLBAR, ...data }),\n\n onCommandPaletteAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, {\n origin: actionOrigin.COMMAND_PALETTE,\n ...data,\n }),\n };\n\n return {\n key: 'TrackingPlugin',\n withOverrides: (editor) => {\n const { insertData } = editor;\n\n editor.tracking = trackingActions;\n\n editor.insertData = (data) => {\n const isCopyAndPaste = data.types.length !== 0;\n if (isCopyAndPaste) {\n const characterCountSelection = window.getSelection()?.toString().length;\n const characterCountBefore = getCharacterCount(editor);\n\n setTimeout(() => {\n const characterCountAfter = getCharacterCount(editor);\n\n trackingActions.onShortcutAction('paste', {\n characterCountAfter,\n characterCountBefore,\n characterCountSelection,\n source: getPastingSource(data),\n });\n });\n }\n\n insertData(data);\n };\n\n return editor;\n },\n };\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { isElement } from '../../internal/queries';\nimport { Node, PlateEditor } from '../../internal/types';\nimport { getPastingSource } from '../../plugins/Tracking';\nimport type { NodeTransformer } from '../Normalizer';\n\nfunction hasTables(nodes: Node[]) {\n return nodes.some(({ type }) => {\n return type === BLOCKS.TABLE;\n });\n}\n\nconst isTableHeaderCell = ({ type }: Node) => type === BLOCKS.TABLE_HEADER_CELL;\n\nfunction hasHeadersOutsideFirstRow(nodes: Node[]) {\n return nodes\n .filter(({ type }) => type === BLOCKS.TABLE)\n .flatMap(({ children }) => (children as Node[]).slice(1) as Node[])\n .some(({ children }) => (children as Node[]).some(isTableHeaderCell));\n}\n\nexport function addTableTrackingEvents(editor: PlateEditor) {\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 editor.tracking.onViewportAction('paste', {\n tablePasted: true,\n source: getPastingSource(data),\n hasHeadersOutsideFirstRow: hasHeadersOutsideFirstRow(markupAfter),\n });\n }\n }, 1);\n } else {\n insertData(data);\n }\n };\n}\n\nexport const withInvalidCellChildrenTracking = (transformer: NodeTransformer): NodeTransformer => {\n return (editor, childEntry) => {\n const [node] = childEntry;\n\n if (isElement(node)) {\n editor.tracking?.onViewportAction('invalidTablePaste', {\n nodeType: node.type,\n });\n }\n\n return transformer(editor, childEntry);\n };\n};\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\nimport {\n createTablePlugin as createDefaultTablePlugin,\n ELEMENT_TABLE,\n ELEMENT_TD,\n ELEMENT_TH,\n ELEMENT_TR,\n withTable,\n TablePlugin,\n} from '@udecode/plate-table';\n\nimport { isRootLevel } from '../../helpers/editor';\nimport { transformLift, transformParagraphs, transformWrapIn } from '../../helpers/transformers';\nimport {\n getParentNode,\n getBlockAbove,\n getLastChildPath,\n getNextPath,\n} from '../../internal/queries';\nimport { insertNodes } from '../../internal/transforms';\nimport { PlatePlugin, PlateEditor, Value } from '../../internal/types';\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';\nimport { insertTableFragment } from './insertTableFragment';\nimport { onKeyDownTable } from './onKeyDownTable';\nimport { addTableTrackingEvents, withInvalidCellChildrenTracking } from './tableTracking';\n\nexport const createTablePlugin = (): PlatePlugin =>\n createDefaultTablePlugin<TablePlugin<Value>, Value, PlateEditor>({\n type: BLOCKS.TABLE,\n handlers: {\n // @ts-expect-error\n onKeyDown: onKeyDownTable,\n },\n withOverrides: (editor, plugin) => {\n const { normalizeNode } = editor;\n // injects important fixes from plate's original table plugin\n withTable(editor, plugin);\n\n // Resets all normalization rules added by @udecode/plate-table as\n // they conflict with our own\n editor.normalizeNode = normalizeNode;\n\n addTableTrackingEvents(editor);\n\n editor.insertFragment = insertTableFragment(editor);\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 // Nested tables are handled by another normalization\n // rule in a the table cell level\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 = getParentNode(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 = getNextPath(getLastChildPath(entry));\n\n 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: withInvalidCellChildrenTracking(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: withInvalidCellChildrenTracking(transformParagraphs),\n },\n ],\n },\n } as Record<string, Partial<PlatePlugin>>,\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 { 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 isActive = editor && isTableActive(editor);\n\n async function handleClick() {\n if (!editor) return;\n\n editor.tracking.onToolbarAction('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 >\n <TableIcon />\n </ToolbarButton>\n );\n}\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport {\n getAboveNode,\n isAncestorEmpty,\n getNodeEntries,\n getPointBefore,\n isInline,\n isEndPoint,\n getPointAfter,\n isRangeCollapsed,\n queryNode,\n isText,\n} from '../../internal/queries';\nimport {\n setSelection,\n select,\n removeNodes,\n splitNodes,\n unhangRange,\n unsetNodes,\n} from '../../internal/transforms';\nimport {\n PlatePlugin,\n PlateEditor,\n Ancestor,\n Node,\n Location,\n BaseRange,\n} from '../../internal/types';\n\nexport function createTextPlugin(restrictedMarks: string[] = []): PlatePlugin {\n return {\n key: 'TextPlugin',\n handlers: {\n // Triple selection in a non-Firefox browser undesirably selects\n // the start of the next block. Editor.unhangRange helps removing\n // the extra block at the end.\n onMouseUp: (editor) => () => {\n if (!editor.selection) {\n return;\n }\n\n setSelection(editor, unhangRange(editor, editor.selection) as Partial<BaseRange>);\n },\n },\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 && isRangeCollapsed(selection)) {\n const inlinePath = getAboveNode(editor, {\n match: (n) => isInline(editor, n),\n mode: 'highest',\n })?.[1];\n\n if (inlinePath && isEndPoint(editor, selection.anchor, inlinePath)) {\n const point = getPointAfter(editor, inlinePath);\n 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 fixPasteAsPlainText(editor);\n\n return editor;\n },\n normalizer: [\n {\n match: isText,\n transform: (editor, [, path]) => {\n unsetNodes(editor, restrictedMarks, { at: path });\n },\n validNode: (_editor, [node]) => {\n return !restrictedMarks.some((mark) => {\n return mark in node;\n });\n },\n },\n ],\n };\n}\n\nfunction deleteEmptyParagraph(\n unit: 'character' | 'word' | 'line' | 'block',\n editor: PlateEditor,\n deleteFunction: Function\n) {\n const entry = getAboveNode(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 const hasSiblings = editor.children.length > 1; // prevent editor from losing focus\n\n if (isTextEmpty && isRootLevel && hasSiblings) {\n removeNodes(editor, { at: path });\n\n const prevNode = getPointBefore(editor, editor.selection as Location, {\n unit,\n });\n\n if (prevNode) {\n const [prevCell] = getNodeEntries(editor, {\n match: (node: Node) =>\n queryNode([node, prevNode.path], {\n allow: [BLOCKS.EMBEDDED_ASSET, BLOCKS.EMBEDDED_ENTRY, BLOCKS.HR],\n }),\n at: prevNode,\n });\n\n if (prevCell) {\n select(editor, prevNode);\n }\n }\n } else {\n deleteFunction(unit);\n }\n } else {\n deleteFunction(unit);\n }\n}\n\n/**\n * To be compatible with the old behavior we need to treat each 2 consecutive\n * line breaks as a new paragraph when pasting as plain text (also known as\n * paste and match style in macOS)\n */\nfunction fixPasteAsPlainText(editor: PlateEditor) {\n editor.insertTextData = (data: DataTransfer): boolean => {\n const text = data.getData('text/plain');\n\n if (!text) {\n return false;\n }\n\n const lines = text.split(/\\n{2}/);\n let split = false;\n\n for (const line of lines) {\n // empty lines\n if (/^(\\r\\n?|\\n)$/.test(line)) {\n continue;\n }\n\n if (split) {\n splitNodes(editor, { always: true });\n }\n\n editor.insertText(line);\n split = true;\n }\n\n return true;\n };\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { createTrailingBlockPlugin } from '@udecode/plate-trailing-block';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createTrailingParagraphPlugin = (): PlatePlugin => {\n return createTrailingBlockPlugin({\n options: {\n type: BLOCKS.PARAGRAPH,\n level: 0,\n },\n });\n};\n","import { isRootLevel } from '../../helpers/editor';\nimport { isFirstChildPath } from '../../internal/queries';\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createVoidsPlugin = (): PlatePlugin => ({\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) && isFirstChildPath(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) && isFirstChildPath(path)) && !!node.isVoid,\n },\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 { PlatePlugin } from '../internal/types';\nimport { createSoftBreakPlugin, createExitBreakPlugin, createResetNodePlugin } from './Break';\nimport { createCommandPalettePlugin } from './CommandPalette';\nimport { isCommandPromptPluginEnabled } from './CommandPalette/useCommands';\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 { createTrackingPlugin, RichTextTrackingActionHandler } from './Tracking';\nimport { createTrailingParagraphPlugin } from './TrailingParagraph';\nimport { createVoidsPlugin } from './Voids';\n\nexport const getPlugins = (\n sdk: FieldExtensionSDK,\n onAction: RichTextTrackingActionHandler,\n restrictedMarks?: string[]\n): PlatePlugin[] => [\n // AST must come after the HTML deserializer\n createDeserializeHtmlPlugin(),\n createDeserializeAstPlugin(),\n createDeserializeDocxPlugin(),\n\n // Tracking - This should come first so all plugins below will have access to `editor.tracking`\n createTrackingPlugin(onAction),\n\n // Global / Global shortcuts\n createDragAndDropPlugin(),\n // Enable command palette plugin only, if at least action type is allowed\n ...(Object.values(isCommandPromptPluginEnabled(sdk)).some(Boolean)\n ? [createCommandPalettePlugin()]\n : []),\n\n // Block Elements\n createParagraphPlugin(),\n createListPlugin(),\n createHrPlugin(),\n createHeadingPlugin(),\n createQuotePlugin(),\n createTablePlugin(),\n createEmbeddedEntryBlockPlugin(sdk),\n createEmbeddedAssetBlockPlugin(sdk),\n\n // Inline elements\n createHyperlinkPlugin(sdk),\n createEmbeddedEntityInlinePlugin(sdk),\n\n // Marks\n createMarksPlugin(),\n\n // Other\n createTrailingParagraphPlugin(),\n createTextPlugin(restrictedMarks),\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 createResetNodePlugin(),\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 { Text, Node } from '../internal/types';\n\nconst isTextElement = (node: Node): node is Text => 'text' in node;\n\n/**\n * Ensures all nodes have a child leaf text element. This should be handled by\n * Slate but its behavior has proven to be buggy and unpredictable.\n */\nexport function sanitizeIncomingSlateDoc(nodes: Node[] = []): Node[] {\n return nodes.map((node: Node): Node => {\n if (isTextElement(node)) {\n return node;\n }\n if ((node.children as Node[])?.length === 0) {\n return {\n ...node,\n children: [{ text: '', data: {} }],\n };\n }\n return {\n ...node,\n children: sanitizeIncomingSlateDoc(node?.children as Node[]),\n };\n });\n}\n","import { toSlatejsDocument } from '@contentful/contentful-slatejs-adapter';\nimport { EMPTY_DOCUMENT, Document } from '@contentful/rich-text-types';\n\nimport schema from './constants/Schema';\nimport { sanitizeIncomingSlateDoc } from './helpers/sanitizeIncomingSlateDoc';\nimport { createPlateEditor, CreatePlateEditorOptions, withoutNormalizing } from './internal';\nimport { getEndPoint, isNode } from './internal/queries';\nimport { normalize, select } from './internal/transforms';\nimport { Value, PlateEditor, Node } from './internal/types';\n\n/**\n * For legacy reasons, a document may not have any content at all\n * e.g:\n *\n * {nodeType: document, data: {}, content: []}\n *\n * Rendering such document will break the Slate editor\n */\nexport const hasContent = (doc?: Document) => {\n return (doc?.content || []).length > 0;\n};\n\n/*\n Plate api doesn't allow to modify (easily) the editor value programmatically\n after the editor instance is created \n\n This function is inspired to https://github.com/udecode/plate/issues/1269#issuecomment-1057643622\n */\nexport const setEditorContent = (editor: PlateEditor, nodes?: Node[]): void => {\n // Replaces editor content while keeping change history\n withoutNormalizing(editor, () => {\n const children = [...editor.children];\n children.forEach((node) => editor.apply({ type: 'remove_node', path: [0], node }));\n\n if (nodes) {\n const nodesArray = isNode(nodes) ? [nodes] : nodes;\n nodesArray.forEach((node, i) => {\n editor.apply({ type: 'insert_node', path: [i], node });\n });\n }\n\n const point = getEndPoint(editor, []);\n if (point) {\n select(editor, point);\n }\n });\n};\n\n/**\n * Converts a Contentful rich text document to the corresponding slate editor\n * value\n */\nexport const documentToEditorValue = (doc?: Document) => {\n const slateDoc = toSlatejsDocument({\n document: hasContent(doc) ? doc : EMPTY_DOCUMENT,\n // TODO: get rid of schema, https://github.com/contentful/field-editors/pull/1065#discussion_r826723248\n schema,\n });\n\n return sanitizeIncomingSlateDoc(slateDoc);\n};\n\nexport const normalizeEditorValue = (\n value: Value,\n options?: Omit<CreatePlateEditorOptions, 'id' | 'editor'>\n) => {\n const editor = createPlateEditor(options);\n editor.children = value;\n normalize(editor, { force: true });\n return editor.children;\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 cursor: 'not-allowed',\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 inlineEntryEmbedEnabled = isNodeTypeEnabled(sdk.field, INLINES.EMBEDDED_ENTRY);\n const blockEntryEmbedEnabled =\n isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ENTRY) && canInsertBlocks;\n // Removed access check following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules and then readd access.can('read', 'Asset')\n const blockAssetEmbedEnabled =\n isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ASSET) && canInsertBlocks;\n\n const actions = (\n <>\n {blockEntryEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ENTRY}\n onClose={onCloseEntityDropdown}\n />\n )}\n {inlineEntryEmbedEnabled && (\n <ToolbarEmbeddedEntityInlineButton\n isDisabled={!!isDisabled || isLinkActive(editor)}\n onClose={onCloseEntityDropdown}\n />\n )}\n {blockAssetEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ASSET}\n onClose={onCloseEntityDropdown}\n />\n )}\n </>\n );\n\n const showEmbedButton =\n blockEntryEmbedEnabled || inlineEntryEmbedEnabled || blockAssetEmbedEnabled;\n\n return showEmbedButton ? (\n <EmbeddedEntityDropdownButton\n isDisabled={isDisabled}\n onClose={onCloseEntityDropdown}\n onToggle={onToggleEntityDropdown}\n isOpen={isEmbedDropdownOpen}\n >\n {actions}\n </EmbeddedEntityDropdownButton>\n ) : null;\n};\n","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex, IconButton, Menu } from '@contentful/f36-components';\nimport { MoreHorizontalIcon } from '@contentful/f36-icons';\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 { isMarkActive } from '../internal/queries';\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, ToolbarDropdownCodeButton } from '../plugins/Marks/Code';\nimport { ToolbarItalicButton } from '../plugins/Marks/Italic';\nimport { ToolbarDropdownSubscriptButton, ToolbarSubscriptButton } from '../plugins/Marks/Subscript';\nimport {\n ToolbarDropdownSuperscriptButton,\n ToolbarSuperscriptButton,\n} from '../plugins/Marks/Superscript';\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 toolbarBtn: css({\n height: '30px',\n width: '30px',\n marginLeft: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\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 Dropdown = ({ sdk, isDisabled }: { sdk: FieldExtensionSDK; isDisabled?: boolean }) => {\n const editor = useContentfulEditor();\n const isActive =\n editor &&\n (isMarkActive(editor, MARKS.SUPERSCRIPT) ||\n isMarkActive(editor, MARKS.SUBSCRIPT) ||\n isMarkActive(editor, MARKS.CODE));\n\n return (\n <Menu>\n <Menu.Trigger>\n <span>\n <IconButton\n size=\"small\"\n className={styles.toolbarBtn}\n variant={isActive ? 'secondary' : 'transparent'}\n icon={<MoreHorizontalIcon />}\n aria-label=\"toggle menu\"\n isDisabled={isDisabled}\n testId=\"dropdown-toolbar-button\"\n />\n </span>\n </Menu.Trigger>\n <Menu.List>\n {isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && (\n <ToolbarDropdownSuperscriptButton isDisabled={isDisabled} />\n )}\n {isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && (\n <ToolbarDropdownSubscriptButton isDisabled={isDisabled} />\n )}\n {isMarkEnabled(sdk.field, MARKS.CODE) && (\n <ToolbarDropdownCodeButton isDisabled={isDisabled} />\n )}\n </Menu.List>\n </Menu>\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 // We only show the dropdown when: whenever at least bold , italic and underline are available; If nothing that would go inside the dropdown is available, we hide it\n const boldItalicUnderlineAvailable =\n isMarkEnabled(sdk.field, MARKS.BOLD) ||\n isMarkEnabled(sdk.field, MARKS.ITALIC) ||\n isMarkEnabled(sdk.field, MARKS.UNDERLINE);\n const dropdownItemsAvailable =\n isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) ||\n isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) ||\n isMarkEnabled(sdk.field, MARKS.CODE);\n const shouldShowDropdown = boldItalicUnderlineAvailable && dropdownItemsAvailable;\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\n {isMarkEnabled(sdk.field, MARKS.UNDERLINE) && (\n <ToolbarUnderlineButton isDisabled={isDisabled} />\n )}\n\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && (\n <ToolbarSuperscriptButton isDisabled={isDisabled} />\n )}\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && (\n <ToolbarSubscriptButton isDisabled={isDisabled} />\n )}\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.CODE) && (\n <ToolbarCodeButton isDisabled={isDisabled} />\n )}\n\n {shouldShowDropdown && <Dropdown sdk={sdk} 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 <ToolbarListButton isDisabled={isDisabled || !canInsertBlocks} />\n\n {isNodeTypeEnabled(sdk.field, BLOCKS.QUOTE) && (\n <ToolbarQuoteButton isDisabled={isDisabled || !canInsertBlocks} />\n )}\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 { COMMAND_PROMPT } from '../plugins/CommandPalette/constants';\n\nconst internalMarks = [COMMAND_PROMPT];\n\nexport const removeInternalMarks = (document: Record<string, unknown>) => {\n return {\n ...document,\n content: (document.content as Record<string, unknown>[]).map((node) => {\n if (node.nodeType === 'text') {\n node.marks = (node.marks as Record<string, unknown>[]).filter(\n (mark) => !internalMarks.includes(mark.type as string)\n );\n return node;\n }\n return removeInternalMarks(node);\n }),\n };\n};\n","import { useCallback, useMemo } from 'react';\n\nimport { toContentfulDocument } from '@contentful/contentful-slatejs-adapter';\nimport { Document } from '@contentful/rich-text-types';\nimport { getPlateSelectors } from '@udecode/plate-core';\nimport debounce from 'lodash/debounce';\n\nimport schema from './constants/Schema';\nimport { removeInternalMarks } from './helpers/removeInternalMarks';\nimport { Operation } from './internal/types';\n\n/**\n * Returns whether a given operation is relevant enough to trigger a save.\n */\nconst isRelevantOperation = (op: Operation) => {\n if (op.type === 'set_selection') {\n return false;\n }\n\n return true;\n};\n\nexport type OnValueChangedProps = {\n editorId: string;\n handler?: (value: Document) => unknown;\n skip?: boolean;\n onSkip?: VoidFunction;\n};\n\nexport const useOnValueChanged = ({ editorId, handler, skip, onSkip }: OnValueChangedProps) => {\n const onChange = useMemo(\n () =>\n debounce((document: unknown) => {\n const contentfulDocument = toContentfulDocument({ document, schema });\n const cleanedDocument = removeInternalMarks(contentfulDocument);\n handler?.(cleanedDocument);\n }, 500),\n [handler]\n );\n\n return useCallback(\n (value: unknown) => {\n const editor = getPlateSelectors(editorId).editor();\n if (!editor) {\n throw new Error(\n 'Editor change callback called but editor not defined. Editor id: ' + editorId\n );\n }\n const operations = editor?.operations.filter(isRelevantOperation);\n\n if (operations.length > 0) {\n if (skip) {\n onSkip?.();\n return;\n }\n onChange(value);\n }\n },\n [editorId, onChange, skip, onSkip]\n );\n};\n","import React, { useCallback, useState, useEffect } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport * as Contentful from '@contentful/rich-text-types';\nimport { Plate, getPlateActions } from '@udecode/plate-core';\nimport { css, cx } from 'emotion';\nimport deepEquals from 'fast-deep-equal';\nimport noop from 'lodash/noop';\n\nimport { ContentfulEditorIdProvider, getContentfulEditorId } from './ContentfulEditorProvider';\nimport { getPlateSelectors } from './internal/misc';\nimport { Value } from './internal/types';\nimport { getPlugins, disableCorePlugins } from './plugins';\nimport { RichTextTrackingActionHandler } from './plugins/Tracking';\nimport { documentToEditorValue, normalizeEditorValue, setEditorContent } from './prepareDocument';\nimport { styles } from './RichTextEditor.styles';\nimport { SdkProvider } from './SdkProvider';\nimport Toolbar from './Toolbar';\nimport StickyToolbarWrapper from './Toolbar/components/StickyToolbarWrapper';\nimport { useOnValueChanged } from './useOnValueChanged';\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 restrictedMarks?: string[];\n};\n\nexport const ConnectedRichTextEditor = (props: ConnectedProps) => {\n const id = getContentfulEditorId(props.sdk);\n const plugins = React.useMemo(\n () => getPlugins(props.sdk, props.onAction ?? noop, props.restrictedMarks),\n [props.sdk, props.onAction, props.restrictedMarks]\n );\n const [isFirstRender, setIsFirstRender] = useState(true);\n const [pendingExternalUpdate, setPendingExternalUpdate] = useState(false);\n\n const onValueChanged = useOnValueChanged({\n editorId: id,\n handler: props.onChange,\n skip: pendingExternalUpdate || isFirstRender,\n onSkip: () => setPendingExternalUpdate(false),\n });\n\n useEffect(() => {\n /*\n This effect is called when the value prop changes. Normally\n this happens when the value is changed outside of the editor,\n like in snapshots restoration or remote updates\n Plate won't update the displayed value on its own, see:\n - https://github.com/ianstormtaylor/slate/pull/4540\n - https://github.com/udecode/plate/issues/1169\n\n The content is forcefully set to the new value and it's ensured\n the change listener isn't invoked\n */\n setIsFirstRender(false);\n const editor = getPlateSelectors(id).editor();\n if (!editor) {\n return;\n }\n setPendingExternalUpdate(true);\n setEditorContent(editor, documentToEditorValue(props.value as Contentful.Document));\n }, [props.value, id]);\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 useEffect(() => {\n if (!isFirstRender) {\n return;\n }\n\n getPlateActions(id).value(\n normalizeEditorValue(documentToEditorValue(props.value as Contentful.Document) as Value, {\n plugins,\n disableCorePlugins,\n })\n );\n }, [isFirstRender, plugins, id, props.value]);\n\n return (\n <SdkProvider sdk={props.sdk}>\n <ContentfulEditorIdProvider value={id}>\n <div className={styles.root} data-test-id=\"rich-text-editor\">\n <Plate\n id={id}\n plugins={plugins}\n disableCorePlugins={disableCorePlugins}\n editableProps={{\n className: classNames,\n readOnly: props.isDisabled,\n }}\n onChange={onValueChanged}\n firstChildren={\n !props.isToolbarHidden && (\n <StickyToolbarWrapper isDisabled={props.isDisabled}>\n <Toolbar isDisabled={props.isDisabled} />\n </StickyToolbarWrapper>\n )\n }\n />\n </div>\n </ContentfulEditorIdProvider>\n </SdkProvider>\n );\n};\n\ntype Props = ConnectedProps & { isInitiallyDisabled: boolean };\n\nconst RichTextEditor = (props: Props) => {\n const { sdk, isInitiallyDisabled, onAction, restrictedMarks, ...otherProps } = props;\n const isEmptyValue = useCallback(\n (value) => !value || deepEquals(value, Contentful.EMPTY_DOCUMENT),\n []\n );\n\n const id = getContentfulEditorId(props.sdk);\n return (\n <EntityProvider sdk={sdk}>\n <FieldConnector\n throttle={0}\n field={sdk.field}\n isInitiallyDisabled={isInitiallyDisabled}\n isEmptyValue={isEmptyValue}\n isEqualValues={deepEquals}\n >\n {({ lastRemoteValue, disabled, setValue }) => (\n <ConnectedRichTextEditor\n {...otherProps}\n key={`rich-text-editor-${id}`}\n value={lastRemoteValue}\n sdk={sdk}\n onAction={onAction}\n isDisabled={disabled}\n onChange={setValue}\n restrictedMarks={restrictedMarks}\n />\n )}\n </FieldConnector>\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 -- TODO: describe this disable 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 -- TODO: describe this disable 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":["useReadOnly","sr","usePlateEditorRef","p","usePlateEditorState","getContentfulEditorId","sdk","entry","field","sys","getSys","id","locale","editorContext","createContext","ContentfulEditorIdProvider","Provider","useContentfulEditorId","contextId","useContext","Error","useContentfulEditor","editorId","editor","useContentfulEditorRef","createPlateEditor","options","withoutNormalizing","fn","focusEditor","target","blurEditor","selectEditor","opts","fromDOMPoint","domPoint","exactMatch","suppressThrow","mockPlugin","plugin","getPlateSelectors","createSoftBreakPlugin","createDefaultSoftBreakPlugin","then","rules","plugins","flatMap","softBreak","createExitBreakPlugin","createDefaultExitBreakPlugin","exitBreak","createResetNodePlugin","createDefaultResetNodePlugin","resetNode","rule","defaultType","BLOCKS","PARAGRAPH","trimLeadingSlash","text","startsWith","slice","useSdk","sdkMemo","React","constate","SdkProvider","useSdkContext","useCommandList","commandItems","container","length","commands","selectedItem","setSelectedItem","isOpen","setIsOpen","current","buttons","Array","from","querySelectorAll","currBtn","find","btn","currIndex","indexOf","shouldSelectFirstBtn","scrollIntoView","block","inline","handleKeyDown","event","isHotkey","preventDefault","click","window","addEventListener","removeEventListener","handleMousedown","contains","document","getText","at","isText","value","getEndPoint","getStartPoint","isNode","isSelectionAtBlockEnd","isSelectionAtBlockStart","getBlockAbove","getNodeEntry","getNodeEntries","getNodeChildren","root","path","getParentNode","someNode","getChildren","s","isFirstChild","getDescendantNodeByPath","get","isRangeCollapsed","range","isRangeAcrossBlocks","isRangeExpanded","getRange","to","getRangeEdges","edges","getRangeStart","start","getRangeEnd","end","getAboveNode","getCommonNode","another","getNodeTexts","findNode","isMarkActive","type","getMarks","isEditor","isEditorReadOnly","isElement","isBlockNode","findNodePath","node","isAncestorPath","isAncestor","isAncestorEmpty","getParentPath","parent","getNextPath","next","getPreviousPath","previous","getLastChildPath","nodeEntry","getPathLevels","levels","isFirstChildPath","isLastChildPath","childPath","matchNode","someHtmlElement","rootNode","predicate","getPointBefore","getPointAfter","isEndPoint","point","isInline","queryNode","getPluginType","key","createPathRef","match","obj","getLastNodeByLevel","level","normalize","force","setSelection","props","select","location","moveSelection","moveChildren","collapseSelection","setNodes","attrs","unsetNodes","insertNodes","nodes","splitNodes","liftNodes","unwrapNodes","wrapNodes","element","toggleNodeType","editorOptions","removeMark","unhangRange","toggleMark","addMark","insertText","deleteText","removeNodes","moveNodes","deleteFragment","IS_SAFARI","navigator","test","userAgent","IS_CHROME","LINK_TYPES","INLINES","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","isBlockSelected","isRootLevel","getNodeEntryFromSelection","nodeTypeOrTypes","selection","focus","nodeTypes","isArray","i","includes","isNodeTypeSelected","nodeType","moveToTheNextLine","distance","unit","moveToTheNextChar","insertEmptyParagraph","emptyParagraph","children","data","isVoid","getElementFromCurrentSelection","flat","getTableSize","table","numRows","firstRow","numColumns","insertLink","wrapLink","isLinkActive","link","unwrapLink","url","isCollapsed","isSelectionCollapsed","uri","split","edge","getAncestorPathFromSelection","undefined","INLINE_TYPES","Object","values","isInlineOrText","x","scrollX","y","scrollY","setTimeout","scrollTo","toggleElement","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","DEFAULT_ENABLED_NODE_TYPES","DOCUMENT","getRichTextValidation","validationType","flow","v","validations","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","concat","isNodeTypeEnabled","isMarkEnabled","mark","COMMAND_PROMPT","createInlineEntryNode","EMBEDDED_ENTRY","linkType","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","arg","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","done","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","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","globalThis","Function","fetchAssets","query","space","getAssets","assets","items","map","asset","displayTitle","entityHelpers","getAssetTitle","localeCode","defaultLocaleCode","locales","defaultTitle","contentTypeName","entity","thumbnail","fields","file","fetchEntries","contentType","getEntries","content_type","entries","description","getEntityDescription","getEntryTitle","createNode","insertBlock","linkedEntityBlock","hasText","removeCommand","removeQuery","offset","anchor","isCommandPromptPluginEnabled","inlineAllowed","entriesAllowed","assetsAllowed","EMBEDDED_ASSET","getCommandPermissions","canInsertBlocks","TABLE","useCommands","contentTypes","getCachedContentTypes","useState","getEmbedEntry","label","callback","setCommands","replace","toLowerCase","insertSoftBreak","tracking","onCommandPaletteAction","getEmbedInline","inlineNode","contentTypeCommands","group","assetCommand","reduce","list","nextItem","subcommands","filter","command","styles","css","position","zIndex","tokens","zIndexNotification","fontWeight","fontWeightNormal","fontStyle","fontFamily","fontStackPrimary","listStyle","marginLeft","menuPoper","zIndexModal","menuContent","width","maxHeight","menuList","overflow","menuItem","display","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","textAlign","padding","spacingXs","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","backgroundColor","gray100","opacity","menuItemSelected","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","menuDivider","height","gray300","menuHeader","zIndexDefault","top","menuFooter","bottom","footerList","gray600","objectFit","Group","commandGroup","SectionHeading","as","marginBottom","marginTop","marginRight","className","cx","onClick","Asset","Flex","alignItems","gap","src","alt","Item","CommandListItems","CommandList","textContainer","popoverContainer","popper","usePopper","placement","tabIndex","contentEditable","role","ScreenReaderOnly","Portal","ref","style","attributes","Popover","usePortal","autoFocus","Trigger","Content","testId","Stack","spacing","CommandPrompt","textElement","setTextElement","e","createOnKeyDown","byKey","isActive","stopPropagation","createCommandPalettePlugin","isLeaf","component","handlers","onKeyDown","createDragAndDropPlugin","DRAGGABLE_TYPES","HR","ON_DROP_ALLOWED_TYPES","onDrop","draggingBlock","draggingNode","nativeEvent","dropDisallowed","getParents","some","nodeName","history","undos","el","parents","parentNode","unshift","withLinkTracking","Component","ComponentWithTracking","onEntityFetchComplete","useCallback","onViewportAction","InternalAssetCard","AssetCard","size","isLoading","MissingEntityCard","entityType","isDisabled","onRemove","WrappedAssetCard","getEntityScheduledActions","loadEntityScheduledActions","isSelected","onEdit","isClickable","areEqual","FetchingWrappedAssetCard","useEntity","assetId","status","useEntityLoader","InternalEntryCard","EntryCard","WrappedEntryCard","getAsset","FetchingWrappedEntryCard","entryId","verticalAlign","LinkedEntityBlock","useSelected","entityId","handleEditClick","openEntity","openAsset","openEntry","slideIn","handleRemoveClick","pathToElement","draggable","getLinkedContentTypeIdsForNodeType","newEntitySelectorConfigFromRichTextField","getEntityTypeFromRichTextNode","words","watchCurrentSlide","onActiveCallbacks","Set","wasSlideClosed","initialSlideLevel","lastSlideLevel","wasClosed","off","onSlideInNavigation","oldSlideLevel","newSlideLevel","clear","cb","unwatch","onActive","noop","add","selectEntityAndInsert","logAction","dialogs","baseConfig","selectEntity","selectSingleAsset","selectSingleEntry","config","withCreate","rteSlide","ensureFollowingParagraph","entityBlock","lastNode","isTextContainer","TEXT_CONTAINERS","icon","EmbeddedEntityBlockToolbarIcon","onClose","handleClick","onToolbarAction","getEntityTypeFromNodeType","baseClass","Menu","disabled","flexDirection","Icon","AssetIcon","EmbeddedEntryBlockIcon","variant","entityTypes","getWithEmbeddedEntityEvents","hotkey","pathToSelectedElement","isDelete","isBackspace","onShortcutAction","createEmbeddedEntityPlugin","deserializeHtml","validAttribute","withoutChildren","getNode","getAttribute","createEmbeddedEntryBlockPlugin","createEmbeddedAssetBlockPlugin","getEntryStatus","scheduledIcon","spacing2Xs","FetchingWrappedInlineEntryCard","requestStatus","allContentTypes","useMemo","useEffect","title","InlineEntryCard","entryStatus","actions","MenuItem","ScheduledIconWithTooltip","ClockIcon","Text","span","userSelect","EmbeddedEntityInline","waitForClose","ToolbarEmbeddedEntityInlineButton","EmbeddedEntryInlineIcon","createEmbeddedEntityInlinePlugin","htmlAttributeName","getWithEmbeddedEntryInlineEvents","withEmbeddedEntryInlineEvents","handleEvent","dropdown","fontWeightDemiBold","fontSizeL","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","LABELS","ToolbarHeadingButton","setOpen","selected","setSelected","operations","nodeTypesByEnablement","fromEntries","someHeadingsEnabled","Boolean","handleOnSelectItem","prevOnChange","onChange","activeType","inactiveType","Button","endIcon","ChevronDownIcon","List","isInitiallyFocused","extractNodes","mode","extractParagraphs","transformRemove","transformParagraphs","transformUnwrap","transformWrapIn","transformLift","headings","fontWeightMedium","spacingS","createHeading","Tag","Heading","HeadingComponents","buildHeadingEventHandler","createHeadingPlugin","allow","HEADINGS","normalizer","validChildren","_","transform","LIST_ITEM","idx","tagName","validNodeName","toUpperCase","button","tooltip","Number","zIndexTooltip","ToolbarButton","startIcon","Tooltip","content","spacingL","hr","hrSelected","colorPrimary","withHrEvents","pathToSelectedHr","ToolbarHrButton","handleOnClick","HorizontalRuleIcon","Hr","Slate","isFocused","createHrPlugin","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","readonly","Option","HelpText","FormLabel","htmlFor","TextLink","ModalControls","addOrEditLink","targetPath","isReadOnly","selectionBeforeBlur","selectionAfterFocus","currentLinkText","isEditing","ModalDialogLauncher","openDialog","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","allowHeightOverflow","ToolbarHyperlinkButton","LinkIcon","trim","truncate","str","substr","getEntityInfo","entityTitle","entityStatus","jobs","scheduledActions","getScheduleTooltipContent","job","jobsCount","fetchAllData","getEntity","getEntry","contentTypeId","ct","entityDescription","useRequestStatus","setRequestStatus","entityInfo","console","log","useEntityInfo","hyperlinkWrapper","a","hyperlink","fill","gray900","EntityHyperlink","tooltipContent","targetWrapperClassName","maxWidth","UrlHyperlink","href","rel","isAnchor","isEntryAnchor","isAssetAnchor","buildHyperlinkEventHandler","getNodeOfType","createHyperlinkPlugin","common","validNode","baseStyle","lineHeightDefault","UL_LIST","OL_LIST","createList","ListUL","ListOL","ListItem","moveListItemDown","listItem","listNode","listItemPath","previousListItemPath","previousSiblingItem","previousPath","subList","n","getListTypes","newPath","moveListItems","increase","_nodes","ELEMENT_LIC","lics","highestLicPaths","highestLicPathRefs","lic","licPath","liPath","highestLiPath","licPathRefsToMove","licPathRef","unref","liEntry","getListItemEntry","isListNested","moveListItemUp","ELEMENT_DEFAULT","hasUnliftedListItems","unwrapList","listTypes","toggleList","res","startPoint","endPoint","commonEntry","listType","startList","endList","rangeLength","Math","min","rootPathLength","onKeyDownList","listSelected","shiftKey","hotkeys","castArray","_hotkey","isList","hasListAsDirectParent","getNearestListAncestor","normalizeOrphanedListItem","parentList","parentListType","isNonEmptyListItem","listItemChildren","firstNodeIsNotList","_editor","firstNode","insertParagraphAsChild","replaceNodeWithListItems","isListTypeActive","emptyListItemNode","withChildren","marks","insertListItem","paragraph","paragraphPath","listItemNode","isAtStart","isAtEnd","isAtStartOfListItem","shouldSplit","newListItemPath","fromPath","fromStartIndex","toPath","listBreak","moved","childNode","isBlockAboveEmpty","didReset","onKeyDownResetNode","types","ELEMENT_LI","onReset","SIMULATE_BACKSPACE","inserted","insertListBreak","insertBreak","getFirstAncestorOfType","ancestor","isListRoot","trimList","listRoot","textEntries","commonAncestorEntry","commonAncestor","textEntry","trimLiWrapper","unwrapTextContainerAtStart","insertListFragment","insertFragment","fragment","firstBlockIndex","findIndex","inlines","blocks","filtered","deleteBackwardList","removeFirstListItem","removeListItem","validLiChildrenTypes","LIST_ITEM_BLOCKS","withList","deleteBackward","deleteForward","deleteForwardList","deleteFragmentList","normalizeNode","normalizeList","createListPlugin","createPlateListPlugin","overrideByKey","ELEMENT_UL","withOverrides","ELEMENT_OL","ToolbarListButton","ListBulletedIcon","ListNumberedIcon","toggleMarkAndDeactivateConflictingMarks","subs","MARKS","SUPERSCRIPT","SUBSCRIPT","buildMarkEventHandler","markType","blue100","blue600","createMarkToolbarButton","Mark","ToolbarBoldButton","BOLD","FormatBoldIcon","bold","Bold","isGoogleBoldWrapper","createBoldPlugin","createDefaultBoldPlugin","validStyle","ToolbarCodeButton","CODE","CodeIcon","ToolbarDropdownCodeButton","code","Code","createCodePlugin","createDefaultCodePlugin","ToolbarItalicButton","ITALIC","FormatItalicIcon","italic","Italic","createItalicPlugin","createDefaultItalicPlugin","subscript","ToolbarSubscriptButton","SubscriptIcon","viewBox","ToolbarDropdownSubscriptButton","Subscript","createSubscriptPlugin","createDefaultSubscriptPlugin","superscript","ToolbarSuperscriptButton","SuperscriptIcon","ToolbarDropdownSuperscriptButton","Superscript","createSuperscriptPlugin","createDefaultSuperscriptPlugin","ToolbarUnderlineButton","UNDERLINE","FormatUnderlinedIcon","Underline","createUnderlinePlugin","createDefaultUnderlinePlugin","createMarksPlugin","baseRules","NormalizerError","createValidatorFromTypes","createTransformerFromObject","transforms","fallback","transformer","withNormalizer","_rules","_rule","isPlainObject","_transform","tr","isValidChild","invalidChildEntry","createNormalizerPlugin","Paragraph","isEmbedElement","hasAttribute","isEmptyElement","textContent","buildParagraphKeyDownHandler","createParagraphPlugin","createDefaultParagraphPlugin","sanitizeSheets","doc","supported","selector","querySelector","tables","row","remove","rows","colIndex","cells","cell","isEmpty","every","stripStyleTags","stripMetaTags","transformers","sanitizeHTML","html","DOMParser","parseFromString","body","innerHTML","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","getData","ensureXSlateFragment","clipboardData","DataTransfer","setData","createPasteHTMLPlugin","insertData","inject","pluginsByKey","KEY_DESERIALIZE_HTML","format","transformData","borderLeft","gray200","paddingLeft","Quote","shouldResetQuoteOnBackspace","quote","QUOTE","hasSingleChild","isLastChild","toggleQuote","onKeyDownToggleQuote","withQuote","startingNode","startsWithBlockquote","Element","containerEntry","containerIsNotEmpty","isContentSelected","Point","compare","createQuotePlugin","CONTAINERS","ToolbarQuoteButton","QuoteIcon","createSelectOnBackspacePlugin","createDefaultSelectPlugin","addRow","getNextRowPath","currentRowItem","TABLE_ROW","currentRowElem","currentRowPath","nextRowPath","getEmptyRowNode","header","colCount","addRowBelow","addRowAbove","addColumn","getNextCellPath","currentCellItem","TABLE_HEADER_CELL","TABLE_CELL","currentTableItem","nextCellPath","newCellPath","replacePathPos","rowIdx","getEmptyCellNode","addColumnRight","currentCellPath","addColumnLeft","setHeader","enable","tableItem","insertTableAndFocusFirstCell","tableEntry","replaceEmptyParagraphWithTable","isTableActive","tableElements","ELEMENT_TABLE","ELEMENT_TH","ELEMENT_TR","ELEMENT_TD","isTableHeaderEnabled","tablePath","previousNode","isPreviousNodeTextEmpty","getNoOfMissingTableCellsInRow","rowEntry","rowPath","tableWidth","max","rowWidth","createEmptyTableCells","count","emptyTableCell","isNotEmpty","isTable","topRight","right","getCurrentTableSize","TableActions","isHeaderEnabled","setHeaderEnabled","close","canInsertRowAbove","headerCell","toggleHeader","action","tableSize","actionName","onOpen","IconButton","Divider","deleteRow","deleteColumn","deleteTable","gray400","Cell","HeaderCell","Row","Table","trimUnnecessaryTableWrapper","insertTableFragment","fragments","isInsertingTable","isTableFirstFragment","currentLineHasText","onKeyDownTable","defaultHandler","defaultKeyDownTable","windowSelection","getSelection","blockType","anchorNode","isBeforeTable","above","getTableEntries","isLastCell","isLastRow","TOP_LEVEL_BLOCKS","VOID_BLOCKS","unwrapBlockByKey","getCharacterCount","contentfulSlateJSAdapter","schema","Schema","documentToPlainTextString","actionOrigin","TOOLBAR","SHORTCUT","VIEWPORT","COMMAND_PALETTE","getPastingSource","textHtml","createTrackingPlugin","onAction","trackingActions","origin","isCopyAndPaste","characterCountSelection","toString","characterCountBefore","characterCountAfter","source","hasTables","isTableHeaderCell","hasHeadersOutsideFirstRow","addTableTrackingEvents","markupBefore","markupAfter","tablePasted","withInvalidCellChildrenTracking","childEntry","createTablePlugin","createDefaultTablePlugin","withTable","isNestedTable","howMany","ToolbarTableButton","TableIcon","createTextPlugin","restrictedMarks","onMouseUp","inlinePath","deleteEmptyParagraph","fixPasteAsPlainText","deleteFunction","paragraphOrHeading","isTextEmpty","hasSiblings","prevNode","prevCell","insertTextData","lines","line","always","createTrailingParagraphPlugin","createTrailingBlockPlugin","createVoidsPlugin","before","getPlugins","createDeserializeHtmlPlugin","createDeserializeAstPlugin","createDeserializeDocxPlugin","disableCorePlugins","deserializeAst","eventEditor","isTextElement","sanitizeIncomingSlateDoc","hasContent","setEditorContent","apply","nodesArray","documentToEditorValue","slateDoc","toSlatejsDocument","EMPTY_DOCUMENT","normalizeEditorValue","STYLE_EDITOR_BORDER","borderTop","minHeight","colorWhite","overflowWrap","webkitUserModify","hiddenToolbar","enabled","EmbeddedEntityDropdownButton","onToggle","PlusIcon","EmbedEntityWidget","isEmbedDropdownOpen","setEmbedDropdownOpen","onCloseEntityDropdown","onToggleEntityDropdown","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","showEmbedButton","toolbar","toolbarBtn","divider","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Dropdown","MoreHorizontalIcon","Toolbar","validationInfo","getValidationInfo","isListSelected","isBlockquoteSelected","shouldDisableTables","boldItalicUnderlineAvailable","dropdownItemsAvailable","shouldShowDropdown","isAnyMarkEnabled","isAnyHyperlinkEnabled","isAnyBlockFormattingEnabled","someWithValidation","vals","validation","val","nativeSticky","StickyToolbarWrapper","internalMarks","removeInternalMarks","isRelevantOperation","op","useOnValueChanged","handler","skip","onSkip","debounce","contentfulDocument","toContentfulDocument","cleanedDocument","ConnectedRichTextEditor","isFirstRender","setIsFirstRender","pendingExternalUpdate","setPendingExternalUpdate","onValueChanged","classNames","isToolbarHidden","getPlateActions","Plate","editableProps","readOnly","firstChildren","RichTextEditor","isInitiallyDisabled","otherProps","isEmptyValue","deepEquals","Contentful","FieldConnector","throttle","isEqualValues","lastRemoteValue","setValue","URI","ENTRY","ASSET","isFeaturingEntitySelector","entitySelectorConfigs","Entry","HyperlinkDialog","handleSubmit","getValue","setTargetEntity","allowedHyperlinkTypes","setState","requiresText","hideText","render","labels","renderFields","confirm","isUriInputAutoFocused","renderEntityField","resetEntity","entityLink","isEntitySelectorVisible","renderEntitySelector","propTypes","PropTypes","shape","string","oneOf","arrayOf","bool","func","defaultProps","openRichTextDialog","parameters","renderRichTextDialog","invocation","startAutoResizer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-editor-rich-text.cjs.development.js","sources":["../src/internal/hooks.ts","../src/ContentfulEditorProvider.ts","../src/internal/misc.ts","../src/plugins/Break/createSoftBreakPlugin.ts","../src/plugins/Break/createExitBreakPlugin.ts","../src/plugins/Break/createResetNodePlugin.ts","../src/plugins/CommandPalette/utils/trimLeadingSlash.ts","../src/SdkProvider.tsx","../src/plugins/CommandPalette/hooks/useCommandList.tsx","../src/internal/queries.ts","../src/internal/transforms.ts","../src/helpers/environment.ts","../src/helpers/editor.ts","../src/helpers/validations.ts","../src/plugins/CommandPalette/constants.ts","../src/plugins/CommandPalette/utils/createInlineEntryNode.ts","../../../node_modules/regenerator-runtime/runtime.js","../src/plugins/CommandPalette/utils/fetchAssets.ts","../src/plugins/CommandPalette/utils/fetchEntries.ts","../src/plugins/CommandPalette/utils/insertBlock.ts","../src/plugins/CommandPalette/useCommands.ts","../src/plugins/CommandPalette/components/CommandList.styles.ts","../src/plugins/CommandPalette/components/CommandList.tsx","../src/plugins/CommandPalette/components/CommandPrompt.tsx","../src/plugins/CommandPalette/onKeyDown.ts","../src/plugins/CommandPalette/createCommandPalettePlugin.ts","../src/plugins/DragAndDrop/index.tsx","../src/plugins/links-tracking.tsx","../src/plugins/shared/FetchingWrappedAssetCard.tsx","../src/plugins/shared/FetchingWrappedEntryCard.tsx","../src/plugins/EmbeddedEntityBlock/LinkedEntityBlock.tsx","../src/helpers/getLinkedContentTypeIdsForNodeType.ts","../src/helpers/newEntitySelectorConfigFromRichTextField.ts","../src/helpers/sdkNavigatorSlideIn.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/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/HyperlinkModal.tsx","../src/plugins/Hyperlink/components/ToolbarHyperlinkButton.tsx","../src/plugins/Hyperlink/utils.ts","../src/plugins/Hyperlink/useEntityInfo.ts","../src/plugins/Hyperlink/components/styles.ts","../src/plugins/Hyperlink/components/EntityHyperlink.tsx","../src/plugins/Hyperlink/components/UrlHyperlink.tsx","../src/plugins/Hyperlink/createHyperlinkPlugin.ts","../src/plugins/List/components/List.tsx","../src/plugins/List/components/ListItem.tsx","../src/plugins/List/transforms/moveListItemDown.ts","../src/plugins/List/transforms/moveListItems.ts","../src/internal/constants.ts","../src/plugins/List/transforms/unwrapList.ts","../src/plugins/List/transforms/toggleList.ts","../src/plugins/List/onKeyDownList.ts","../src/plugins/List/utils.ts","../src/plugins/List/transforms/insertListItem.ts","../src/plugins/List/insertListBreak.ts","../src/plugins/List/insertListFragment.ts","../src/plugins/List/transforms/deleteBackwardList.ts","../src/plugins/List/withList.ts","../src/plugins/List/createListPlugin.ts","../src/plugins/List/components/ToolbarListButton.tsx","../src/plugins/Marks/helpers.ts","../src/plugins/Marks/components/MarkToolbarButton.tsx","../src/plugins/Marks/Bold.tsx","../src/plugins/Marks/Code.tsx","../src/plugins/Marks/Italic.tsx","../src/plugins/Marks/Subscript.tsx","../src/plugins/Marks/Superscript.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/sanitizeAnchors.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/shouldResetQuote.ts","../src/plugins/Quote/toggleQuote.ts","../src/plugins/Quote/withQuote.ts","../src/plugins/Quote/createQuotePlugin.ts","../src/plugins/Quote/components/ToolbarQuoteButton.tsx","../src/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.ts","../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/insertTableFragment.ts","../src/plugins/Table/onKeyDownTable.ts","../src/constants/Schema.ts","../src/plugins/Tracking/utils.ts","../src/plugins/Tracking/createTrackingPlugin.ts","../src/plugins/Table/tableTracking.ts","../src/plugins/Table/createTablePlugin.ts","../src/plugins/Table/components/ToolbarButton.tsx","../src/plugins/Text/createTextPlugin.ts","../src/plugins/TrailingParagraph/index.ts","../src/plugins/Voids/createVoidsPlugin.ts","../src/plugins/index.ts","../src/helpers/sanitizeIncomingSlateDoc.ts","../src/prepareDocument.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/helpers/removeInternalMarks.ts","../src/useOnValueChanged.ts","../src/RichTextEditor.tsx","../src/dialogs/HypelinkDialog/HyperlinkDialog.jsx","../src/dialogs/openRichTextDialog.tsx","../src/dialogs/renderRichTextDialog.tsx"],"sourcesContent":["import * as p from '@udecode/plate-core';\nimport * as sr from 'slate-react';\n\nexport const useReadOnly = sr.useReadOnly;\nexport const usePlateEditorRef = p.usePlateEditorRef;\nexport const usePlateEditorState = p.usePlateEditorState;\n","import { createContext, useContext } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\n\nimport { usePlateEditorRef, usePlateEditorState } from './internal/hooks';\nimport { Value, PlateEditor } from './internal/types';\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\nexport const editorContext = createContext('');\n\nexport const ContentfulEditorIdProvider = editorContext.Provider;\n\nexport function useContentfulEditorId(id?: string) {\n const contextId = useContext(editorContext);\n\n if (id) {\n return id;\n }\n\n if (!contextId) {\n throw new Error(\n 'could not find editor id. Please ensure the component is wrapped in <ContentfulEditorIdProvider> '\n );\n }\n\n return contextId;\n}\n\n// This hook re-renders when the value changes\n// Use case: Toolbar icons, for example\nexport function useContentfulEditor(id?: string) {\n const editorId = useContentfulEditorId(id);\n const editor = usePlateEditorState<Value, PlateEditor>(editorId);\n\n return editor;\n}\n\n// This doesn't re-render when the value changes\nexport function useContentfulEditorRef(id?: string) {\n const editorId = useContentfulEditorId(id);\n const editor = usePlateEditorRef<Value, PlateEditor>(editorId);\n\n return editor;\n}\n","import * as p from '@udecode/plate-core';\nimport { StoreApiGet } from '@udecode/zustood';\nimport * as s from 'slate';\n\nimport type { Value, PlateEditor, Location, PlatePlugin } from './types';\n\nexport type CreatePlateEditorOptions = Omit<\n p.CreatePlateEditorOptions<Value, PlateEditor>,\n 'plugins'\n> & {\n plugins?: PlatePlugin[];\n};\nexport const createPlateEditor = (options: CreatePlateEditorOptions = {}) => {\n return p.createPlateEditor<Value, PlateEditor>(\n options as p.CreatePlateEditorOptions<Value, PlateEditor>\n );\n};\n\nexport const withoutNormalizing = (editor: PlateEditor, fn: () => boolean | void) => {\n return p.withoutNormalizing(editor, fn);\n};\n\nexport const focusEditor = (editor: PlateEditor, target?: Location) => {\n p.focusEditor(editor, target);\n};\n\nexport const blurEditor = (editor: PlateEditor) => {\n p.blurEditor(editor);\n};\n\nexport const selectEditor = (editor: PlateEditor, opts: p.SelectEditorOptions) => {\n p.selectEditor(editor, opts);\n};\n\nexport const fromDOMPoint = (\n editor: PlateEditor,\n domPoint: [Node /* DOM Node*/, number],\n opts = { exactMatch: false, suppressThrow: false }\n): s.BasePoint | null | undefined => {\n return p.toSlatePoint(editor, domPoint, opts);\n};\n\nexport const mockPlugin = (plugin?: Partial<PlatePlugin> | undefined) => {\n return p.mockPlugin(\n // TODO check if there is a way around this ugly casting\n plugin as unknown as\n | Partial<p.PlatePlugin<p.AnyObject, p.Value, p.PlateEditor<p.Value>>>\n | undefined\n );\n};\n\nexport const getPlateSelectors = (\n id?: string | undefined\n): StoreApiGet<p.PlateStoreState<Value, PlateEditor>, {}> => {\n return p.getPlateSelectors(id);\n};\n","import {\n createSoftBreakPlugin as createDefaultSoftBreakPlugin,\n SoftBreakRule,\n} from '@udecode/plate-break';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createSoftBreakPlugin = (): PlatePlugin =>\n createDefaultSoftBreakPlugin({\n then: (editor) => {\n const rules: SoftBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).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 { PlatePlugin } from '../../internal/types';\n\nexport const createExitBreakPlugin = (): PlatePlugin =>\n createDefaultExitBreakPlugin({\n options: {\n rules: [],\n },\n then: (editor) => {\n const rules: ExitBreakRule[] = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).exitBreak || [];\n });\n\n return {\n options: { rules },\n };\n },\n });\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport {\n createResetNodePlugin as createDefaultResetNodePlugin,\n ResetNodePlugin,\n} from '@udecode/plate-reset-node';\n\nimport { PlatePlugin, Value, PlateEditor } from '../../internal/types';\n\nexport const createResetNodePlugin = (): PlatePlugin =>\n createDefaultResetNodePlugin<ResetNodePlugin<Value, PlateEditor>, Value, PlateEditor>({\n options: {\n rules: [],\n },\n then: (editor) => {\n const rules = editor.plugins.flatMap((p) => {\n return (p as PlatePlugin).resetNode || [];\n });\n\n // set defaultType to Paragraph if not set\n for (const rule of rules) {\n if (!rule.defaultType) {\n rule.defaultType = BLOCKS.PARAGRAPH;\n }\n }\n\n return {\n options: { rules },\n };\n },\n });\n","/**\n * Trim leading slash character if found. Bails otherwise.\n *\n * @example\n * trimLeadingSlash(\"/my query\") // --> \"my query\"\n */\nexport function trimLeadingSlash(text: string) {\n if (!text.startsWith('/')) {\n return text;\n }\n\n return text.slice(1);\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 -- TODO: explain this disable\n\n return sdkMemo;\n}\n\nexport const [SdkProvider, useSdkContext] = constate(useSdk);\n","import * as React from 'react';\n\nimport isHotkey from 'is-hotkey';\n\nexport const useCommandList = (commandItems, container) => {\n const [selectedItem, setSelectedItem] = React.useState<string>(() => {\n // select the first item on initial render\n if (!commandItems.length) {\n return '';\n }\n if ('group' in commandItems[0]) {\n return commandItems[0].commands[0].id;\n }\n return commandItems[0].id;\n });\n const [isOpen, setIsOpen] = React.useState(commandItems.length > 0);\n\n React.useEffect(() => {\n if (!container.current) {\n return;\n }\n const buttons = Array.from(container.current.querySelectorAll('button')) as HTMLButtonElement[];\n const currBtn = buttons.find((btn) => btn.id === selectedItem);\n const currIndex = currBtn ? buttons.indexOf(currBtn) : 0;\n const shouldSelectFirstBtn = !currBtn && buttons.length;\n\n if (shouldSelectFirstBtn) {\n setSelectedItem(buttons[0].id);\n buttons[0].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (isHotkey('up', event)) {\n event.preventDefault();\n if (currIndex === 0) {\n return;\n }\n setSelectedItem(buttons[currIndex - 1].id);\n buttons[currIndex - 1].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n } else if (isHotkey('down', event)) {\n event.preventDefault();\n if (currIndex === buttons.length - 1) {\n return;\n }\n setSelectedItem(buttons[currIndex + 1].id);\n buttons[currIndex + 1].scrollIntoView({\n block: 'nearest',\n inline: 'start',\n });\n } else if (isHotkey('enter', event)) {\n event.preventDefault();\n if (currBtn) {\n setSelectedItem('');\n currBtn.click();\n }\n }\n //TODO: handle shift+enter, which must be detected using separate events\n }\n\n if (commandItems.length) {\n window.addEventListener('keydown', handleKeyDown);\n }\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [commandItems, container, selectedItem]);\n\n React.useEffect(() => {\n const handleMousedown = (event) => {\n if (container.current && !container.current.contains(event.target)) {\n setIsOpen(false);\n }\n };\n document.addEventListener('mousedown', handleMousedown);\n return () => {\n document.removeEventListener('mousedown', handleMousedown);\n };\n }, [container]);\n\n return {\n selectedItem,\n isOpen,\n };\n};\n","/**\n * Re-exporting Plate/Slate queries (aka selectors) to reduce\n * the blast radius of version upgrades\n */\nimport * as p from '@udecode/plate-core';\nimport * as s from 'slate';\n\nimport type {\n Value,\n PlateEditor,\n Location,\n Node,\n NodeEntry,\n BaseRange,\n Element,\n Text,\n Ancestor,\n BasePoint,\n Path,\n} from './types';\n\n/**\n * Get text content at location\n */\nexport const getText = (editor: PlateEditor, at?: Location) => {\n return p.getEditorString(editor, at);\n};\n\nexport const isText = (value: unknown): value is Text => {\n return p.isText(value);\n};\n\nexport const getEndPoint = (editor: PlateEditor, at: Location) => {\n return p.getEndPoint(editor, at);\n};\n\nexport const getStartPoint = (editor: PlateEditor, at: Location) => {\n return p.getStartPoint(editor, at);\n};\n\nexport const isNode = (value: unknown): value is Node => {\n return p.isNode(value);\n};\n\nexport const isSelectionAtBlockEnd = (\n editor: PlateEditor,\n options?: p.GetAboveNodeOptions<Value>\n) => {\n return p.isSelectionAtBlockEnd(editor, options);\n};\n\nexport const isSelectionAtBlockStart = (\n editor: PlateEditor,\n options?: p.GetAboveNodeOptions<Value>\n) => {\n return p.isSelectionAtBlockStart(editor, options);\n};\n\nexport const getBlockAbove = (editor: PlateEditor, options?: p.GetAboveNodeOptions<p.Value>) => {\n return p.getBlockAbove(editor, options);\n};\n\nexport const getNodeEntry = (editor: PlateEditor, at: Location, options?: s.EditorNodeOptions) => {\n return p.getNodeEntry(editor, at, options);\n};\n\nexport const getNodeEntries = (editor: PlateEditor, options?: p.GetNodeEntriesOptions) => {\n return p.getNodeEntries(editor, options);\n};\n\n// TODO: Ancestor may not be the correct type for root\nexport const getNodeChildren = (\n root: Ancestor,\n path: Path,\n options?: s.NodeChildrenOptions | undefined\n) => {\n return p.getNodeChildren(root, path, options);\n};\n\nexport const getParentNode = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorParentOptions\n) => {\n return p.getParentNode(editor, at, options) as NodeEntry | undefined;\n};\n\nexport const someNode = (editor: PlateEditor, options: p.FindNodeOptions) => {\n return p.someNode(editor, options);\n};\n\nexport const getChildren = (entry: NodeEntry) => {\n // Node.children crashes when given a text node\n if (s.Text.isText(entry[0])) {\n return [];\n }\n\n return p.getChildren(entry) as NodeEntry[];\n};\n\nexport const isFirstChild = (path: Path) => {\n return p.isFirstChild(path);\n};\n\nexport const getDescendantNodeByPath = (root: Node, path: s.Path): Node => {\n // @ts-expect-error\n return s.Node.get(root, path);\n};\n\nexport const getNodeDescendants = (\n root: PlateEditor | Node,\n options?: s.NodeDescendantsOptions\n) => {\n return p.getNodeDescendants(root, { ...options, pass: undefined });\n};\n\nexport const isRangeCollapsed = (range?: BaseRange) => {\n return p.isCollapsed(range);\n};\n\n// TODO: simplify\nexport const isRangeAcrossBlocks = (\n editor: p.TEditor<p.Value>,\n options?:\n | (Omit<p.GetAboveNodeOptions<p.Value>, 'at'> & { at?: s.BaseRange | null | undefined })\n | undefined\n) => {\n return p.isRangeAcrossBlocks(editor, options);\n};\n\nexport const isRangeExpanded = (range?: BaseRange) => {\n return p.isExpanded(range);\n};\n\nexport const getRange = (editor: PlateEditor, at: Location, to?: Location) => {\n return p.getRange(editor, at, to);\n};\n\nexport const getRangeEdges = (range: BaseRange) => {\n return s.Range.edges(range);\n};\n\nexport const getRangeStart = (range: BaseRange) => {\n return s.Range.start(range);\n};\n\nexport const getRangeEnd = (range: BaseRange) => {\n return s.Range.end(range);\n};\n\nexport const getAboveNode = (editor: PlateEditor, opts?: p.GetAboveNodeOptions<Value>) => {\n return p.getAboveNode(editor, opts) as NodeEntry | undefined;\n};\n\nexport const getNextNode = (editor: PlateEditor, opts?: p.GetNextNodeOptions<Value>) => {\n return p.getNextNode(editor, opts) as NodeEntry | undefined;\n};\n\nexport const getCommonNode = (\n root: PlateEditor | Node,\n path: s.Path,\n another: s.Path\n): NodeEntry => {\n return p.getCommonNode(root, path, another);\n};\n\nexport const getNodeTexts = (\n root: Node,\n opts?: {\n from?: s.Path;\n to?: s.Path;\n pass?: (ne: NodeEntry) => boolean;\n reverse?: boolean;\n }\n) => {\n return p.getNodeTexts(root, opts);\n};\n\nexport const findNode = (editor: PlateEditor, options?: p.FindNodeOptions<p.Value> | undefined) => {\n return p.findNode(editor, options);\n};\n\nexport const isMarkActive = (editor: PlateEditor, type: string) => {\n return p.isMarkActive(editor, type);\n};\n\nexport const getMarks = (editor: PlateEditor) => {\n return p.getMarks(editor);\n};\n\nexport const isEditor = (value: unknown): value is PlateEditor => {\n return p.isEditor(value);\n};\n\nexport const isEditorReadOnly = (editor: PlateEditor) => {\n return p.isEditorReadOnly(editor);\n};\n\nexport const isElement = (value: unknown): value is Element => {\n return p.isElement(value);\n};\n\nexport const isBlockNode = (editor: PlateEditor, value: unknown): value is Element => {\n return p.isBlock(editor, value);\n};\n\nexport const findNodePath = (editor: PlateEditor, node: Node) => {\n return p.findNodePath(editor, node);\n};\n\nexport const isAncestorPath = (path: s.Path, another: s.Path) => {\n return s.Path.isAncestor(path, another);\n};\n\nexport const isAncestorEmpty = (editor: PlateEditor, node: Ancestor) => {\n return p.isAncestorEmpty(editor, node);\n};\n\nexport const getParentPath = (path: s.Path) => {\n return s.Path.parent(path);\n};\n\nexport const getNextPath = (path: s.Path) => {\n return s.Path.next(path);\n};\n\nexport const getPreviousPath = (path: s.Path) => {\n return s.Path.previous(path);\n};\n\nexport const getLastChildPath = (nodeEntry: NodeEntry) => {\n return p.getLastChildPath(nodeEntry);\n};\n\nexport const getPathLevels = (path: s.Path, options?: s.PathLevelsOptions) => {\n return s.Path.levels(path, options);\n};\n\nexport const isCommonPath = (path: s.Path, anotherPath: s.Path) => {\n return s.Path.isCommon(path, anotherPath);\n};\n\nexport const isFirstChildPath = (path: s.Path) => {\n return p.isFirstChild(path);\n};\n\nexport const isLastChildPath = (entry: NodeEntry, childPath: s.Path) => {\n return p.isLastChild(entry, childPath);\n};\n\nexport const isChildPath = (path: s.Path, another: s.Path) => {\n return s.Path.isChild(path, another);\n};\n\nexport const matchNode = (node: Node, path: s.Path, fn: p.Predicate<PlateEditor | Node>) => {\n return p.match(node, path, fn);\n};\n\nexport const someHtmlElement = (\n rootNode: globalThis.Node,\n predicate: (node: HTMLElement) => boolean\n) => {\n return p.someHtmlElement(rootNode, predicate);\n};\n\nexport const getPointBefore = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorBeforeOptions\n) => {\n return p.getPointBefore(editor, at, options);\n};\n\nexport const getPointAfter = (\n editor: PlateEditor,\n at: Location,\n options?: s.EditorAfterOptions\n) => {\n return p.getPointAfter(editor, at, options);\n};\n\nexport const isEndPoint = (\n editor: PlateEditor,\n point: BasePoint | null | undefined,\n at: Location\n) => {\n return p.isEndPoint(editor, point, at);\n};\n\nexport const isInline = (editor: PlateEditor, value: unknown) => {\n return p.isInline(editor, value);\n};\n\nexport const queryNode = (entry?: NodeEntry, options?: p.QueryNodeOptions) => {\n return p.queryNode(entry, options);\n};\n\nexport const getPluginType = (editor: PlateEditor, key: string) => {\n return p.getPluginType(editor, key);\n};\n\nexport const createPathRef = (editor: PlateEditor, at: Path) => {\n return p.createPathRef(editor, at);\n};\n\nexport const match = (obj: Node, path: Path, predicate?: p.Predicate<Node> | undefined) => {\n return p.match(obj, path, predicate);\n};\n\nexport const getLastNodeByLevel = (editor: PlateEditor, level: number): NodeEntry | undefined => {\n return p.getLastNodeByLevel(editor, level);\n};\n","import * as p from '@udecode/plate-core';\nimport * as s from 'slate';\nimport { Except } from 'type-fest';\n\nimport {\n PlateEditor,\n Node,\n ToggleNodeTypeOptions,\n EditorNodesOptions,\n BaseRange,\n Value,\n SelectionMoveOptions,\n TextInsertTextOptions,\n Element,\n SelectionCollapseOptions,\n Path,\n Span,\n BasePoint,\n Location,\n} from './types';\n\n/**\n * Apply editor normalization rules\n */\nexport const normalize = (\n editor: PlateEditor,\n options: s.EditorNormalizeOptions = { force: true }\n) => {\n return p.normalizeEditor(editor, options);\n};\n\n/**\n * Set the selection to a location\n */\nexport const setSelection = (editor: PlateEditor, props: Partial<BaseRange>) => {\n return p.setSelection(editor, props);\n};\n\nexport const select = (editor: PlateEditor, location: Location) => {\n return p.select(editor, location);\n};\n\nexport const moveSelection = (editor: PlateEditor, options?: SelectionMoveOptions) => {\n return p.moveSelection(editor, options);\n};\n\nexport const moveChildren = (editor: PlateEditor, options: p.MoveChildrenOptions<Value>) => {\n return p.moveChildren(editor, options);\n};\n\nexport const collapseSelection = (editor: PlateEditor, options?: SelectionCollapseOptions) => {\n return p.collapseSelection(editor, options);\n};\n\nexport const setNodes = (\n editor: PlateEditor,\n attrs: Partial<Except<Node, 'children' | 'text'>>,\n opts?: p.SetNodesOptions<Value>\n) => {\n p.setNodes(editor, attrs, opts);\n};\n\nexport const unsetNodes = (\n editor: PlateEditor,\n props: string | number | (string | number)[],\n options?: p.UnsetNodesOptions<Value> | undefined\n) => {\n p.unsetNodes(editor, props, options);\n};\n\nexport const insertNodes = (\n editor: PlateEditor,\n nodes: Node | Node[],\n opts?: p.InsertNodesOptions\n) => {\n return p.insertNodes(editor, nodes, opts);\n};\n\nexport const splitNodes = (editor: PlateEditor, options?: p.SplitNodesOptions<Value>) => {\n return p.splitNodes(editor, options);\n};\n\nexport const liftNodes = (editor: PlateEditor, options?: p.LiftNodesOptions<Value> | undefined) => {\n return p.liftNodes(editor, options);\n};\n\nexport const unwrapNodes = (editor: PlateEditor, options?: p.UnwrapNodesOptions<Value>) => {\n return p.unwrapNodes(editor, options);\n};\n\nexport const wrapNodes = (\n editor: PlateEditor,\n element: Element,\n options?: p.WrapNodesOptions<Value>\n) => {\n return p.wrapNodes(editor, element, options);\n};\n\nexport const toggleNodeType = (\n editor: PlateEditor,\n options: ToggleNodeTypeOptions,\n editorOptions?: Omit<EditorNodesOptions, 'match'>\n) => {\n p.toggleNodeType(editor, options, editorOptions);\n};\n\nexport const removeMark = (editor: PlateEditor, type: string, at: BaseRange) => {\n p.removeMark(editor, { key: type, at });\n};\n\nexport const unhangRange = (\n editor: PlateEditor,\n range?: Path | BasePoint | BaseRange | Span | null | undefined,\n options?: p.UnhangRangeOptions | undefined\n) => {\n return p.unhangRange(editor, range, options);\n};\n\nexport const toggleMark = (\n editor: PlateEditor,\n options: p.ToggleMarkOptions<Value, keyof p.TText>\n) => {\n return p.toggleMark(editor, options);\n};\n\nexport const addMark = (editor: PlateEditor, type: string, value: unknown = true) => {\n p.addMark(editor, type, value);\n};\n\nexport const insertText = (editor: PlateEditor, text: string, options?: TextInsertTextOptions) => {\n return p.insertText(editor, text, options);\n};\n\nexport const deleteText = (editor: PlateEditor, opts?: Parameters<typeof p.deleteText>['1']) => {\n p.deleteText(editor, opts);\n};\n\nexport const removeNodes = (editor: PlateEditor, opts?: p.RemoveNodesOptions<Value>) => {\n p.removeNodes(editor, opts);\n};\n\nexport const moveNodes = (editor: PlateEditor, opts?: p.MoveNodesOptions<Value>) => {\n p.moveNodes(editor, opts);\n};\n\nexport const deleteFragment = (\n editor: PlateEditor,\n options?: s.EditorFragmentDeletionOptions | undefined\n) => {\n return p.deleteFragment(editor, options);\n};\n","export const IS_SAFARI =\n typeof navigator !== 'undefined' && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\n\nexport const IS_CHROME = /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9.]+)(:?\\s|$)/.test(\n navigator.userAgent\n);\n","import { Link } from '@contentful/field-editor-reference/dist/types';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { focusEditor } from '../internal/misc';\nimport {\n getText,\n getNodeEntries,\n getNodeEntry,\n getNodeDescendants,\n isText,\n isRangeCollapsed as isSelectionCollapsed,\n isEditor,\n isElement,\n getPathLevels,\n isCommonPath,\n} from '../internal/queries';\nimport {\n setNodes,\n select,\n insertNodes,\n toggleNodeType,\n moveSelection,\n unwrapNodes,\n insertText,\n wrapNodes,\n deleteText,\n collapseSelection,\n} from '../internal/transforms';\nimport { EditorNodesOptions, ToggleNodeTypeOptions, Node, Path } from '../internal/types';\nimport { Element, PlateEditor } from '../internal/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: PlateEditor, type: string): boolean {\n const [match] = Array.from(\n getNodeEntries(editor, {\n match: (node) => isElement(node) && node.type === type,\n })\n );\n return !!match;\n}\n\nexport function isRootLevel(path: Path): boolean {\n return path.length === 1;\n}\n\ntype NodeEntry = [Element, Path];\ntype NodeType = BLOCKS | INLINES;\nexport function getNodeEntryFromSelection(\n editor: PlateEditor,\n nodeTypeOrTypes: NodeType | NodeType[],\n path?: Path\n): NodeEntry | [] {\n path = path ?? editor.selection?.focus.path;\n if (!path) return [];\n const nodeTypes = Array.isArray(nodeTypeOrTypes) ? nodeTypeOrTypes : [nodeTypeOrTypes];\n for (let i = 0; i < path.length; i++) {\n const nodeEntry = getNodeEntry(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(\n editor: PlateEditor | null,\n nodeType: BLOCKS | INLINES\n): boolean {\n if (!editor) return false;\n const [node] = getNodeEntryFromSelection(editor, nodeType);\n return !!node;\n}\n\nexport function moveToTheNextLine(editor: PlateEditor) {\n moveSelection(editor, { distance: 1, unit: 'line' });\n}\n\nexport function moveToTheNextChar(editor: PlateEditor) {\n moveSelection(editor, { distance: 1, unit: 'offset' });\n}\n\nexport function insertEmptyParagraph(editor: PlateEditor, options?) {\n const emptyParagraph: Element = {\n type: BLOCKS.PARAGRAPH,\n children: [{ text: '' }],\n data: {},\n isVoid: false,\n };\n insertNodes(editor, emptyParagraph, options);\n}\n\nexport function getElementFromCurrentSelection(editor: PlateEditor) {\n if (!editor.selection) return [];\n\n return Array.from(\n getNodeEntries(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) => isElement(node),\n })\n ).flat();\n}\n\nexport function isList(editor?: PlateEditor) {\n if (!editor) {\n return false;\n }\n\n const element = getElementFromCurrentSelection(editor);\n\n return element.some(\n (element) => isElement(element) && LIST_TYPES.includes(element.type as BLOCKS)\n );\n}\n\nexport function getTableSize(table: Element): 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 Element).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?: PlateEditor | null) {\n if (!editor) {\n return false;\n }\n\n const [link] = Array.from(\n getNodeEntries(editor, {\n match: (node) =>\n !isEditor(node) && isElement(node) && LINK_TYPES.includes(node.type as INLINES),\n })\n );\n return !!link;\n}\n\n// TODO: move to hyperlink plugin\nexport function unwrapLink(editor) {\n unwrapNodes(editor, {\n match: (node) =>\n !isEditor(node) && isElement(node) && LINK_TYPES.includes(node.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 && isSelectionCollapsed(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 setNodes(editor, link, { at: path });\n insertText(editor, text, { at: path });\n select(editor, path);\n } else if (isCollapsed) {\n insertNodes(editor, link);\n } else {\n wrapNodes(editor, link, { split: true });\n deleteText(editor);\n insertText(editor, text);\n collapseSelection(editor, { edge: 'end' });\n }\n}\n\nexport function getAncestorPathFromSelection(editor: PlateEditor) {\n if (!editor.selection) return undefined;\n\n return getPathLevels(editor.selection.focus.path).find((level) => level.length === 1);\n}\n\nexport const isAtEndOfTextSelection = (editor: PlateEditor) =>\n editor.selection?.focus.offset === getText(editor, editor.selection?.focus.path).length;\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): Element | null {\n if (!editor.selection) {\n return null;\n }\n const descendants = getNodeDescendants(editor, { from: editor.selection.focus.path });\n // eslint-disable-next-line no-constant-condition -- TODO: explain this disable\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 (isCommonPath(path, editor.selection.focus.path)) {\n continue;\n }\n return node as Element;\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 isText(node) || (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 focusEditor(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\nexport function toggleElement(\n editor: PlateEditor,\n options: ToggleNodeTypeOptions,\n editorOptions?: EditorNodesOptions\n) {\n toggleNodeType(editor, options, editorOptions);\n\n // We must reset `data` from one element to another\n setNodes(editor, { data: {} });\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","export const COMMAND_PROMPT = 'command-prompt';\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","/**\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","import { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n\nexport async function fetchAssets(sdk: FieldExtensionSDK, query: string) {\n const assets = await sdk.space.getAssets({ query });\n\n return assets.items.map((asset) => {\n const displayTitle = entityHelpers.getAssetTitle({\n asset,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n defaultTitle: 'Untitled',\n });\n\n return {\n contentTypeName: 'Asset',\n displayTitle,\n id: asset.sys.id,\n entity: 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}\n","import { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\nimport { ContentTypeProps } from 'contentful-management/types';\n\nexport async function fetchEntries(\n sdk: FieldExtensionSDK,\n contentType: ContentTypeProps,\n query: string\n) {\n const entries = await sdk.space.getEntries({\n content_type: contentType.sys.id,\n query,\n });\n\n return entries.items.map((entry) => {\n const description = entityHelpers.getEntityDescription({\n contentType,\n // @ts-expect-error inconsistent in typing between app-sdk & field-editors-shared\n entity: entry,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n });\n\n const displayTitle = entityHelpers.getEntryTitle({\n // @ts-expect-error inconsistent in typing between app-sdk & field-editors-shared\n entry,\n contentType,\n localeCode: sdk.field.locale,\n defaultLocaleCode: sdk.locales.default,\n defaultTitle: 'Untitled',\n });\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","import { focus } from '../../../helpers/editor';\nimport { getText } from '../../../internal/queries';\nimport { setNodes, insertNodes } from '../../../internal/transforms';\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\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 insertNodes(editor, linkedEntityBlock);\n } else {\n setNodes(editor, linkedEntityBlock);\n }\n\n focus(editor);\n}\n","import { useState } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { isNodeTypeSelected } from '../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { getRange, getAboveNode } from '../../internal/queries';\nimport { select, insertNodes, deleteText, removeMark } from '../../internal/transforms';\nimport { PlateEditor } from '../../internal/types';\nimport { COMMAND_PROMPT } from './constants';\nimport { createInlineEntryNode } from './utils/createInlineEntryNode';\nimport { fetchAssets } from './utils/fetchAssets';\nimport { fetchEntries } from './utils/fetchEntries';\nimport { insertBlock } from './utils/insertBlock';\n\nexport interface Command {\n id: string;\n thumbnail?: string;\n label: string;\n callback?: () => void;\n}\n\nexport interface CommandGroup {\n group: string;\n commands: Command[];\n}\n\nexport type CommandList = (Command | CommandGroup)[];\n\nconst removeCommand = (editor: PlateEditor) => {\n const [, path] = getAboveNode(editor)!;\n const range = getRange(editor, path);\n\n select(editor, range.focus.path);\n\n removeMark(editor, COMMAND_PROMPT, range);\n deleteText(editor);\n};\n\nconst removeQuery = (editor: PlateEditor) => {\n const [, path] = getAboveNode(editor)!;\n const range = getRange(editor, path);\n\n if (range.focus.offset - range.anchor.offset > 1) {\n deleteText(editor, { at: range.focus, distance: range.focus.offset - 1, reverse: true });\n }\n};\n\nexport function isCommandPromptPluginEnabled(sdk: FieldExtensionSDK) {\n const inlineAllowed = isNodeTypeEnabled(sdk.field, INLINES.EMBEDDED_ENTRY);\n const entriesAllowed = isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ENTRY);\n const assetsAllowed = isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ASSET);\n\n return {\n inlineAllowed,\n entriesAllowed,\n assetsAllowed,\n };\n}\n\nfunction getCommandPermissions(sdk: FieldExtensionSDK, editor: PlateEditor) {\n const canInsertBlocks = !isNodeTypeSelected(editor, BLOCKS.TABLE);\n const { inlineAllowed, entriesAllowed, assetsAllowed } = isCommandPromptPluginEnabled(sdk);\n\n return {\n inlineAllowed,\n entriesAllowed: entriesAllowed && canInsertBlocks,\n assetsAllowed: assetsAllowed && canInsertBlocks,\n };\n}\n\nexport const useCommands = (sdk: FieldExtensionSDK, query: string, editor: PlateEditor) => {\n const contentTypes = sdk.space.getCachedContentTypes();\n const { inlineAllowed, entriesAllowed, assetsAllowed } = getCommandPermissions(sdk, editor);\n\n const [commands, setCommands] = useState((): CommandList => {\n const getEmbedEntry = (contentType) => {\n return {\n id: contentType.sys.id,\n label: `Embed ${contentType.name}`,\n callback: () => {\n fetchEntries(sdk, contentType, query).then((entries) => {\n removeQuery(editor);\n if (!entries.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n entries.map((entry) => {\n return {\n id: `${entry.id}-${entry.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: entry.displayTitle,\n callback: () => {\n removeCommand(editor);\n if (editor.selection) {\n const selection = editor.selection;\n editor.insertSoftBreak();\n insertBlock(editor, BLOCKS.EMBEDDED_ENTRY, entry.entry);\n select(editor, selection);\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ENTRY,\n });\n }\n },\n };\n })\n );\n }\n });\n },\n };\n };\n\n const getEmbedInline = (contentType) => {\n return {\n id: `${contentType.sys.id}-inline`,\n label: `Embed ${contentType.name} - Inline`,\n callback: () => {\n fetchEntries(sdk, contentType, query).then((entries) => {\n removeQuery(editor);\n if (!entries.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n entries.map((entry) => {\n return {\n id: `${entry.id}-${entry.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: entry.displayTitle,\n callback: () => {\n const inlineNode = createInlineEntryNode(entry.id);\n removeCommand(editor);\n insertNodes(editor, inlineNode);\n editor.insertText('');\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: INLINES.EMBEDDED_ENTRY,\n });\n },\n };\n })\n );\n }\n });\n },\n };\n };\n const contentTypeCommands =\n entriesAllowed || inlineAllowed\n ? contentTypes.map((contentType) => {\n return {\n group: contentType.name,\n commands:\n entriesAllowed && inlineAllowed\n ? [getEmbedEntry(contentType), getEmbedInline(contentType)]\n : entriesAllowed\n ? [getEmbedEntry(contentType)]\n : [getEmbedInline(contentType)],\n };\n })\n : [];\n if (assetsAllowed) {\n const assetCommand = {\n group: 'Assets',\n commands: [\n {\n id: 'embed-asset',\n label: 'Embed Asset',\n callback: () => {\n fetchAssets(sdk, query).then((assets) => {\n removeQuery(editor);\n if (!assets.length) {\n setCommands([\n {\n id: 'no-results',\n label: 'No results',\n },\n ]);\n } else {\n setCommands(\n assets.map((asset) => {\n return {\n id: `${asset.id}-${asset.displayTitle.replace(/\\W+/g, '-').toLowerCase()}`,\n label: asset.displayTitle,\n thumbnail: asset.thumbnail,\n callback: () => {\n removeCommand(editor);\n if (editor.selection) {\n const selection = editor.selection;\n editor.insertSoftBreak();\n insertBlock(editor, BLOCKS.EMBEDDED_ASSET, asset.entity);\n select(editor, selection);\n editor.tracking.onCommandPaletteAction('insert', {\n nodeType: BLOCKS.EMBEDDED_ASSET,\n });\n }\n },\n };\n })\n );\n }\n });\n },\n },\n ],\n };\n return [...contentTypeCommands, assetCommand];\n }\n return contentTypeCommands;\n });\n\n /* filter both commands and groups of commands with the user typed query */\n return query\n ? commands.reduce((list, nextItem) => {\n if ('group' in nextItem) {\n const subcommands = nextItem.commands.filter((command) => {\n return command.label.toLowerCase().includes(query.toLowerCase());\n });\n if (subcommands.length > 0) {\n list.push(nextItem);\n }\n } else {\n if (nextItem.label.toLowerCase().includes(query.toLowerCase())) {\n list.push(nextItem);\n }\n }\n return list;\n }, [] as CommandList)\n : commands;\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nconst styles = {\n container: css({\n position: 'absolute',\n zIndex: tokens.zIndexNotification,\n fontWeight: tokens.fontWeightNormal,\n fontStyle: 'normal',\n fontFamily: tokens.fontStackPrimary,\n 'ul, ol, dl': {\n listStyle: 'none',\n marginLeft: 0,\n },\n }),\n menuPoper: css({\n zIndex: tokens.zIndexModal,\n }),\n menuContent: css({\n width: '400px',\n maxHeight: '300px',\n }),\n menuList: css({\n overflow: 'auto',\n maxHeight: '200px',\n }),\n menuItem: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n menuItemSelected: css({\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n }),\n menuDivider: css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n }),\n menuHeader: css({\n zIndex: tokens.zIndexDefault,\n top: 0,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingM,\n }),\n menuFooter: css({\n position: 'sticky',\n bottom: 0,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingM,\n }),\n footerList: css({\n listStyle: 'none',\n color: tokens.gray600,\n fontSize: tokens.fontSizeM,\n }),\n thumbnail: css({\n width: '30px',\n height: '30px',\n objectFit: 'cover',\n }),\n};\n\nexport default styles;\n","import * as React from 'react';\nimport { usePopper } from 'react-popper';\n\nimport { Popover, Stack, SectionHeading, ScreenReaderOnly, Flex } from '@contentful/f36-components';\nimport { Portal } from '@contentful/f36-utils';\nimport { cx } from 'emotion';\n\nimport { PlateEditor } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { useCommandList } from '../hooks/useCommandList';\nimport { CommandList as CommandItems, Command, useCommands, CommandGroup } from '../useCommands';\nimport styles from './CommandList.styles';\n\nexport interface CommandListProps {\n query: string;\n editor: PlateEditor;\n textContainer?: HTMLSpanElement;\n}\n\nconst Group = ({\n commandGroup,\n selectedItem,\n}: {\n commandGroup: CommandGroup;\n selectedItem: string;\n}) => (\n <section key={commandGroup.group}>\n <SectionHeading\n as=\"h3\"\n marginBottom=\"spacingS\"\n marginTop=\"spacingS\"\n marginLeft=\"spacingM\"\n marginRight=\"spacingM\"\n >\n {commandGroup.group}\n </SectionHeading>\n {commandGroup.commands.map((command: Command) => (\n <button\n key={command.id}\n id={command.id}\n className={cx(styles.menuItem, {\n [styles.menuItemSelected]: command.id === selectedItem,\n })}\n onClick={command.callback}\n >\n {command.label}\n </button>\n ))}\n <hr className={styles.menuDivider} aria-orientation=\"horizontal\" />\n </section>\n);\n\nconst Asset = ({ command, selectedItem }: { command: Command; selectedItem: string }) => (\n <button\n key={command.id}\n id={command.id}\n className={cx(styles.menuItem, {\n [styles.menuItemSelected]: command.id === selectedItem,\n })}\n onClick={command.callback}\n >\n <Flex alignItems=\"center\" gap=\"spacingS\">\n {command.thumbnail && (\n <img width=\"30\" height=\"30\" src={command.thumbnail} alt=\"\" className={styles.thumbnail} />\n )}\n <span>{command.label}</span>\n </Flex>\n </button>\n);\n\nconst Item = ({ command }: { command: Command }) => (\n <button key={command.id} id={command.id} className={styles.menuItem}>\n {command.label}\n </button>\n);\n\nconst CommandListItems = ({\n commandItems,\n selectedItem,\n}: {\n commandItems: CommandItems;\n selectedItem: string;\n}) => {\n return (\n <>\n {commandItems.map((command) => {\n return 'group' in command ? (\n <Group commandGroup={command} selectedItem={selectedItem} />\n ) : command.callback ? (\n <Asset command={command} selectedItem={selectedItem} />\n ) : (\n <Item command={command} />\n );\n })}\n </>\n );\n};\n\nexport const CommandList = ({ query, editor, textContainer }: CommandListProps) => {\n const sdk = useSdkContext();\n const popoverContainer = React.useRef<HTMLDivElement>(null);\n const popper = usePopper(textContainer, popoverContainer?.current, {\n placement: 'bottom-start',\n });\n const commandItems = useCommands(sdk, query, editor);\n const { selectedItem, isOpen } = useCommandList(commandItems, popoverContainer);\n\n if (!commandItems.length) {\n return null;\n }\n\n return (\n <div className={styles.container} tabIndex={-1} contentEditable={false}>\n {/*\n We have to make it visually appear as if the buttons have focus, because we can not set both the\n focus on the textarea and the focus on the button. In HTML you can only set focus on one element at a time.\n So we have to manually tell the screenreader which item has received focus. The actual code of the\n popover we will hide from the screenreader, since it is not accessibly relevant and to avoid reading\n out everything twice.\n We use role alert here because we want to make the screenreader immediately announce the selected\n button, and also when the \"fake focus\" changes.\n */}\n <div role=\"alert\">\n <ScreenReaderOnly>\n {/* TODO - show the label here and not the id */}\n Richtext commands. Currently focused item: {selectedItem}. Press <kbd>enter</kbd> to\n select, <kbd>arrows</kbd> to navigate, <kbd>escape</kbd> to close.\n </ScreenReaderOnly>\n </div>\n <Portal>\n <div\n aria-hidden={true}\n ref={popoverContainer}\n className={styles.menuPoper}\n style={popper.styles.popper}\n {...popper.attributes.popper}\n >\n <Popover\n isOpen={isOpen}\n usePortal={false}\n /* eslint-disable-next-line jsx-a11y/no-autofocus -- we want to keep focus on text input*/\n autoFocus={false}\n >\n {/* we need an empty trigger here for the positioning of the menu list */}\n <Popover.Trigger>\n <span />\n </Popover.Trigger>\n <Popover.Content className={styles.menuContent} testId=\"rich-text-commands\">\n <header className={styles.menuHeader}>\n <SectionHeading marginBottom=\"none\">Richtext commands</SectionHeading>\n </header>\n <div className={styles.menuList} data-test-id=\"rich-text-commands-list\">\n <CommandListItems commandItems={commandItems} selectedItem={selectedItem} />\n </div>\n <footer className={styles.menuFooter}>\n <Stack\n as=\"ul\"\n margin=\"none\"\n padding=\"none\"\n spacing=\"spacingS\"\n className={styles.footerList}\n >\n <li>\n <kbd>↑</kbd>\n <kbd>↓</kbd> to navigate\n </li>\n <li>\n <kbd>↵</kbd> to confirm\n </li>\n <li>\n <kbd>esc</kbd> to close\n </li>\n </Stack>\n </footer>\n </Popover.Content>\n </Popover>\n </div>\n </Portal>\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { PlateEditor, RenderLeafProps } from '../../../internal/types';\nimport { trimLeadingSlash } from '../utils/trimLeadingSlash';\nimport { CommandList } from './CommandList';\n\nexport const CommandPrompt = (props: RenderLeafProps & { editor: PlateEditor }) => {\n const query = React.useMemo(() => trimLeadingSlash(props.text.text), [props.text.text]);\n const editor = props.editor;\n const [textElement, setTextElement] = React.useState<HTMLSpanElement>();\n\n return (\n <span\n ref={(e) => {\n setTextElement(e as HTMLSpanElement);\n }}\n {...props.attributes}\n >\n {props.children}\n <CommandList query={query} editor={editor} textContainer={textElement} />\n </span>\n );\n};\n","import isHotkey from 'is-hotkey';\n\nimport { getRange, getAboveNode, isMarkActive, addMark, removeMark } from '../../internal';\nimport { focusEditor } from '../../internal/misc';\nimport { KeyboardHandler, NodeEntry } from '../../internal/types';\nimport { COMMAND_PROMPT } from './constants';\n\nexport const createOnKeyDown = (): KeyboardHandler => {\n return (editor) => {\n return (event) => {\n // Support for different keyboard layouts:\n // `isHotKey` uses by default `event.which`, which will never generates a match for all layouts (QWERTY: `/`, QWERTZ: `shift+7`)\n // with `byKey: true` `isHotKey` uses `event.key` which will return the interpreted key '/'\n // It would still fail without the the optional `shift?` param, as it first checks the modKeys (`shiftKey` would be true on QWERTZ)\n if (isHotkey('shift?+/', { byKey: true }, event)) {\n addMark(editor, COMMAND_PROMPT);\n editor.tracking.onCommandPaletteAction('openRichTextCommandPalette');\n }\n\n const isActive = isMarkActive(editor, COMMAND_PROMPT);\n\n if (!isActive) {\n return;\n }\n\n if (isHotkey('enter', event)) {\n return event.preventDefault();\n }\n\n const [, path] = getAboveNode(editor) as NodeEntry;\n const range = getRange(editor, path);\n\n if (isHotkey('backspace', event)) {\n // if it is the last character in the command string\n if (range.focus.offset - range.anchor.offset === 1) {\n removeMark(editor, COMMAND_PROMPT, range);\n }\n }\n\n if (isHotkey('escape', event)) {\n event.stopPropagation();\n removeMark(editor, COMMAND_PROMPT, range);\n editor.tracking.onCommandPaletteAction('cancelRichTextCommandPalette');\n focusEditor(editor);\n }\n };\n };\n};\n","import { PlatePlugin } from '../../internal/types';\nimport { CommandPrompt } from './components/CommandPrompt';\nimport { COMMAND_PROMPT } from './constants';\nimport { createOnKeyDown } from './onKeyDown';\n\n/**\n * A command palette plugin (aka slash commands)\n *\n * How does it work?\n * * When the user presses the slash key, the editor will show a command palette\n * * When the user presses a key, the command palette will show the command suggestions\n * * When the user presses enter, the command palette will execute the command\n * * When the user presses escape, the command palette will hide\n * * When the user presses a letter, number, or space, the command palette will show the command suggestions\n * * When the user presses backspace, the command palette will remove the last character from the command string\n */\nexport const createCommandPalettePlugin = (): PlatePlugin => {\n return {\n key: COMMAND_PROMPT,\n type: COMMAND_PROMPT,\n isLeaf: true,\n component: CommandPrompt,\n handlers: {\n onKeyDown: createOnKeyDown(),\n },\n };\n};\n","import { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { getNodeEntries } from '../../internal/queries';\nimport { PlatePlugin } from '../../internal/types';\n\nexport function createDragAndDropPlugin(): PlatePlugin {\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 getNodeEntries(editor, {\n match: (node) => DRAGGABLE_TYPES.includes(node.type as string),\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","import React, { ComponentProps } from 'react';\n\nimport { useContentfulEditorRef } from '../ContentfulEditorProvider';\nimport { HyperlinkElementProps } from './Hyperlink/components/EntityHyperlink';\n\nexport function withLinkTracking(Component: React.ComponentType<HyperlinkElementProps>) {\n return function ComponentWithTracking(props: ComponentProps<typeof Component>) {\n const editor = useContentfulEditorRef();\n\n const onEntityFetchComplete = React.useCallback(\n () => editor?.tracking.onViewportAction('linkRendered'),\n [editor]\n );\n\n return <Component {...props} onEntityFetchComplete={onEntityFetchComplete} />;\n };\n}\n","import * as React from 'react';\n\nimport { Asset, FieldExtensionSDK, ScheduledAction } from '@contentful/app-sdk';\nimport { AssetCard } from '@contentful/f36-components';\nimport {\n useEntity,\n useEntityLoader,\n MissingEntityCard,\n WrappedAssetCard,\n} from '@contentful/field-editor-reference';\nimport areEqual from 'fast-deep-equal';\n\ninterface InternalAssetCardProps {\n asset?: Asset | 'failed';\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n onEdit?: () => void;\n onRemove?: () => unknown;\n sdk: FieldExtensionSDK;\n loadEntityScheduledActions: (entityType: string, entityId: string) => Promise<ScheduledAction[]>;\n}\n\nconst InternalAssetCard = React.memo((props: InternalAssetCardProps) => {\n if (props.asset === undefined) {\n return <AssetCard size=\"default\" isLoading />;\n }\n\n if (props.asset === 'failed') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n return (\n <WrappedAssetCard\n getEntityScheduledActions={props.loadEntityScheduledActions}\n size=\"small\"\n isSelected={props.isSelected}\n isDisabled={props.isDisabled}\n localeCode={props.locale}\n defaultLocaleCode={props.sdk.locales.default}\n asset={props.asset}\n onEdit={props.onEdit}\n onRemove={props.isDisabled ? undefined : props.onRemove}\n isClickable={false}\n />\n );\n}, areEqual);\n\nInternalAssetCard.displayName = 'InternalAssetCard';\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\nexport function FetchingWrappedAssetCard(props: FetchingWrappedAssetCardProps) {\n const { onEntityFetchComplete } = props;\n const { data: asset, status } = useEntity<Asset>('Asset', props.assetId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Asset', props.assetId),\n [getEntityScheduledActions, props.assetId]\n );\n\n React.useEffect(() => {\n if (status === 'success') {\n onEntityFetchComplete?.();\n }\n }, [onEntityFetchComplete, status]);\n\n return (\n <InternalAssetCard\n asset={asset as Asset | undefined}\n sdk={props.sdk}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n loadEntityScheduledActions={loadEntityScheduledActions}\n locale={props.locale}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n />\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { ScheduledAction, Entry } from '@contentful/app-sdk';\nimport { EntryCard } from '@contentful/f36-components';\nimport {\n useEntity,\n MissingEntityCard,\n WrappedEntryCard,\n useEntityLoader,\n} from '@contentful/field-editor-reference';\nimport areEqual from 'fast-deep-equal';\n\ninterface InternalEntryCard {\n isDisabled: boolean;\n isSelected: boolean;\n locale: string;\n sdk: FieldExtensionSDK;\n loadEntityScheduledActions: (entityType: string, entityId: string) => Promise<ScheduledAction[]>;\n entry?: Entry | 'failed';\n onEdit?: VoidFunction;\n onRemove?: VoidFunction;\n}\n\nconst InternalEntryCard = React.memo((props: InternalEntryCard) => {\n const { entry, sdk, loadEntityScheduledActions } = props;\n\n if (entry === undefined) {\n return <EntryCard isLoading />;\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 contentType = sdk.space\n .getCachedContentTypes()\n .find((contentType) => contentType.sys.id === entry.sys.contentType.sys.id);\n\n return (\n <WrappedEntryCard\n size=\"default\"\n getAsset={props.sdk.space.getAsset}\n getEntityScheduledActions={loadEntityScheduledActions}\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.isDisabled ? undefined : props.onRemove}\n isClickable={false}\n />\n );\n}, areEqual);\n\nInternalEntryCard.displayName = 'ReferenceCard';\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\nexport const FetchingWrappedEntryCard = (props: FetchingWrappedEntryCardProps) => {\n const { entryId, onEntityFetchComplete } = props;\n const { data: entry, status } = useEntity<Entry>('Entry', entryId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Entry', entryId),\n [getEntityScheduledActions, entryId]\n );\n\n React.useEffect(() => {\n if (status === 'success') {\n onEntityFetchComplete?.();\n }\n }, [onEntityFetchComplete, status]);\n\n return (\n <InternalEntryCard\n entry={entry}\n sdk={props.sdk}\n locale={props.locale}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n onEdit={props.onEdit}\n onRemove={props.onRemove}\n loadEntityScheduledActions={loadEntityScheduledActions}\n />\n );\n};\n","import React from 'react';\n\nimport { css } from 'emotion';\nimport { useSelected, useReadOnly } from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { IS_CHROME } from '../../helpers/environment';\nimport { findNodePath } from '../../internal/queries';\nimport { removeNodes } from '../../internal/transforms';\nimport { Element, RenderElementProps } from '../../internal/types';\nimport { useSdkContext } from '../../SdkProvider';\nimport { FetchingWrappedAssetCard } from '../shared/FetchingWrappedAssetCard';\nimport { FetchingWrappedEntryCard } from '../shared/FetchingWrappedEntryCard';\n\nconst styles = {\n root: css({\n marginBottom: '1.25rem !important',\n display: 'block',\n }),\n container: css({\n // The next 2 properties ensure Entity card won't be aligned above\n // a list item marker (i.e. bullet)\n display: 'inline-block',\n verticalAlign: 'text-top',\n width: '100%',\n }),\n};\n\ntype LinkedEntityBlockProps = {\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\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 = React.useCallback(() => {\n const openEntity = entityType === 'Asset' ? sdk.navigator.openAsset : sdk.navigator.openEntry;\n return openEntity(entityId, { slideIn: true });\n }, [sdk, entityId, entityType]);\n\n const handleRemoveClick = React.useCallback(() => {\n if (!editor) return;\n const pathToElement = findNodePath(editor, element);\n removeNodes(editor, { at: pathToElement });\n }, [editor, element]);\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={IS_CHROME ? undefined : false}\n draggable={IS_CHROME ? true : undefined}\n >\n <div\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={IS_CHROME ? false : undefined}\n draggable={IS_CHROME ? true : undefined}\n className={styles.container}\n >\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","/* 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 { NavigatorAPI } from '@contentful/app-sdk';\nimport noop from 'lodash/noop';\n\n/**\n * Allows to observe when the current slide-in navigation slide gets e.g.\n * re-activated after opening another slide on top. This is useful as the sdk\n * does not give full insights into e.g. whether sdk.dialogs.selectSingleEntry()\n * with `withCreate: true` option opens the slide-in navigation to edit the\n * created entry after returning it.\n */\nexport function watchCurrentSlide(navigator: NavigatorAPI) {\n const onActiveCallbacks = new Set<Function>();\n let wasSlideClosed = false;\n let initialSlideLevel;\n let lastSlideLevel;\n const status = () => ({\n wasClosed: wasSlideClosed,\n isActive: !wasSlideClosed && lastSlideLevel === initialSlideLevel,\n });\n const off = navigator.onSlideInNavigation(({ oldSlideLevel, newSlideLevel }) => {\n if (initialSlideLevel === undefined) {\n initialSlideLevel = oldSlideLevel;\n }\n lastSlideLevel = newSlideLevel;\n if (newSlideLevel < initialSlideLevel) {\n wasSlideClosed = true;\n off(); // No more point in watching, slide got closed.\n onActiveCallbacks.clear();\n }\n if (status().isActive && newSlideLevel !== oldSlideLevel) {\n onActiveCallbacks.forEach((cb) => cb());\n }\n });\n\n /**\n * Call to unsubscribe from navigator events when the watcher is no longer\n * needed.\n */\n function unwatch() {\n off();\n onActiveCallbacks.clear();\n }\n\n /**\n * Fires immediately when the slide is currently active, or at the point when\n * it becomes active again, if there are slides on top that get closed. Does not\n * fire when the observed slide gets closed, and then re-opened through browser\n * back, as this technically opens a new slide and editor instance.\n */\n function onActive(cb: Function) {\n if (wasSlideClosed) return noop; // Can't re-activate already closed slide.\n if (status().isActive) {\n cb();\n }\n onActiveCallbacks.add(cb);\n return () => onActiveCallbacks.delete(cb);\n }\n return {\n status,\n onActive,\n unwatch,\n };\n}\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { focus, insertEmptyParagraph, moveToTheNextChar } from '../../helpers/editor';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { watchCurrentSlide } from '../../helpers/sdkNavigatorSlideIn';\nimport { getText, getAboveNode, getLastNodeByLevel } from '../../internal/queries';\nimport { insertNodes, setNodes } from '../../internal/transforms';\nimport { PlateEditor } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\n\nexport async function selectEntityAndInsert(\n nodeType,\n sdk,\n editor,\n logAction: TrackingPluginActions['onToolbarAction'] | TrackingPluginActions['onShortcutAction']\n) {\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\n const rteSlide = watchCurrentSlide(sdk.navigator);\n const entity = await selectEntity(config);\n\n if (!entity) {\n logAction('cancelCreateEmbedDialog', { nodeType });\n } else {\n insertBlock(editor, nodeType, entity);\n ensureFollowingParagraph(editor);\n logAction('insert', { nodeType });\n }\n // If user chose to create a new entity, this might open slide-in to edit the\n // entity. In this case, no point in focusing RTE which is now in the slide below.\n rteSlide.onActive(() => {\n rteSlide.unwatch();\n focus(editor);\n });\n}\n\n// TODO: incorporate this logic inside the trailingParagraph plugin instead\nfunction ensureFollowingParagraph(editor: PlateEditor) {\n const entityBlock = getAboveNode(editor, {\n match: {\n type: [BLOCKS.EMBEDDED_ASSET, BLOCKS.EMBEDDED_ENTRY],\n },\n });\n\n if (!entityBlock) {\n return;\n }\n\n const level = entityBlock[1].length - 1;\n const lastNode = getLastNodeByLevel(editor, level);\n\n const isTextContainer = (TEXT_CONTAINERS as string[]).includes(\n (lastNode?.[0].type ?? '') as string\n );\n\n // If the new block isn't followed by a sibling text container (e.g. paragraph)\n // we insert a new empty one. Level 0 is handled by the trailingParagraph plugin\n if (level !== 0 && !isTextContainer) {\n insertEmptyParagraph(editor);\n }\n\n moveToTheNextChar(editor);\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: PlateEditor, nodeType: string, 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 insertNodes(editor, linkedEntityBlock);\n } else {\n setNodes(editor, linkedEntityBlock);\n }\n}\n","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex, Icon, Menu } from '@contentful/f36-components';\nimport { AssetIcon, EmbeddedEntryBlockIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\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 isDisabled: boolean;\n nodeType: string;\n onClose: () => void;\n}\n\nexport function EmbeddedEntityBlockToolbarIcon({\n isDisabled,\n nodeType,\n onClose,\n}: EmbeddedEntityBlockToolbarIconProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n\n const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (!editor) {\n return;\n }\n\n onClose();\n await selectEntityAndInsert(nodeType, sdk, editor, editor.tracking.onToolbarAction);\n };\n\n const type = getEntityTypeFromNodeType(nodeType);\n const baseClass = `rich-text__${nodeType}`;\n return (\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 { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\n\nimport { getNodeEntryFromSelection } from '../../helpers/editor';\nimport { removeNodes } from '../../internal/transforms';\nimport { KeyboardHandler, PlatePlugin } from '../../internal/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) => {\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 removeNodes(editor, { at: pathToSelectedElement });\n }\n\n return;\n }\n\n if (hotkey && isHotkey(hotkey, event)) {\n selectEntityAndInsert(nodeType, sdk, editor, editor.tracking.onShortcutAction);\n }\n };\n}\n\nconst createEmbeddedEntityPlugin =\n (nodeType: BLOCKS.EMBEDDED_ENTRY | BLOCKS.EMBEDDED_ASSET, hotkey: string) =>\n (sdk: FieldExtensionSDK): PlatePlugin => ({\n key: nodeType,\n type: nodeType,\n isElement: true,\n isVoid: true,\n component: withLinkTracking(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) => ({\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, Text } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport {\n useEntity,\n useEntityLoader,\n ScheduledIconWithTooltip,\n} from '@contentful/field-editor-reference';\nimport { Entry, 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 { data: entry, status: requestStatus } = useEntity<Entry>('Entry', props.entryId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = () => getEntityScheduledActions('Entry', props.entryId);\n\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n const { onEntityFetchComplete } = props;\n const contentType = React.useMemo(() => {\n if (!entry || !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 (requestStatus !== 'success') {\n return;\n }\n onEntityFetchComplete?.();\n }, [requestStatus, 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 if (requestStatus === 'error') {\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 (requestStatus === 'loading') {\n return <InlineEntryCard isLoading />;\n }\n\n const entryStatus = getEntryStatus(entry.sys);\n if (entryStatus === '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=\"delete\">\n Remove\n </MenuItem>,\n ]}\n />\n );\n }\n\n return (\n <InlineEntryCard\n testId={INLINES.EMBEDDED_ENTRY}\n isSelected={props.isSelected}\n title={`${contentTypeName}: ${title}`}\n status={entryStatus}\n actions={[\n <MenuItem key=\"edit\" onClick={props.onEdit}>\n Edit\n </MenuItem>,\n <MenuItem key=\"remove\" onClick={props.onRemove} disabled={props.isDisabled} testId=\"delete\">\n Remove\n </MenuItem>,\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","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 { 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 } from '@udecode/plate-core';\nimport { css } from 'emotion';\nimport isHotkey from 'is-hotkey';\nimport { useSelected, useReadOnly } from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport { focus, moveToTheNextChar } from '../../helpers/editor';\nimport { IS_CHROME } from '../../helpers/environment';\nimport newEntitySelectorConfigFromRichTextField from '../../helpers/newEntitySelectorConfigFromRichTextField';\nimport { watchCurrentSlide } from '../../helpers/sdkNavigatorSlideIn';\nimport { findNodePath } from '../../internal/queries';\nimport { insertNodes, removeNodes } from '../../internal/transforms';\nimport { KeyboardHandler, PlatePlugin, Node } from '../../internal/types';\nimport { Element, RenderElementProps } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\nimport { useSdkContext } from '../../SdkProvider';\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 = {\n target: Link;\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\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: { waitForClose: true } }).then(() => {\n editor && focus(editor);\n });\n }\n\n function handleRemoveClick() {\n if (!editor) return;\n const pathToElement = findNodePath(editor, props.element);\n 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={IS_CHROME ? undefined : false}\n draggable={IS_CHROME ? true : undefined}\n >\n <span\n // COMPAT: This makes copy & paste work for Chromium/Blink browsers and Safari\n contentEditable={IS_CHROME ? false : undefined}\n draggable={IS_CHROME ? true : undefined}\n >\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}\n\nasync function selectEntityAndInsert(\n editor,\n sdk: FieldExtensionSDK,\n logAction: TrackingPluginActions['onShortcutAction'] | TrackingPluginActions['onToolbarAction']\n) {\n logAction('openCreateEmbedDialog', { nodeType: INLINES.EMBEDDED_ENTRY });\n\n const config = {\n ...newEntitySelectorConfigFromRichTextField(sdk.field, INLINES.EMBEDDED_ENTRY),\n withCreate: true,\n };\n const rteSlide = watchCurrentSlide(sdk.navigator);\n const entry = await sdk.dialogs.selectSingleEntry<Entry>(config);\n\n if (!entry) {\n logAction('cancelCreateEmbedDialog', { nodeType: INLINES.EMBEDDED_ENTRY });\n } else {\n insertNodes(editor, createInlineEntryNode(entry.sys.id));\n logAction('insert', { nodeType: INLINES.EMBEDDED_ENTRY });\n }\n rteSlide.onActive(() => {\n rteSlide.unwatch();\n focus(editor);\n });\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, editor.tracking.onToolbarAction);\n moveToTheNextChar(editor);\n }\n\n return (\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 >\n <Flex alignItems=\"center\" flexDirection=\"row\">\n <EmbeddedEntryInlineIcon\n variant=\"secondary\"\n className={`rich-text__embedded-entry-list-icon ${styles.icon}`}\n />\n <span>Inline entry</span>\n </Flex>\n </Menu.Item>\n );\n}\n\nexport function createEmbeddedEntityInlinePlugin(sdk: FieldExtensionSDK): PlatePlugin {\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(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): Node => createInlineEntryNode(el.getAttribute(htmlAttributeName) as string),\n },\n };\n}\n\nfunction getWithEmbeddedEntryInlineEvents(sdk: FieldExtensionSDK): 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, editor.tracking.onShortcutAction);\n }\n };\n };\n}\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 { css, cx } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport {\n getElementFromCurrentSelection,\n focus,\n isBlockSelected,\n toggleElement,\n} from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { Element } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\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 Element).type;\n\n setSelected(LABELS[type] ? type : BLOCKS.PARAGRAPH);\n }, [editor?.operations, editor?.selection]); // eslint-disable-line -- TODO: explain this disable\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 const prevOnChange = editor.onChange;\n /*\n The focus might happen at point in time when\n `toggleElement` (helper for 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\n const isActive = isBlockSelected(editor, type);\n editor.tracking.onToolbarAction(isActive ? 'remove' : 'insert', { nodeType: type });\n\n toggleElement(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 >\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 >\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';\n\nimport { getNodeEntries } from '../internal/queries';\nimport { PlateEditor, Node, Path, NodeMatch } from '../internal/types';\n\nfunction extractNodes(editor: PlateEditor, path: Path, match: NodeMatch) {\n return Array.from(\n getNodeEntries(editor, {\n match,\n at: path,\n mode: 'lowest',\n })\n ).map(([node]) => node);\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): Node[] {\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';\n\nimport {\n insertNodes,\n removeNodes,\n unwrapNodes,\n wrapNodes,\n liftNodes,\n} from '../internal/transforms';\nimport { PlateEditor, NodeEntry } from '../internal/types';\nimport { extractParagraphs } from './extractNodes';\n\nexport const transformRemove = (editor: PlateEditor, [, path]: NodeEntry) => {\n 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 insertNodes(editor, nodes, { at: path });\n};\n\nexport const transformUnwrap = (editor: PlateEditor, [, path]: NodeEntry) => {\n unwrapNodes(editor, {\n at: path,\n });\n};\n\nexport const transformWrapIn =\n (type: BLOCKS | INLINES) =>\n (editor: PlateEditor, [, path]: NodeEntry) => {\n wrapNodes(editor, { type, data: {}, children: [] }, { at: path });\n };\n\nexport const transformLift = (editor: PlateEditor, [, path]: NodeEntry) => {\n 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 -- TODO: explain this disable\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 isHotkey from 'is-hotkey';\n\nimport { isBlockSelected, isInlineOrText, toggleElement } from '../../helpers/editor';\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { isMarkActive, getAboveNode } from '../../internal/queries';\nimport { KeyboardHandler, PlatePlugin, HotkeyPlugin } from '../../internal/types';\nimport { COMMAND_PROMPT } from '../CommandPalette/constants';\nimport { HeadingComponents } from './components/Heading';\n\nconst buildHeadingEventHandler =\n (type: BLOCKS): KeyboardHandler<HotkeyPlugin> =>\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n const isActive = isBlockSelected(editor, type);\n editor.tracking.onShortcutAction(isActive ? 'remove' : 'insert', { nodeType: type });\n\n toggleElement(editor, { activeType: type, inactiveType: BLOCKS.PARAGRAPH });\n }\n };\n\nexport const createHeadingPlugin = (): PlatePlugin => ({\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 !getAboveNode(editor, {\n at: path,\n match: { type: BLOCKS.LIST_ITEM },\n }) && !isMarkActive(editor, COMMAND_PROMPT),\n },\n },\n ],\n } as Partial<PlatePlugin>;\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: buildHeadingEventHandler(nodeType),\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 { css, cx } from 'emotion';\nimport * as Slate from 'slate-react';\n\nimport { useContentfulEditor } from '../../ContentfulEditorProvider';\nimport {\n getNodeEntryFromSelection,\n isBlockSelected,\n moveToTheNextLine,\n focus,\n} from '../../helpers/editor';\nimport { getText } from '../../internal/queries';\nimport { insertNodes, setNodes, removeNodes } from '../../internal/transforms';\nimport { PlatePlugin, PlateEditor } from '../../internal/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 const isBackspace = event.key === 'Backspace';\n const isDelete = event.key === 'Delete';\n if (isBackspace || isDelete) {\n event.preventDefault();\n 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 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 ? 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 = (): PlatePlugin => ({\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","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 { css } from 'emotion';\n\nimport { getNodeEntryFromSelection, insertLink, LINK_TYPES, focus } from '../../helpers/editor';\nimport getLinkedContentTypeIdsForNodeType from '../../helpers/getLinkedContentTypeIdsForNodeType';\nimport { isNodeTypeEnabled } from '../../helpers/validations';\nimport { withoutNormalizing } from '../../internal';\nimport { getText, isEditorReadOnly } from '../../internal/queries';\nimport { select } from '../../internal/transforms';\nimport { PlateEditor, Path } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\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 readonly: boolean;\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 isDisabled={props.readonly}\n >\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 isDisabled={props.readonly}\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 {!props.readonly && (\n <TextLink\n testId=\"entity-selection-link\"\n onClick={resetLinkEntity}\n className={styles.removeSelectionLabel}\n >\n Remove selection\n </TextLink>\n )}\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 >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n variant=\"positive\"\n size=\"small\"\n isDisabled={props.readonly || !isLinkComplete()}\n onClick={handleOnSubmit}\n testId=\"confirm-cta\"\n >\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: PlateEditor,\n sdk: FieldExtensionSDK,\n logAction:\n | TrackingPluginActions['onToolbarAction']\n | TrackingPluginActions['onShortcutAction']\n | TrackingPluginActions['onViewportAction'],\n targetPath?: Path\n) {\n const isReadOnly = isEditorReadOnly(editor);\n const selectionBeforeBlur = editor.selection ? { ...editor.selection } : undefined;\n if (!targetPath && !selectionBeforeBlur) return;\n\n let linkType;\n let linkText;\n let linkTarget;\n let linkEntity;\n const [node, path] = getNodeEntryFromSelection(editor, LINK_TYPES, targetPath);\n if (node && path) {\n linkType = node.type;\n linkText = getText(editor, path);\n linkTarget = (node.data as { uri: string }).uri || '';\n linkEntity = (node.data as { target: Link }).target;\n }\n\n const selectionAfterFocus =\n targetPath ?? (selectionBeforeBlur as NonNullable<typeof selectionBeforeBlur>);\n\n const currentLinkText = linkText || (editor.selection ? getText(editor, editor.selection) : '');\n const isEditing = Boolean(node && path);\n\n logAction(isEditing ? 'openEditHyperlinkDialog' : 'openCreateHyperlinkDialog');\n\n const data = await ModalDialogLauncher.openDialog(\n {\n title: isEditing ? '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 readonly={isReadOnly}\n />\n );\n }\n );\n select(editor, selectionAfterFocus);\n\n if (!data) {\n focus(editor);\n logAction(isEditing ? 'cancelEditHyperlinkDialog' : 'cancelCreateHyperlinkDialog');\n return;\n }\n\n const {\n linkText: text,\n linkTarget: url,\n linkType: type,\n linkEntity: target,\n } = data as HyperLinkDialogData;\n\n withoutNormalizing(editor, () => {\n insertLink(editor, { text, url, type, target, path });\n });\n\n logAction(isEditing ? 'edit' : 'insert', {\n nodeType: type,\n linkType: target?.sys.linkType ?? 'uri', // we want to keep the same values we've been using for the old editor, which can be `uri`, `Asset` or `Entry`\n });\n\n focus(editor);\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { LinkIcon } from '@contentful/f36-icons';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { isLinkActive, unwrapLink } from '../../../helpers/editor';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { addOrEditLink } from '../HyperlinkModal';\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 editor.tracking.onToolbarAction('unlinkHyperlinks');\n } else {\n addOrEditLink(editor, sdk, editor.tracking.onToolbarAction);\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","import { getScheduleTooltipContent } from '@contentful/field-editor-reference';\nimport { isAncestorEmpty } from '@udecode/plate-core';\n\nimport { getText } from '../../internal/queries';\nimport { NodeEntry } from '../../internal/types';\nimport { PlateEditor } from '../../internal/types';\nimport { FetchedEntityData } from './useEntityInfo';\n\nexport const hasText = (editor: PlateEditor, entry: NodeEntry) => {\n const [node, path] = entry;\n return !isAncestorEmpty(editor, node as any) && getText(editor, path).trim() !== '';\n};\n\nfunction 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\nexport function getEntityInfo(data?: FetchedEntityData) {\n if (!data) {\n return '';\n }\n const { entityTitle, contentTypeName, entityStatus, jobs } = data;\n\n const title = truncate(entityTitle, 60) || 'Untitled';\n\n const scheduledActions =\n jobs.length > 0 ? getScheduleTooltipContent({ job: jobs[0], jobsCount: jobs.length }) : '';\n\n return `${contentTypeName || 'Asset'} \"${title}\", ${entityStatus} ${scheduledActions}`;\n}\n","import { useEffect, useState } from 'react';\n\nimport {\n Asset,\n ContentEntityType,\n Entry,\n FieldExtensionSDK,\n Link,\n ScheduledAction,\n} from '@contentful/app-sdk';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n\nimport { getEntityInfo } from './utils';\n\nexport type FetchedEntityData = {\n jobs: ScheduledAction[];\n entity: Entry | Asset;\n entityTitle: string;\n entityDescription: string;\n entityStatus: ReturnType<typeof entityHelpers.getEntryStatus>;\n contentTypeName: string;\n};\n\nasync function fetchAllData({\n sdk,\n entityId,\n entityType,\n localeCode,\n defaultLocaleCode,\n}: {\n sdk: FieldExtensionSDK;\n entityId: string;\n entityType: ContentEntityType;\n localeCode: string;\n defaultLocaleCode: string;\n}): Promise<FetchedEntityData> {\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 type EntityInfoProps = {\n target: Link<ContentEntityType>;\n sdk: FieldExtensionSDK;\n onEntityFetchComplete?: VoidFunction;\n};\n\nfunction useRequestStatus({ sdk, target, onEntityFetchComplete }: EntityInfoProps) {\n const [requestStatus, setRequestStatus] = useState<{\n type: 'success' | 'loading' | 'error';\n data?: FetchedEntityData;\n error?: Error;\n }>({ type: 'loading' });\n\n 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 .finally(() => {\n onEntityFetchComplete?.();\n });\n }\n }, [sdk, target, onEntityFetchComplete]);\n\n return requestStatus;\n}\n\nexport function useEntityInfo(props: EntityInfoProps) {\n const status = useRequestStatus(props);\n\n const { linkType } = props.target.sys;\n\n if (status.type === 'loading') {\n return `Loading ${linkType.toLowerCase()}...`;\n }\n\n if (status.type === 'error') {\n return `${linkType} missing or inaccessible`;\n }\n\n return getEntityInfo(status.data);\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const 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};\n","import * as React from 'react';\n\nimport { FieldExtensionSDK, Link } from '@contentful/app-sdk';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { fromDOMPoint } from '../../../internal';\nimport { Element, RenderElementProps } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { addOrEditLink } from '../HyperlinkModal';\nimport { useEntityInfo } from '../useEntityInfo';\nimport { styles } from './styles';\n\nexport type HyperlinkElementProps = {\n element: Element & {\n data: {\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n target: Link;\n attributes: Pick<RenderElementProps, 'attributes'>;\n children: Pick<RenderElementProps, 'children'>;\n onEntityFetchComplete: VoidFunction;\n};\n\nexport function EntityHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\n const sdk: FieldExtensionSDK = useSdkContext();\n const { target } = props.element.data;\n const { onEntityFetchComplete } = props;\n\n const tooltipContent = useEntityInfo({\n target,\n sdk,\n onEntityFetchComplete,\n });\n\n if (!target) return null;\n\n function handleClick(event: React.MouseEvent<HTMLAnchorElement>) {\n event.preventDefault();\n event.stopPropagation();\n if (!editor) return;\n\n const p = fromDOMPoint(editor, [event.target as Node, 0]);\n\n if (p) {\n addOrEditLink(editor, sdk, editor.tracking.onViewportAction, p.path);\n }\n }\n\n return (\n <Tooltip\n content={tooltipContent}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\"\n >\n <TextLink\n as=\"a\"\n onClick={handleClick}\n className={styles.hyperlink}\n data-link-type={target.sys.linkType}\n data-link-id={target.sys.id}\n >\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK, Link } from '@contentful/app-sdk';\nimport { Tooltip, TextLink } from '@contentful/f36-components';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { fromDOMPoint } from '../../../internal';\nimport { Element, RenderElementProps } from '../../../internal/types';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { addOrEditLink } from '../HyperlinkModal';\nimport { styles } from './styles';\n\ntype HyperlinkElementProps = {\n element: Element & {\n data: {\n uri?: string;\n target: {\n sys: {\n id: string;\n linkType: 'Entry' | 'Asset';\n type: 'Link';\n };\n };\n };\n };\n target?: Link;\n onEntityFetchComplete?: VoidFunction;\n children: Pick<RenderElementProps, 'children'>;\n};\n\nexport function UrlHyperlink(props: HyperlinkElementProps) {\n const editor = useContentfulEditor();\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 const p = fromDOMPoint(editor, [event.target as Node, 0], {\n exactMatch: false,\n suppressThrow: false,\n });\n addOrEditLink(editor, sdk, editor.tracking.onViewportAction, p?.path);\n }\n\n return (\n <Tooltip\n content={uri}\n targetWrapperClassName={styles.hyperlinkWrapper}\n placement=\"bottom\"\n maxWidth=\"auto\"\n >\n <TextLink\n as=\"a\"\n href={uri}\n rel=\"noopener noreferrer\"\n onClick={handleClick}\n className={styles.hyperlink}\n >\n {props.children}\n </TextLink>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { INLINES } from '@contentful/rich-text-types';\nimport { AnyObject, HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\n\nimport { isLinkActive, unwrapLink } from '../../helpers/editor';\nimport { transformRemove } from '../../helpers/transformers';\nimport { PlatePlugin, KeyboardHandler } from '../../internal/types';\nimport { withLinkTracking } from '../links-tracking';\nimport { EntityHyperlink } from './components/EntityHyperlink';\nimport { UrlHyperlink } from './components/UrlHyperlink';\nimport { addOrEditLink } from './HyperlinkModal';\nimport { hasText } from './utils';\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 editor.tracking.onShortcutAction('unlinkHyperlinks');\n } else {\n addOrEditLink(editor, sdk, editor.tracking.onShortcutAction);\n }\n };\n };\n\nconst getNodeOfType = (type: INLINES) => (el: HTMLElement, node: AnyObject) => ({\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 = (sdk: FieldExtensionSDK): PlatePlugin => {\n const common: Partial<PlatePlugin> = {\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(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(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","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { getListTypes } from '@udecode/plate-list';\n\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n getNodeEntry,\n getNodeChildren,\n getNextPath,\n getPreviousPath,\n getLastChildPath,\n match,\n} from '../../../internal/queries';\nimport { wrapNodes, moveNodes } from '../../../internal/transforms';\nimport { NodeEntry, PlateEditor, Element, Path } from '../../../internal/types';\n\nexport interface MoveListItemDownOptions {\n list: NodeEntry;\n listItem: NodeEntry;\n}\n\nexport const moveListItemDown = (\n editor: PlateEditor,\n { list, listItem }: MoveListItemDownOptions\n) => {\n const [listNode] = list;\n const [, listItemPath] = listItem;\n\n let previousListItemPath: Path;\n\n try {\n previousListItemPath = getPreviousPath(listItemPath);\n } catch (e) {\n return;\n }\n\n // Previous sibling is the new parent\n const previousSiblingItem = getNodeEntry(editor, previousListItemPath) as NodeEntry;\n\n if (previousSiblingItem) {\n const [, previousPath] = previousSiblingItem;\n\n const subList = Array.from(getNodeChildren(editor, previousPath)).find(([n, path]) =>\n match(n, path, { type: getListTypes(editor) })\n ) as NodeEntry | undefined;\n\n const newPath = getNextPath(getLastChildPath(subList ?? previousSiblingItem));\n\n withoutNormalizing(editor, () => {\n if (!subList) {\n // Create new sub-list\n wrapNodes(editor, { type: listNode.type, children: [], data: {} } as Element, {\n at: listItemPath,\n });\n }\n\n // Move the current item to the sub-list\n moveNodes(editor, {\n at: listItemPath,\n to: newPath,\n });\n });\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 { isListNested, ELEMENT_LIC, getListItemEntry, moveListItemUp } from '@udecode/plate-list';\n\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n getNodeEntries,\n getPluginType,\n createPathRef,\n getParentPath,\n isAncestorPath,\n} from '../../../internal/queries';\nimport { EditorNodesOptions, PlateEditor, Path, PathRef } from '../../../internal/types';\nimport { moveListItemDown } from './moveListItemDown';\n\nexport type MoveListItemsOptions = {\n increase?: boolean;\n at?: EditorNodesOptions['at'];\n};\n\nexport const moveListItems = (\n editor: PlateEditor,\n { increase = true, at = editor.selection ?? undefined }: MoveListItemsOptions = {}\n) => {\n const _nodes = getNodeEntries(editor, {\n at,\n match: {\n type: getPluginType(editor, ELEMENT_LIC),\n },\n });\n\n // Get the selected lic\n const lics = Array.from(_nodes);\n\n if (!lics.length) return;\n\n const highestLicPaths: Path[] = [];\n const highestLicPathRefs: PathRef[] = [];\n\n // Filter out the nested lic, we just need to move the highest ones\n lics.forEach((lic) => {\n const licPath = lic[1];\n const liPath = getParentPath(licPath);\n\n const isAncestor = highestLicPaths.some((path) => {\n const highestLiPath = getParentPath(path);\n\n return isAncestorPath(highestLiPath, liPath);\n });\n if (!isAncestor) {\n highestLicPaths.push(licPath);\n highestLicPathRefs.push(createPathRef(editor, licPath));\n }\n });\n\n const licPathRefsToMove = increase ? highestLicPathRefs : highestLicPathRefs.reverse();\n\n withoutNormalizing(editor, () => {\n licPathRefsToMove.forEach((licPathRef) => {\n const licPath = licPathRef.unref();\n if (!licPath) return;\n\n const liEntry = getListItemEntry(editor, { at: licPath });\n\n if (!liEntry) {\n return;\n }\n\n if (increase) {\n moveListItemDown(editor, liEntry);\n } else if (isListNested(editor, liEntry.list[1])) {\n moveListItemUp(editor, liEntry);\n }\n });\n });\n};\n","import * as p from '@udecode/plate-core';\n\nexport const ELEMENT_DEFAULT = p.ELEMENT_DEFAULT;\n","/**\n * Credit: Modified version of Plate's list plugin\n * See: https://github.com/udecode/plate/blob/main/packages/nodes/list\n */\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { withoutNormalizing } from '../../../internal';\nimport { getNodeEntries, isElement } from '../../../internal/queries';\nimport { unwrapNodes, liftNodes } from '../../../internal/transforms';\nimport { PlateEditor, Path } from '../../../internal/types';\n\nfunction hasUnliftedListItems(editor: PlateEditor, at?: Path) {\n return getNodeEntries(editor, {\n at,\n match: (node, path) => isElement(node) && node.type === BLOCKS.LIST_ITEM && path.length >= 2,\n }).next().done;\n}\nexport const unwrapList = (editor: PlateEditor, { at }: { at?: Path } = {}) => {\n withoutNormalizing(editor, () => {\n do {\n // lift list items to the root level\n liftNodes(editor, {\n at,\n match: (node) => isElement(node) && node.type === BLOCKS.LIST_ITEM,\n mode: 'lowest',\n });\n } while (!hasUnliftedListItems(editor, at));\n\n // finally unwrap all lifted items\n unwrapNodes(editor, {\n at,\n match: { type: BLOCKS.LIST_ITEM },\n split: false,\n });\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 { BLOCKS } from '@contentful/rich-text-types';\nimport { ELEMENT_LIC } from '@udecode/plate-list';\nimport { getListItemEntry } from '@udecode/plate-list';\n\nimport { ELEMENT_DEFAULT } from '../../../internal/constants';\nimport { withoutNormalizing } from '../../../internal/misc';\nimport {\n findNode,\n getNodeEntries,\n isRangeCollapsed,\n getRangeEdges,\n isRangeAcrossBlocks,\n getParentNode,\n getPluginType,\n getCommonNode,\n getRangeStart,\n getRangeEnd,\n} from '../../../internal/queries';\nimport { setNodes, wrapNodes } from '../../../internal/transforms';\nimport { PlateEditor, Element, Location, NodeEntry } from '../../../internal/types';\nimport { unwrapList } from './unwrapList';\n\nconst listTypes = [BLOCKS.UL_LIST, BLOCKS.OL_LIST] as string[];\n\nexport const toggleList = (editor: PlateEditor, { type }: { type: string }) =>\n withoutNormalizing(editor, () => {\n if (!editor.selection) {\n return;\n }\n\n if (isRangeCollapsed(editor.selection) || !isRangeAcrossBlocks(editor)) {\n // selection is collapsed\n const res = getListItemEntry(editor);\n\n if (res) {\n const { list } = res;\n if (list[0].type !== type) {\n setNodes(\n editor,\n { type },\n {\n at: editor.selection,\n match: (n) => listTypes.includes(n.type as string),\n mode: 'lowest',\n }\n );\n } else {\n unwrapList(editor);\n }\n } else {\n const list = { type, children: [], data: {} };\n wrapNodes(editor, list);\n\n const nodes = [\n ...getNodeEntries(editor, {\n match: { type: getPluginType(editor, ELEMENT_DEFAULT) },\n }),\n ];\n\n const listItem = {\n type: BLOCKS.LIST_ITEM,\n children: [],\n data: {},\n };\n\n for (const [, path] of nodes) {\n wrapNodes(editor, listItem, {\n at: path,\n });\n }\n }\n } else {\n // selection is a range\n\n const [startPoint, endPoint] = getRangeEdges(editor.selection);\n const commonEntry = getCommonNode(editor, startPoint.path, endPoint.path) as NodeEntry;\n\n if (\n listTypes.includes((commonEntry[0] as Element).type) ||\n commonEntry[0].type === BLOCKS.LIST_ITEM\n ) {\n let listType = commonEntry[0].type;\n if (commonEntry[0].type === BLOCKS.LIST_ITEM) {\n listType = (getParentNode(editor, commonEntry[1] as Location)?.[0] as Element | undefined)\n ?.type;\n }\n if (listType !== type) {\n const startList = findNode(editor, {\n at: getRangeStart(editor.selection),\n match: { type: listTypes },\n mode: 'lowest',\n });\n\n const endList = findNode(editor, {\n at: getRangeEnd(editor.selection),\n match: { type: listTypes },\n mode: 'lowest',\n });\n\n if (!startList || !endList) {\n return;\n }\n\n const rangeLength = Math.min(startList[1].length, endList[1].length);\n setNodes(\n editor,\n { type },\n {\n at: editor.selection,\n match: (n, path) =>\n listTypes.includes(n.type as string) && path.length >= rangeLength,\n mode: 'all',\n }\n );\n } else {\n unwrapList(editor);\n }\n } else {\n const rootPathLength = commonEntry[1].length;\n const nodes = (\n Array.from(\n getNodeEntries(editor, {\n mode: 'all',\n })\n ) as NodeEntry[]\n )\n .filter(([, path]) => path.length === rootPathLength + 1)\n .reverse();\n\n nodes.forEach((n) => {\n if (listTypes.includes(n[0].type as string)) {\n setNodes(editor, { type }, { at: n[1] });\n } else {\n setNodes(editor, { type: getPluginType(editor, ELEMENT_LIC) }, { at: n[1] });\n\n const listItem = {\n type: BLOCKS.LIST_ITEM,\n children: [],\n data: {},\n };\n\n wrapNodes(editor, listItem, {\n at: n[1],\n });\n\n const list = { type, children: [], data: {} };\n wrapNodes(editor, list, { at: n[1] });\n }\n });\n }\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 { HotkeyPlugin } from '@udecode/plate-core';\nimport isHotkey from 'is-hotkey';\nimport castArray from 'lodash/castArray';\n\nimport { getAboveNode } from '../../internal/queries';\nimport { KeyboardHandler } from '../../internal/types';\nimport { moveListItems } from './transforms/moveListItems';\nimport { toggleList } from './transforms/toggleList';\n\nexport const onKeyDownList: KeyboardHandler<HotkeyPlugin> =\n (editor, { type, options: { hotkey } }) =>\n (e) => {\n if (e.key === 'Tab' && editor.selection) {\n const listSelected = getAboveNode(editor, {\n at: editor.selection,\n match: { type },\n });\n\n if (listSelected) {\n e.preventDefault();\n moveListItems(editor, { increase: !e.shiftKey });\n return;\n }\n }\n\n if (!hotkey) return;\n\n const hotkeys = castArray(hotkey);\n\n for (const _hotkey of hotkeys) {\n if (isHotkey(_hotkey)(e)) {\n toggleList(editor, { type });\n }\n }\n };\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport {\n isText,\n getCommonNode,\n isRangeExpanded,\n getRangeEdges,\n getChildren,\n getAboveNode,\n getBlockAbove,\n getParentNode,\n} from '../../internal/queries';\nimport { insertNodes, removeNodes, wrapNodes } from '../../internal/transforms';\nimport { Node, NodeEntry, PlateEditor, Path, Element } from '../../internal/types';\n\nconst isList = (node: Node) => [BLOCKS.OL_LIST, BLOCKS.UL_LIST].includes(node.type as BLOCKS);\n\nexport const hasListAsDirectParent = (editor: PlateEditor, [, path]: NodeEntry) => {\n const [parentNode] = (getParentNode(editor, path) || []) as NodeEntry;\n return isList(parentNode);\n};\n\nconst getNearestListAncestor = (editor: PlateEditor, path: Path) => {\n return getAboveNode(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 as string | undefined;\n\n wrapNodes(\n editor,\n { type: parentListType || BLOCKS.UL_LIST, children: [], data: {} },\n { at: path }\n );\n};\n\nexport const isNonEmptyListItem = (_: PlateEditor, entry: NodeEntry) => {\n const listItemChildren = getChildren(entry);\n\n return listItemChildren.length !== 0;\n};\n\nexport const firstNodeIsNotList = (_editor: PlateEditor, [node]: NodeEntry<Element>) => {\n if (node.children.length === 1) {\n const firstNode = node.children[0];\n\n return !isText(firstNode) && !isList(firstNode);\n }\n\n return true;\n};\n\nexport const insertParagraphAsChild = (editor: PlateEditor, [, path]: NodeEntry) => {\n insertNodes(editor, [{ type: BLOCKS.PARAGRAPH, data: {}, children: [{ text: '' }] }], {\n at: path.concat([0]),\n });\n};\n\nexport const replaceNodeWithListItems = (editor: PlateEditor, entry: NodeEntry<Element>) => {\n const [node, path] = entry;\n\n removeNodes(editor, { at: path });\n insertNodes(editor, (node.children[0] as Element).children, { at: path });\n};\n\nexport const isListTypeActive = (editor: PlateEditor, type: BLOCKS): boolean => {\n const { selection } = editor;\n\n if (!selection) {\n return false;\n }\n\n if (isRangeExpanded(selection)) {\n const [start, end] = getRangeEdges(selection);\n const node = getCommonNode(editor, start.path, end.path);\n\n if (node[0].type === type) {\n return true;\n }\n }\n\n // Lists can be nested. Here, we take the list type at the lowest level\n const listNode = getBlockAbove(editor, {\n match: {\n type: [BLOCKS.OL_LIST, BLOCKS.UL_LIST],\n },\n mode: 'lowest',\n });\n\n return listNode?.[0].type === type;\n};\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { withoutNormalizing } from '../../../internal';\nimport {\n getAboveNode,\n getParentNode,\n isFirstChildPath,\n isSelectionAtBlockEnd,\n isSelectionAtBlockStart,\n getMarks,\n getNextPath,\n} from '../../../internal/queries';\nimport {\n select,\n insertNodes,\n moveChildren,\n splitNodes,\n collapseSelection,\n} from '../../../internal/transforms';\nimport { Element, PlateEditor } from '../../../internal/types';\n\n/**\n * Build a new list item node while preserving marks\n */\nconst emptyListItemNode = (editor: PlateEditor, withChildren = false): Element => {\n let children: Element[] = [];\n\n if (withChildren) {\n const marks = getMarks(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 = getAboveNode(editor, { match: { type: TEXT_CONTAINERS } });\n if (!paragraph) {\n return false;\n }\n\n const [, paragraphPath] = paragraph;\n const listItem = getParentNode(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 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 && isFirstChildPath(paragraphPath);\n const shouldSplit = !isAtStart && !isAtEnd;\n\n // Split the current paragraph content if necessary\n if (shouldSplit) {\n splitNodes(editor);\n }\n\n // Insert the new li\n const newListItemPath = isAtStartOfListItem ? listItemPath : getNextPath(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 : getNextPath(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 select(editor, newListItemPath);\n collapseSelection(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 { ELEMENT_DEFAULT, getPluginType, isBlockAboveEmpty, mockPlugin } 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 { PlateEditor, Value } from '../../internal/types';\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, Value, PlateEditor>({\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),\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 } from '@udecode/plate-core';\n\nimport {\n isBlockNode,\n isAncestorPath,\n getCommonNode,\n getNodeTexts,\n getParentPath,\n getDescendantNodeByPath,\n} from '../../internal/queries';\nimport { insertNodes } from '../../internal/transforms';\nimport { PlateEditor, NodeEntry, Node, Element } from '../../internal/types';\n\nconst getFirstAncestorOfType = (root: Node, entry: NodeEntry): NodeEntry => {\n let ancestor = getParentPath(entry[1]);\n while (getDescendantNodeByPath(root, ancestor).type !== BLOCKS.LIST_ITEM) {\n ancestor = getParentPath(ancestor);\n }\n\n return [getDescendantNodeByPath(root, ancestor), ancestor];\n};\n\nconst isListRoot = (node: Node): boolean =>\n [BLOCKS.UL_LIST, BLOCKS.OL_LIST].includes((node as Element).type as BLOCKS);\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 = (listRoot: Node): Node[] => {\n if (!isListRoot(listRoot)) {\n return [listRoot];\n }\n\n const textEntries = Array.from(getNodeTexts(listRoot));\n\n const commonAncestorEntry = textEntries.reduce<NodeEntry>(\n (commonAncestor, textEntry) =>\n isAncestorPath(commonAncestor[1], textEntry[1])\n ? commonAncestor\n : getCommonNode(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 as Node[])\n : [commonAncestorEntry[0]];\n};\n\n/**\n * Removes leading li when pasting a single li with a single child.\n */\nconst trimLiWrapper = (nodes: Node[]): Node[] => {\n if (nodes.length !== 1) {\n return nodes;\n }\n\n const node = nodes[0];\n\n if (node.type !== BLOCKS.LIST_ITEM || (node as Element).children.length !== 1) {\n return nodes;\n }\n\n return node.children as Node[];\n};\n\nconst unwrapTextContainerAtStart = (nodes: Node[]): Node[] => {\n const node = nodes[0];\n\n if (TEXT_CONTAINERS.includes((node as Element).type as BLOCKS)) {\n return [...(node as Element).children, ...nodes.slice(1)];\n }\n\n return nodes;\n};\n\nexport const insertListFragment = (editor: PlateEditor) => {\n const { insertFragment } = editor;\n\n return (fragment: Node[]) => {\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) => isBlockNode(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 insertNodes(editor, inlines, {\n at: editor.selection,\n select: true,\n });\n\n return insertNodes(editor, blocks, {\n at: editor.selection,\n select: true,\n });\n }\n\n const filtered = isListRoot(fragment[0]) ? [{ text: '' }, ...fragment] : 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 { BLOCKS } from '@contentful/rich-text-types';\nimport {\n getListItemEntry,\n removeFirstListItem,\n removeListItem,\n isListNested,\n} from '@udecode/plate-list';\nimport { onKeyDownResetNode, SIMULATE_BACKSPACE } from '@udecode/plate-reset-node';\n\nimport { withoutNormalizing } from '../../../internal';\nimport { mockPlugin } from '../../../internal/misc';\nimport { isSelectionAtBlockStart, isFirstChild } from '../../../internal/queries';\nimport { deleteFragment } from '../../../internal/transforms';\nimport { PlateEditor } from '../../../internal/types';\nimport { unwrapList } from './unwrapList';\n\nexport const deleteBackwardList = (\n editor: PlateEditor,\n unit: 'character' | 'word' | 'line' | 'block'\n) => {\n const res = getListItemEntry(editor, {});\n\n let moved: boolean | undefined = false;\n\n if (res) {\n const { list, listItem } = res;\n\n if (\n isSelectionAtBlockStart(editor, {\n match: (node) => node.type === BLOCKS.LIST_ITEM,\n })\n ) {\n withoutNormalizing(editor, () => {\n moved = removeFirstListItem(editor, { list, listItem });\n if (moved) return;\n\n moved = removeListItem(editor, { list, listItem });\n if (moved) return;\n\n if (isFirstChild(listItem[1]) && !isListNested(editor, list[1])) {\n onKeyDownResetNode(\n editor,\n // TODO look into this\n // @ts-expect-error\n mockPlugin({\n options: {\n rules: [\n {\n types: [BLOCKS.LIST_ITEM],\n defaultType: BLOCKS.PARAGRAPH,\n hotkey: 'backspace',\n predicate: () => isSelectionAtBlockStart(editor),\n onReset: (e: PlateEditor) => unwrapList(e),\n },\n ],\n },\n })\n )(SIMULATE_BACKSPACE);\n moved = true;\n return;\n }\n\n deleteFragment(editor, {\n // FIXME: see if we can remove unit\n // @ts-expect-error\n unit: unit,\n reverse: true,\n });\n moved = true;\n });\n }\n }\n\n return moved;\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 { normalizeList, deleteFragmentList, deleteForwardList } from '@udecode/plate-list';\n\nimport { WithOverride } from '../../internal/types';\nimport { insertListBreak } from './insertListBreak';\nimport { insertListFragment } from './insertListFragment';\nimport { deleteBackwardList } from './transforms/deleteBackwardList';\n\nconst validLiChildrenTypes = LIST_ITEM_BLOCKS;\n\nexport const withList: WithOverride = (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 our own 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 { PlatePlugin, PlateEditor, Value } from '../../internal/types';\nimport { ListOL, ListUL } from './components/List';\nimport { ListItem } from './components/ListItem';\nimport { onKeyDownList } from './onKeyDownList';\nimport {\n isNonEmptyListItem,\n hasListAsDirectParent,\n insertParagraphAsChild,\n normalizeOrphanedListItem,\n firstNodeIsNotList,\n replaceNodeWithListItems,\n} from './utils';\nimport { withList } from './withList';\n\nexport const createListPlugin = (): PlatePlugin =>\n createPlateListPlugin<any, Value, PlateEditor>({\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 handlers: {\n onKeyDown: onKeyDownList,\n },\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 handlers: {\n onKeyDown: onKeyDownList,\n },\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 // @ts-expect-error\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 });\n","import * as React from 'react';\n\nimport { ListBulletedIcon, ListNumberedIcon } from '@contentful/f36-icons';\nimport { BLOCKS } from '@contentful/rich-text-types';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { focus } from '../../../helpers/editor';\nimport { isNodeTypeEnabled } from '../../../helpers/validations';\nimport { useSdkContext } from '../../../SdkProvider';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { toggleList } from '../transforms/toggleList';\nimport { isListTypeActive } from '../utils';\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 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={isListTypeActive(editor, BLOCKS.UL_LIST)}\n isDisabled={props.isDisabled}\n >\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={isListTypeActive(editor, BLOCKS.OL_LIST)}\n isDisabled={props.isDisabled}\n >\n <ListNumberedIcon />\n </ToolbarButton>\n )}\n </React.Fragment>\n );\n}\n","import { MARKS } from '@contentful/rich-text-types';\nimport isHotkey from 'is-hotkey';\n\nimport { isMarkActive } from '../../internal/queries';\nimport { toggleMark } from '../../internal/transforms';\nimport { PlateEditor, HotkeyPlugin, KeyboardHandler } from '../../internal/types';\n\nexport const toggleMarkAndDeactivateConflictingMarks = (editor: PlateEditor, mark: MARKS) => {\n const subs = [MARKS.SUPERSCRIPT, MARKS.SUBSCRIPT];\n const clear = subs.includes(mark) ? subs : [];\n toggleMark(editor, { key: mark, clear });\n};\n\nexport const buildMarkEventHandler =\n (type: MARKS): KeyboardHandler<HotkeyPlugin> =>\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n event.preventDefault();\n\n const isActive = isMarkActive(editor, type);\n editor.tracking.onShortcutAction(isActive ? 'unmark' : 'mark', { markType: type });\n toggleMarkAndDeactivateConflictingMarks(editor, type);\n }\n };\n","import * as React from 'react';\n\nimport { Menu } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { css, cx } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { focus } from '../../../helpers/editor';\nimport { isMarkActive } from '../../../internal/queries';\nimport { ToolbarButton } from '../../shared/ToolbarButton';\nimport { toggleMarkAndDeactivateConflictingMarks } from '../helpers';\n\nexport interface MarkOptions {\n mark: MARKS;\n title: string;\n icon?: React.ReactElement;\n}\n\nconst styles = {\n isActive: css({\n backgroundColor: tokens.blue100,\n color: tokens.blue600,\n }),\n};\n\nexport const createMarkToolbarButton = ({ mark, title, icon }: MarkOptions) => {\n const Mark = ({ isDisabled }: { isDisabled?: boolean }) => {\n const editor = useContentfulEditor();\n\n const handleClick = React.useCallback(() => {\n if (!editor?.selection) return;\n\n const isActive = isMarkActive(editor, mark);\n editor.tracking.onToolbarAction(isActive ? 'unmark' : 'mark', { markType: mark });\n\n toggleMarkAndDeactivateConflictingMarks(editor, mark);\n focus(editor);\n }, [editor]);\n\n if (!editor) return null;\n\n if (!icon) {\n return (\n <Menu.Item\n onClick={handleClick}\n disabled={isDisabled}\n className={cx({\n [styles.isActive]: isMarkActive(editor, mark),\n })}\n testId={`${mark}-toolbar-button`}\n >\n {title}\n </Menu.Item>\n );\n }\n\n return (\n <ToolbarButton\n title={title}\n testId={`${mark}-toolbar-button`}\n onClick={handleClick}\n isActive={isMarkActive(editor, mark)}\n isDisabled={isDisabled}\n >\n {icon}\n </ToolbarButton>\n );\n };\n\n Mark.displayName = mark;\n\n return Mark;\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 { css } from 'emotion';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarBoldButton = createMarkToolbarButton({\n title: 'Bold',\n mark: MARKS.BOLD,\n icon: <FormatBoldIcon />,\n});\n\nconst styles = {\n bold: css({\n fontWeight: 600,\n }),\n};\n\nexport function Bold(props: 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 = (): PlatePlugin =>\n createDefaultBoldPlugin({\n type: MARKS.BOLD,\n component: Bold,\n options: {\n hotkey: ['mod+b'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.BOLD),\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 { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarCodeButton = createMarkToolbarButton({\n title: 'Code',\n mark: MARKS.CODE,\n icon: <CodeIcon />,\n});\n\nexport const ToolbarDropdownCodeButton = createMarkToolbarButton({\n title: 'Code',\n mark: MARKS.CODE,\n});\n\nconst styles = {\n code: css({\n fontFamily: 'monospace',\n fontSize: '.9em',\n }),\n};\n\nexport function Code(props: RenderLeafProps) {\n return (\n <code {...props.attributes} className={styles.code}>\n {props.children}\n </code>\n );\n}\n\nexport const createCodePlugin = (): PlatePlugin =>\n createDefaultCodePlugin({\n type: MARKS.CODE,\n component: Code,\n options: {\n // We need to define multiple hotkeys here,\n // - mod+/ -> QWERTY keyboard layout\n // - mod+shift+7 -> QWERTZ keyboard layout\n // The workaround like in packages/rich-text/src/plugins/CommandPalette/onKeyDown.ts is sadly not working here,\n // as `shift+7` is not interpreted as `/` with the `mod` key by the OS.\n // TODO: there are a lot more different keyboard layouts out there\n hotkey: ['mod+/', 'mod+shift+7'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.CODE),\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 { css } from 'emotion';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarItalicButton = createMarkToolbarButton({\n title: 'Italic',\n mark: MARKS.ITALIC,\n icon: <FormatItalicIcon />,\n});\n\nconst styles = {\n italic: css({\n fontStyle: 'italic',\n }),\n};\n\nexport function Italic(props: RenderLeafProps) {\n return (\n <em {...props.attributes} className={styles.italic}>\n {props.children}\n </em>\n );\n}\n\nexport const createItalicPlugin = (): PlatePlugin =>\n createDefaultItalicPlugin({\n type: MARKS.ITALIC,\n component: Italic,\n options: {\n hotkey: ['mod+i'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.ITALIC),\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 { SubscriptIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createSubscriptPlugin as createDefaultSubscriptPlugin } from '@udecode/plate-basic-marks';\nimport { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nconst styles = {\n subscript: css({\n verticalAlign: 'sub',\n fontSize: 'smaller',\n }),\n};\n\nexport const ToolbarSubscriptButton = createMarkToolbarButton({\n title: 'Subscript',\n mark: MARKS.SUBSCRIPT,\n icon: <SubscriptIcon viewBox=\"0 0 23 18\" />,\n});\n\nexport const ToolbarDropdownSubscriptButton = createMarkToolbarButton({\n title: 'Subscript',\n mark: MARKS.SUBSCRIPT,\n});\n\nexport function Subscript(props: RenderLeafProps) {\n return (\n <sub {...props.attributes} className={styles.subscript}>\n {props.children}\n </sub>\n );\n}\n\nexport const createSubscriptPlugin = (): PlatePlugin =>\n createDefaultSubscriptPlugin({\n type: MARKS.SUBSCRIPT,\n component: Subscript,\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.SUBSCRIPT),\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['SUB'],\n },\n ],\n },\n });\n","import * as React from 'react';\n\nimport { SuperscriptIcon } from '@contentful/f36-icons';\nimport { MARKS } from '@contentful/rich-text-types';\nimport { createSuperscriptPlugin as createDefaultSuperscriptPlugin } from '@udecode/plate-basic-marks';\nimport { css } from 'emotion';\n\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nconst styles = {\n superscript: css({\n verticalAlign: 'super',\n fontSize: 'smaller',\n }),\n};\n\nexport const ToolbarSuperscriptButton = createMarkToolbarButton({\n title: 'Superscript',\n mark: MARKS.SUPERSCRIPT,\n icon: <SuperscriptIcon />,\n});\n\nexport const ToolbarDropdownSuperscriptButton = createMarkToolbarButton({\n title: 'Superscript',\n mark: MARKS.SUPERSCRIPT,\n});\n\nexport function Superscript(props: RenderLeafProps) {\n return (\n <sup {...props.attributes} className={styles.superscript}>\n {props.children}\n </sup>\n );\n}\n\nexport const createSuperscriptPlugin = (): PlatePlugin =>\n createDefaultSuperscriptPlugin({\n type: MARKS.SUPERSCRIPT,\n component: Superscript,\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.SUPERSCRIPT),\n },\n deserializeHtml: {\n rules: [\n {\n validNodeName: ['SUP'],\n },\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';\n\nimport { someHtmlElement } from '../../internal/queries';\nimport { PlatePlugin, RenderLeafProps } from '../../internal/types';\nimport { createMarkToolbarButton } from './components/MarkToolbarButton';\nimport { buildMarkEventHandler } from './helpers';\n\nexport const ToolbarUnderlineButton = createMarkToolbarButton({\n title: 'Underline',\n mark: MARKS.UNDERLINE,\n icon: <FormatUnderlinedIcon />,\n});\n\nexport function Underline(props: RenderLeafProps) {\n return <u {...props.attributes}>{props.children}</u>;\n}\n\nexport const createUnderlinePlugin = (): PlatePlugin =>\n createDefaultUnderlinePlugin({\n type: MARKS.UNDERLINE,\n component: Underline,\n options: {\n hotkey: ['mod+u'],\n },\n handlers: {\n onKeyDown: buildMarkEventHandler(MARKS.UNDERLINE),\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 { PlatePlugin } from '../../internal/types';\nimport { createBoldPlugin } from './Bold';\nimport { createCodePlugin } from './Code';\nimport { createItalicPlugin } from './Italic';\nimport { createSubscriptPlugin } from './Subscript';\nimport { createSuperscriptPlugin } from './Superscript';\nimport { createUnderlinePlugin } from './Underline';\n\nexport const createMarksPlugin = (): PlatePlugin => ({\n key: 'Marks',\n plugins: [\n createBoldPlugin(),\n createCodePlugin(),\n createItalicPlugin(),\n createUnderlinePlugin(),\n createSuperscriptPlugin(),\n createSubscriptPlugin(),\n ],\n});\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport { INLINE_TYPES } from '../../helpers/editor';\nimport { transformWrapIn } from '../../helpers/transformers';\nimport { getParentNode, isText } from '../../internal/queries';\nimport { Element } from '../../internal/types';\nimport { NormalizerRule } from './types';\n\nconst isInline = (node: Element) => INLINE_TYPES.includes(node.type);\nconst isTextContainer = (node: Element) => 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: isText,\n validNode: (editor, [, path]) => {\n const parent = getParentNode(editor, path)?.[0] as Element;\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 = getParentNode(editor, path)?.[0] as Element;\n return !!parent && isTextContainer(parent);\n },\n transform: transformWrapIn(BLOCKS.PARAGRAPH),\n },\n];\n","import { isElement } from '../../internal/queries';\nimport { NodeValidator, NodeTransformer } from './types';\n\nexport class NormalizerError extends Error {}\n\nexport const createValidatorFromTypes =\n (types: string[]): NodeValidator =>\n (_, [node]) => {\n return isElement(node) && types.includes(node.type);\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 = isElement(node) ? node.type : 'default';\n\n const transformer = transforms[key] || fallback;\n\n return transformer(editor, entry);\n };\n};\n","import isPlainObject from 'is-plain-obj';\n\nimport { transformRemove } from '../../helpers/transformers';\nimport { withoutNormalizing } from '../../internal';\nimport { getChildren, matchNode, getPluginType } from '../../internal/queries';\nimport { PlateEditor, PlatePlugin, NodeEntry } from '../../internal/types';\nimport { baseRules } from './baseRules';\nimport { NormalizerRule, NodeTransformer, NodeValidator } from './types';\nimport { NormalizerError, createValidatorFromTypes, createTransformerFromObject } from './utils';\n\nexport const withNormalizer = (editor: PlateEditor) => {\n const rules: Required<NormalizerRule>[] = baseRules;\n\n // Derive normalization rules from other plugin's configurations\n for (const p of editor.plugins as PlatePlugin[]) {\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 withoutNormalizing(editor, () => {\n tr(editor, entry);\n });\n };\n\n const { normalizeNode } = editor;\n\n // @ts-expect-error\n editor.normalizeNode = (entry: NodeEntry) => {\n const [node, path] = entry;\n const children = getChildren(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 (!matchNode(node, path, 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 { PlatePlugin } from '../../internal/types';\nimport { withNormalizer } from './withNormalizer';\n\nexport const createNormalizerPlugin = (): PlatePlugin => ({\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';\n\nimport { RenderElementProps } from '../../internal/types';\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';\nimport isHotkey from 'is-hotkey';\n\nimport { isInlineOrText, toggleElement } from '../../helpers/editor';\nimport { transformUnwrap, transformLift } from '../../helpers/transformers';\nimport { PlatePlugin, KeyboardHandler, HotkeyPlugin } from '../../internal/types';\nimport { Paragraph } from './Paragraph';\nimport { isEmbedElement, isEmptyElement } from './utils';\n\nconst buildParagraphKeyDownHandler: KeyboardHandler<HotkeyPlugin> =\n (editor, { options: { hotkey } }) =>\n (event) => {\n if (editor.selection && hotkey && isHotkey(hotkey, event)) {\n toggleElement(editor, { activeType: BLOCKS.PARAGRAPH, inactiveType: BLOCKS.PARAGRAPH });\n }\n };\n\nexport const createParagraphPlugin = (): PlatePlugin => {\n const config: Partial<PlatePlugin> = {\n type: BLOCKS.PARAGRAPH,\n component: Paragraph,\n options: {\n hotkey: ['mod+opt+0'],\n },\n handlers: {\n onKeyDown: buildParagraphKeyDownHandler,\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","const wrapSpaceAround = (el: Element) => {\n const spacer = new Text(' ');\n const parent = el.parentNode;\n\n if (!parent) {\n return;\n }\n\n if (el.previousSibling) {\n parent.insertBefore(spacer, el);\n }\n\n if (el.nextSibling) {\n parent.insertBefore(spacer, el.nextSibling);\n }\n};\n\nconst unwrap = (el: Element) => {\n // add a spacer to avoid the content being cramped together with\n // the element siblings after it's unwrapped. It may not always\n // be desired but it should be easy to adjust by the end user.\n wrapSpaceAround(el);\n\n el.replaceWith(...Array.from(el.childNodes));\n};\n\n/**\n * In HTML it's a valid structure to have a block element inside a link\n *\n * e.g: <a href=\"...\"><h1> My link </h1><h2>is fancy</h2></a>\n *\n * However, that's not supported in Slate. There are generally two ways to\n * handle this:\n *\n * a) Unwrap inner blocks while preserving the content.\n * e.g. <a href=\"...\">My link is fancy</a>\n *\n * b) Break the link into multiple elements with having each block\n * element as a wrapper for an anchor with the same URL\n * e.g. <h1><a href=\"...\">My link</a></h1>\n * and <h2><a href=\"...\">is fancy</a></h2>\n *\n * We take approach (a) in here.\n */\nexport const sanitizeAnchors = (doc: Document): Document => {\n const unsupportedTagSelector = `a :not(${[\n // Bold\n 'b',\n 'strong',\n\n // Code\n 'code',\n 'pre',\n\n // Italic\n 'em',\n 'i',\n\n // Super/subscript\n 'sub',\n 'sup',\n\n // Underline\n 'u',\n\n // Other\n 'span',\n ].join(',')})`;\n\n doc.querySelectorAll(unsupportedTagSelector).forEach(unwrap);\n\n return doc;\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 -- TODO: explain this disable\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 { sanitizeAnchors } from './sanitizeAnchors';\nimport { 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\n/**\n * Remove all <meta /> tags\n */\nconst stripMetaTags = (doc: Document): Document => {\n doc.querySelectorAll('meta').forEach((el) => el.remove());\n\n return doc;\n};\n\n// Attention: Order is important\nconst transformers = [stripStyleTags, sanitizeSheets, stripMetaTags, sanitizeAnchors];\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 let previous: string;\n do {\n // save previous first before doing modifications\n previous = doc.body.innerHTML;\n // Update the body with the cleaned up content\n doc.body.innerHTML = doc.body.innerHTML\n // remove div container from tables\n // capture groups explained:\n // 1. and 3. every content/linebreaks before and after the div container\n // 2. the table inside the container, including content and linebreaks\n // The div container including attributes and possible linebreaks inside wil be removed\n .replace(/(.*\\s)?<div.*>\\s*(<table(?:.|\\s)*<\\/table>)\\s*<\\/div>(.*\\s)?/g, '$1$2$3')\n // remove whitespaces between some tags, as this can lead to unwanted behaviour:\n // - table -> empty table cells\n // - list -> leading whitespaces\n .replace(\n /<(\\/)?(table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)(.*)>\\s+</g,\n '<$1$2$3><'\n );\n } while (doc.body.innerHTML !== previous);\n\n return doc.body.innerHTML;\n};\n","import { KEY_DESERIALIZE_HTML } from '@udecode/plate-core';\n\nimport { PlatePlugin } from '../../internal/types';\nimport { sanitizeHTML } from './utils/sanitizeHTML';\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nexport const getSlateFragmentAttribute = (dataTransfer: DataTransfer): string | void => {\n const htmlData = dataTransfer.getData('text/html');\n const [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const ensureXSlateFragment = (dataTransfer: DataTransfer): DataTransfer => {\n if (!dataTransfer.getData('application/x-slate-fragment')) {\n const fragment = getSlateFragmentAttribute(dataTransfer);\n if (fragment) {\n const clipboardData = new DataTransfer();\n dataTransfer.types.forEach((type) => {\n clipboardData.setData(type, dataTransfer.getData(type));\n });\n clipboardData.setData('application/x-slate-fragment', fragment);\n return clipboardData;\n }\n }\n return dataTransfer;\n};\n\nexport const createPasteHTMLPlugin = (): PlatePlugin => ({\n key: 'PasteHTMLPlugin',\n withOverrides: (editor) => {\n const { insertData } = editor;\n editor.insertData = (data) => insertData(ensureXSlateFragment(data));\n return editor;\n },\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';\n\nimport { RenderElementProps } from '../../../internal/types';\n\nconst style = css({\n margin: '0 0 1.3125rem',\n borderLeft: `6px solid ${tokens.gray200}`,\n paddingLeft: '0.875rem',\n fontStyle: 'normal',\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, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { isLastChild, hasSingleChild } from '@udecode/plate-core';\n\nimport { getAboveNode, getBlockAbove, isAncestorEmpty } from '../../internal/queries';\nimport { PlateEditor, Ancestor } from '../../internal/types';\n\n/**\n * Returns true if we are:\n * 1) Inside a blockquote\n * 2) With no only one child paragraph/heading and\n * 3) that child is empty\n */\nexport const shouldResetQuoteOnBackspace = (editor: PlateEditor) => {\n const container = getAboveNode(editor, {\n match: { type: TEXT_CONTAINERS },\n mode: 'lowest',\n });\n\n if (!container) {\n return false;\n }\n\n if (!isAncestorEmpty(editor, container[0] as Ancestor)) {\n return false;\n }\n\n const quote = getBlockAbove(editor, {\n match: { type: BLOCKS.QUOTE },\n mode: 'lowest',\n });\n\n if (!quote) {\n return false;\n }\n\n if (hasSingleChild(quote[0]) && isLastChild(quote, container[1])) {\n return true;\n }\n\n return false;\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport isHotkey from 'is-hotkey';\n\nimport { isBlockSelected } from '../../helpers/editor';\nimport { withoutNormalizing, wrapNodes, unwrapNodes, isElement } from '../../internal';\nimport { KeyboardHandler, HotkeyPlugin, PlateEditor } from '../../internal/types';\nimport { TrackingPluginActions } from '../../plugins/Tracking';\n\nexport function toggleQuote(\n editor: PlateEditor,\n logAction?: TrackingPluginActions['onShortcutAction'] | TrackingPluginActions['onToolbarAction']\n): void {\n if (!editor.selection) return;\n\n const isActive = isBlockSelected(editor, BLOCKS.QUOTE);\n\n logAction?.(isActive ? 'remove' : 'insert', { nodeType: BLOCKS.QUOTE });\n\n withoutNormalizing(editor, () => {\n if (!editor.selection) return;\n\n unwrapNodes(editor, {\n match: (node) => isElement(node) && node.type === BLOCKS.QUOTE,\n split: true,\n });\n\n if (!isActive) {\n const quote = {\n type: BLOCKS.QUOTE,\n data: {},\n children: [],\n };\n\n wrapNodes(editor, quote);\n }\n });\n}\n\nexport const onKeyDownToggleQuote: KeyboardHandler<HotkeyPlugin> = (editor, plugin) => (event) => {\n const { hotkey } = plugin.options;\n\n if (hotkey && isHotkey(hotkey, event)) {\n event.preventDefault();\n toggleQuote(editor, editor.tracking.onShortcutAction);\n }\n};\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\nimport { BaseRange, BaseSelection, Element, Point } from 'slate';\n\nimport { getAboveNode, getText } from '../../internal/queries';\nimport { deleteText, insertNodes } from '../../internal/transforms';\nimport { WithOverride } from '../../internal/types';\n\nexport const withQuote: WithOverride = (editor) => {\n const { insertFragment } = editor;\n\n editor.insertFragment = (fragment) => {\n const startingNode = fragment.length && fragment[0];\n const startsWithBlockquote =\n Element.isElement(startingNode) && startingNode.type === BLOCKS.QUOTE;\n\n const containerEntry = getAboveNode(editor, {\n match: {\n type: TEXT_CONTAINERS,\n },\n });\n\n const containerIsNotEmpty = containerEntry && getText(editor, containerEntry[1]) !== '';\n\n if (startsWithBlockquote && containerIsNotEmpty) {\n const { selection } = editor;\n const isContentSelected = (selection: BaseSelection): selection is BaseRange =>\n !!selection && Point.compare(selection.anchor, selection.focus) !== 0;\n // if something is selected (highlighted) we replace the selection\n if (isContentSelected(selection)) {\n deleteText(editor, { at: selection });\n }\n\n // get the cursor entry again, it may be different after deletion\n const containerEntry = getAboveNode(editor, {\n match: {\n type: TEXT_CONTAINERS,\n },\n });\n\n const containerIsNotEmpty = containerEntry && getText(editor, containerEntry[1]) !== '';\n\n if (containerIsNotEmpty) {\n insertNodes(editor, fragment);\n return;\n }\n }\n\n insertFragment(fragment);\n };\n\n return editor;\n};\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\n\nimport { transformLift, transformUnwrap } from '../../helpers/transformers';\nimport { PlatePlugin } from '../../internal/types';\nimport { Quote } from './components/Quote';\nimport { shouldResetQuoteOnBackspace } from './shouldResetQuote';\nimport { onKeyDownToggleQuote, toggleQuote } from './toggleQuote';\nimport { withQuote } from './withQuote';\n\nexport function createQuotePlugin(): PlatePlugin {\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 resetNode: [\n {\n // toggle off blockquote on backspace when it's empty\n hotkey: 'backspace',\n types: [BLOCKS.QUOTE],\n predicate: shouldResetQuoteOnBackspace,\n onReset: toggleQuote,\n },\n ],\n normalizer: [\n {\n validChildren: CONTAINERS[BLOCKS.QUOTE],\n transform: {\n [BLOCKS.QUOTE]: transformUnwrap,\n default: transformLift,\n },\n },\n ],\n withOverrides: withQuote,\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, editor.tracking.onToolbarAction);\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 >\n <QuoteIcon />\n </ToolbarButton>\n );\n}\n","import { INLINES } from '@contentful/rich-text-types';\nimport { createSelectOnBackspacePlugin as createDefaultSelectPlugin } from '@udecode/plate-select';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createSelectOnBackspacePlugin = (): PlatePlugin =>\n createDefaultSelectPlugin({\n options: {\n query: {\n // `createTextPlugin` is taking care of block elements\n allow: [INLINES.EMBEDDED_ENTRY],\n },\n },\n });\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { getEmptyRowNode } from '@udecode/plate-table';\n\nimport { getAboveNode, someNode, getStartPoint, getNextPath } from '../../../internal/queries';\nimport { select, insertNodes } from '../../../internal/transforms';\nimport { PlateEditor, NodeEntry, Element, Path, Location } from '../../../internal/types';\n\nconst addRow = (editor: PlateEditor, getNextRowPath: (currentRowPath: Path) => Path) => {\n if (\n someNode(editor, {\n match: { type: BLOCKS.TABLE },\n })\n ) {\n const currentRowItem = getAboveNode(editor, {\n match: { type: BLOCKS.TABLE_ROW },\n }) as NodeEntry<Element> | undefined;\n\n if (currentRowItem) {\n const [currentRowElem, currentRowPath] = currentRowItem;\n const nextRowPath = getNextRowPath(currentRowPath);\n\n insertNodes(\n editor,\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 select(editor, getStartPoint(editor, nextRowPath as Location));\n }\n }\n};\n\nexport const addRowBelow = (editor: PlateEditor) => {\n addRow(editor, (currentRowPath) => {\n return getNextPath(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 { BLOCKS } from '@contentful/rich-text-types';\nimport { getEmptyCellNode } from '@udecode/plate-table';\n\nimport { getAboveNode, getNextPath, someNode } from '../../../internal/queries';\nimport { insertNodes } from '../../../internal/transforms';\nimport { PlateEditor, Path, Element, NodeEntry } from '../../../internal/types';\n\ninterface AddColumnOptions {\n header?: boolean;\n}\n\nconst addColumn = (\n editor: PlateEditor,\n { header }: AddColumnOptions,\n getNextCellPath: (currentCellPath: Path) => Path\n) => {\n if (\n someNode(editor, {\n match: { type: BLOCKS.TABLE },\n })\n ) {\n const currentCellItem = getAboveNode(editor, {\n match: {\n type: [BLOCKS.TABLE_HEADER_CELL, BLOCKS.TABLE_CELL],\n },\n });\n\n const currentTableItem = getAboveNode(editor, {\n match: { type: BLOCKS.TABLE },\n }) as NodeEntry<Element> | undefined;\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(\n editor,\n\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: AddColumnOptions) => {\n addColumn(editor, options, (currentCellPath) => getNextPath(currentCellPath));\n};\n\nexport const addColumnLeft = (editor: PlateEditor, options: AddColumnOptions) => {\n addColumn(editor, options, (currentCellPath) => currentCellPath);\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { getAboveNode, getChildren } from '../../../internal/queries';\nimport { setNodes } from '../../../internal/transforms';\nimport { PlateEditor } from '../../../internal/types';\n\nexport const setHeader = (editor: PlateEditor, enable?: boolean) => {\n const tableItem = getAboveNode(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 {\n ELEMENT_TABLE,\n ELEMENT_TH,\n ELEMENT_TD,\n ELEMENT_TR,\n getEmptyRowNode,\n} from '@udecode/plate-table';\n\nimport { isBlockSelected, getAncestorPathFromSelection } from '../../helpers/editor';\nimport { selectEditor } from '../../internal';\nimport {\n getBlockAbove,\n getStartPoint,\n getAboveNode,\n getChildren,\n isFirstChildPath,\n isAncestorEmpty,\n getParentNode,\n isElement,\n getNodeEntries,\n getPreviousPath,\n} from '../../internal/queries';\nimport { insertNodes, removeNodes, moveNodes } from '../../internal/transforms';\nimport { PlateEditor, NodeEntry, Ancestor, Node } from '../../internal/types';\n\nexport function insertTableAndFocusFirstCell(editor: PlateEditor): void {\n const table = {\n type: BLOCKS.TABLE,\n data: {},\n children: [\n getEmptyRowNode(editor, { colCount: 2, header: true }),\n getEmptyRowNode(editor, { colCount: 2 }),\n ],\n };\n\n insertNodes(editor, table);\n\n if (editor.selection) {\n const tableEntry = getBlockAbove(editor, {\n match: { type: BLOCKS.TABLE },\n });\n if (!tableEntry) return;\n\n selectEditor(editor, { at: getStartPoint(editor, tableEntry[1]) });\n }\n\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 = getAboveNode(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 || isFirstChildPath(tablePath)) return;\n\n const previousPath = getPreviousPath(tablePath);\n if (!previousPath) return;\n\n const [nodes] = getNodeEntries(editor, {\n at: previousPath,\n match: (node) => node.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 moveNodes(editor, { at: tablePath, to: previousPath });\n // Remove previous paragraph that now is under the table\n 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, rowEntry: NodeEntry) => {\n const [, rowPath] = rowEntry;\n const parent = getParentNode(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 // The longest table row determines its width\n const tableWidth = Math.max(...getChildren(parent).map((entry) => getChildren(entry).length));\n\n const rowWidth = getChildren(rowEntry).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 = (_: PlateEditor, entry: NodeEntry) => {\n return getChildren(entry).length !== 0;\n};\n\nexport const isTable = (node: Node) => {\n return isElement(node) && node.type === BLOCKS.TABLE;\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 { deleteColumn, deleteRow, deleteTable } from '@udecode/plate-table';\nimport { css } from 'emotion';\n\nimport { useContentfulEditor } from '../../../ContentfulEditorProvider';\nimport { getNodeEntryFromSelection, getTableSize } from '../../../helpers/editor';\nimport { withoutNormalizing } from '../../../internal';\nimport { useReadOnly } from '../../../internal/hooks';\nimport { getAboveNode } from '../../../internal/queries';\nimport { PlateEditor } from '../../../internal/types';\nimport { RichTextTrackingActionName } from '../../../plugins/Tracking';\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\n// FIXME: TablePluginOptions no longer exported so using any\ntype TableAction = (editor: PlateEditor, options: any) => void;\n\nexport const TableActions = () => {\n const editor = useContentfulEditor();\n const isDisabled = useReadOnly();\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 = getAboveNode(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 withoutNormalizing(editor, () => {\n cb(editor, { header: isHeaderEnabled });\n });\n // Tracking\n const actionName = `${type}Table${element === 'Table' ? '' : element}`;\n editor.tracking.onViewportAction(actionName as RichTextTrackingActionName, { tableSize });\n },\n [editor, isHeaderEnabled, close]\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 >\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 { useSelected } from 'slate-react';\n\nimport { RenderElementProps } from '../../../internal/types';\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: RenderElementProps) => {\n const isSelected = useSelected();\n return (\n <td\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n // FIXME: figure out what is going wrong with type here\n // @ts-expect-error\n {...(props.element.data as TableCell['data'])}\n className={style}\n >\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 { useSelected } from 'slate-react';\n\nimport { RenderElementProps } from '../../../internal/types';\nimport { TableActions } from './TableActions';\n\nconst style = css`\n background-clip: padding-box;\n background-color: ${tokens.gray200};\n border: 1px solid ${tokens.gray400};\n border-collapse: collapse;\n padding: 10px 12px;\n font-weight: ${tokens.fontWeightNormal};\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: RenderElementProps) => {\n const isSelected = useSelected();\n\n return (\n <th\n {...props.attributes}\n // may include `colspan` and/or `rowspan`\n // FIXME: figure out what is going wrong with type here\n // @ts-expect-error\n {...(props.element.data as TableHeaderCell['data'])}\n className={style}\n >\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 { BLOCKS } from '@contentful/rich-text-types';\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 return (\n <div data-block-type={BLOCKS.TABLE}>\n <table className={style} {...props.attributes}>\n <tbody>{props.children}</tbody>\n </table>\n </div>\n );\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { insertEmptyParagraph } from '../../helpers/editor';\nimport { getText, isElement } from '../../internal/queries';\nimport { Node } from '../../internal/types';\nimport { Element, PlateEditor } from '../../internal/types';\nimport { isTable } from './helpers';\n\n/**\n * Removes table wrappers when pasting a single table cell\n *\n * In Plate/Slate, copying the content of a table cell wraps\n * it in a <table><tr><td>{content}</td></tr></table> even\n * when copying partial cell content.\n *\n * That's really annoying as there is no way to remove the table\n * wrappers in that case.\n */\nconst trimUnnecessaryTableWrapper = (node: Node): Node[] => {\n if (!isElement(node)) {\n return [node];\n }\n\n // must be a table with a single row\n if (node.type !== BLOCKS.TABLE || node.children?.length !== 1) {\n return [node];\n }\n\n const row = node.children[0] as Element;\n\n // the row must contain a single cell\n if (row?.children?.length !== 1) {\n return [node];\n }\n\n const cell = row.children[0] as Element;\n\n return cell.children;\n};\n\nexport const insertTableFragment = (editor: PlateEditor) => {\n const { insertFragment } = editor;\n\n return (fragments: Node[]) => {\n if (!editor.selection) {\n return;\n }\n\n fragments = fragments.flatMap(trimUnnecessaryTableWrapper);\n\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 isInsertingTable = fragments.some((fragment) => isTable(fragment as Element));\n const isTableFirstFragment =\n fragments.findIndex((fragment) => isTable(fragment as Element)) === 0;\n const currentLineHasText = getText(editor, editor.selection?.focus.path) !== '';\n\n if (isInsertingTable && isTableFirstFragment && currentLineHasText) {\n insertEmptyParagraph(editor);\n }\n\n return insertFragment(fragments);\n };\n};\n","import { KeyboardEvent } from 'react';\n\nimport { BLOCKS } from '@contentful/rich-text-types';\nimport { getTableEntries, onKeyDownTable as defaultKeyDownTable } from '@udecode/plate-table';\n\nimport { insertEmptyParagraph } from '../../helpers/editor';\nimport { blurEditor } from '../../internal/misc';\nimport { getAboveNode, isLastChildPath } from '../../internal/queries';\nimport { KeyboardHandler, HotkeyPlugin, NodeEntry } from '../../internal/types';\nimport { addRowBelow } from './actions';\n\nexport const onKeyDownTable: KeyboardHandler<HotkeyPlugin> = (editor, plugin) => {\n const defaultHandler = defaultKeyDownTable(editor, plugin);\n\n return (event: KeyboardEvent) => {\n // This fixes `Cannot resolve a Slate point from DOM point:\n // [object HTMLDivElement]` when typing while the cursor is before table\n const windowSelection = window.getSelection();\n if (windowSelection) {\n // @ts-expect-error\n // this attribute comes from `plugins/Table/components/Table.tsx`\n const blockType = windowSelection.anchorNode.attributes?.['data-block-type']?.value;\n const isBeforeTable = blockType === BLOCKS.TABLE;\n\n if (isBeforeTable) {\n if (event.key === 'Enter') {\n const above = getAboveNode(editor, { match: { type: BLOCKS.TABLE } });\n\n if (!above) return;\n\n const [, tablePath] = above;\n\n insertEmptyParagraph(editor, { at: tablePath, select: true });\n }\n\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n // Pressing Tab on the last cell creates a new row\n // Otherwise, jumping between cells is handled in the defaultKeyDownTable\n if (event.key === 'Tab' && !event.shiftKey) {\n event.preventDefault();\n const entry = getTableEntries(editor, {});\n\n if (entry) {\n const { table, row, cell } = entry;\n\n const isLastCell = isLastChildPath(row as NodeEntry, cell[1]);\n const isLastRow = isLastChildPath(table as NodeEntry, row[1]);\n\n if (isLastRow && isLastCell) {\n addRowBelow(editor);\n\n // skip default handler\n return;\n } else {\n defaultHandler(event);\n }\n }\n }\n\n if (event.key === 'Escape') {\n blurEditor(editor);\n }\n };\n};\n","import {\n BLOCKS,\n INLINES,\n TOP_LEVEL_BLOCKS,\n VOID_BLOCKS,\n CONTAINERS,\n} from '@contentful/rich-text-types';\n\nconst inlines = Object.values(INLINES).map((type) => ({ type }));\n\nexport default {\n document: {\n nodes: [\n {\n types: TOP_LEVEL_BLOCKS.map((type) => ({ type })),\n },\n ],\n },\n\n blocks: {\n [BLOCKS.PARAGRAPH]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_1]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_2]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_3]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_4]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_5]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n [BLOCKS.HEADING_6]: {\n nodes: [\n {\n match: [...inlines, { object: 'text' }],\n },\n ],\n },\n\n ...VOID_BLOCKS.reduce(\n (blocks, nodeType) => ({\n ...blocks,\n [nodeType]: { isVoid: true },\n }),\n {}\n ),\n\n // TODO: add list schema\n\n [BLOCKS.QUOTE]: {\n nodes: [\n {\n match: [CONTAINERS[BLOCKS.QUOTE].map((type) => ({ type }))],\n min: 1,\n },\n ],\n normalize: (editor, error) => {\n if (error.code === 'child_type_invalid') {\n return editor.unwrapBlockByKey(error.node.key, BLOCKS.QUOTE);\n }\n },\n },\n },\n\n inlines: {\n [INLINES.HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ENTRY_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.ASSET_HYPERLINK]: {\n nodes: [\n {\n match: [{ object: 'text' }],\n },\n ],\n },\n [INLINES.EMBEDDED_ENTRY]: {\n isVoid: true,\n },\n },\n};\n","import * as contentfulSlateJSAdapter from '@contentful/contentful-slatejs-adapter';\nimport { documentToPlainTextString } from '@contentful/rich-text-plain-text-renderer';\n\nimport Schema from '../../constants/Schema';\nimport { PlateEditor } from '../../internal/types';\n\nexport function getCharacterCount(editor: PlateEditor) {\n const document = contentfulSlateJSAdapter.toContentfulDocument({\n document: editor.children,\n schema: Schema,\n });\n\n return documentToPlainTextString(document).length;\n}\n","import { PlatePlugin } from '../../internal/types';\nimport { getCharacterCount } from './utils';\n\nexport type RichTextTrackingActionName =\n // Elements\n | 'edit'\n | 'insert'\n | 'remove'\n // Marks\n | 'mark'\n | 'unmark'\n // Tables\n | 'insertTable'\n | 'insertTableRow'\n | 'insertTableColumn'\n | 'removeTable'\n | 'removeTableRow'\n | 'removeTableColumn'\n // Copy & Paste\n | 'paste'\n | 'invalidTablePaste'\n // Hyperlinks\n | 'cancelCreateHyperlinkDialog'\n | 'cancelEditHyperlinkDialog'\n | 'linkRendered'\n | 'openCreateHyperlinkDialog'\n | 'openEditHyperlinkDialog'\n | 'unlinkHyperlinks'\n // Embeds\n | 'openCreateEmbedDialog'\n | 'cancelCreateEmbedDialog'\n // CommandPalette\n | 'openRichTextCommandPalette'\n | 'cancelRichTextCommandPalette';\n\nexport type RichTextTrackingActionHandler = (\n name: RichTextTrackingActionName,\n data: Record<string, unknown>\n) => unknown;\n\nexport interface TrackingPluginActions {\n onViewportAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onShortcutAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onToolbarAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n\n onCommandPaletteAction: (\n actionName: RichTextTrackingActionName,\n data?: Record<string, unknown>\n ) => ReturnType<RichTextTrackingActionHandler>;\n}\n\nconst actionOrigin = {\n TOOLBAR: 'toolbar-icon',\n SHORTCUT: 'shortcut',\n VIEWPORT: 'viewport-interaction',\n COMMAND_PALETTE: 'command-palette',\n};\n\nexport function getPastingSource(data: DataTransfer) {\n const textHtml = data.getData('text/html');\n const doc = new DOMParser().parseFromString(textHtml, 'text/html');\n\n if (doc.querySelector('[id*=\"docs-internal-guid\"]')) {\n return 'Google Docs';\n }\n\n if (doc.querySelector('google-sheets-html-origin') || doc.querySelector('[data-sheets-value]')) {\n return 'Google Spreadsheets';\n }\n\n if (doc.querySelector('meta[content*=\"Microsoft Excel\"]')) {\n return 'Microsoft Excel';\n }\n\n if (doc.querySelector('meta[content*=\"Microsoft Word\"]')) {\n return 'Microsoft Word';\n }\n\n // TODO: MS Word Online doesn't give us specific tags, we might need to have a closer look at its tracking result since we are using generic values to identify it\n if (\n doc.querySelector('[style*=\"Arial_MSFontService\"]') &&\n (doc.querySelector('.TextRun') || doc.querySelector('.OutlineElement'))\n ) {\n return 'Microsoft Word Online';\n }\n\n if (doc.querySelector('meta[content=\"Cocoa HTML Writer\"]')) {\n return 'Apple Notes';\n }\n\n if (doc.querySelector('[style*=\"Slack-Lato, Slack-Fractions\"]')) {\n return 'Slack';\n }\n\n return 'Unknown';\n}\n\nexport const createTrackingPlugin = (onAction: RichTextTrackingActionHandler): PlatePlugin => {\n const trackingActions: TrackingPluginActions = {\n onViewportAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.VIEWPORT, ...data }),\n\n onShortcutAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.SHORTCUT, ...data }),\n\n onToolbarAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, { origin: actionOrigin.TOOLBAR, ...data }),\n\n onCommandPaletteAction: (actionName: RichTextTrackingActionName, data = {}) =>\n onAction(actionName, {\n origin: actionOrigin.COMMAND_PALETTE,\n ...data,\n }),\n };\n\n return {\n key: 'TrackingPlugin',\n withOverrides: (editor) => {\n const { insertData } = editor;\n\n editor.tracking = trackingActions;\n\n editor.insertData = (data) => {\n const isCopyAndPaste = data.types.length !== 0;\n if (isCopyAndPaste) {\n const characterCountSelection = window.getSelection()?.toString().length;\n const characterCountBefore = getCharacterCount(editor);\n\n setTimeout(() => {\n const characterCountAfter = getCharacterCount(editor);\n\n trackingActions.onShortcutAction('paste', {\n characterCountAfter,\n characterCountBefore,\n characterCountSelection,\n source: getPastingSource(data),\n });\n });\n }\n\n insertData(data);\n };\n\n return editor;\n },\n };\n};\n","import { BLOCKS } from '@contentful/rich-text-types';\n\nimport { isElement } from '../../internal/queries';\nimport { Node, PlateEditor } from '../../internal/types';\nimport { getPastingSource } from '../../plugins/Tracking';\nimport type { NodeTransformer } from '../Normalizer';\n\nfunction hasTables(nodes: Node[]) {\n return nodes.some(({ type }) => {\n return type === BLOCKS.TABLE;\n });\n}\n\nconst isTableHeaderCell = ({ type }: Node) => type === BLOCKS.TABLE_HEADER_CELL;\n\nfunction hasHeadersOutsideFirstRow(nodes: Node[]) {\n return nodes\n .filter(({ type }) => type === BLOCKS.TABLE)\n .flatMap(({ children }) => (children as Node[]).slice(1) as Node[])\n .some(({ children }) => (children as Node[]).some(isTableHeaderCell));\n}\n\nexport function addTableTrackingEvents(editor: PlateEditor) {\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 editor.tracking.onViewportAction('paste', {\n tablePasted: true,\n source: getPastingSource(data),\n hasHeadersOutsideFirstRow: hasHeadersOutsideFirstRow(markupAfter),\n });\n }\n }, 1);\n } else {\n insertData(data);\n }\n };\n}\n\nexport const withInvalidCellChildrenTracking = (transformer: NodeTransformer): NodeTransformer => {\n return (editor, childEntry) => {\n const [node] = childEntry;\n\n if (isElement(node)) {\n editor.tracking?.onViewportAction('invalidTablePaste', {\n nodeType: node.type,\n });\n }\n\n return transformer(editor, childEntry);\n };\n};\n","import { BLOCKS, CONTAINERS } from '@contentful/rich-text-types';\nimport {\n createTablePlugin as createDefaultTablePlugin,\n ELEMENT_TABLE,\n ELEMENT_TD,\n ELEMENT_TH,\n ELEMENT_TR,\n withTable,\n TablePlugin,\n} from '@udecode/plate-table';\n\nimport { isRootLevel } from '../../helpers/editor';\nimport { transformLift, transformParagraphs, transformWrapIn } from '../../helpers/transformers';\nimport {\n getParentNode,\n getBlockAbove,\n getLastChildPath,\n getNextPath,\n} from '../../internal/queries';\nimport { insertNodes } from '../../internal/transforms';\nimport { PlatePlugin, PlateEditor, Value } from '../../internal/types';\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';\nimport { insertTableFragment } from './insertTableFragment';\nimport { onKeyDownTable } from './onKeyDownTable';\nimport { addTableTrackingEvents, withInvalidCellChildrenTracking } from './tableTracking';\n\nexport const createTablePlugin = (): PlatePlugin =>\n createDefaultTablePlugin<TablePlugin<Value>, Value, PlateEditor>({\n type: BLOCKS.TABLE,\n handlers: {\n // @ts-expect-error\n onKeyDown: onKeyDownTable,\n },\n withOverrides: (editor, plugin) => {\n const { normalizeNode } = editor;\n // injects important fixes from plate's original table plugin\n withTable(editor, plugin);\n\n // Resets all normalization rules added by @udecode/plate-table as\n // they conflict with our own\n editor.normalizeNode = normalizeNode;\n\n addTableTrackingEvents(editor);\n\n editor.insertFragment = insertTableFragment(editor);\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 // Nested tables are handled by another normalization\n // rule in a the table cell level\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 = getParentNode(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 = getNextPath(getLastChildPath(entry));\n\n 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: withInvalidCellChildrenTracking(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: withInvalidCellChildrenTracking(transformParagraphs),\n },\n ],\n },\n } as Record<string, Partial<PlatePlugin>>,\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 { 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 isActive = editor && isTableActive(editor);\n\n async function handleClick() {\n if (!editor) return;\n\n editor.tracking.onToolbarAction('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 >\n <TableIcon />\n </ToolbarButton>\n );\n}\n","import { BLOCKS, TEXT_CONTAINERS } from '@contentful/rich-text-types';\n\nimport {\n getAboveNode,\n isAncestorEmpty,\n getNodeEntries,\n getPointBefore,\n isInline,\n isEndPoint,\n getPointAfter,\n isRangeCollapsed,\n queryNode,\n isText,\n} from '../../internal/queries';\nimport {\n setSelection,\n select,\n removeNodes,\n splitNodes,\n unhangRange,\n unsetNodes,\n} from '../../internal/transforms';\nimport {\n PlatePlugin,\n PlateEditor,\n Ancestor,\n Node,\n Location,\n BaseRange,\n} from '../../internal/types';\n\nexport function createTextPlugin(restrictedMarks: string[] = []): PlatePlugin {\n return {\n key: 'TextPlugin',\n handlers: {\n // Triple selection in a non-Firefox browser undesirably selects\n // the start of the next block. Editor.unhangRange helps removing\n // the extra block at the end.\n onMouseUp: (editor) => () => {\n if (!editor.selection) {\n return;\n }\n\n setSelection(editor, unhangRange(editor, editor.selection) as Partial<BaseRange>);\n },\n },\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 && isRangeCollapsed(selection)) {\n const inlinePath = getAboveNode(editor, {\n match: (n) => isInline(editor, n),\n mode: 'highest',\n })?.[1];\n\n if (inlinePath && isEndPoint(editor, selection.anchor, inlinePath)) {\n const point = getPointAfter(editor, inlinePath);\n 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 fixPasteAsPlainText(editor);\n\n return editor;\n },\n normalizer: [\n {\n match: isText,\n transform: (editor, [, path]) => {\n unsetNodes(editor, restrictedMarks, { at: path });\n },\n validNode: (_editor, [node]) => {\n return !restrictedMarks.some((mark) => {\n return mark in node;\n });\n },\n },\n ],\n };\n}\n\nfunction deleteEmptyParagraph(\n unit: 'character' | 'word' | 'line' | 'block',\n editor: PlateEditor,\n deleteFunction: Function\n) {\n const entry = getAboveNode(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 const hasSiblings = editor.children.length > 1; // prevent editor from losing focus\n\n if (isTextEmpty && isRootLevel && hasSiblings) {\n removeNodes(editor, { at: path });\n\n const prevNode = getPointBefore(editor, editor.selection as Location, {\n unit,\n });\n\n if (prevNode) {\n const [prevCell] = getNodeEntries(editor, {\n match: (node: Node) =>\n queryNode([node, prevNode.path], {\n allow: [BLOCKS.EMBEDDED_ASSET, BLOCKS.EMBEDDED_ENTRY, BLOCKS.HR],\n }),\n at: prevNode,\n });\n\n if (prevCell) {\n select(editor, prevNode);\n }\n }\n } else {\n deleteFunction(unit);\n }\n } else {\n deleteFunction(unit);\n }\n}\n\n/**\n * To be compatible with the old behavior we need to treat each 2 consecutive\n * line breaks as a new paragraph when pasting as plain text (also known as\n * paste and match style in macOS)\n */\nfunction fixPasteAsPlainText(editor: PlateEditor) {\n editor.insertTextData = (data: DataTransfer): boolean => {\n const text = data.getData('text/plain');\n\n if (!text) {\n return false;\n }\n\n const lines = text.split(/\\n{2}/);\n let split = false;\n\n for (const line of lines) {\n // empty lines\n if (/^(\\r\\n?|\\n)$/.test(line)) {\n continue;\n }\n\n if (split) {\n splitNodes(editor, { always: true });\n }\n\n editor.insertText(line);\n split = true;\n }\n\n return true;\n };\n}\n","import { BLOCKS } from '@contentful/rich-text-types';\nimport { createTrailingBlockPlugin } from '@udecode/plate-trailing-block';\n\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createTrailingParagraphPlugin = (): PlatePlugin => {\n return createTrailingBlockPlugin({\n options: {\n type: BLOCKS.PARAGRAPH,\n level: 0,\n },\n });\n};\n","import { isRootLevel } from '../../helpers/editor';\nimport { isFirstChildPath } from '../../internal/queries';\nimport { PlatePlugin } from '../../internal/types';\n\nexport const createVoidsPlugin = (): PlatePlugin => ({\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) && isFirstChildPath(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) && isFirstChildPath(path)) && !!node.isVoid,\n },\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 { PlatePlugin } from '../internal/types';\nimport { createSoftBreakPlugin, createExitBreakPlugin, createResetNodePlugin } from './Break';\nimport { createCommandPalettePlugin } from './CommandPalette';\nimport { isCommandPromptPluginEnabled } from './CommandPalette/useCommands';\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 { createTrackingPlugin, RichTextTrackingActionHandler } from './Tracking';\nimport { createTrailingParagraphPlugin } from './TrailingParagraph';\nimport { createVoidsPlugin } from './Voids';\n\nexport const getPlugins = (\n sdk: FieldExtensionSDK,\n onAction: RichTextTrackingActionHandler,\n restrictedMarks?: string[]\n): PlatePlugin[] => [\n // AST must come after the HTML deserializer\n createDeserializeHtmlPlugin(),\n createDeserializeAstPlugin(),\n createDeserializeDocxPlugin(),\n\n // Tracking - This should come first so all plugins below will have access to `editor.tracking`\n createTrackingPlugin(onAction),\n\n // Global / Global shortcuts\n createDragAndDropPlugin(),\n // Enable command palette plugin only, if at least action type is allowed\n ...(Object.values(isCommandPromptPluginEnabled(sdk)).some(Boolean)\n ? [createCommandPalettePlugin()]\n : []),\n\n // Block Elements\n createParagraphPlugin(),\n createListPlugin(),\n createHrPlugin(),\n createHeadingPlugin(),\n createQuotePlugin(),\n createTablePlugin(),\n createEmbeddedEntryBlockPlugin(sdk),\n createEmbeddedAssetBlockPlugin(sdk),\n\n // Inline elements\n createHyperlinkPlugin(sdk),\n createEmbeddedEntityInlinePlugin(sdk),\n\n // Marks\n createMarksPlugin(),\n\n // Other\n createTrailingParagraphPlugin(),\n createTextPlugin(restrictedMarks),\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 createResetNodePlugin(),\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 { Text, Node } from '../internal/types';\n\nconst isTextElement = (node: Node): node is Text => 'text' in node;\n\n/**\n * Ensures all nodes have a child leaf text element. This should be handled by\n * Slate but its behavior has proven to be buggy and unpredictable.\n */\nexport function sanitizeIncomingSlateDoc(nodes: Node[] = []): Node[] {\n return nodes.map((node: Node): Node => {\n if (isTextElement(node)) {\n return node;\n }\n if ((node.children as Node[])?.length === 0) {\n return {\n ...node,\n children: [{ text: '', data: {} }],\n };\n }\n return {\n ...node,\n children: sanitizeIncomingSlateDoc(node?.children as Node[]),\n };\n });\n}\n","import { toSlatejsDocument } from '@contentful/contentful-slatejs-adapter';\nimport { EMPTY_DOCUMENT, Document } from '@contentful/rich-text-types';\n\nimport schema from './constants/Schema';\nimport { sanitizeIncomingSlateDoc } from './helpers/sanitizeIncomingSlateDoc';\nimport { createPlateEditor, CreatePlateEditorOptions, withoutNormalizing } from './internal';\nimport { getEndPoint, isNode } from './internal/queries';\nimport { normalize, select } from './internal/transforms';\nimport { Value, PlateEditor, Node } from './internal/types';\n\n/**\n * For legacy reasons, a document may not have any content at all\n * e.g:\n *\n * {nodeType: document, data: {}, content: []}\n *\n * Rendering such document will break the Slate editor\n */\nexport const hasContent = (doc?: Document) => {\n return (doc?.content || []).length > 0;\n};\n\n/*\n Plate api doesn't allow to modify (easily) the editor value programmatically\n after the editor instance is created \n\n This function is inspired to https://github.com/udecode/plate/issues/1269#issuecomment-1057643622\n */\nexport const setEditorContent = (editor: PlateEditor, nodes?: Node[]): void => {\n // Replaces editor content while keeping change history\n withoutNormalizing(editor, () => {\n const children = [...editor.children];\n children.forEach((node) => editor.apply({ type: 'remove_node', path: [0], node }));\n\n if (nodes) {\n const nodesArray = isNode(nodes) ? [nodes] : nodes;\n nodesArray.forEach((node, i) => {\n editor.apply({ type: 'insert_node', path: [i], node });\n });\n }\n\n const point = getEndPoint(editor, []);\n if (point) {\n select(editor, point);\n }\n });\n};\n\n/**\n * Converts a Contentful rich text document to the corresponding slate editor\n * value\n */\nexport const documentToEditorValue = (doc?: Document) => {\n const slateDoc = toSlatejsDocument({\n document: hasContent(doc) ? doc : EMPTY_DOCUMENT,\n // TODO: get rid of schema, https://github.com/contentful/field-editors/pull/1065#discussion_r826723248\n schema,\n });\n\n return sanitizeIncomingSlateDoc(slateDoc);\n};\n\nexport const normalizeEditorValue = (\n value: Value,\n options?: Omit<CreatePlateEditorOptions, 'id' | 'editor'>\n) => {\n const editor = createPlateEditor(options);\n editor.children = value;\n normalize(editor, { force: true });\n return editor.children;\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 cursor: 'not-allowed',\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 inlineEntryEmbedEnabled = isNodeTypeEnabled(sdk.field, INLINES.EMBEDDED_ENTRY);\n const blockEntryEmbedEnabled =\n isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ENTRY) && canInsertBlocks;\n // Removed access check following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules and then readd access.can('read', 'Asset')\n const blockAssetEmbedEnabled =\n isNodeTypeEnabled(sdk.field, BLOCKS.EMBEDDED_ASSET) && canInsertBlocks;\n\n const actions = (\n <>\n {blockEntryEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ENTRY}\n onClose={onCloseEntityDropdown}\n />\n )}\n {inlineEntryEmbedEnabled && (\n <ToolbarEmbeddedEntityInlineButton\n isDisabled={!!isDisabled || isLinkActive(editor)}\n onClose={onCloseEntityDropdown}\n />\n )}\n {blockAssetEmbedEnabled && (\n <EmbeddedEntityBlockToolbarIcon\n isDisabled={!!isDisabled}\n nodeType={BLOCKS.EMBEDDED_ASSET}\n onClose={onCloseEntityDropdown}\n />\n )}\n </>\n );\n\n const showEmbedButton =\n blockEntryEmbedEnabled || inlineEntryEmbedEnabled || blockAssetEmbedEnabled;\n\n return showEmbedButton ? (\n <EmbeddedEntityDropdownButton\n isDisabled={isDisabled}\n onClose={onCloseEntityDropdown}\n onToggle={onToggleEntityDropdown}\n isOpen={isEmbedDropdownOpen}\n >\n {actions}\n </EmbeddedEntityDropdownButton>\n ) : null;\n};\n","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { Flex, IconButton, Menu } from '@contentful/f36-components';\nimport { MoreHorizontalIcon } from '@contentful/f36-icons';\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 { isMarkActive } from '../internal/queries';\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, ToolbarDropdownCodeButton } from '../plugins/Marks/Code';\nimport { ToolbarItalicButton } from '../plugins/Marks/Italic';\nimport { ToolbarDropdownSubscriptButton, ToolbarSubscriptButton } from '../plugins/Marks/Subscript';\nimport {\n ToolbarDropdownSuperscriptButton,\n ToolbarSuperscriptButton,\n} from '../plugins/Marks/Superscript';\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 toolbarBtn: css({\n height: '30px',\n width: '30px',\n marginLeft: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\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 Dropdown = ({ sdk, isDisabled }: { sdk: FieldExtensionSDK; isDisabled?: boolean }) => {\n const editor = useContentfulEditor();\n const isActive =\n editor &&\n (isMarkActive(editor, MARKS.SUPERSCRIPT) ||\n isMarkActive(editor, MARKS.SUBSCRIPT) ||\n isMarkActive(editor, MARKS.CODE));\n\n return (\n <Menu>\n <Menu.Trigger>\n <span>\n <IconButton\n size=\"small\"\n className={styles.toolbarBtn}\n variant={isActive ? 'secondary' : 'transparent'}\n icon={<MoreHorizontalIcon />}\n aria-label=\"toggle menu\"\n isDisabled={isDisabled}\n testId=\"dropdown-toolbar-button\"\n />\n </span>\n </Menu.Trigger>\n <Menu.List>\n {isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && (\n <ToolbarDropdownSuperscriptButton isDisabled={isDisabled} />\n )}\n {isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && (\n <ToolbarDropdownSubscriptButton isDisabled={isDisabled} />\n )}\n {isMarkEnabled(sdk.field, MARKS.CODE) && (\n <ToolbarDropdownCodeButton isDisabled={isDisabled} />\n )}\n </Menu.List>\n </Menu>\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 // We only show the dropdown when: whenever at least bold , italic and underline are available; If nothing that would go inside the dropdown is available, we hide it\n const boldItalicUnderlineAvailable =\n isMarkEnabled(sdk.field, MARKS.BOLD) ||\n isMarkEnabled(sdk.field, MARKS.ITALIC) ||\n isMarkEnabled(sdk.field, MARKS.UNDERLINE);\n const dropdownItemsAvailable =\n isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) ||\n isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) ||\n isMarkEnabled(sdk.field, MARKS.CODE);\n const shouldShowDropdown = boldItalicUnderlineAvailable && dropdownItemsAvailable;\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\n {isMarkEnabled(sdk.field, MARKS.UNDERLINE) && (\n <ToolbarUnderlineButton isDisabled={isDisabled} />\n )}\n\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUPERSCRIPT) && (\n <ToolbarSuperscriptButton isDisabled={isDisabled} />\n )}\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.SUBSCRIPT) && (\n <ToolbarSubscriptButton isDisabled={isDisabled} />\n )}\n {!boldItalicUnderlineAvailable && isMarkEnabled(sdk.field, MARKS.CODE) && (\n <ToolbarCodeButton isDisabled={isDisabled} />\n )}\n\n {shouldShowDropdown && <Dropdown sdk={sdk} 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 <ToolbarListButton isDisabled={isDisabled || !canInsertBlocks} />\n\n {isNodeTypeEnabled(sdk.field, BLOCKS.QUOTE) && (\n <ToolbarQuoteButton isDisabled={isDisabled || !canInsertBlocks} />\n )}\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 { COMMAND_PROMPT } from '../plugins/CommandPalette/constants';\n\nconst internalMarks = [COMMAND_PROMPT];\n\nexport const removeInternalMarks = (document: Record<string, unknown>) => {\n return {\n ...document,\n content: (document.content as Record<string, unknown>[]).map((node) => {\n if (node.nodeType === 'text') {\n node.marks = (node.marks as Record<string, unknown>[]).filter(\n (mark) => !internalMarks.includes(mark.type as string)\n );\n return node;\n }\n return removeInternalMarks(node);\n }),\n };\n};\n","import { useCallback, useMemo } from 'react';\n\nimport { toContentfulDocument } from '@contentful/contentful-slatejs-adapter';\nimport { Document } from '@contentful/rich-text-types';\nimport { getPlateSelectors } from '@udecode/plate-core';\nimport debounce from 'lodash/debounce';\n\nimport schema from './constants/Schema';\nimport { removeInternalMarks } from './helpers/removeInternalMarks';\nimport { Operation } from './internal/types';\n\n/**\n * Returns whether a given operation is relevant enough to trigger a save.\n */\nconst isRelevantOperation = (op: Operation) => {\n if (op.type === 'set_selection') {\n return false;\n }\n\n return true;\n};\n\nexport type OnValueChangedProps = {\n editorId: string;\n handler?: (value: Document) => unknown;\n skip?: boolean;\n onSkip?: VoidFunction;\n};\n\nexport const useOnValueChanged = ({ editorId, handler, skip, onSkip }: OnValueChangedProps) => {\n const onChange = useMemo(\n () =>\n debounce((document: unknown) => {\n const contentfulDocument = toContentfulDocument({ document, schema });\n const cleanedDocument = removeInternalMarks(contentfulDocument);\n handler?.(cleanedDocument);\n }, 500),\n [handler]\n );\n\n return useCallback(\n (value: unknown) => {\n const editor = getPlateSelectors(editorId).editor();\n if (!editor) {\n throw new Error(\n 'Editor change callback called but editor not defined. Editor id: ' + editorId\n );\n }\n const operations = editor?.operations.filter(isRelevantOperation);\n\n if (operations.length > 0) {\n if (skip) {\n onSkip?.();\n return;\n }\n onChange(value);\n }\n },\n [editorId, onChange, skip, onSkip]\n );\n};\n","import React, { useCallback, useState, useEffect } from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { EntityProvider } from '@contentful/field-editor-reference';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport * as Contentful from '@contentful/rich-text-types';\nimport { Plate, getPlateActions } from '@udecode/plate-core';\nimport { css, cx } from 'emotion';\nimport deepEquals from 'fast-deep-equal';\nimport noop from 'lodash/noop';\n\nimport { ContentfulEditorIdProvider, getContentfulEditorId } from './ContentfulEditorProvider';\nimport { getPlateSelectors } from './internal/misc';\nimport { Value } from './internal/types';\nimport { getPlugins, disableCorePlugins } from './plugins';\nimport { RichTextTrackingActionHandler } from './plugins/Tracking';\nimport { documentToEditorValue, normalizeEditorValue, setEditorContent } from './prepareDocument';\nimport { styles } from './RichTextEditor.styles';\nimport { SdkProvider } from './SdkProvider';\nimport Toolbar from './Toolbar';\nimport StickyToolbarWrapper from './Toolbar/components/StickyToolbarWrapper';\nimport { useOnValueChanged } from './useOnValueChanged';\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 restrictedMarks?: string[];\n};\n\nexport const ConnectedRichTextEditor = (props: ConnectedProps) => {\n const id = getContentfulEditorId(props.sdk);\n const plugins = React.useMemo(\n () => getPlugins(props.sdk, props.onAction ?? noop, props.restrictedMarks),\n [props.sdk, props.onAction, props.restrictedMarks]\n );\n const [isFirstRender, setIsFirstRender] = useState(true);\n const [pendingExternalUpdate, setPendingExternalUpdate] = useState(false);\n\n const onValueChanged = useOnValueChanged({\n editorId: id,\n handler: props.onChange,\n skip: pendingExternalUpdate || isFirstRender,\n onSkip: () => setPendingExternalUpdate(false),\n });\n\n useEffect(() => {\n /*\n This effect is called when the value prop changes. Normally\n this happens when the value is changed outside of the editor,\n like in snapshots restoration or remote updates\n Plate won't update the displayed value on its own, see:\n - https://github.com/ianstormtaylor/slate/pull/4540\n - https://github.com/udecode/plate/issues/1169\n\n The content is forcefully set to the new value and it's ensured\n the change listener isn't invoked\n */\n setIsFirstRender(false);\n const editor = getPlateSelectors(id).editor();\n if (!editor) {\n return;\n }\n setPendingExternalUpdate(true);\n setEditorContent(editor, documentToEditorValue(props.value as Contentful.Document));\n }, [props.value, id]);\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 useEffect(() => {\n if (!isFirstRender) {\n return;\n }\n\n getPlateActions(id).value(\n normalizeEditorValue(documentToEditorValue(props.value as Contentful.Document) as Value, {\n plugins,\n disableCorePlugins,\n })\n );\n }, [isFirstRender, plugins, id, props.value]);\n\n return (\n <SdkProvider sdk={props.sdk}>\n <ContentfulEditorIdProvider value={id}>\n <div className={styles.root} data-test-id=\"rich-text-editor\">\n <Plate\n id={id}\n plugins={plugins}\n disableCorePlugins={disableCorePlugins}\n editableProps={{\n className: classNames,\n readOnly: props.isDisabled,\n }}\n onChange={onValueChanged}\n firstChildren={\n !props.isToolbarHidden && (\n <StickyToolbarWrapper isDisabled={props.isDisabled}>\n <Toolbar isDisabled={props.isDisabled} />\n </StickyToolbarWrapper>\n )\n }\n />\n </div>\n </ContentfulEditorIdProvider>\n </SdkProvider>\n );\n};\n\ntype Props = ConnectedProps & { isInitiallyDisabled: boolean };\n\nconst RichTextEditor = (props: Props) => {\n const { sdk, isInitiallyDisabled, onAction, restrictedMarks, ...otherProps } = props;\n const isEmptyValue = useCallback(\n (value) => !value || deepEquals(value, Contentful.EMPTY_DOCUMENT),\n []\n );\n\n const id = getContentfulEditorId(props.sdk);\n return (\n <EntityProvider sdk={sdk}>\n <FieldConnector\n throttle={0}\n field={sdk.field}\n isInitiallyDisabled={isInitiallyDisabled}\n isEmptyValue={isEmptyValue}\n isEqualValues={deepEquals}\n >\n {({ lastRemoteValue, disabled, setValue }) => (\n <ConnectedRichTextEditor\n {...otherProps}\n key={`rich-text-editor-${id}`}\n value={lastRemoteValue}\n sdk={sdk}\n onAction={onAction}\n isDisabled={disabled}\n onChange={setValue}\n restrictedMarks={restrictedMarks}\n />\n )}\n </FieldConnector>\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 -- TODO: describe this disable 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 -- TODO: describe this disable 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":["useReadOnly","sr","usePlateEditorRef","p","usePlateEditorState","getContentfulEditorId","sdk","entry","field","sys","getSys","id","locale","editorContext","createContext","ContentfulEditorIdProvider","Provider","useContentfulEditorId","contextId","useContext","Error","useContentfulEditor","editorId","editor","useContentfulEditorRef","createPlateEditor","options","withoutNormalizing","fn","focusEditor","target","blurEditor","selectEditor","opts","fromDOMPoint","domPoint","exactMatch","suppressThrow","mockPlugin","plugin","getPlateSelectors","createSoftBreakPlugin","createDefaultSoftBreakPlugin","then","rules","plugins","flatMap","softBreak","createExitBreakPlugin","createDefaultExitBreakPlugin","exitBreak","createResetNodePlugin","createDefaultResetNodePlugin","resetNode","rule","defaultType","BLOCKS","PARAGRAPH","trimLeadingSlash","text","startsWith","slice","useSdk","sdkMemo","React","constate","SdkProvider","useSdkContext","useCommandList","commandItems","container","length","commands","selectedItem","setSelectedItem","isOpen","setIsOpen","current","buttons","Array","from","querySelectorAll","currBtn","find","btn","currIndex","indexOf","shouldSelectFirstBtn","scrollIntoView","block","inline","handleKeyDown","event","isHotkey","preventDefault","click","window","addEventListener","removeEventListener","handleMousedown","contains","document","getText","at","isText","value","getEndPoint","getStartPoint","isNode","isSelectionAtBlockEnd","isSelectionAtBlockStart","getBlockAbove","getNodeEntry","getNodeEntries","getNodeChildren","root","path","getParentNode","someNode","getChildren","s","isFirstChild","getDescendantNodeByPath","get","isRangeCollapsed","range","isRangeAcrossBlocks","isRangeExpanded","getRange","to","getRangeEdges","edges","getRangeStart","start","getRangeEnd","end","getAboveNode","getCommonNode","another","getNodeTexts","findNode","isMarkActive","type","getMarks","isEditor","isEditorReadOnly","isElement","isBlockNode","findNodePath","node","isAncestorPath","isAncestor","isAncestorEmpty","getParentPath","parent","getNextPath","next","getPreviousPath","previous","getLastChildPath","nodeEntry","getPathLevels","levels","isFirstChildPath","isLastChildPath","childPath","matchNode","someHtmlElement","rootNode","predicate","getPointBefore","getPointAfter","isEndPoint","point","isInline","queryNode","getPluginType","key","createPathRef","match","obj","getLastNodeByLevel","level","normalize","force","setSelection","props","select","location","moveSelection","moveChildren","collapseSelection","setNodes","attrs","unsetNodes","insertNodes","nodes","splitNodes","liftNodes","unwrapNodes","wrapNodes","element","toggleNodeType","editorOptions","removeMark","unhangRange","toggleMark","addMark","insertText","deleteText","removeNodes","moveNodes","deleteFragment","IS_SAFARI","navigator","test","userAgent","IS_CHROME","LINK_TYPES","INLINES","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","isBlockSelected","isRootLevel","getNodeEntryFromSelection","nodeTypeOrTypes","selection","focus","nodeTypes","isArray","i","includes","isNodeTypeSelected","nodeType","moveToTheNextLine","distance","unit","moveToTheNextChar","insertEmptyParagraph","emptyParagraph","children","data","isVoid","getElementFromCurrentSelection","flat","getTableSize","table","numRows","firstRow","numColumns","insertLink","wrapLink","isLinkActive","link","unwrapLink","url","isCollapsed","isSelectionCollapsed","uri","split","edge","getAncestorPathFromSelection","undefined","INLINE_TYPES","Object","values","isInlineOrText","x","scrollX","y","scrollY","setTimeout","scrollTo","toggleElement","VALIDATIONS","ENABLED_MARKS","ENABLED_NODE_TYPES","DEFAULT_ENABLED_NODE_TYPES","DOCUMENT","getRichTextValidation","validationType","flow","v","validations","isFormattingOptionEnabled","nodeTypeOrMark","enabledFormattings","concat","isNodeTypeEnabled","isMarkEnabled","mark","COMMAND_PROMPT","createInlineEntryNode","EMBEDDED_ENTRY","linkType","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","arg","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","done","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","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","globalThis","Function","fetchAssets","query","space","getAssets","assets","items","map","asset","displayTitle","entityHelpers","getAssetTitle","localeCode","defaultLocaleCode","locales","defaultTitle","contentTypeName","entity","thumbnail","fields","file","fetchEntries","contentType","getEntries","content_type","entries","description","getEntityDescription","getEntryTitle","createNode","insertBlock","linkedEntityBlock","hasText","removeCommand","removeQuery","offset","anchor","isCommandPromptPluginEnabled","inlineAllowed","entriesAllowed","assetsAllowed","EMBEDDED_ASSET","getCommandPermissions","canInsertBlocks","TABLE","useCommands","contentTypes","getCachedContentTypes","useState","getEmbedEntry","label","callback","setCommands","replace","toLowerCase","insertSoftBreak","tracking","onCommandPaletteAction","getEmbedInline","inlineNode","contentTypeCommands","group","assetCommand","reduce","list","nextItem","subcommands","filter","command","styles","css","position","zIndex","tokens","zIndexNotification","fontWeight","fontWeightNormal","fontStyle","fontFamily","fontStackPrimary","listStyle","marginLeft","menuPoper","zIndexModal","menuContent","width","maxHeight","menuList","overflow","menuItem","display","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","textAlign","padding","spacingXs","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","backgroundColor","gray100","opacity","menuItemSelected","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","menuDivider","height","gray300","menuHeader","zIndexDefault","top","menuFooter","bottom","footerList","gray600","objectFit","Group","commandGroup","SectionHeading","as","marginBottom","marginTop","marginRight","className","cx","onClick","Asset","Flex","alignItems","gap","src","alt","Item","CommandListItems","CommandList","textContainer","popoverContainer","popper","usePopper","placement","tabIndex","contentEditable","role","ScreenReaderOnly","Portal","ref","style","attributes","Popover","usePortal","autoFocus","Trigger","Content","testId","Stack","spacing","CommandPrompt","textElement","setTextElement","e","createOnKeyDown","byKey","isActive","stopPropagation","createCommandPalettePlugin","isLeaf","component","handlers","onKeyDown","createDragAndDropPlugin","DRAGGABLE_TYPES","HR","ON_DROP_ALLOWED_TYPES","onDrop","draggingBlock","draggingNode","nativeEvent","dropDisallowed","getParents","some","nodeName","history","undos","el","parents","parentNode","unshift","withLinkTracking","Component","ComponentWithTracking","onEntityFetchComplete","useCallback","onViewportAction","InternalAssetCard","AssetCard","size","isLoading","MissingEntityCard","entityType","isDisabled","onRemove","WrappedAssetCard","getEntityScheduledActions","loadEntityScheduledActions","isSelected","onEdit","isClickable","areEqual","FetchingWrappedAssetCard","useEntity","assetId","status","useEntityLoader","InternalEntryCard","EntryCard","WrappedEntryCard","getAsset","FetchingWrappedEntryCard","entryId","verticalAlign","LinkedEntityBlock","useSelected","entityId","handleEditClick","openEntity","openAsset","openEntry","slideIn","handleRemoveClick","pathToElement","draggable","getLinkedContentTypeIdsForNodeType","newEntitySelectorConfigFromRichTextField","getEntityTypeFromRichTextNode","words","watchCurrentSlide","onActiveCallbacks","Set","wasSlideClosed","initialSlideLevel","lastSlideLevel","wasClosed","off","onSlideInNavigation","oldSlideLevel","newSlideLevel","clear","cb","unwatch","onActive","noop","add","selectEntityAndInsert","logAction","dialogs","baseConfig","selectEntity","selectSingleAsset","selectSingleEntry","config","withCreate","rteSlide","ensureFollowingParagraph","entityBlock","lastNode","isTextContainer","TEXT_CONTAINERS","icon","EmbeddedEntityBlockToolbarIcon","onClose","handleClick","onToolbarAction","getEntityTypeFromNodeType","baseClass","Menu","disabled","flexDirection","Icon","AssetIcon","EmbeddedEntryBlockIcon","variant","entityTypes","getWithEmbeddedEntityEvents","hotkey","pathToSelectedElement","isDelete","isBackspace","onShortcutAction","createEmbeddedEntityPlugin","deserializeHtml","validAttribute","withoutChildren","getNode","getAttribute","createEmbeddedEntryBlockPlugin","createEmbeddedAssetBlockPlugin","getEntryStatus","scheduledIcon","spacing2Xs","FetchingWrappedInlineEntryCard","requestStatus","allContentTypes","useMemo","useEffect","title","InlineEntryCard","entryStatus","actions","MenuItem","ScheduledIconWithTooltip","ClockIcon","Text","span","userSelect","EmbeddedEntityInline","waitForClose","ToolbarEmbeddedEntityInlineButton","EmbeddedEntryInlineIcon","createEmbeddedEntityInlinePlugin","htmlAttributeName","getWithEmbeddedEntryInlineEvents","withEmbeddedEntryInlineEvents","handleEvent","dropdown","fontWeightDemiBold","fontSizeL","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","LABELS","ToolbarHeadingButton","setOpen","selected","setSelected","operations","nodeTypesByEnablement","fromEntries","someHeadingsEnabled","Boolean","handleOnSelectItem","prevOnChange","onChange","activeType","inactiveType","Button","endIcon","ChevronDownIcon","List","isInitiallyFocused","extractNodes","mode","extractParagraphs","transformRemove","transformParagraphs","transformUnwrap","transformWrapIn","transformLift","headings","fontWeightMedium","spacingS","createHeading","Tag","Heading","HeadingComponents","buildHeadingEventHandler","createHeadingPlugin","allow","HEADINGS","normalizer","validChildren","_","transform","LIST_ITEM","idx","tagName","validNodeName","toUpperCase","button","tooltip","Number","zIndexTooltip","ToolbarButton","startIcon","Tooltip","content","spacingL","hr","hrSelected","colorPrimary","withHrEvents","pathToSelectedHr","ToolbarHrButton","handleOnClick","HorizontalRuleIcon","Hr","Slate","isFocused","createHrPlugin","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","readonly","Option","HelpText","FormLabel","htmlFor","TextLink","ModalControls","addOrEditLink","targetPath","isReadOnly","selectionBeforeBlur","selectionAfterFocus","currentLinkText","isEditing","ModalDialogLauncher","openDialog","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","allowHeightOverflow","ToolbarHyperlinkButton","LinkIcon","trim","truncate","str","substr","getEntityInfo","entityTitle","entityStatus","jobs","scheduledActions","getScheduleTooltipContent","job","jobsCount","fetchAllData","getEntity","getEntry","contentTypeId","ct","entityDescription","useRequestStatus","setRequestStatus","entityInfo","console","log","useEntityInfo","hyperlinkWrapper","a","hyperlink","fill","gray900","EntityHyperlink","tooltipContent","targetWrapperClassName","maxWidth","UrlHyperlink","href","rel","isAnchor","isEntryAnchor","isAssetAnchor","buildHyperlinkEventHandler","getNodeOfType","createHyperlinkPlugin","common","validNode","baseStyle","lineHeightDefault","UL_LIST","OL_LIST","createList","ListUL","ListOL","ListItem","moveListItemDown","listItem","listNode","listItemPath","previousListItemPath","previousSiblingItem","previousPath","subList","n","getListTypes","newPath","moveListItems","increase","_nodes","ELEMENT_LIC","lics","highestLicPaths","highestLicPathRefs","lic","licPath","liPath","highestLiPath","licPathRefsToMove","licPathRef","unref","liEntry","getListItemEntry","isListNested","moveListItemUp","ELEMENT_DEFAULT","hasUnliftedListItems","unwrapList","listTypes","toggleList","res","startPoint","endPoint","commonEntry","listType","startList","endList","rangeLength","Math","min","rootPathLength","onKeyDownList","listSelected","shiftKey","hotkeys","castArray","_hotkey","isList","hasListAsDirectParent","getNearestListAncestor","normalizeOrphanedListItem","parentList","parentListType","isNonEmptyListItem","listItemChildren","firstNodeIsNotList","_editor","firstNode","insertParagraphAsChild","replaceNodeWithListItems","isListTypeActive","emptyListItemNode","withChildren","marks","insertListItem","paragraph","paragraphPath","listItemNode","isAtStart","isAtEnd","isAtStartOfListItem","shouldSplit","newListItemPath","fromPath","fromStartIndex","toPath","listBreak","moved","childNode","isBlockAboveEmpty","didReset","onKeyDownResetNode","types","ELEMENT_LI","onReset","SIMULATE_BACKSPACE","inserted","insertListBreak","insertBreak","getFirstAncestorOfType","ancestor","isListRoot","trimList","listRoot","textEntries","commonAncestorEntry","commonAncestor","textEntry","trimLiWrapper","unwrapTextContainerAtStart","insertListFragment","insertFragment","fragment","firstBlockIndex","findIndex","inlines","blocks","filtered","deleteBackwardList","removeFirstListItem","removeListItem","validLiChildrenTypes","LIST_ITEM_BLOCKS","withList","deleteBackward","deleteForward","deleteForwardList","deleteFragmentList","normalizeNode","normalizeList","createListPlugin","createPlateListPlugin","overrideByKey","ELEMENT_UL","withOverrides","ELEMENT_OL","ToolbarListButton","ListBulletedIcon","ListNumberedIcon","toggleMarkAndDeactivateConflictingMarks","subs","MARKS","SUPERSCRIPT","SUBSCRIPT","buildMarkEventHandler","markType","blue100","blue600","createMarkToolbarButton","Mark","ToolbarBoldButton","BOLD","FormatBoldIcon","bold","Bold","isGoogleBoldWrapper","createBoldPlugin","createDefaultBoldPlugin","validStyle","ToolbarCodeButton","CODE","CodeIcon","ToolbarDropdownCodeButton","code","Code","createCodePlugin","createDefaultCodePlugin","ToolbarItalicButton","ITALIC","FormatItalicIcon","italic","Italic","createItalicPlugin","createDefaultItalicPlugin","subscript","ToolbarSubscriptButton","SubscriptIcon","viewBox","ToolbarDropdownSubscriptButton","Subscript","createSubscriptPlugin","createDefaultSubscriptPlugin","superscript","ToolbarSuperscriptButton","SuperscriptIcon","ToolbarDropdownSuperscriptButton","Superscript","createSuperscriptPlugin","createDefaultSuperscriptPlugin","ToolbarUnderlineButton","UNDERLINE","FormatUnderlinedIcon","Underline","createUnderlinePlugin","createDefaultUnderlinePlugin","createMarksPlugin","baseRules","NormalizerError","createValidatorFromTypes","createTransformerFromObject","transforms","fallback","transformer","withNormalizer","_rules","_rule","isPlainObject","_transform","tr","isValidChild","invalidChildEntry","createNormalizerPlugin","Paragraph","isEmbedElement","hasAttribute","isEmptyElement","textContent","buildParagraphKeyDownHandler","createParagraphPlugin","createDefaultParagraphPlugin","wrapSpaceAround","spacer","previousSibling","insertBefore","nextSibling","unwrap","replaceWith","childNodes","sanitizeAnchors","doc","unsupportedTagSelector","join","sanitizeSheets","supported","selector","querySelector","tables","row","remove","rows","colIndex","cells","cell","isEmpty","every","stripStyleTags","stripMetaTags","transformers","sanitizeHTML","html","DOMParser","parseFromString","body","innerHTML","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","getData","ensureXSlateFragment","clipboardData","DataTransfer","setData","createPasteHTMLPlugin","insertData","inject","pluginsByKey","KEY_DESERIALIZE_HTML","format","transformData","borderLeft","gray200","paddingLeft","Quote","shouldResetQuoteOnBackspace","quote","QUOTE","hasSingleChild","isLastChild","toggleQuote","onKeyDownToggleQuote","withQuote","startingNode","startsWithBlockquote","Element","containerEntry","containerIsNotEmpty","isContentSelected","Point","compare","createQuotePlugin","CONTAINERS","ToolbarQuoteButton","QuoteIcon","createSelectOnBackspacePlugin","createDefaultSelectPlugin","addRow","getNextRowPath","currentRowItem","TABLE_ROW","currentRowElem","currentRowPath","nextRowPath","getEmptyRowNode","header","colCount","addRowBelow","addRowAbove","addColumn","getNextCellPath","currentCellItem","TABLE_HEADER_CELL","TABLE_CELL","currentTableItem","nextCellPath","newCellPath","replacePathPos","rowIdx","getEmptyCellNode","addColumnRight","currentCellPath","addColumnLeft","setHeader","enable","tableItem","insertTableAndFocusFirstCell","tableEntry","replaceEmptyParagraphWithTable","isTableActive","tableElements","ELEMENT_TABLE","ELEMENT_TH","ELEMENT_TR","ELEMENT_TD","isTableHeaderEnabled","tablePath","previousNode","isPreviousNodeTextEmpty","getNoOfMissingTableCellsInRow","rowEntry","rowPath","tableWidth","max","rowWidth","createEmptyTableCells","count","emptyTableCell","isNotEmpty","isTable","topRight","right","getCurrentTableSize","TableActions","isHeaderEnabled","setHeaderEnabled","close","canInsertRowAbove","headerCell","toggleHeader","action","tableSize","actionName","onOpen","IconButton","Divider","deleteRow","deleteColumn","deleteTable","gray400","Cell","HeaderCell","Row","Table","trimUnnecessaryTableWrapper","insertTableFragment","fragments","isInsertingTable","isTableFirstFragment","currentLineHasText","onKeyDownTable","defaultHandler","defaultKeyDownTable","windowSelection","getSelection","blockType","anchorNode","isBeforeTable","above","getTableEntries","isLastCell","isLastRow","TOP_LEVEL_BLOCKS","VOID_BLOCKS","unwrapBlockByKey","getCharacterCount","contentfulSlateJSAdapter","schema","Schema","documentToPlainTextString","actionOrigin","TOOLBAR","SHORTCUT","VIEWPORT","COMMAND_PALETTE","getPastingSource","textHtml","createTrackingPlugin","onAction","trackingActions","origin","isCopyAndPaste","characterCountSelection","toString","characterCountBefore","characterCountAfter","source","hasTables","isTableHeaderCell","hasHeadersOutsideFirstRow","addTableTrackingEvents","markupBefore","markupAfter","tablePasted","withInvalidCellChildrenTracking","childEntry","createTablePlugin","createDefaultTablePlugin","withTable","isNestedTable","howMany","ToolbarTableButton","TableIcon","createTextPlugin","restrictedMarks","onMouseUp","inlinePath","deleteEmptyParagraph","fixPasteAsPlainText","deleteFunction","paragraphOrHeading","isTextEmpty","hasSiblings","prevNode","prevCell","insertTextData","lines","line","always","createTrailingParagraphPlugin","createTrailingBlockPlugin","createVoidsPlugin","before","getPlugins","createDeserializeHtmlPlugin","createDeserializeAstPlugin","createDeserializeDocxPlugin","disableCorePlugins","deserializeAst","eventEditor","isTextElement","sanitizeIncomingSlateDoc","hasContent","setEditorContent","apply","nodesArray","documentToEditorValue","slateDoc","toSlatejsDocument","EMPTY_DOCUMENT","normalizeEditorValue","STYLE_EDITOR_BORDER","borderTop","minHeight","colorWhite","overflowWrap","webkitUserModify","hiddenToolbar","enabled","EmbeddedEntityDropdownButton","onToggle","PlusIcon","EmbedEntityWidget","isEmbedDropdownOpen","setEmbedDropdownOpen","onCloseEntityDropdown","onToggleEntityDropdown","inlineEntryEmbedEnabled","blockEntryEmbedEnabled","blockAssetEmbedEnabled","showEmbedButton","toolbar","toolbarBtn","divider","embedActionsWrapper","webkitAlignSelf","alignSelf","msFlexItemAlign","formattingOptionsWrapper","msFlexAlign","webkitBoxAlign","msFlexWrap","flexWrap","Dropdown","MoreHorizontalIcon","Toolbar","validationInfo","getValidationInfo","isListSelected","isBlockquoteSelected","shouldDisableTables","boldItalicUnderlineAvailable","dropdownItemsAvailable","shouldShowDropdown","isAnyMarkEnabled","isAnyHyperlinkEnabled","isAnyBlockFormattingEnabled","someWithValidation","vals","validation","val","nativeSticky","StickyToolbarWrapper","internalMarks","removeInternalMarks","isRelevantOperation","op","useOnValueChanged","handler","skip","onSkip","debounce","contentfulDocument","toContentfulDocument","cleanedDocument","ConnectedRichTextEditor","isFirstRender","setIsFirstRender","pendingExternalUpdate","setPendingExternalUpdate","onValueChanged","classNames","isToolbarHidden","getPlateActions","Plate","editableProps","readOnly","firstChildren","RichTextEditor","isInitiallyDisabled","otherProps","isEmptyValue","deepEquals","Contentful","FieldConnector","throttle","isEqualValues","lastRemoteValue","setValue","URI","ENTRY","ASSET","isFeaturingEntitySelector","entitySelectorConfigs","Entry","HyperlinkDialog","handleSubmit","getValue","setTargetEntity","allowedHyperlinkTypes","setState","requiresText","hideText","render","labels","renderFields","confirm","isUriInputAutoFocused","renderEntityField","resetEntity","entityLink","isEntitySelectorVisible","renderEntitySelector","propTypes","PropTypes","shape","string","oneOf","arrayOf","bool","func","defaultProps","openRichTextDialog","parameters","renderRichTextDialog","invocation","startAutoResizer"],"mappings":"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"}
|