Add NonDeleted<ExcalidrawElement> (#1068)

* add NonDeleted

* make test:all script run tests without prompt

* rename helper

* replace with helper

* make element contructors return nonDeleted elements

* cache filtered elements where appliacable for better perf

* rename manager element getter

* remove unnecessary assertion

* fix test

* make element types in resizeElement into nonDeleted

Co-authored-by: dwelle <luzar.david@gmail.com>
This commit is contained in:
Pete Hunt 2020-04-08 09:49:52 -07:00 committed by GitHub
parent c714c778ab
commit df0613d8ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 260 additions and 189 deletions

View file

@ -1,4 +1,8 @@
import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types";
import {
ExcalidrawElement,
ExcalidrawTextElement,
NonDeletedExcalidrawElement,
} from "../element/types";
import { isTextElement } from "../element/typeChecks";
import {
getDiamondPoints,
@ -24,7 +28,7 @@ export interface ExcalidrawElementWithCanvas {
}
function generateElementCanvas(
element: ExcalidrawElement,
element: NonDeletedExcalidrawElement,
zoom: number,
): ExcalidrawElementWithCanvas {
const canvas = document.createElement("canvas");
@ -72,7 +76,7 @@ function generateElementCanvas(
}
function drawElementOnCanvas(
element: ExcalidrawElement,
element: NonDeletedExcalidrawElement,
rc: RoughCanvas,
context: CanvasRenderingContext2D,
) {
@ -133,7 +137,7 @@ export function invalidateShapeForElement(element: ExcalidrawElement) {
}
function generateElement(
element: ExcalidrawElement,
element: NonDeletedExcalidrawElement,
generator: RoughGenerator,
sceneState?: SceneState,
) {
@ -285,7 +289,7 @@ function drawElementFromCanvas(
}
export function renderElement(
element: ExcalidrawElement,
element: NonDeletedExcalidrawElement,
rc: RoughCanvas,
context: CanvasRenderingContext2D,
renderOptimizations: boolean,
@ -342,7 +346,7 @@ export function renderElement(
}
export function renderElementToSvg(
element: ExcalidrawElement,
element: NonDeletedExcalidrawElement,
rsvg: RoughSVG,
svgRoot: SVGElement,
offsetX?: number,

View file

@ -2,7 +2,10 @@ import { RoughCanvas } from "roughjs/bin/canvas";
import { RoughSVG } from "roughjs/bin/svg";
import { FlooredNumber, AppState } from "../types";
import { ExcalidrawElement } from "../element/types";
import {
ExcalidrawElement,
NonDeletedExcalidrawElement,
} from "../element/types";
import {
getElementAbsoluteCoords,
OMIT_SIDES_FOR_MULTIPLE_ELEMENTS,
@ -74,9 +77,9 @@ function strokeCircle(
}
export function renderScene(
allElements: readonly ExcalidrawElement[],
elements: readonly NonDeletedExcalidrawElement[],
appState: AppState,
selectionElement: ExcalidrawElement | null,
selectionElement: NonDeletedExcalidrawElement | null,
scale: number,
rc: RoughCanvas,
canvas: HTMLCanvasElement,
@ -99,8 +102,6 @@ export function renderScene(
return { atLeastOneVisibleElement: false };
}
const elements = allElements.filter((element) => !element.isDeleted);
const context = canvas.getContext("2d")!;
context.scale(scale, scale);
@ -493,7 +494,7 @@ function isVisibleElement(
// This should be only called for exporting purposes
export function renderSceneToSvg(
elements: readonly ExcalidrawElement[],
elements: readonly NonDeletedExcalidrawElement[],
rsvg: RoughSVG,
svgRoot: SVGElement,
{