import { __ } from '@wordpress/i18n'; import { InspectorControls, BlockControls, useBlockProps, } from '@wordpress/block-editor'; import ServerSideRender from '@wordpress/server-side-render'; import { SelectControl, ToolbarGroup, ToolbarButton, ToggleControl, TextControl, Panel, PanelBody, PanelRow, ExternalLink, } from '@wordpress/components'; import { select, subscribe } from '@wordpress/data'; import { useEffect, useState } from 'react'; export default function Edit( { attributes, setAttributes } ) { const blockProps = useBlockProps(); /* Update SimpleTOC if the post is saved successfully. */ /* Source: https://github.com/WordPress/gutenberg/issues/17632 */ const { isSavingPost } = select( 'core/editor' ); const [ isSavingProcess, setSavingProcess ] = useState( false ); const advpanelicon = 'settings'; const updatePost = function () { if ( attributes.autorefresh === true ) { /* refresh block with changed attribute */ /* There is no better way at the moment https://github.com/WordPress/gutenberg/issues/44469 */ setAttributes( { updated: new Date().getTime() } ); } }; subscribe( () => { if ( isSavingPost() ) { setSavingProcess( true ); } else { setSavingProcess( false ); } } ); useEffect( () => { if ( isSavingProcess ) { updatePost(); } }, [ isSavingProcess ] ); return (
setAttributes( { max_level: Number( level ), } ) } /> setAttributes( { min_level: Number( level ), } ) } /> setAttributes( { no_title: ! attributes.no_title, } ) } /> { ! attributes.no_title && ( setAttributes( { title_text: value || __( 'Table of Contents', 'simpletoc' ), } ) } /> ) } tag with an
    tag. This adds decimal numbers to each heading in the TOC.', 'simpletoc' ) } checked={ attributes.use_ol } onChange={ () => setAttributes( { use_ol: ! attributes.use_ol, } ) } /> setAttributes( { remove_indent: ! attributes.remove_indent, } ) } />

    { __( 'Think about making a donation if you use any of these features.', 'simpletoc' ) }

    { __( 'Donate here!', 'simpletoc' ) }
    setAttributes( { add_smooth: ! attributes.add_smooth, } ) } /> setAttributes( { use_absolute_urls: ! attributes.use_absolute_urls, } ) } /> setAttributes( { autorefresh: ! attributes.autorefresh, } ) } />
    updatePost() } icon="update" />
); }