/**
* 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 (