muthuk1's picture
Convert OpenMAIC from Next.js to React (Vite)
f56a29b verified
raw
history blame
2.49 kB
import { useMemo } from 'react';
import { OperateResizeHandlers, OperateBorderLines } from '@/lib/types/edit';
export function useCommonOperate(width: number, height: number) {
// Element resize handlers
const resizeHandlers = useMemo(() => {
return [
{ direction: OperateResizeHandlers.LEFT_TOP, style: {} },
{
direction: OperateResizeHandlers.TOP,
style: { left: width / 2 + 'px' },
},
{
direction: OperateResizeHandlers.RIGHT_TOP,
style: { left: width + 'px' },
},
{
direction: OperateResizeHandlers.LEFT,
style: { top: height / 2 + 'px' },
},
{
direction: OperateResizeHandlers.RIGHT,
style: { left: width + 'px', top: height / 2 + 'px' },
},
{
direction: OperateResizeHandlers.LEFT_BOTTOM,
style: { top: height + 'px' },
},
{
direction: OperateResizeHandlers.BOTTOM,
style: { left: width / 2 + 'px', top: height + 'px' },
},
{
direction: OperateResizeHandlers.RIGHT_BOTTOM,
style: { left: width + 'px', top: height + 'px' },
},
];
}, [width, height]);
// Text element resize handlers
const textElementResizeHandlers = useMemo(() => {
return [
{
direction: OperateResizeHandlers.LEFT,
style: { top: height / 2 + 'px' },
},
{
direction: OperateResizeHandlers.RIGHT,
style: { left: width + 'px', top: height / 2 + 'px' },
},
];
}, [width, height]);
const verticalTextElementResizeHandlers = useMemo(() => {
return [
{
direction: OperateResizeHandlers.TOP,
style: { left: width / 2 + 'px' },
},
{
direction: OperateResizeHandlers.BOTTOM,
style: { left: width / 2 + 'px', top: height + 'px' },
},
];
}, [width, height]);
// Element selection border lines
const borderLines = useMemo(() => {
return [
{ type: OperateBorderLines.T, style: { width: width + 'px' } },
{
type: OperateBorderLines.B,
style: { top: height + 'px', width: width + 'px' },
},
{ type: OperateBorderLines.L, style: { height: height + 'px' } },
{
type: OperateBorderLines.R,
style: { left: width + 'px', height: height + 'px' },
},
];
}, [width, height]);
return {
resizeHandlers,
textElementResizeHandlers,
verticalTextElementResizeHandlers,
borderLines,
};
}