import { __ } from "@wordpress/i18n"; import "./editor.scss"; import { createBlock } from "@wordpress/blocks"; import { dispatch, useSelect } from "@wordpress/data"; import { useBlockProps, RichText, InspectorControls, BlockControls, } from "@wordpress/block-editor"; import { cleanString } from "../../utilities"; import { ToggleControl, PanelBody, KeyboardShortcuts, ToolbarGroup, ToolbarButton, } from "@wordpress/components"; import { headingLevel1, headingLevel2, headingLevel3, headingLevel4, headingLevel5, } from "@wordpress/icons"; import { useEffect } from "@wordpress/element"; export default function Edit({ attributes, setAttributes, clientId, ...blockProps }) { const { title, headingLevel, hasIcon, iconName, idName, anchor } = attributes; useEffect(() => { if (anchor) { setAttributes({ idName: anchor }); } else if (cleanString && title && headingLevel === "h2") { setAttributes({ idName: "title-" + cleanString(title), }); } }, [anchor]); const blockIndex = useSelect((select) => { const { getBlockIndex } = select("core/block-editor"); return getBlockIndex(clientId); }); function onChangeTitle(newTitle) { setAttributes({ title: newTitle }); } function onChangeHeadingLevel(newHeadingLevel) { setAttributes({ headingLevel: newHeadingLevel }); } function handleIconChange(newIconName) { setAttributes({ iconName: newIconName }); } function onHasIconChange(hasIconToggleValue) { setAttributes({ hasIcon: hasIconToggleValue, }); } function insertParagraphOnEnter(e) { const newBlock = createBlock("core/paragraph", {}); dispatch("core/block-editor").insertBlocks(newBlock, blockIndex + 1); } return ( <> { onChangeHeadingLevel("h1"); }} /> { onChangeHeadingLevel("h2"); }} /> { onChangeHeadingLevel("h3"); }} /> { onChangeHeadingLevel("h4"); }} /> { onChangeHeadingLevel("h5"); }} /> {hasIcon && ( handleIconChange("key")} /> handleIconChange("chain")} /> handleIconChange("house")} /> handleIconChange("bulb")} /> )} insertParagraphOnEnter(e), }} > ); }