'use client'; import React from 'react'; import type { TSuggestionText } from '@udecode/plate-suggestion'; import { cn } from '@udecode/cn'; import { type PlateLeafProps, PlateLeaf, useEditorPlugin, usePluginOption, } from '@udecode/plate/react'; import { suggestionPlugin } from '@plone/plate/components/editor/plugins/suggestion-plugin'; export function SuggestionLeaf(props: PlateLeafProps) { const { children, className, leaf } = props; const { api, setOption } = useEditorPlugin(suggestionPlugin); const leafId: string = api.suggestion.nodeId(leaf as TSuggestionText) ?? ''; const activeSuggestionId = usePluginOption(suggestionPlugin, 'activeId'); const hoverSuggestionId = usePluginOption(suggestionPlugin, 'hoverId'); const dataList = api.suggestion.dataList(leaf as TSuggestionText); const hasRemove = dataList.some((data) => data.type === 'remove'); const hasActive = dataList.some((data) => data.id === activeSuggestionId); const hasHover = dataList.some((data) => data.id === hoverSuggestionId); const diffOperation = { type: hasRemove ? 'delete' : 'insert', } as const; const Component = ( { delete: 'del', insert: 'ins', update: 'span', } as const )[diffOperation.type]; return ( setOption('hoverId', leafId)} onMouseLeave={() => setOption('hoverId', null)} > {children} ); }