Gasim Gasimzada
33016bf6bf
Fix issues related to history (#701)
* Separate UI from Canvas * Explicitly define history recording * ActionManager: Set syncActionState during construction instead of in every call * Add commit to history flag to necessary actions * Disable undoing during multiElement * Write custom equality function for UI component to render it only when specific props and elements change * Remove stale comments about history skipping * Stop undo/redoing when in resizing element mode * wip * correctly reset resizingElement & add undo check * Separate selection element from the rest of the array and stop redrawing the UI when dragging the selection * Remove selectionElement from local storage * Remove unnecessary readonly type casting in actionFinalize * Fix undo / redo for multi points * Fix an issue that did not update history when elements were locked * Disable committing to history for noops - deleteSelected without deleting anything - Basic selection * Use generateEntry only inside history and pass elements and appstate to history * Update component after every history resume * Remove last item from the history only if in multi mode * Resume recording when element type is not selection * ensure we prevent hotkeys only on writable elements * Remove selection clearing from history * Remove one point arrows as they are invisibly small * Remove shape of elements from local storage * Fix removing invisible element from the array * add missing history resuming cases & simplify slice * fix lint * don't regenerate elements if no elements deselected * regenerate elements array on selection * reset state.selectionElement unconditionally * Use getter instead of passing appState and scene data through functions to actions * fix import Co-authored-by: David Luzar <luzar.david@gmail.com>
Excalidraw is a whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.
Try it now
Go to https://excalidraw.com to start sketching
Testimonials
Run the code
Code Sandbox
- Go to https://codesandbox.io/s/github/excalidraw/excalidraw
- You can start coding instantly, and even send PRs from there!
Local Installation
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Clone the repo
git clone https://github.com/excalidraw/excalidraw.git
Commands
Command | Description |
---|---|
npm install |
Install the dependencies |
npm run start |
Run the project |
npm run fix |
Reformat all files with Prettier |
npm run test:code |
Test for formatting with Prettier |
npm run test:app |
Test the app |
npm run test |
Run all tests |
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
You can also discuss the app on our Gitter channel.
Excalidraw is built using these awesome tools
And the main source of inspiration for starting the project is the awesome Zwibbler app.
Contributors
Code Contributors
This project exists thanks to all the people who contribute. [Contribute].
Financial Contributors
Become a financial contributor and help us sustain our community. [Contribute]
Individuals
Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
Description
Languages
TypeScript
89.6%
SCSS
4.2%
MDX
3.5%
JavaScript
2.4%
HTML
0.2%