tldraw/state/code/text.ts

64 lines
1.3 KiB
TypeScript
Raw Normal View History

import CodeShape from './index'
import { uniqueId } from 'utils/utils'
2021-06-25 12:21:33 +00:00
import { TextShape, ShapeProps, ShapeType } from 'types'
import { defaultStyle } from 'state/shape-styles'
2021-06-25 12:21:33 +00:00
import { getShapeUtils } from 'state/shape-utils'
/* ----------------- Start Copy Here ---------------- */
export default class Text extends CodeShape<TextShape> {
constructor(props = {} as ShapeProps<TextShape>) {
super({
id: uniqueId(),
parentId: (window as any).currentPageId,
type: ShapeType.Text,
isGenerated: true,
name: 'Text',
childIndex: 0,
point: [0, 0],
rotation: 0,
text: 'Text',
scale: 1,
...props,
style: {
...defaultStyle,
...props.style,
},
})
}
2021-06-25 12:21:33 +00:00
/**
* The text shape's text content.
*
* ```ts
* const shapeText = shape.text
*
* shape.text = "Hello world!"
* ```
*/
get text(): string {
return this.shape.text
}
set text(text: string) {
getShapeUtils(this.shape).setProperty(this.shape, 'text', text)
}
/**
* The text's scale.
*
* ```ts
* const shapeScale = shape.scale
*
* shape.scale = 2
* ```
*/
2021-06-25 12:21:33 +00:00
get scale(): number {
return this.shape.scale
}
set scale(scale: number) {
getShapeUtils(this.shape).setProperty(this.shape, 'scale', scale)
}
}