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 (
{actions.map(
({ label, promptType, systemMessageKey, disabled, icon }) => (
),
)}
);
};