mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
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:
parent
8ecb4201db
commit
ccbbdb75a6
39 changed files with 416 additions and 306 deletions
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -57,10 +57,6 @@ export function restore(
|
|||
? 100
|
||||
: element.opacity,
|
||||
points,
|
||||
shape: null,
|
||||
canvas: null,
|
||||
canvasOffsetX: element.canvasOffsetX || 0,
|
||||
canvasOffsetY: element.canvasOffsetY || 0,
|
||||
};
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue