-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathparagraph-text-shape.tsx
More file actions
73 lines (65 loc) · 1.79 KB
/
Copy pathparagraph-text-shape.tsx
File metadata and controls
73 lines (65 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import { forwardRef } from 'react';
import { Group, Text } from 'react-konva';
import { ShapeProps } from '../shape.model';
import { ShapeSizeRestrictions, ShapeType } from '@/core/model';
import { fitSizeToShapeSizeRestrictions } from '@/common/utils/shapes/shape-restrictions';
import { BASIC_SHAPE } from '../front-components/shape.const';
import { useShapeProps } from '../../shapes/use-shape-props.hook';
import { useGroupShapeProps } from '../mock-components.utils';
const paragraphSizeRestrictions: ShapeSizeRestrictions = {
minWidth: BASIC_SHAPE.DEFAULT_MIN_WIDTH,
minHeight: 20,
maxWidth: -1,
maxHeight: -1,
defaultWidth: 420,
defaultHeight: 130,
};
export const getParagraphSizeRestrictions = (): ShapeSizeRestrictions =>
paragraphSizeRestrictions;
const shapeType: ShapeType = 'paragraph';
export const ParagraphShape = forwardRef<any, ShapeProps>((props, ref) => {
const {
x,
y,
width,
height,
id,
onSelected,
text,
otherProps,
...shapeProps
} = props;
const restrictedSize = fitSizeToShapeSizeRestrictions(
paragraphSizeRestrictions,
width,
height
);
const { width: restrictedWidth, height: restrictedHeight } = restrictedSize;
const { textColor, fontSize, textAlignment } = useShapeProps(
otherProps,
BASIC_SHAPE
);
const commonGroupProps = useGroupShapeProps(
props,
restrictedSize,
shapeType,
ref
);
return (
<Group {...commonGroupProps} {...shapeProps}>
<Text
x={0}
y={0}
width={restrictedWidth}
height={restrictedHeight}
text={text}
fontFamily={BASIC_SHAPE.DEFAULT_FONT_FAMILY}
fontSize={fontSize}
fill={textColor}
align={textAlignment}
ellipsis={true}
/>
</Group>
);
});
export default ParagraphShape;