/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { useState } from '@wordpress/element'; import { Placeholder, Button, PanelBody } from '@wordpress/components'; import { withProduct } from '@woocommerce/block-hocs'; import BlockErrorBoundary from '@woocommerce/base-components/block-error-boundary'; import EditProductLink from '@woocommerce/editor-components/edit-product-link'; import { singleProductBlockPreview } from '@woocommerce/resource-previews'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import { ProductResponseItem } from '@woocommerce/types'; import ErrorPlaceholder, { ErrorObject, } from '@woocommerce/editor-components/error-placeholder'; /** * Internal dependencies */ import './editor.scss'; import SharedProductControl from './shared-product-control'; import EditorBlockControls from './editor-block-controls'; import LayoutEditor from './layout-editor'; import { BLOCK_ICON } from '../constants'; import metadata from '../block.json'; import { Attributes } from '../types'; interface EditorProps { className: string; attributes: { productId: number; isPreview: boolean; }; setAttributes: ( attributes: Attributes ) => void; error: string | ErrorObject; getProduct: () => void; product: ProductResponseItem; isLoading: boolean; clientId: string; } const Editor = ( { className, attributes, setAttributes, error, getProduct, product, isLoading, clientId, }: EditorProps ) => { const { productId, isPreview } = attributes; const [ isEditing, setIsEditing ] = useState( ! productId ); const blockProps = useBlockProps(); if ( isPreview ) { return singleProductBlockPreview; } if ( error ) { return ( ); } return (
{ /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */ } { /* @ts-ignore */ } { isEditing ? ( { metadata.description }
) : (
) }
); }; export default withProduct( Editor );