Introducing independent change detection for appState and elements
Generalizing object change, cleanup, refactoring, comments, solving typing issues
Shaping increment, change, delta hierarchy
Structural clone of elements
Introducing store and incremental API
Disabling buttons for canvas actions, smaller store and changes improvements
Update history entry based on latest changes, iterate through the stack for visible changes to limit empty commands
Solving concurrency issues, solving (partly) linear element issues, introducing commitToStore breaking change
Fixing existing tests, updating snapshots
Trying to be smarter on the appstate change detection
Extending collab test, refactoring action / updateScene params, bugfixes
Resetting snapshots
Resetting snapshots
UI / API tests for history - WIP
Changing actions related to the observed appstate to at least update the store snapshot - WIP
Adding skipping of snapshot update flag for most no-breaking changes compatible solution
Ignoring uncomitted elements from local async actions, updating store directly in updateScene
Bound element issues - WIP
* feat: add line height attribute to text element
* lint
* update line height when redrawing text bounding box
* fix tests
* retain line height when pasting styles
* fix test
* create a util for calculating ling height using old algo
* update line height when resizing multiple text elements
* make line height backward compatible
* udpate line height for older element when font size updated
* remove logs
* Add specs
* lint
* review fixes
* simplify by changing `lineHeight` from px to unitless
* make param non-optional
* update comment
* fix: jumping text due to font size being calculated incorrectly
* update line height when font family is updated
* lint
* Add spec
* more specs
* rename to getDefaultLineHeight
* fix getting lineHeight for potentially undefined fontFamily
* reduce duplication
* fix fallback
* refactor and comment tweaks
* fix
---------
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: support arrow with text
* render arrow -> clear rect-> render text
* move bound text when linear elements move
* fix centering cursor when linear element rotated
* fix y coord when new line added and container has 3 points
* update text position when 2nd point moved
* support adding label on top of 2nd point when 3 points are present
* change linear element editor shortcut to cmd+enter and fix tests
* scale bound text points when resizing via bounding box
* ohh yeah rotation works :)
* fix coords when updating text properties
* calculate new position after rotation always from original position
* rotate the bound text by same angle as parent
* don't rotate text and make sure dimensions and coords are always calculated from original point
* hardcoding the text width for now
* Move the linear element when bound text hit
* Rotation working yaay
* consider text element angle when editing
* refactor
* update x2 coords if needed when text updated
* simplify
* consider bound text to be part of bounding box when hit
* show bounding box correctly when multiple element selected
* fix typo
* support rotating multiple elements
* support multiple element resizing
* shift bound text to mid point when odd points
* Always render linear element handles inside editor after element rendered so point is visible for bound text
* Delete bound text when point attached to it deleted
* move bound to mid segement mid point when points are even
* shift bound text when points nearby deleted and handle segment deletion
* Resize working :)
* more resize fixes
* don't update cache-its breaking delete points, look for better soln
* update mid point cache for bound elements when updated
* introduce wrapping when resizing
* wrap when resize for 2 pointer linear elements
* support adding text for linear elements with more than 3 points
* export to svg working :)
* clip from nearest enclosing element with non transparent color if present when exporting and fill with correct color in canvas
* fix snap
* use visible elements
* Make export to svg work with Mask :)
* remove id
* mask canvas linear element area where label is added
* decide the position of bound text during render
* fix coords when editing
* fix multiple resize
* update cache when bound text version changes
* fix masking when rotated
* render text in correct position in preview
* remove unnecessary code
* fix masking when rotating linear element
* fix masking with zoom
* fix mask in preview for export
* fix offsets in export view
* fix coords on svg export
* fix mask when element rotated in svg
* enable double-click to enter text
* fix hint
* Position cursor correctly and text dimensiosn when height of element is negative
* don't allow 2 pointer linear element with bound text width to go beyond min width
* code cleanup
* fix freedraw
* Add padding
* don't show vertical align action for linear element containers
* Add specs for getBoundTextElementPosition
* more specs
* move some utils to linearElementEditor.ts
* remove only :p
* check absoulte coods in test
* Add test to hide vertical align for linear eleemnt with bound text
* improve export preview
* support labels only for arrows
* spec
* fix large texts
* fix tests
* fix zooming
* enter line editor with cmd+double click
* Allow points to move beyond min width/height for 2 pointer arrow with bound text
* fix hint for line editing
* attempt to fix arrow getting deselected
* fix hint and shortcut
* Add padding of 5px when creating bound text and add spec
* Wrap bound text when arrow binding containers moved
* Add spec
* remove
* set boundTextElementVersion to null if not present
* dont use cache when version mismatch
* Add a padding of 5px vertically when creating text
* Add box sizing content box
* Set bound elements when text element created to fix the padding
* fix zooming in editor
* fix zoom in export
* remove globalCompositeOperation and use clearRect instead of fillRect
* feat: allow inner-drag-selecting with cmd/ctrl
* don't use cursor when pressing cmd/ctrl
* ensure we reset deselected groups
* add tests
* add docs
* couple fixes around group selection