import { BlockControls, store as blockEditorStore, } from '@wordpress/block-editor'; import { ToolbarButton, Dropdown, ToolbarGroup, NavigableMenu, MenuItem, MenuGroup, } from '@wordpress/components'; import { useSelect, useDispatch } from '@wordpress/data'; import { store as editPostStore } from '@wordpress/edit-post'; import { __, isRTL } from '@wordpress/i18n'; import { Icon, customPostType, termDescription, paragraph, postContent, } from '@wordpress/icons'; import { DropdownTranslate } from '@draft/components/TranslationDropdown'; import { magic, twoLines } from '@draft/svg'; const supportedBlocks = [ 'core/paragraph', 'core/list-item', 'core/verse', 'core/preformatted', 'core/heading', ]; export const ToolbarMenu = (CurrentMenuItems, props) => { const { clientId: blockId } = props; const { getBlockName, getBlock } = useSelect( (select) => select(blockEditorStore), [], ); const { getActiveGeneralSidebarName } = useSelect( (select) => select(editPostStore), [], ); const { openGeneralSidebar } = useDispatch(editPostStore); // TODO: Only paragraphs? if (!supportedBlocks.includes(getBlockName(blockId))) { return ; } const text = getBlock(blockId)?.attributes?.content || ''; const openDraft = () => openGeneralSidebar('extendify-draft/draft'); const closeDraft = () => openGeneralSidebar('edit-post/block'); const toggleDraft = () => getActiveGeneralSidebarName() === 'extendify-draft/draft' ? closeDraft() : openDraft(); const updatePrompt = (detail) => window.dispatchEvent( new CustomEvent('extendify-draft:set-prompt', { detail }), ); return ( <> ( )} renderToggle={({ isOpen, onToggle }) => { const handleClick = () => { if (!text) return toggleDraft(); onToggle(); }; return ( {__('Ask AI', 'extendify-local')} ); }} /> ); }; const DropdownActions = ({ text, closePopup, openDraft, updatePrompt }) => { const actions = [ { label: __('Improve writing', 'extendify-local'), promptType: 'improve-writing', systemMessageKey: 'edit', icon: , disabled: () => false, }, { label: __('Fix spelling & grammar', 'extendify-local'), promptType: 'fix-spelling-grammar', systemMessageKey: 'edit', icon: , disabled: () => false, }, { label: __('Simplify language', 'extendify-local'), promptType: 'simplify-language', systemMessageKey: 'edit', icon: , disabled: () => false, }, { label: __('Make shorter', 'extendify-local'), promptType: 'make-shorter', systemMessageKey: 'edit', icon: , disabled: () => false, }, { label: __('Make longer', 'extendify-local'), promptType: 'make-longer', systemMessageKey: 'edit', icon: , disabled: () => false, }, ]; return ( { openDraft?.(); closePopup?.(); window.requestAnimationFrame(() => window.requestAnimationFrame(() => document.getElementById('draft-ai-textarea').focus(), ), ); }}> {__('Custom prompt', 'extendify-local')} {actions.map( ({ label, promptType, systemMessageKey, disabled, icon }) => ( { openDraft?.(); closePopup?.(); window.requestAnimationFrame(() => window.requestAnimationFrame(() => updatePrompt({ text, promptType, systemMessageKey }), ), ); }}> {label} ), )} ); };