* Refactor: use pointer down state for alt duplication flag
* Refactor: use pointer down state for drag state
* Refactor: simplify over scrollbars check
* Refactor: move pointer move handler out of pointer down handler
* Refactor: move pointer up handler out of pointer down handler
* Refactor: further simplify scrollbar check state in pointer down event
* Refactor: pull out initial pointer down state creation
* Refactor: introduce pointer down state to replace implicit closure state with an explicit object
* Refactor: use pointer down state for resize handle
* Refactor: use pointer down state for isResizing
* Refactor: use pointer down state for resizing offset
* Refactor: use pointer down state for hit element
* Refactor: move selection handling out of pointer down event handler
* Refactor: move text handling out of pointer down event handler
* Refactor: move linear tools handling out of pointer down event handler
* Refactor: move element creation out of pointer down handler
* adjust font baseline on resize
* simplify font scaling on resize
* fix: resizing text to avoid glitchy behavior
* make text resizing deterministic
* no TEXT_WIDTH_PADDING hack
Co-authored-by: dwelle <luzar.david@gmail.com>
* Refactor: Move context menu touch device handling
* Refactor: Move more stuff out of pointer down
* Refactor: Move last coords into an object
* Refactor: Move scrollbar handling out of pointer down
* Refactor: simplify resizing in pointer down
* Refactor: further simplify resizing in pointer down
* Refactor: clarify clearing selection code
* Refactor: move out clearing selection from pointer down
* Refactor: further simplify deselection in pointer down
* Initial support for touch context menu
* Only deal with touch if it's available
* Fix touch checking
* Remove touch checking
* Added comments
* Combine onTouch with onPointer for mobile context menu support
* Added Language support for Hindi in language selection dropdown
* Update src/locales/hi-IN.json
* Update src/i18n.ts
Co-authored-by: Lipis <lipiridis@gmail.com>
* add script to calculate percentage of translation
* test translation change
* change translation
* test
* change translation
* Calculate percentages of each translation file
* test
* Calculate percentages of each translation file
* change translation
* test
* test
* Calculate percentages of each translation file
* test
* Calculate percentages of each translation file
* fix workflow
* test
* test again
* Calculate percentages of each translation file
* Calculate percentages of each translation file
* test
* refactor
* change build logic
* fix types, move English first
* docs added
* test translation file
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* Calculate percentages of each translation file
* let this be the final test please
* Calculate percentages of each translation file
* test
* test
* Test
* Calculate percentages of each translation file
* test
* Calculate percentages of each translation file
* test
* Calculate percentages of each translation file
* test
* Auto commit: Calculate translation coverage
* test
* test
* test
* test
* Auto commit: Calculate translation coverage
* test
* only on master
* test
* test
* Auto commit: Calculate translation coverage
* switch to master branch
Co-authored-by: i18n automation <runner@fv-az76.2iswp1o5zimezclxzdlwqia2gf.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az129.idlktykl4ure3gqe2lnji05orb.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az76.pjgcdo5npjpenpqz2nk0ztqvxd.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az33.senarqq4ucbulg04aytwntvgah.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az51.icvemaqob4xunfekbtdiz2tu2c.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az78.gikxu4m3dpiulftj3bftpuu3ee.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az121.cqdewbghluceforu5pkvpnveec.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az139.jsbds1i2htye3fh1bzwbe4ugmf.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az50.0bg2cysi0dkefjvuua0a0kbd1h.cx.internal.cloudapp.net>
Co-authored-by: i18n automation <runner@fv-az51.nhi3in4tbx4ehjtltcwuwbwsua.cx.internal.cloudapp.net>
* Implement Save without re-prompt and Save as
Fixes#1668
* Add save-as icon
* Make .excalidraw the default extension
* Only show save as button on supporting browsers