Commit Graph

381 Commits

Author SHA1 Message Date
David Luzar 7b842fc330 simplify distance helper and factor out common bounds helper (#581)
* simplify distance helper

* factor out common bounds helper
2020-01-26 19:15:08 +00:00
Christopher Chedeau 5853fba821
Fix global settings (#572)
Some PR made the settings UI show up even though nothing is selected. However, you couldn't actually change any of those settings except for the colors. This PR pipes through the rest of the properties so everything works now!
2020-01-26 19:09:11 +00:00
Christopher Chedeau 8ab176b9a5
Disable UI rendering when history is skipped (#574)
When we are scrolling, resizing, or moving elements, we already disable the history. Since those actions do not change the state of the UI, we can also avoid re-drawing it and save ~10ms per frame.

I had to change all the forceUpdate() to setState({}), otherwise it would bypass shouldComponentUpdate.
2020-01-26 19:08:46 +00:00
Christopher Chedeau 263fef4eaa
Add a gap between shapes and lock (#569)
* Add a gap between shapes and lock

The lock is a different type as the rest of the shapes, so we should visually separate it.

* redesign lock icon

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 19:01:56 +00:00
Christopher Chedeau 141b7409a2 Only show correct settings (#565)
* Only show correct settings

The logic to display which settings when nothing was selected was incorrect. This PR ensures that they are in sync.

I also removed all the <hr /> which after the redesigned just looked like weird empty spaces

* fix handling editing/text elements

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 15:19:43 +01:00
Christopher Chedeau 2a87c7381b Set selection when unlocking (#567)
A common workflow I have is to enable the lock, draw a bunch of things, unlock to be able to select stuff. However, after I unlock, the last shape is still enabled, so I end up drawing yet another of the same shape :(

This PR resets to selection instead!
2020-01-26 14:24:50 +01:00
Christopher Chedeau ed42672fd3 Fix value when multiple elements are selected (#571)
If you have two elements selected that have a different value (eg: a green line and a red line), the value of the color picker should be undefined, not the default value.
2020-01-26 13:12:47 +01:00
Christopher Chedeau 3e381b75cb Remove image type description when saving to png (#566)
The description is the name of the file type in the dialog. This shouldn't be Excalidraw but the default one for a png.
2020-01-26 13:04:33 +01:00
Christopher Chedeau e1ed40be65 Fix exported size when drawing to the left (#575)
If you scroll and draw to the left of the origin, when you export the scene, there's a weird whitespace on the right. This is because we do the min() computation starting at 0 and not -Infinity

This also fixes pasted elements and scrollbars.
2020-01-26 12:28:15 +01:00
Christopher Chedeau 4b0f788945
Proper error handling for creating a link without internet (#577)
* Proper error handling for creating a link without internet

* shuffle code a bit

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 03:06:37 -08:00
Christopher Chedeau 1d9cdf4d46 Use local fonts (#573)
This updates the way fonts are handled to not have to download the font from the internet.

If you do `./public/font.ttf` in the .scss file, unfortunately the bundle packages them somewhere that's different from the public folder that is used by the index.html to preload them.

The fix I used is to use absolute path `/font.ttf` so that both work. Unfortunately, this means that the website will only work if at the root of the domain. That's the case so far so it's okay but still annoying if we want to embed it somewhere.
2020-01-26 11:46:56 +01:00
Christopher Chedeau c3e9f775e7 Disable escape when creating element (#576)
Problem:
- Select arrow
- Mouse down somewhere
- Mouse move somewhere to create an arrow
- Press escape
- Now you're in a weird situation where the shape is now "selection" but you're still dragging the arrow. If you mouse up, the arrow disappears

In order to solve this problem, we can avoid making escape do anything if you're currently dragging an element
2020-01-26 11:36:05 +01:00
Christopher Chedeau 94e18bd8e4 Untranslated lock icon (#568)
Sorry my OCD is kicking in... It's super weird that the base of the lock moves when we check / unckeck it. Instead, just the semi-circle shape should move (what this PR implements).
2020-01-26 11:34:15 +01:00
Christopher Chedeau 61f301c3e0 Cleanup saved json file (#578)
It turns out the only thing we need to save in the appState is the background color. All the rest is transient data.

I added `"type": "excalidraw"` at the beginning to explain where it was.

I removed `"source": "http://localhost:3000/"`. I don't think we want to leak on which webpage it was saved from.

I removed `isSelected` from the json

I added indentation so it's easier to read the content. I'm not 100% sure on this one, but I figure filesize doesn't matter too much those days. And if we want to shrink it, there are more effective ways than json.
2020-01-26 11:30:34 +01:00
Lipis 3901ad7dbe Adjust context menu and use open colors (#553)
* Adjust context menu and use open colors

* word wrap

* revert colors & padding

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 11:19:21 +01:00
Guillermo Peralta Scura e4ff408f23
Accessible modals (#560)
Improve the accessibility of our modals (the color picker and the export dialog)

Implement a focus trap so that tapping through the controls inside them don't escape to outer elements, it also allows to close the modals with the "Escape" key.
2020-01-25 19:37:58 -03:00
Christopher Chedeau ba13f88924
Do not trigger modal actions when not visible (#562)
Right now we're running useEffect block which runs getExportCanvasPreview on every state update, even if the modal is not visible (eg: when moving the mouse around!). This puts the modal code in its own component so that it doesn't trigger useEffect when not visible.

The code isn't very elegant as we're forwarding all the props, there's likely a better way to handle it (if anyone is interested, PR would be appreciated), but at least now it no longer double renders the scene.

Fixes #559
2020-01-25 14:11:26 -08:00
Christopher Chedeau c697938350
Do not store cursor position in state (#557)
* Do not store cursor position in state

Storing it in state causes a full re-render. The only time we use the cursor position is for pasting. This halves the number of renders on drag.

* remove passive change
2020-01-25 11:38:08 -08:00
Christopher Chedeau 5b19aeafe9
Make color selection accessible (#556)
By changing from a `<div>` to a `<button>`, it's now possible to use the space key in order to select it
2020-01-25 10:11:57 -08:00
lissitz 1bae203a78 changing new shape property sets it as default (#520)
* changing new shape property sets it as default

* set correct opacity while editing new test

Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-25 09:58:57 -08:00
Guillermo Peralta Scura 69061e20ac Some a11y fixes (#534)
* Rename ToolIcon to ToolButton

It makes more semantic sense

* Label and keyboard shortcuts announcement

* Refactor common props for ToolButton

* Better doc outline and form controls

* Adjust color picker

* Styling fixes

Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-25 09:52:03 -08:00
Marco Kaul 5fd6c4d853 Add german translation (#550)
* Add german translation

* Add german language option

* Fix missing german translation

* Alphabetical order for languages

* Sort

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-25 09:47:02 -08:00
Loris 413c387c7c Add onCancel callback to textWysiwyg for cleanup (#555) 2020-01-25 09:45:23 -08:00
Lipis 829e827dcf Scroll content to the center when loading from backend or file (#554)
* Scroll content to the center when loading from backend

* spread

* Load from file

* Return type
2020-01-25 17:41:23 +01:00
Lipis 1547b4a8d7 Add twitter badge to readme (#542)
* Add twitter badge to readme

* Update README.md
2020-01-25 15:30:01 +01:00
dependabot-preview[bot] 209bd84257 Bump lint-staged from 10.0.0 to 10.0.2 (#549)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.0.0 to 10.0.2.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.0.0...v10.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:20:07 +02:00
dependabot-preview[bot] 048d535b6e Bump browser-nativefs from 0.1.0 to 0.1.1 (#547)
Bumps [browser-nativefs](https://github.com/tomayac/browser-nativefs) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/tomayac/browser-nativefs/releases)
- [Commits](https://github.com/tomayac/browser-nativefs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:04:22 +02:00
dependabot-preview[bot] 6dcb88b8f6 Bump @types/react from 16.9.17 to 16.9.19 (#546)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.17 to 16.9.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:04:03 +02:00
dependabot-preview[bot] 3cf9cad52e Bump husky from 4.0.10 to 4.2.1 (#545)
Bumps [husky](https://github.com/typicode/husky) from 4.0.10 to 4.2.1.
- [Release notes](https://github.com/typicode/husky/releases)
- [Changelog](https://github.com/typicode/husky/blob/master/CHANGELOG.md)
- [Commits](https://github.com/typicode/husky/compare/v4.0.10...v4.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:03:04 +02:00
dependabot-preview[bot] 62063ccb72 Bump nanoid from 2.1.9 to 2.1.10 (#544)
Bumps [nanoid](https://github.com/ai/nanoid) from 2.1.9 to 2.1.10.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/2.1.9...2.1.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:02:49 +02:00
dependabot-preview[bot] 41b384e6e6 Bump @types/react-dom from 16.9.4 to 16.9.5 (#548)
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 16.9.4 to 16.9.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:02:38 +02:00
dependabot-preview[bot] 01c7796713 Bump @types/jest from 24.9.0 to 24.9.1 (#543)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 24.9.0 to 24.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-25 06:02:25 +02:00
Bakhtiiar Muzakparov 689c94151d fix: typos (#540) 2020-01-24 21:02:55 +01:00
David Luzar afb1d6725f
Normalize dimensions (#527)
* normalize dimensions of non-linear elements

* fix element type check regression
2020-01-24 20:45:52 +01:00
Jilles Soeters d65e90209c Allow multiline text (#535)
* Allow multiline text

* Figure out offset correctly

* Run prettier
2020-01-24 20:35:51 +02:00
Faustino Kialungila 54f9c296b5
Enhance language selection (#538)
* Enhance language selection

* remove top/left margin to limit unusable canvas area

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-24 19:10:44 +01:00
Lipis ee68af0fd3
Set Trailing Cmma to (#525) 2020-01-24 12:04:54 +02:00
Faustino Kialungila 25202aec11
Adding Portuguese Translation (#528)
* Add Portuguese Translation

Adding PT translations

* Update src/i18n.ts

Co-Authored-By: Lipis <lipiridis@gmail.com>

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-23 19:40:07 +01:00
Thibaut SABOT 990e064c13 Add french translation (#522)
* Add french translation

* improve fill translation

* forget accent on select translation
2020-01-23 19:00:30 +01:00
Thibaut SABOT e8c909e35c Don't use translated value for shortcut (#526) 2020-01-23 18:28:05 +02:00
Thomas Steiner d24b9c4d78 Update to browser-nativefs v0.1.0 (#523) 2020-01-23 18:15:44 +02:00
Günay Mert Karadoğan 926b4f24e6 Draw horizontal/vertical lines/arrows when shift pressed (#430)
* Draw horizontal/vertical lines/arrows when shift pressed

* Refactor resizing with delta

* Resize arrows/lines perfectly when shift pressed
2020-01-23 10:21:04 +01:00
Enzo Ferey dfb7c2b744 Add app state to history (#309)
* Add app state to history.

* Pick missing state keys.

* Fix bug.

* Remove force update.
2020-01-22 21:32:43 +01:00
lissitz 3f1075cbcd fix: slider value resets to the default value when opacity is 0 (#516) 2020-01-22 20:51:56 +01:00
Lipis 48024c9116
Remove selected object when storing to backend (#506) 2020-01-22 18:27:44 +02:00
Fernando Alava Zambrano a436e70764 Internationalization followup (#500)
* add translations in data.ts

* add language list
add spanish version

* fixes pr review

* add more translations

* remove unused label

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-22 16:25:04 +02:00
Timur Khazamov 362cd74a9b Render only visible elements (#415)
* Render only visible elements

* Fixed exporting as PNG

* Moved isVisibleElement to module scope

* rerun-ci

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-22 15:14:19 +01:00
David Luzar 4942a452e0
Lint tweaks (#502)
* lint json files & add lint ignore list

* lint against plain console logs

* Update .lintstagedrc.js

Co-Authored-By: Lipis <lipiridis@gmail.com>

* format .tsconfig

* don't lint against console.info

* change log to console.info

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-22 15:13:00 +01:00
Bakhtiiar Muzakparov bef279417e fix: cursor on keyboard tool toggle (#482)
* update events for GH actions to include PRs

* fix: cursor on keyboard tool toggle

* fix: change cursor type to constant

* fix: swap condition

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-22 14:36:08 +01:00
David Luzar 5bd1c8b3cd
update events for GH actions to include PRs (#511)
* update events for GH actions to include PRs

* change action events to pull_request only
2020-01-22 14:18:31 +01:00