Commit Graph

34 Commits

Author SHA1 Message Date
Mark Tolmacs
a846ebb6e7 Fix arrows 2025-07-31 20:23:26 +02:00
Mark Tolmacs
452be6e5ea Click-click binding 2025-07-31 19:28:52 +02:00
Mark Tolmacs
e6056fe7c4 Long inside-other binding 2025-07-31 18:11:28 +02:00
Mark Tolmacs
e2e729d761 Fix jiggly arrow x2 2025-07-31 16:52:53 +02:00
Mark Tolmacs
8f1b46a798 Fix jiggly arrows 2025-07-31 14:56:51 +02:00
Mark Tolmacs
3702e52454 New arrow binding rules
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
2025-07-31 08:15:04 +02:00
Mark Tolmacs
7e45fb6786 Add drag to the Stats panel when bound arrow is moved 2025-07-28 18:40:53 +02:00
Mark Tolmacs
62dfdd69a1 Remove non-needed bind mode 2025-07-28 15:56:22 +02:00
Mark Tolmacs
4b3eef6099 Images now always bind inside 2025-07-28 14:19:54 +02:00
Mark Tolmacs
fc350cf9f5 Fix new arrow focus point 2025-07-28 14:04:48 +02:00
Mark Tolmacs
4eb62e40dd Fix point binding 2025-07-28 13:39:58 +02:00
Mark Tolmacs
58bd87fc40 Internal arrow creation fix 2025-07-28 12:20:58 +02:00
Mark Tolmacs
f46e247ba3 Fix transparent shape binding 2025-07-27 15:06:23 +02:00
Mark Tolmacs
0313f6fb8b Snap to center 2025-07-27 14:57:00 +02:00
Mark Tolmacs
027a74acfc Fix elbow arrow 2025-07-27 12:09:58 +02:00
Mark Tolmacs
b3bc40ef01 Move point click arrow creation over to common strategy
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
2025-07-25 16:13:45 +02:00
Mark Tolmacs
a7679363b1 Tests added
Fix binding

Remove unneeded params

Unfinished simple arrow avoidance

Fix newly created jumping arrow when gets outside

Do not apply the jumping logic to elbow arrows for new elements

Existing arrows now jump out

Type updates to support fixed binding for simple arrows

Fix crash for elbow arrws in mutateElement()

Refactored simple arrow creation

Updating tests

No confirm threshold when inside biding range

Fix multi-point arrow grid off

Make elbow arrows respect grids

Unbind arrow if bound and moved at shaft of arrow key

Fix binding test

Fix drag unbind when the bound element is in the selection

Do not move mid point for simple arrows bound on both ends

Add test for mobing mid points for simple arrows when bound on the same element on both ends

Fix linear editor bug when both midpoint and endpoint is moved

Fix all point multipoint arrow highlight and binding

Arrow dragging gets a little drag to avoid accidental unbinding

Fixed point binding for simple arrows when the arrow doesn't point to the element

Fix binding disabled use-case triggering arrow editor

Timed binding mode change for simple arrows

Apply fixes

Remove code to unbind on drag

Update simple arrow fixed point when arrow is dragged or moved by arrow keys

Binding highlight fixes

Change bind mode timeout logic

Fix tests

Add Alt bindMode switch

 No dragging of arrows when bound, similar to elbow

Fix timeout not taking effect immediately

Bumop z-index for arrows when dragged

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Only transparent bindables allow binding fallthrough

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Fix lint

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Fix point click array creation interaction with fixed point binding

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Restrict new behavior to arrows only

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Allow binding inside images

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Fix already existing fixed binding retention

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

Refactor and implement fixed point binding for unfilled elements

Restore drag

Removed point binding

Binding code refactor

Added centered focus point

Binding & focus point debug

Add invariants to check binding integrity in elements

Binding fixes

Small refactors

Completely rewritten binding

Include point updates after binding update

Fix point updates when endpoint dragged and opposite endpoint orbits

centered focus point only for new arrows

Make z-index arrow reorder on bind

Turn off inside binding mode after leaving a shape

Remove invariants from debug

feat: expose `applyTo` options, don't commit empty text element (#9744)

* Expose applyTo options, skip re-draw for empty text

* Don't commit empty text elements

test: added test file for distribute (#9754)

z-index update

Bind mode on precise binding

Fix binding to inside element

Fix initial arrow not following cursor (white dot)

Fix elbow arrow

Fix z-index so it works on hover

Fix fixed angle orbiting
2025-07-25 13:48:49 +02:00
Mark Tolmacs
d628d479b2 Fixed point binding for simple arrows 2025-07-24 17:43:17 +02:00
Márk Tolmács
0a19c93509 fix: Bindings at partially overlapping binding areas (#9536) 2025-06-16 12:30:59 +02:00
Márk Tolmács
958597dfaa chore: Refactor doBoundsIntersect (#9657) 2025-06-16 12:30:42 +02:00
zsviczian
84e96e9393 fix: move doBoundsIntersect from element/src/bounds.ts to common/math/src/utils.ts (#9650)
move doBoundsIntersect to math/utils

Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
2025-06-14 11:01:30 +00:00
zsviczian
320af405e9 fix: move elementCenterPoint from common/src/utils.ts to element/src/bounds.ts (#9647)
move elementCenterPoint from utils to bounds.ts
2025-06-14 12:49:22 +02:00
Márk Tolmács
f0458cc216 fix: Mid-point for rounded linears are not precisely centered (#9544) 2025-06-12 21:08:37 +02:00
Márk Tolmács
ca1a4f25e7 feat: Precise hit testing (#9488) 2025-06-07 12:56:32 +02:00
Marcel Mraz
7e41026812 refactor: export everything from @excalidraw/element, don't import from subpaths (#9466)
* Don't import from subpaths

* Fix tests, move related tests to element
2025-05-09 23:01:33 +02:00
David Luzar
ff2ed5d26a refactor: change movePoints pointUpdates type (#9499) 2025-05-08 16:47:13 +02:00
Márk Tolmács
d4f70e9f31 feat: Quarter snap points for diamonds (#9387) 2025-05-05 11:34:40 +02:00
Ryan Di
195a743874 feat: switch between basic shapes (#9270)
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Has been cancelled
Build Docker image / build-docker (push) Has been cancelled
Cancel previous runs / cancel (push) Has been cancelled
Publish Docker / publish-docker (push) Has been cancelled
New Sentry production release / sentry (push) Has been cancelled
* feat: switch between basic shapes

* add tab for testing

* style tweaks

* only show hint when a new node is created

* fix panel state

* refactor

* combine captures into one

* keep original font size

* switch multi

* switch different types altogether

* use tab only

* fix font size atom

* do not switch from active tool change

* prefer generic when mixed

* provide an optional direction when shape switching

* adjust panel bg & shadow

* redraw to correctly position text

* remove redundant code

* only tab to switch if focusing on app container

* limit which linear elements can be switched

* add shape switch to command palette

* remove hint

* cache initial panel position

* bend line to elbow if needed

* remove debug logic

* clean switch of arrows using app state

* safe conversion between line, sharp, curved, and elbow

* cache linear when panel shows up

* type safe element conversion

* rename type

* respect initial type when switching between linears

* fix elbow segment indexing

* use latest linear

* merge converted elbow points if too close

* focus on panel after click

* set roudness to null to fix drag points offset for elbows

* remove Mutable

* add arrowBoundToElement check

* make it dependent on one signle state

* unmount when not showing

* simpler types, tidy up code

* can change linear when it's linear + non-generic

* fix popup component lifecycle

* move constant to CLASSES

* DRY out type detection

* file & variable renaming

* refactor

* throw in not-prod instead

* simplify

* semi-fix bindings on `generic` type conversion

---------

Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
2025-04-30 18:07:31 +02:00
Narek Malkhasyan
2a0d15799c fix: when dragging arrow endpoint, update binding only on the dragged side (#9367) 2025-04-25 10:46:58 +02:00
Marcel Mraz
1913599594 refactor: remove dependency on the (static) Scene (#9389) 2025-04-23 13:45:08 +02:00
David Luzar
a5d6939826 fix: keep orig elem in place on alt-duplication (#9403)
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Has been cancelled
Build Docker image / build-docker (push) Has been cancelled
Cancel previous runs / cancel (push) Has been cancelled
Publish Docker / publish-docker (push) Has been cancelled
New Sentry production release / sentry (push) Has been cancelled
* fix: keep orig elem in place on alt-duplication

* clarify comment

* fix: incorrect selection on duplicating labeled containers

* fix: duplicating within group outside frame should remove from group
2025-04-17 16:08:07 +02:00
jhanma17dev
dff69e9191 chore: Element center point util (#9298) 2025-04-09 17:04:51 +02:00
David Luzar
c2caf78e95 fix: deselected hit element being duplicated + incorrect re-seeding (#9333)
* fix: deselected hit element being duplicated + incorrect re-seeding

* snapshots

* Fix alt-drag binding

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

* Add alt-drag bound arrow test

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>

---------

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
Co-authored-by: Mark Tolmacs <mark@lazycat.hu>
2025-04-07 10:41:31 +02:00
Marcel Mraz
432a46ef9e refactor: separate elements logic into a standalone package (#9285)
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Has been cancelled
Build Docker image / build-docker (push) Has been cancelled
Cancel previous runs / cancel (push) Has been cancelled
Publish Docker / publish-docker (push) Has been cancelled
New Sentry production release / sentry (push) Has been cancelled
2025-03-26 15:24:59 +01:00