* 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
* implement line editing
* line editing with rotation
* ensure adding new points is disabled on point dragging
* fix hotkey replacement
* don't paint bounding box when creating new multipoint
* tweak points style, account for zoom and z-index
* don't persist editingLinearElement to localStorage
* don't mutate on noop points updates
* account for rotation when adding new point
* ensure clicking on points doesn't deselect element
* tweak history handling around editingline element
* update snapshots
* refactor pointerMove handling
* factor out point dragging
* factor out pointerDown
* improve positioning with rotation
* revert to use roughjs for calculating points bounds
* migrate from storing editingLinearElement.element to id
* make GlobalScene.getElement into O(1)
* use Alt for adding new points
* fix adding and deleting a point with rotation
* disable resize handlers & bounding box on line edit
Co-authored-by: daishi <daishi@axlight.com>
* don't use unicode characters for shortcut help
* use option instead of alt
* make shortcut replacement case-insensitive
* improve shortcut dialog layout
Following #1478, a bug was found related to transparent backgrounds. As Excalidraw only supports `transparent` as a valid transparent color, this commits generalizes the use of canvas to normalize color values.
It changes a few details:
- `rgba()` or `hsla()` syntaxes are not accepted anymore
- pasting values goes through the same normalization step, avoiding invalid values
- color validation is not regex-based anymore
- any CSS-valid black color is now accepted (e.g. previously, `rgb(0,0,0)` was rejected)
* add hint & support multi-line hints
* resize from center point using the new resize maths
* resize with origin element when lifting alt key
* add readonly to elementOriginPosition
* add setResizeWithCenterKeyLifted
* isResizeFromCenter logic
* offsetX and offsetY
* simplify equations
* creating element from center point
* lint
* lint
* lint
* remove revert on key up logic
Co-authored-by: dwelle <luzar.david@gmail.com>
Co-authored-by: daishi <daishi@axlight.com>