import { useState, createElement, useRef, useEffect } from '@wordpress/element'
import { __ } from 'ct-i18n'
import { TextControl, ToolbarGroup, ToolbarButton } from '@wordpress/components'
import { dispatch, useSelect, useDispatch } from '@wordpress/data'
import {
InspectorControls,
useBlockProps,
BlockControls,
withColors,
useInnerBlocksProps,
store as blockEditorStore,
__experimentalUseBorderProps as useBorderProps,
} from '@wordpress/block-editor'
import Preview from './Preview'
import ColorsPanel from '../../components/ColorsPanel'
import OptionsPanel from '../../../options/OptionsPanel'
import { PanelBody } from '@wordpress/components'
import { useUniqueId } from '../../hooks/use-unique-id'
import PostsPlaceholder from './edit/PostsPlaceholder'
import PostsInspectorControls from './edit/PostsInspectorControls'
import PatternSelectionModal from './edit/PatternSelectionModal'
import { usePostTypes } from './edit/utils/utils'
const Edit = ({
clientId,
className,
attributes,
setAttributes,
context,
}) => {
const innerBlocksProps = useInnerBlocksProps({}, {})
const hasInnerBlocks = useSelect(
(select) => !!select(blockEditorStore).getBlocks(clientId).length,
[clientId]
)
const isOnboarding = !hasInnerBlocks && attributes.design !== 'default'
const { postTypesSelectOptions } = usePostTypes({
hasPages: hasInnerBlocks,
})
const { uniqueId, props: wrapperProps } = useUniqueId({
attributes,
setAttributes,
clientId,
})
const { postId, postType } = context
const navRef = useRef()
const borderProps = useBorderProps(attributes)
const blockProps = useBlockProps({
ref: navRef,
className,
style: {
...borderProps.style,
},
})
const [isPatternSelectionModalOpen, setIsPatternSelectionModalOpen] =
useState(false)
return (
<>
{isPatternSelectionModalOpen && (