import classnames from 'classnames' import React, { useEffect } from 'react' import { __, sprintf } from '@wordpress/i18n' import { useSnippetForm } from '../../../hooks/useSnippetForm' import type { ReactNode } from 'react' const NOTICE_TIMEOUT_MS = 5000 interface DismissibleNoticeProps { classNames?: classnames.Argument onRemove: VoidFunction children?: ReactNode autoHide?: boolean } const DismissibleNotice: React.FC = ({ classNames, onRemove, children, autoHide = true }) => { useEffect(() => { if (autoHide) { const timer = setTimeout(onRemove, NOTICE_TIMEOUT_MS) return () => clearTimeout(timer) } return undefined }, [autoHide, onRemove]) return (
<>{children}
) } export const Notices: React.FC = () => { const { currentNotice, setCurrentNotice, snippet, setSnippet } = useSnippetForm() return <> {currentNotice ? setCurrentNotice(undefined)}>

{currentNotice[1]}

: null} {snippet.code_error ? setSnippet(previous => ({ ...previous, code_error: null }))} autoHide={false} >

{sprintf( // translators: %d: line number. __('Snippet automatically deactivated due to an error on line %d:', 'code-snippets'), snippet.code_error[1] )}

{snippet.code_error[0]}

: null} }