Resize handler detection should not be active when moving multip… (#767)

* Fix bug.

* Implement `getSelectedElements`.

* Explicit condition.

* Respect variable naming.

* Keep state consistent.

* Use `isSomeElementSelected` abstraction.

* Missing ones.
This commit is contained in:
Enzo Ferey 2020-02-16 22:54:50 +01:00 committed by GitHub
parent ad72946131
commit 6ebd41734f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 53 additions and 37 deletions

View file

@ -3,9 +3,10 @@ export {
clearSelection,
getSelectedIndices,
deleteSelectedElements,
someElementIsSelected,
isSomeElementSelected,
getElementsWithinSelection,
getCommonAttributeOfSelectedElements,
getSelectedElements,
} from "./selection";
export {
exportCanvas,

View file

@ -55,8 +55,11 @@ export function getSelectedIndices(elements: readonly ExcalidrawElement[]) {
return selectedIndices;
}
export const someElementIsSelected = (elements: readonly ExcalidrawElement[]) =>
elements.some(element => element.isSelected);
export function isSomeElementSelected(
elements: readonly ExcalidrawElement[],
): boolean {
return elements.some(element => element.isSelected);
}
/**
* Returns common attribute (picked by `getAttribute` callback) of selected
@ -68,10 +71,14 @@ export function getCommonAttributeOfSelectedElements<T>(
): T | null {
const attributes = Array.from(
new Set(
elements
.filter(element => element.isSelected)
.map(element => getAttribute(element)),
getSelectedElements(elements).map(element => getAttribute(element)),
),
);
return attributes.length === 1 ? attributes[0] : null;
}
export function getSelectedElements(
elements: readonly ExcalidrawElement[],
): readonly ExcalidrawElement[] {
return elements.filter(element => element.isSelected);
}