import { ReactVisualEditorComponent } from './ReactVisualEditor.utils'; import styles from './ReactVisualEditor.less'; import classNames from 'classnames'; export enum ReactVisualBlockResizeDirection { start = 'start', center = 'center', end = 'end', } export const ReactVisualBlockResize: React.FC<{ component: ReactVisualEditorComponent; onMouseDown?: ( e: React.MouseEvent, direction: { horizontal: ReactVisualBlockResizeDirection; vertical: ReactVisualBlockResizeDirection; }, ) => void; }> = (props) => { const render: JSX.Element[] = []; const onMouseDown = ( e: React.MouseEvent, direction: { horizontal: ReactVisualBlockResizeDirection; vertical: ReactVisualBlockResizeDirection; }, ) => { !!props.onMouseDown && props.onMouseDown(e, direction); }; if (props.component.resize!.height) { render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.center, vertical: ReactVisualBlockResizeDirection.start, }) } />, ); render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.center, vertical: ReactVisualBlockResizeDirection.end, }) } />, ); } if (props.component.resize!.width) { render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.start, vertical: ReactVisualBlockResizeDirection.center, }) } />, ); render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.end, vertical: ReactVisualBlockResizeDirection.center, }) } />, ); } if (props.component.resize!.width && props.component.resize!.height) { render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.start, vertical: ReactVisualBlockResizeDirection.start, }) } />, ); render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.end, vertical: ReactVisualBlockResizeDirection.start, }) } />, ); render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.start, vertical: ReactVisualBlockResizeDirection.end, }) } />, ); render.push(
onMouseDown(e, { horizontal: ReactVisualBlockResizeDirection.end, vertical: ReactVisualBlockResizeDirection.end, }) } />, ); } return <>{render}; };