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
|
@ -4,15 +4,16 @@ import { ExcalidrawElement } from "../element/types";
|
|||
import { getSelectedElements } from "../scene";
|
||||
|
||||
import "./HintViewer.css";
|
||||
import { AppState } from "../types";
|
||||
|
||||
interface Hint {
|
||||
elementType: string;
|
||||
multiMode: boolean;
|
||||
isResizing: boolean;
|
||||
appState: AppState;
|
||||
elements: readonly ExcalidrawElement[];
|
||||
}
|
||||
|
||||
const getHints = ({ elementType, multiMode, isResizing, elements }: Hint) => {
|
||||
const getHints = ({ appState, elements }: Hint) => {
|
||||
const { elementType, isResizing } = appState;
|
||||
const multiMode = appState.multiElement !== null;
|
||||
if (elementType === "arrow" || elementType === "line") {
|
||||
if (!multiMode) {
|
||||
return t("hints.linearElement");
|
||||
|
@ -21,7 +22,7 @@ const getHints = ({ elementType, multiMode, isResizing, elements }: Hint) => {
|
|||
}
|
||||
|
||||
if (isResizing) {
|
||||
const selectedElements = getSelectedElements(elements);
|
||||
const selectedElements = getSelectedElements(elements, appState);
|
||||
if (
|
||||
selectedElements.length === 1 &&
|
||||
(selectedElements[0].type === "arrow" ||
|
||||
|
@ -36,16 +37,9 @@ const getHints = ({ elementType, multiMode, isResizing, elements }: Hint) => {
|
|||
return null;
|
||||
};
|
||||
|
||||
export const HintViewer = ({
|
||||
elementType,
|
||||
multiMode,
|
||||
isResizing,
|
||||
elements,
|
||||
}: Hint) => {
|
||||
export const HintViewer = ({ appState, elements }: Hint) => {
|
||||
const hint = getHints({
|
||||
elementType,
|
||||
multiMode,
|
||||
isResizing,
|
||||
appState,
|
||||
elements,
|
||||
});
|
||||
if (!hint) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue