import { useEffect, useMemo, createElement } from '@wordpress/element' import { __ } from 'ct-i18n' import Preview from './Preview' import AlignmentControls from './components/AlignmentControls' import useDynamicDataDescriptor from './hooks/use-dynamic-data-descriptor' import DynamicDataInspectorControls from './components/InspectorControls' import { useTaxonomies } from '../query/edit/utils/utils' const Edit = ({ clientId, attributes, setAttributes, context, }) => { const { postId, postType } = context const { fieldsDescriptor, options, fieldsChoices } = useDynamicDataDescriptor({ postId, postType, }) const taxonomies = useTaxonomies(postType) const fieldDescriptor = useMemo(() => { if (!attributes.field || !fieldsDescriptor) { return null } const [provider, field] = attributes.field.split(':') const providerFields = fieldsDescriptor.fields.find( ({ provider: p }) => p === provider ) if (!providerFields) { return null } const maybeFieldDescriptor = providerFields.fields.find( ({ id }) => id === field ) if (!maybeFieldDescriptor) { return null } return { ...maybeFieldDescriptor, provider: providerFields.provider, } }, [attributes.field, fieldsDescriptor]) useEffect(() => { if ( attributes.field === 'wp:terms' && taxonomies && taxonomies.length === 0 ) { setAttributes({ field: `wp:title`, }) } }, [taxonomies, attributes.field]) if (!fieldDescriptor) { return null } return ( <> ) } export default Edit