Files
AFFiNE-Mirror/libs/components/board-shapes/src/index.ts
T
2022-08-13 03:16:26 +08:00

60 lines
2.2 KiB
TypeScript

import { TDShape, TDShapeType } from '@toeverything/components/board-types';
import { ArrowUtil } from './arrow-util';
import { DrawUtil } from './draw-util';
import { EditorUtil } from './editor-util';
import { EllipseUtil } from './ellipse-util';
import { FrameUtil } from './frame-util';
import { GroupUtil } from './group-util';
import { HexagonUtil } from './hexagon-util';
import { ImageUtil } from './image-util';
import { PentagramUtil } from './pentagram-util';
import { RectangleUtil } from './rectangle-util';
import type { TDShapeUtil } from './TDShapeUtil';
import { TriangleUtil } from './triangle-util';
import { VideoUtil } from './video-util';
import { WhiteArrowUtil } from './white-arrow-util';
export { clearPrevSize } from './shared/get-text-size';
export { defaultStyle } from './shared/shape-styles';
export { TDShapeUtil } from './TDShapeUtil';
export { getTrianglePoints } from './triangle-util/triangle-helpers';
export const Rectangle = new RectangleUtil();
export const Triangle = new TriangleUtil();
export const Hexagon = new HexagonUtil();
export const Pentagram = new PentagramUtil();
export const WhiteArrow = new WhiteArrowUtil();
export const Arrow = new ArrowUtil();
export const Draw = new DrawUtil();
export const Ellipse = new EllipseUtil();
const Group = new GroupUtil();
const Image = new ImageUtil();
const Video = new VideoUtil();
export const Frame = new FrameUtil();
export const Editor = new EditorUtil();
export const shapeUtils = {
[TDShapeType.Rectangle]: Rectangle,
[TDShapeType.Frame]: Frame,
[TDShapeType.Triangle]: Triangle,
[TDShapeType.Pentagram]: Pentagram,
[TDShapeType.Hexagon]: Hexagon,
[TDShapeType.WhiteArrow]: WhiteArrow,
[TDShapeType.Arrow]: Arrow,
[TDShapeType.Draw]: Draw,
[TDShapeType.Ellipse]: Ellipse,
[TDShapeType.Group]: Group,
[TDShapeType.Image]: Image,
[TDShapeType.Video]: Video,
[TDShapeType.Editor]: Editor,
};
export const getShapeUtil = <T extends TDShape>(
shape: T | T['type']
): TDShapeUtil<T> | undefined => {
if (typeof shape === 'string')
return shapeUtils[shape] as unknown as TDShapeUtil<T>;
return shapeUtils[shape.type] as unknown as TDShapeUtil<T>;
};