35 lines
740 B
TypeScript
35 lines
740 B
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { ComponentType, useEffect, useState } from 'react';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { EditorBlock } from './types';
|
|
|
|
interface EditingImageRequiredProps {
|
|
isSelected: boolean;
|
|
}
|
|
|
|
type EditingImageProps< T extends EditorBlock< T > > = T &
|
|
EditingImageRequiredProps;
|
|
|
|
export const withEditingImage = < T extends EditorBlock< T > >(
|
|
Component: ComponentType< T >
|
|
) => ( props: EditingImageProps< T > ) => {
|
|
const [ isEditingImage, setIsEditingImage ] = useState( false );
|
|
const { isSelected } = props;
|
|
|
|
useEffect( () => {
|
|
setIsEditingImage( false );
|
|
}, [ isSelected ] );
|
|
|
|
return (
|
|
<Component
|
|
{ ...props }
|
|
useEditingImage={ [ isEditingImage, setIsEditingImage ] }
|
|
/>
|
|
);
|
|
};
|