feat/ability to change the alignment of the text (#1213)

* feat: add the ability to change the alignement of the text

* test: update the snapshots to included the newely textAlign state

* style: use explicit key assignment to object

* test: add missing new key textAlign to newElement.test.ts

* style: make the text on the buttons start with uppercase

* Update src/locales/en.json

* add types

* add migration

* remove incorrect update

Co-authored-by: Youness Fkhach <younessfkhach@porotonmail.com>
Co-authored-by: Lipis <lipiridis@gmail.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
This commit is contained in:
Youness Fkhach 2020-04-08 21:00:27 +01:00 committed by GitHub
parent 3fd6f3023f
commit ff82d1cfa3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 357 additions and 9 deletions

View file

@ -4,6 +4,7 @@ import {
ExcalidrawLinearElement,
ExcalidrawGenericElement,
NonDeleted,
TextAlign,
} from "../element/types";
import { measureText } from "../utils";
import { randomInteger, randomId } from "../random";
@ -73,15 +74,16 @@ export function newTextElement(
opts: {
text: string;
font: string;
textAlign: TextAlign;
} & ElementConstructorOpts,
): NonDeleted<ExcalidrawTextElement> {
const { text, font } = opts;
const metrics = measureText(text, font);
const metrics = measureText(opts.text, opts.font);
const textElement = newElementWith(
{
..._newElementBase<ExcalidrawTextElement>("text", opts),
text: text,
font: font,
text: opts.text,
font: opts.font,
textAlign: opts.textAlign,
// Center the text
x: opts.x - metrics.width / 2,
y: opts.y - metrics.height / 2,