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
* fix: introduce baseline to fix the layout shift when switching to text editor
* uncomment
* change offset to 8pixels
* [debug]
* introduce DOM baseline in canvas rendering instead
* introduce baseline in element making it backward compat
* fix
* lint
* fix
* update baseline when resizing text element
* fix safari backward compat
* fix for safari
* lint
* reduce safari LS
* floor line height and height when dom height increases than canvas height
* Revert "floor line height and height when dom height increases than canvas height"
This reverts commit 8de65168238b8fb9a638e0c75f596f371983c2c7.
* cleanup
* use DOM height only for safari to fix LS
* Revert "use DOM height only for safari to fix LS"
This reverts commit d75889238da59b7954ec3a6ac2c29dc0ba420635.
* fix lint and test
* fix
* calculate line height by rounding off instead of DOM
* cleanup
---------
Co-authored-by: dwelle <luzar.david@gmail.com>
* 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: move to canvas measureText
* calcualte height with better heuristic
* improve heuristic more
* remove vertical offset as its not needed
* lint
* calculate width of individual char and ceil to calculate width and remove adjustment factor
* push the word if equal to max width
* update height when text overflows for vertical alignment top/bottom
* remove the hack of updating height when line mismatch as its not needed
* remove scroll height and calculate the height instead
* remove unused code
* fix
* remove
* use math.ceil for whole width instead of individual chars
* fix tests
* fix
* fix
* redraw text bounding box instead when font loaded to fix alignment as well
* fix
* fix
* fix
* Add a 0.05px extra only for firefox
* Add spec
* stop taking ceil and increase firefox editor width by 0.05px
* Ad 0.05px in safari too
* lint
* lint
* remove baseline from measureFontSizeFromWH
* don't redraw on font load
* lint
* refactor name and signature
* fix:cache bind text containers height so that it could autoshrink to original height when text deleted
* revert
* rename
* reset cache when resized
* safe check
* restore original containr height when text is unbind
* update cache when redrawing bounding box
* reset cache when unbind
* make type-safe
* add specs
* skip one test
* remoe mock
* fix
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: Support binding text to closest container
* Bind text to selected container
* show bind action in canvas and selected container after binding
* allow binding if container has no bound text
* fix
* move logic to show/hide bind actions to contextMenuPredicate
* don't show bind action when clicking on bounding box and not elemnts