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
|
@ -11,8 +11,8 @@ let copiedStyles: string = "{}";
|
|||
|
||||
export const actionCopyStyles = register({
|
||||
name: "copyStyles",
|
||||
perform: elements => {
|
||||
const element = elements.find(el => el.isSelected);
|
||||
perform: (elements, appState) => {
|
||||
const element = elements.find(el => appState.selectedElementIds[el.id]);
|
||||
if (element) {
|
||||
copiedStyles = JSON.stringify(element);
|
||||
}
|
||||
|
@ -25,17 +25,16 @@ export const actionCopyStyles = register({
|
|||
|
||||
export const actionPasteStyles = register({
|
||||
name: "pasteStyles",
|
||||
perform: elements => {
|
||||
perform: (elements, appState) => {
|
||||
const pastedElement = JSON.parse(copiedStyles);
|
||||
if (!isExcalidrawElement(pastedElement)) {
|
||||
return { elements };
|
||||
}
|
||||
return {
|
||||
elements: elements.map(element => {
|
||||
if (element.isSelected) {
|
||||
if (appState.selectedElementIds[element.id]) {
|
||||
const newElement = {
|
||||
...element,
|
||||
shape: null,
|
||||
backgroundColor: pastedElement?.backgroundColor,
|
||||
strokeWidth: pastedElement?.strokeWidth,
|
||||
strokeColor: pastedElement?.strokeColor,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue