* Add copy & paste of groups & reroutes
Complete rewrite of copy & paste
Fixes a bug where failure to clone a node would corrupt all subsequent nodes
No longer mutates nodes when copying
* Fix name collision
* Fix cannot copy specified nodes to clipboard
* Allow mapping of original IDs to pasted clones
* Improved touch support
* Fix touch support scaling error
* Fix touch scaling precision on all zoom levels
* Improved touch experiene, fixed zooming on textarea elements and fixed context menu.
* Minor bug fix
* Fix missing await
* Fix flaky tests - keyboard combos
Old code is causing playwright &/ changeTracker to add an undo step. Using combo mode resolves flakiness until that can be investigated thoroughly.
* Restore skipped tests
* Fix flaky tests
* Async clean up
* Fix test always fails on retry
* Add TS types (tests)
* Fix flaky test
* Add observable busy state to workflow store
* Add workflow store busy wait to tests
* Rename test for clarity
* Fix flaky tests - use press() from locator API
Ref: https://playwright.dev/docs/api/class-keyboard#keyboard-press
* Fix flaky test - wait next frame
* Add delay between mouse events
Litegraph pointer handling is all custom coded, so a adding a delay between events for a bit of reality is actually beneficial.
* Add Reroute
- Initial Reroute implementation
- LLink and Reroute both implement the new LinkSegment interface
- LinkSegments can have a parentId, which always points to a Reroute
* Narrow TS type of schema v0.4 extras
* Add reroutes to schema 0.4
Use extras.reroutes to store additional data
* Add Reroute POC to LLink
* Add Reroute rendering
* Add Reroute context menu - Delete Reroute
* Update delete selected - include reroutes & groups
* Add Reroute select & move
* Include reroutes in area-select
* Move disconnect link logic to LLink
* Add Reroute connect
* nit
* Add Reroute support - connecting links
* Add Add Reroute from link menu (menu)
* nit
* Add shift-drag from reroute to add new link
* Prevent Reroutes from disappearing
Add keepReroutes option to prevent Reroute GC
* Add fourth param to connectInputToOutput
* Allow both connecting in/out to be null
* Move ConnectingLink start pos to Reroute
* Add link render options
* Refactor renderLink - spline / bezier
* Refactor renderLink - linear, straight
* Fix centre points on all link types
Improves link render time
* [Refactor] Generic recursive interface / flat set
* nit
* Allow Reroutes to be members of groups
* Start links from the closest reroute
For the "shift-click drag link from link" feature
* Add Reroutes using alt-click on link paths
* nit - Refactor
* nit - Refactor
* Fix reroute deselect UX
Temporary workaround
* Add Reroute link centre-marker handling
* Add optional link arrow markers
Add enum for link markers
-> Pointing the way forward ->
Set default centre marker to arrow
* Add module export: LinkMarkerShape
* Add link arrow direction for all link types
* Add Reroute auto-swivel with custom curves
* Add state switch to disable reroutes
Works at root of all canvas interactions, should leave existing reroutes untouched but invisible until e.g. links are edited / changed.
* Fix cannot deselect when reroutes disabled
* Include reroutes in select-all
* Allow future extensions of added schema objects
* Add explicit versioning to zod schemas
* Extend schema 0.4 with new fields in extras
- Allows Reroutes without using schema v1
- Reroute data is retained when using old versions - simply not displayed
* Add Reroute undo/redo support
* Add Litegraph schema v1 support
- LLink changed from array to object
- Add reroutes
- Graph state object
- Falls back to original schema if not validated
- Add version check to schema validation pass
* Fix test schema version detection
Resolves conflict with proposed schema v1
* fit view:
- fit view to canvas selection
- fit view to whole graph when nothing is selected
- add button to graph canvas menu
- assign default keybinding '.'
* Adjust on changed APIs
* Update litegraph
---------
Co-authored-by: huchenlei <huchenlei@proton.me>