* feat: add action to wrap selected items in a frame
* fix type
* select frame on wrap & refactor
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* separate resizing logic for a single element
* replace resize logic in stats
* do not recompute width and height from points when they're already given
* correctly update linear elements' position when resized
* update snapshots
* lint
* simplify linear resizing logic
* fix initial scale for aspect ratio
* update tests for linear elements
* test typo
* separate pointer from resizing for multiple elements
* lint and simplify
* fix tests
* lint
* provide scene in param instead
* type
* refactor code
* fix floating in tests
* remove restrictions/checks on width & height
* update pointer to dimension to prevent regression
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* Flipping action now properly mirrors selections with elbow arrows
* Flipping action now re-centers the selection to the original center to avoid "walking" selections on repeated flipping
* build: upgrade vite to 5.x, vitest to 2.x and related vite packages
* upgrade vitest-ui and coverage
* pass empty set to fix type error and update snap
* set ignoreEmptyLines to false
* update threshold
* update coverage threshold
* downgrade vite-plugin-pwa as its better to push separately with testing
* add package resolutions for strip-ansi, string-width and wrap-ansi
* disable pwa
* only add resolution for strip-ansi
* add newElement to appState
* freedraw should not be an editing element
* do not set editing element for freedraw and generic
* remove ununsed `appState.draggingElement`
* remove setting dragged for new linear element
* decouple selection element from new element
* fix hint for text bindables
* update snapshot
* fixes
* fix frame regressions
* add comments to types
* document `editingElement`
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
Using ALT/OPT + drag to clone does not transfer the bindings (or leaves the duplicates in place of the old one , which are also not bound).
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
The LinearElementEditor.movePoints() function incorrectly calculates the offset for local linear element points when multiple targetPoints are provided, one of those target points is index === 0 AND the other points are moved in the negative direction, and ending up with negative local coordinates.
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>