* Implement snap to grid
- Moves positioning logic to LGraph
- Simplifies code
- Adds Pointer API to alt-clone node
- Removes always_round_positions, replaced by always snap to grid (default size is 1 when always snapping)
Fix refator error
* Fix group items snapped without group
* Allow snapping of all items
- Add snapToGrid to Positionable
- Impl. on all types
- Deprecated: alignToGrid is now a wrapper
* Fix test import alias, update expectations
* Prevent desync of before / after change events
Adds ability to perform late binding of finally() during drag start.
* nit - Refactor
* Fix unwanted snap on node/group add
* nit - Doc
* Add shift key state tracking for snap to grid
Private impl., no state API as yet.
* Add snap guides rendering
Nodes, reroutes
* Optimisation - reroute rendering
Fixes exponential redraw
* Add snap guidelines for groups
* Add position rounding feature
Replaces previous impls. which only worked on some items, and were triggered when unexpected e.g. clicking a node that hadn't been moved.
Update test expectations
* Narrow TS types - readonly
* nit - Clean up, Doc
* nit - Clean up legacy accessors
Marks as deprecated
* Fix TS type - IContextMenuOptions.scale
* [Refactor] dist2 for use in pointer API
* Add CanvasPointer - API for pointer events
Add TS strict types
Add final click drag distance math
Add option to retain events
* nit - Rename
* nit
* Remove Subgraph - unused & not maintained
* Remove live_mode
Unused, not maintained.
* Update README
Remove live_mode reference
* Update delete selected - include reroutes & groups
* Bypass link menu if alt/shift pressed
* Remove old dragged_node interface
Incomplete impl. - unused.
Superceded by selectedItems
* Fix top/left edge of rectangles not in hitbox
* [Refactor] Match function names to interface names
* Add interface to find widgets by Point
LGraphNode.getWidgetOnPos
* Add widget search param - includeDisabled
* nit - Doc
* Rewrite canvas mouse handling
- Rewrites most pointer handling to use CanvasPointer callbacks
- All callbacks are declared ahead of time during the initial pointerdown event, logically grouped together
- Drastically simplifies the alteration or creation of new click / drag interactions
- Click events are all clicks, rather than some processed on mouse down, others on mouse up
- Functions return instead of setting and repeatedly checking multiple state vars
- Removes all lines that needed THIRTEEN tab indents
* Split middle click out from processMouseDown
* Use pointer API for link menus
* Narrow canvas event interfaces
* Fix canvas event types
Replaces original workarounds with final types
* Refactor - deprecated isInsideRectangle
* Add canvas hovering over state
- Centralises cursor set behaviour
- Provides simple downstream override
* nit
* [Refactor] Use measure functions
* Add double-click API to CanvasPointer
a
* nit - Doc
* Allow larger gap between double click events
* Rewrite double-click into CanvasPointer actions
* Improve double-click UX
Prefer down events over up events
* Add production defaults
* Add middle-click handling
* Remove debug code
* Remove redundant code
* Fix add reroute alt-click adds two undo steps
* Fix click on connected input disconnects
Old behaviour was to disconnect, then recreate a new link on drop.
* Add module export: CanvasPointer
* nit
* Add LGraph state POCO
Moves last_link_id, last_node_id and creates same for group and reroute
fix import
* Add new serialisation to LGraph
Add LGraph schema 1
Remove reroute from old serialised graph
Remove brittle inherited types
Ensure stale links are not kept when clearing graph
* Add serialisable exports
* Ensure valid LGraph.state during deserialise
* Fix circular depdency in global
* Add TS type guard private function
* Add TS type
* Add TS types & doc
* Add TS type initialisers
* Add NullableProperties type
* Add TS types
* Split node arrange code out to separate file
* Add Snaps for Comfy
* Add snap visual effects
* Update node measure to work everywhere
* Fix findConnectByTypeSlot does not work for "*"
* Fix regression in fast widget conversion
* Add new hover highlight and link dragging features
- Hovering effects added for node inputs and outputs
- Adds "mouseout" handler to properly clear node state when mousing off a node
- Fixes bug that causes outputs to always be dimmed out when connecting from inputs
- Slight performance improvement
* Add node highlight text colour option
* Add slot highlight colour fallback
* Format only
* Revert accidental change
* Fix redundant falsy check - uninit. var
* nit - Refactor const/let
* nit - Refactor const/let (manual)
* nit - Redeclared params
* Add TS types & minor refactor only
* Refactor - Clean up / reformat
- Add strings.ts helper functions
- Remove unused vars & local function params
- Simplifies code
- Rename vars for clarity
- Add TODOs and other comments
- Add ts-expect-error
* Redirect draw.ts enums to global file (temp.)
Should be revisited after TS merge complete
Corrects import of types from draw.ts into interfaces
* Add measure.ts - move util funcs from Global
* Add all imports required for TS conversion
* Refactor - TS narrowing
* nit - TS types & minor refactor
* Add missing types from recent PRs
Removes duplicate declarations
Fixes some type mismatches
* nit - Refactor recent PRs
* Revert incorrect decls backported
* Remove unused params
* Add TS types only
* Fix minor TS type coercion issues
Also removes redundant code
* nit - Refactor
* Remove @ts-nocheck
* Fix refactor regression - drag link to output
Issue was the result of fixing var declared outside of closure
* Restore original logic
---------
Co-authored-by: huchenlei <huchenlei@proton.me>
* Convert litegraph.js to TS
* Overhaul static litegraph.d.ts with updated types
* Fix rename oversights and revert fix unused param
- Some functions were broken by merging updated TS function signatures which included param renames
- Removal of unused params does not belong in the TS conversion PR, and has been reverted
* Remove legacy static .d.ts file
* Add callback decl from #180
Support allowing links to widgets (#180)
c23e610c11
* Convert NodeId to string | number
Results in significantly less downstream changes, despite being a change from the old static file.
---------
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
* ContextMenu ES6 class conversion
* Fix compat with extensions
* CurveEditor ES6 class conversion
* Split most of the LiteGraph global out to a class
* Move remainder of LiteGraph global to class file
* Remove IIFE wrapper
* Fix jest tests throwing due to type narrowing