mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Abstract away or eliminate most of the mutation of the Elements array (#955)
This commit is contained in:
parent
05af9f04ed
commit
e1e2249f57
17 changed files with 293 additions and 272 deletions
|
@ -6,7 +6,6 @@ import { ToolButton } from "../components/ToolButton";
|
|||
import { done } from "../components/icons";
|
||||
import { t } from "../i18n";
|
||||
import { register } from "./register";
|
||||
import { invalidateShapeForElement } from "../renderer/renderElement";
|
||||
import { mutateElement } from "../element/mutateElement";
|
||||
|
||||
export const actionFinalize = register({
|
||||
|
@ -29,7 +28,7 @@ export const actionFinalize = register({
|
|||
if (isInvisiblySmallElement(appState.multiElement)) {
|
||||
newElements = newElements.slice(0, -1);
|
||||
}
|
||||
invalidateShapeForElement(appState.multiElement);
|
||||
|
||||
if (!appState.elementLocked) {
|
||||
appState.selectedElementIds[appState.multiElement.id] = true;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { AppState } from "../../src/types";
|
|||
import { t } from "../i18n";
|
||||
import { DEFAULT_FONT } from "../appState";
|
||||
import { register } from "./register";
|
||||
import { newElementWith, newTextElementWith } from "../element/mutateElement";
|
||||
import { newElementWith } from "../element/mutateElement";
|
||||
|
||||
const changeProperty = (
|
||||
elements: readonly ExcalidrawElement[],
|
||||
|
@ -266,7 +266,7 @@ export const actionChangeFontSize = register({
|
|||
return {
|
||||
elements: changeProperty(elements, appState, el => {
|
||||
if (isTextElement(el)) {
|
||||
const element: ExcalidrawTextElement = newTextElementWith(el, {
|
||||
const element: ExcalidrawTextElement = newElementWith(el, {
|
||||
font: `${value}px ${el.font.split("px ")[1]}`,
|
||||
});
|
||||
redrawTextBoundingBox(element);
|
||||
|
@ -313,7 +313,7 @@ export const actionChangeFontFamily = register({
|
|||
return {
|
||||
elements: changeProperty(elements, appState, el => {
|
||||
if (isTextElement(el)) {
|
||||
const element: ExcalidrawTextElement = newTextElementWith(el, {
|
||||
const element: ExcalidrawTextElement = newElementWith(el, {
|
||||
font: `${el.font.split("px ")[0]}px ${value}`,
|
||||
});
|
||||
redrawTextBoundingBox(element);
|
||||
|
|
|
@ -6,7 +6,7 @@ import {
|
|||
import { KEYS } from "../keys";
|
||||
import { DEFAULT_FONT } from "../appState";
|
||||
import { register } from "./register";
|
||||
import { mutateTextElement, newElementWith } from "../element/mutateElement";
|
||||
import { mutateElement, newElementWith } from "../element/mutateElement";
|
||||
|
||||
let copiedStyles: string = "{}";
|
||||
|
||||
|
@ -44,7 +44,7 @@ export const actionPasteStyles = register({
|
|||
roughness: pastedElement?.roughness,
|
||||
});
|
||||
if (isTextElement(newElement)) {
|
||||
mutateTextElement(newElement, {
|
||||
mutateElement(newElement, {
|
||||
font: pastedElement?.font || DEFAULT_FONT,
|
||||
});
|
||||
redrawTextBoundingBox(newElement);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue