kopia lustrzana https://github.com/Tldraw/Tldraw
74 wiersze
1.5 KiB
TypeScript
74 wiersze
1.5 KiB
TypeScript
import { defineMigrations } from '@tldraw/tlstore'
|
|
import { T } from '@tldraw/validate'
|
|
import { TLAlignType, TLColorType, TLFontType, TLOpacityType, TLSizeType } from '../style-types'
|
|
import {
|
|
alignValidator,
|
|
colorValidator,
|
|
fontValidator,
|
|
opacityValidator,
|
|
sizeValidator,
|
|
} from '../validation'
|
|
import { TLBaseShape, createShapeValidator } from './shape-validation'
|
|
|
|
/** @public */
|
|
export type TLTextShapeProps = {
|
|
color: TLColorType
|
|
size: TLSizeType
|
|
font: TLFontType
|
|
align: TLAlignType
|
|
opacity: TLOpacityType
|
|
w: number
|
|
text: string
|
|
scale: number
|
|
autoSize: boolean
|
|
}
|
|
|
|
/** @public */
|
|
export type TLTextShape = TLBaseShape<'text', TLTextShapeProps>
|
|
|
|
/** @public */
|
|
export const textShapeTypeValidator: T.Validator<TLTextShape> = createShapeValidator(
|
|
'text',
|
|
T.object({
|
|
color: colorValidator,
|
|
size: sizeValidator,
|
|
font: fontValidator,
|
|
align: alignValidator,
|
|
opacity: opacityValidator,
|
|
w: T.nonZeroNumber,
|
|
text: T.string,
|
|
scale: T.nonZeroNumber,
|
|
autoSize: T.boolean,
|
|
})
|
|
)
|
|
|
|
const Versions = {
|
|
RemoveJustify: 1,
|
|
} as const
|
|
|
|
/** @public */
|
|
export const textShapeTypeMigrations = defineMigrations({
|
|
currentVersion: Versions.RemoveJustify,
|
|
migrators: {
|
|
[Versions.RemoveJustify]: {
|
|
up: (shape) => {
|
|
let newAlign = shape.props.align
|
|
if (newAlign === 'justify') {
|
|
newAlign = 'start'
|
|
}
|
|
|
|
return {
|
|
...shape,
|
|
props: {
|
|
...shape.props,
|
|
align: newAlign,
|
|
},
|
|
}
|
|
},
|
|
down: (shape) => {
|
|
return { ...shape }
|
|
},
|
|
},
|
|
},
|
|
})
|