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),
}}
>
>
);
}