* init
* add: vite dev build working
* fix: href serving from public
* feat: add ejs plugin
* feat: migrated env files and ejs templating
* chore: add types related to envs
* chore: add vite-env types
* feat: support vite pwa
* chore: upgrade vite pwa
* chore: pin node version to 16.18.1
* chore: preserve use of nodejs 14
* refactor: preserve REACT_APP as env prefix
* chore: support esm environment variables
* fix ts config
* use VITE prefix and remove vite-plugin-env-compatible
* introduce import-meta-loader for building pacakge as webpack isn't compatible with import.meta syntax
* lint
* remove import.meta.env in main.js
* set debug flag to false
* migrate to vitest and use jest-canvas-mock 2.4.0 so its comp
atible with vite
* integrate vitest-ui
* fix most of teh test
* snaps
* Add script for testing with vite ui
* fix all tests related to mocking
* fix more test
* fix more
* fix flip.test.tsx
* fix contentxmenu snaps
* fix regression snaps
* fix excalidraw.test.tsx and this makes all tests finally pass :)
* use node 16
* specify node version
* use node 16 in lint as well
* fix mobile.test.tsx
* use node 16
* add style-loader
* upgrade to node 18
* fix lint package.json
* support eslint with vite
* fix lint
* fix lint
* fix ts
* remove pwa/sw stuff
* use env vars in EJS the vite way
* fix lint
* move remainig jest mock/spy to vite
* don't cache locales
* fix regex
* add fonts cache
* tweak
* add custom service worker
* upgrade vite and create font cache again
* cache fonts.css and locales
* tweak
* use manifestTransforms for filtering locales
* use assets js pattern for locales
* add font.css to globIgnore so its pushed to fonts cache
* create a separate chunk for locales with rollup
* remove manifestTransforms and fix glob pattern for locales to filter from workbox pre-cache
* push sourcemaps in production
* add comments in config
* lint
* use node 18
* disable pwa in dev
* fix
* fix
* increase limit of bundle
* upgrade vite-pwa to latest
* remove public/workbox so workbox assets are not precached
* fon't club en.json and percentages.json with manual locales chunk to fix first load+offline mode
* tweak regex
* remove happy-dom as its not used
* add comment
* use any instead of ts-ignore
* cleanup
* remove jest-canvas-mock resolution as vite-canvas-mock was patched locking deps at 2.4.0
* use same theme color present in entry point
---------
Co-authored-by: Weslley Braga <weslley@bambee.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
* 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>
* 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>
* tests: fix failing tests
* fix selection.test.tsx
* fix excalidraw.test.tsx and don't show image export when SaveAsImage is false in UIOptions.canvasActions
* more fixes
* require fake index db in setUp test to fix the tests
* fix regression
* fix: Replaced KeyboardEvent.code with KeyboardEvent.key for all letters
* fix: reverted all keybindings that included alt to use code instead of keys
Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
* feat: Add shortcuts for opening stroke and background color picker
* Use App.tsx keydown handler
* only get selectedElements if applicable (perf)
* fix tests and snaps
* reuse `appState.openMenu`
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: Bind keyboard events to excalidraw container
* fix cases around blurring
* fix modal rendering so keyboard shortcuts work on modal as well
* Revert "fix modal rendering so keyboard shortcuts work on modal as well"
This reverts commit 2c8ec6be8eff7d308591467fe2c33cfbca16138f.
* Attach keyboard event in react way so we need not handle portals separately (modals)
* dnt propagate esc event when modal shown
* focus the container when help dialog closed with shift+?
* focus the help icon when help dialog on close triggered
* move focusNearestTabbableParent to util
* rename util to focusNearestParent and remove outline from excal and modal
* Add prop bindKeyGlobally to decide if keyboard events should be binded to document and allow it in excal app, revert tests
* fix
* focus container after installing library, reset library and closing error dialog
* fix tests and create util to focus container
* Add excalidraw-container class to focus on the container
* pass focus container to library to focus current instance of excal
* update docs
* remove util as it wont be used anywhere
* fix propagation not being stopped for React keyboard handling
* tweak reamde
Co-authored-by: David Luzar <luzar.david@gmail.com>
* tweak changelog
* rename prop to handleKeyboardGlobally
Co-authored-by: dwelle <luzar.david@gmail.com>
* Remove width/height from the ".excalidraw" container so it will sized automatically.
* updated all ref calculation to ".excalidraw" instead of parent since now ".excalidraw" will get resized
* Remove props width/height as its not needed anymore.
* Resize handler is also not needed anymore.
* Position absolute canvas due to #3379 (comment)
* move css to style and remove one extra rerendering
* factor out mock logic for test
* set height, width so as to avoid unnecessary updates of regression snap
* better mock
* better type checking and omit width,height from getDefaultAppState and also restore
* revert
* default to window dimensions in constructor
* update docs
* update
* update
* tweaks
* Remove copy & paste from context menu on desktop
* fix build
* Make requested changes
* More changes
* make into function
* update changelog
* fix tests
Co-authored-by: dwelle <luzar.david@gmail.com>