* feat: add flipping when resizing multiple elements
* fix: image elements not flipping its content
* test: fix accidental resizing in grouping test
* fix: angles not flipping vertically when resizing
* feat: add flipping multiple elements with a command
* revert: image elements not flipping its content
This reverts commit cb989a6c66e62a02a8c04ce41f12507806c8d0a0.
* fix: add special cases for flipping text & images
* fix: a few corner cases for flipping
* fix: remove angle flip
* fix: bound text scaling when resizing
* fix: linear elements drifting away after multiple flips
* revert: fix linear elements drifting away after multiple flips
This reverts commit bffc33dd3ffe56c72029eee6aca843d992bac7ab.
* fix: linear elements unstable bounds
* revert: linear elements unstable bounds
This reverts commit 22ae9b02c4a49f0ed6448c27abe1969cf6abb1e3.
* fix: hand-drawn lines shift after flipping
* test: fix flipping tests
* test: fix the number of context menu items
* fix: incorrect scaling due to ignoring bound text when finding selection bounds
* fix: bound text coordinates not being updated
* fix: lines bound text rotation
* fix: incorrect placement of bound lines on flip
* remove redundant predicates in actionFlip
* update test
* refactor resizeElement with some renaming and comments
* fix grouped bounded text elements not being flipped correctly
* combine mutation for bounded text element
* remove incorrect return
* fix: linear elements bindings after flipping
* revert: remove incorrect return
This reverts commit e6b205ca900b504fe982e4ac1b3b19dcfca246b8.
* fix: minimum size for all elements in selection
---------
Co-authored-by: Ryan Di <ryan.weihao.di@gmail.com>
* 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>
* fix: hide text align for labelled arrows
* lintttt
* since we fetch seledcted Elements including the bound text hence this block can be removed
* fix
* 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: sort bound text elements to fix text duplication z-index error
* improve & sort groups & add tests
* fix backtracking and discontiguous groups
---------
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: add hand/panning tool
* move hand tool right of tool lock separator
* tweak i18n
* rename `panning` -> `hand`
* toggle between last tool and hand on `H` shortcut
* hide properties sidebar when `hand` active
* revert to rendering HandButton manually due to mobile toolbar
* feat: hide copy-as-png shortcut from help dialog if not supported
* fix: support firefox if clipboard.write supported
* show shrotcut in firefox and instead show error message how to enable the flag support
* widen to TypeError because minification
* show copy-as-png on firefox even if it will throw
* feat: new Menu Component API
* allow valid children types
* introduce menu group to group items
* Add lang footer
* use display name
* displayName
* define types inside
* fix default menu
* add json export to menu
* fix
* simplify expression
* put open menu into own compo to optimize perf
So that we don't rerun `useOutsideClickHook` (and rebind event listeners
all the time)
* naming tweaks
* rename MenuComponents->MenuDefaultItems and export default items from Menu.Items
* import Menu.scss in Menu.tsx
* move menu scss to excal app
* Don't filter children inside menu group
* move E+ out of socials
* support style prop for MenuItem and MenuGroup
* Support header in menu group and add Excalidraw links header for default items in social section
* rename header to title
* fix padding for lang
* render menu in mobile
* review fixes
* tweaks
* Export collaborators and show in mobile menu
* revert .env
* lint :p
* again lint
* show correct actions in view mode for mobile
* Whitelist Collaborators Comp
* mobile styling
* padding
* don't show nerds when menu open in mobile
* lint :(
* hide shortcuts
* refactor userlist to support mobile and keep a wrapper comp for excal app
* use only UserList
* render only on mobile for default items
* remove unused hooks
* Show collab button in menu when onCollabButtonClick present and hide export when UIOptions.canvasActions.export is false
* fix tests
* lint
* inject userlist inside menu on mobile
* revert userlist
* move menu socials to default menu
* fix collab
* use meny in library
* Make Menu generic and create hamburgemenu for public excal menu and use menu in library as well
* use appState.openMenu for mobile
* fix tests
* styling fixes and support style and class name in menu content
* fix test
* rename MenuDefaultItems->DefaultItems
* move footer css to its own comp
* rename HamburgerMenu -> MainMenu
* rename menu -> dropdownMenu and update classes, onClick->onToggle
* close main menu when dialog closes
* by bye filtering
* update docs
* fix lint
* update example, docs for useDevice and footer in mobile, rename menu ->DropDownMenu everywhere
* spec
* remove isMenuOpenAtom and set openMenu as canvas for main menu, render decreases in specs :)
* [temp] remove cyclic depenedency to fix build
* hack- update appstate to sync lang change
* Add more specs
* wip: rewrite MainMenu footer
* fix margin
* fix snaps
* not needed as lang list no more imported
* simplify custom footer rendering
* Add DropdownMenuItemLink and DropdownMenuItemCustom and update API, docs
* fix `MainMenu.ItemCustom`
* naming
* use onSelect and base class for custom items
* fix lint
* fix snap
* use custom item for lang
* update docs
* fix
* properly use `MainMenu.ItemCustom` for `LanguageList`
* add margin top to custom items
* flex
Co-authored-by: dwelle <luzar.david@gmail.com>
* 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>