mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Creating a text near the center of a shape should put it in the center (#270)
* Snap to element center * Fixed typo * Added comment * Reduced threshold to 30 * Skip snapping if alt key is pressed * Fixed creating text with shape tool
This commit is contained in:
parent
068dca604f
commit
1739540f00
4 changed files with 90 additions and 12 deletions
|
@ -1,5 +1,6 @@
|
|||
import { ExcalidrawElement } from "../element/types";
|
||||
import { hitTest } from "../element/collision";
|
||||
import { getElementAbsoluteCoords } from "../element";
|
||||
|
||||
export const hasBackground = (elements: ExcalidrawElement[]) =>
|
||||
elements.some(
|
||||
|
@ -36,3 +37,20 @@ export function getElementAtPosition(
|
|||
|
||||
return hitElement;
|
||||
}
|
||||
|
||||
export function getElementContainingPosition(
|
||||
elements: ExcalidrawElement[],
|
||||
x: number,
|
||||
y: number
|
||||
) {
|
||||
let hitElement = null;
|
||||
// We need to to hit testing from front (end of the array) to back (beginning of the array)
|
||||
for (let i = elements.length - 1; i >= 0; --i) {
|
||||
const [x1, y1, x2, y2] = getElementAbsoluteCoords(elements[i]);
|
||||
if (x1 < x && x < x2 && y1 < y && y < y2) {
|
||||
hitElement = elements[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return hitElement;
|
||||
}
|
||||
|
|
|
@ -14,5 +14,10 @@ export {
|
|||
restoreFromLocalStorage,
|
||||
saveToLocalStorage
|
||||
} from "./data";
|
||||
export { hasBackground, hasStroke, getElementAtPosition } from "./comparisons";
|
||||
export {
|
||||
hasBackground,
|
||||
hasStroke,
|
||||
getElementAtPosition,
|
||||
getElementContainingPosition
|
||||
} from "./comparisons";
|
||||
export { createScene } from "./createScene";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue