Refactor ExcalidrawElement (#874)

* Get rid of isSelected, canvas, canvasZoom, canvasOffsetX and canvasOffsetY on ExcalidrawElement.

* Fix most unit tests. Fix cmd a. Fix alt drag

* Focus on paste

* shift select should include previously selected items

* Fix last test

* Move this.shape out of ExcalidrawElement and into a WeakMap
This commit is contained in:
Pete Hunt 2020-03-08 10:20:55 -07:00 committed by GitHub
parent 8ecb4201db
commit ccbbdb75a6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 416 additions and 306 deletions

View file

@ -149,6 +149,7 @@ export async function importFromBackend(
export async function exportCanvas(
type: ExportType,
elements: readonly ExcalidrawElement[],
appState: AppState,
canvas: HTMLCanvasElement,
{
exportBackground,
@ -181,7 +182,7 @@ export async function exportCanvas(
return;
}
const tempCanvas = exportToCanvas(elements, {
const tempCanvas = exportToCanvas(elements, appState, {
exportBackground,
viewBackgroundColor,
exportPadding,

View file

@ -14,7 +14,7 @@ export function serializeAsJSON(
type: "excalidraw",
version: 1,
source: window.location.origin,
elements: elements.map(({ shape, canvas, isSelected, ...el }) => el),
elements,
appState: cleanAppStateForExport(appState),
},
null,

View file

@ -10,14 +10,7 @@ export function saveToLocalStorage(
elements: readonly ExcalidrawElement[],
appState: AppState,
) {
localStorage.setItem(
LOCAL_STORAGE_KEY,
JSON.stringify(
elements.map(
({ shape, canvas, ...element }: ExcalidrawElement) => element,
),
),
);
localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(elements));
localStorage.setItem(
LOCAL_STORAGE_KEY_STATE,
JSON.stringify(clearAppStateForLocalStorage(appState)),
@ -31,9 +24,7 @@ export function restoreFromLocalStorage() {
let elements = [];
if (savedElements) {
try {
elements = JSON.parse(savedElements).map(
({ shape, ...element }: ExcalidrawElement) => element,
);
elements = JSON.parse(savedElements);
} catch {
// Do nothing because elements array is already empty
}

View file

@ -57,10 +57,6 @@ export function restore(
? 100
: element.opacity,
points,
shape: null,
canvas: null,
canvasOffsetX: element.canvasOffsetX || 0,
canvasOffsetY: element.canvasOffsetY || 0,
};
});