1
0
mirror of https://github.com/excalidraw/excalidraw.git synced 2025-02-18 13:29:36 +01:00
Commit Graph

351 Commits

Author SHA1 Message Date
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
Thomas Steiner
d1fb824369
Move file system operations to separate module (#510) 2020-01-22 13:55:13 +01:00
lissitz
dc0a4f4cb8 fix: Preview image is being stretched when the proportions are w… (#503)
Fixes #490. Preserves the ratio of the preview image when width / height reaches max-width/max-height
2020-01-22 12:09:49 +02:00
Dvir Azulay
a856ce06e9 Allow dragging transparent elements when selected (#508)
* Allow dragging transparent elements when selected

Addresses #339

* Update package.json
2020-01-21 21:10:49 -08:00
Lipis
d30498a289 Pointer for Tool icons (#501) 2020-01-21 22:07:09 +01:00
lissitz
3de48d2893 fix: Transparent backgrounds result in bleed (#499) 2020-01-21 09:07:08 -08:00
Max Stoiber
e657372ae4 Fix typo in "Opacity" (#489) 2020-01-21 18:39:39 +02:00
David Luzar
20cf1078fc
add top error boundary & reset localStorage on error (#493)
* add top error boundary & reset localStorage on error

* add issue tracker details and link

* add pointer cursor to buttons

* Update src/bug-issue-template.js

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

* Update src/styles.scss

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

* Update src/bug-issue-template.js

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

* use open-color colors

* use Cascadia font

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-21 15:50:25 +01:00
Jilles Soeters
a72a143c84 Introduce Shapelock (#480)
* Introduce shape lock

* Format code with prettier

* Do not reset elementLocked on selection change

* Don't set isSelected to true if element is locked

* Don't reset the cursor

* Move reset cursor call to better spot

* Run prettier + lint
2020-01-20 15:52:19 -08:00
David Luzar
2340dddaad Sync panel props to editing element (#470)
* ensure panel props are sync to editing elem

* ensure we don't create empty-text elements (fixes #468)

* remove dead code

Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-20 15:16:22 -08:00
Fernando Alava Zambrano
ff7a340d2f Internationalization support (#477)
* add i18next lib
add some translations

* add translations

* fix font-family

* fix pin versions
2020-01-20 15:14:10 -08:00
Guillermo Peralta Scura
1a03a29025 Use relative CSS units (#484) 2020-01-20 14:59:00 -08:00
Panayiotis Lipiridis
183a62627c id 2020-01-20 21:38:51 +02:00
Panayiotis Lipiridis
703d1e42e3 id instead of json 2020-01-20 21:30:07 +02:00
Lipis
a210f442f4 Store background color in backend (#475)
* Store background color in backend

* Background
2020-01-20 19:47:27 +01:00
Lipis
4487e9af8a
Switch hashes to smaller IDs for the backend (#474)
* Update backend

* log
2020-01-20 20:11:03 +02:00
David Luzar
d44c4ca2d8 flush autosave on unload (#473) 2020-01-20 09:37:42 -08:00
wei
37e082fcdc feat: Add Cascadia font (#465)
* adding cascadia font

* adding font file
2020-01-20 07:12:12 -08:00
Brady Madden
6ad596e9f1 Share excalidrawings as links! (#356)
* shareable links

* fix

* review comments

* json-excaliber (#464)

* draw

* Boom

* backend

* Remove local

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-19 21:56:19 -08:00
Lipis
13e14b4d64 Change the font family names (#462) 2020-01-19 15:49:10 -08:00
David Luzar
0097652b79 disallow shape selection during creation (#449) 2020-01-20 01:27:00 +02:00
Faustino Kialungila
61be0f7b61
Render text actions panel on double click (#450)
* Render text actions panel on double click

* cleanup wysiwyg on click

* use `state.editingElement` instead of global to determine whether t ext panel is shown

* clarify comment

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-19 23:32:24 +01:00
Guillermo Peralta Scura
3715da9966
Remove not needed nesting for resize (#460) 2020-01-19 18:43:51 -03:00
Guillermo Peralta Scura
7ae52f1164
Add ColorInput component (#455)
* Add ColorInput component

* Use valid color on input blur

* Darken input text and add labels
2020-01-19 18:27:36 -03:00
Christopher Chedeau
7f6e1f420e
Pure node rendering (#443) 2020-01-19 13:21:33 -08:00
Mike Lewis
5ce5e5ac1e Adjust type of data URI when saving (#452)
Previously the type used for the data URI when saving was text/plain.
On iPad, this caused the file to automatically have a .txt extension
added (so files ended up with names like "drawing-xyz.json.txt"). This
meant that the files couldn't be loaded by the tool, which expects only
files with a .json extension.

Now, the type used is application/json, which means that the files get
saved with the correct extension and can be successfully loaded on iPad.
2020-01-19 23:15:40 +02:00
Günay Mert Karadoğan
d505c6615d Fix reversed cursor issues on resize with bi-directional cursors (#451) 2020-01-19 23:11:46 +02:00
Faustino Kialungila
86cb228df4 Trim wysiwyg text to avoid misalignment on Firefox (#454) 2020-01-19 20:52:19 +01:00
Faustino Kialungila
bbabf33d78 Render shape action on tool selected (#448) 2020-01-18 15:45:35 -08:00
Sosuke Suzuki
5563dd30d7 Modify to ignore enter-key in IME composing (#446) 2020-01-18 14:13:44 -08:00
Sosuke Suzuki
4180485eef Disable shortcuts for shapes while dragging the selection (#447) 2020-01-18 14:12:49 -08:00
Lipis
67aed07b72 Subtle border around the color picker (#442)
* Subtle border around the color picker

* Rename
2020-01-18 11:56:47 +01:00
Lipis
61d5615a81 Change order of Text and Line (#435) 2020-01-17 15:55:13 -08:00
Lipis
70b88a6a53
Force lowercase for the color inputs (#423) 2020-01-17 21:01:36 +02:00
Abhishek Kulshrestha
31403ab373 Bug 389 (#428)
* paste inside the viewport

* Buttons in top left panel aren't horizontally centered
2020-01-17 20:23:41 +02:00
JavaScript Joe
b2d3d6eca3 fix: replace Draftsman with Architect (#427) 2020-01-17 09:00:25 -08:00
David Luzar
6892348c3d Revert 400 and 420 (#422)
* revert #400 font file

* Revert "Revert "Set scale for export images (#416)" (#420)"

This reverts commit d603921234b9ae1483f9f0e0f79fb1c3d0878370.
2020-01-17 16:43:24 +02:00
Timur Khazamov
d603921234
Revert "Set scale for export images (#416)" (#420)
This reverts commit 82f559f826f4ab0504981a281335e0a25d332a6a.
2020-01-17 15:55:17 +03:00
Timur Khazamov
82f559f826
Set scale for export images (#416) 2020-01-17 15:19:56 +03:00
Thomas Steiner
7ddc206b8c
Add Native File System API saving/exporting and opening (#388)
* Add Native File System API saving/exporting

* Add Native File System API opening

* Add origin trial token placeholder

* Reuse an opened file handle for better saving experience

* Fix file handle reuse to only kick in for Excalidraw files

* Remove reference
2020-01-17 11:25:05 +01:00
Lipis
f4d4b323e1 Update colors from open colors (#406)
* Update to open colors

* Update more

* More colors

* Dahh

* More

* Border none

* More

* Update
2020-01-16 16:54:21 -08:00
Günay Mert Karadoğan
8bc049a0b9 Remove resized element if it is invisibly small (#405) 2020-01-16 23:16:11 +01:00
JavaScript Joe
e5e0e37f23 feat: update font file and add meta tags (#400)
* fix: add new, smaller FG_Virgil file

* fix: update with new codesandbox font file link

* feat: add og-image and meta tags

* feat: add pr template

* fix: update pr template

* fix: remove pr template

* refactor: remove twitter meta in favor of og:image

* fix: add og:image:width

* refactor: update image

* refactor: use image in readme
2020-01-16 21:32:40 +01:00
Lipis
8154ccd907 No named colors and lowercase hex (#395)
* No named colors and lowercase hex

* consistent
2020-01-16 10:16:08 -08:00
JavaScript Joe
1ae3c64860 fix(font): modify exclamation point in font (#394)
* fix: add new modified FG_Virgil font

* fix: update codesandbox links to use modified virgil font

* fix: typo in Contributing
2020-01-16 09:59:43 -08:00
Lipis
cb8d866c33 Open colors (#378)
* Add open colors

* More colors

* Update colors

* Shade 0
2020-01-16 18:14:00 +01:00
Günay Mert Karadoğan
4ecc734659 Fix #360 prevent creating invisibly small elements (#387) 2020-01-16 08:27:18 -08:00
Jilles Soeters
2a8e562e98 Add numeric hotkeys (#380)
* Add numeric hotkeys

* Nit: add space after comma
2020-01-15 18:39:15 -08:00
Brady Madden
a3aa57d98b
Add AppState to export json to fix various import bugs (#358)
* export background, app state

* review comments
2020-01-15 21:08:52 -05:00
David Luzar
0e56cd4f56 pan canvas on wheel button drag (#375)
* pan canvas on wheel button drag

* make mousemove passive
2020-01-15 15:21:39 -08:00
Shane O'Sullivan
80cee4d3c0 Add a title for the Export button as it was missing one (#376) 2020-01-15 15:16:43 -08:00
Bakhtiiar Muzakparov
8db8827c6f feat: add line shape (#371)
* feat: add line shape

* fix: align line tool

* fix: hitbox bug sw to ne

* fix: add stroke width n sloppiness  for line

* fix: center line inside a panel box

* fix: use color as a unique key
2020-01-16 00:07:19 +05:00
David Luzar
42968ef44d enable curveFitting & bump roughjs (#373) 2020-01-15 20:01:50 +01:00
Faustino Kialungila
657014466c Active styles bg color (#372)
* Active styles bg color

* fix whitespace

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-15 19:57:58 +01:00
Timur Khazamov
79aee53ff6 Redesign idea (#343)
* Redisign idea

* Code cleanup

* Fixed to right container

* Reoredered layout

* Reordering panels

* Export dialog

* Removed redunant code

* Fixed not removing temp canvas

* Fixed preview not using only selected elements

* Returned file name on export

* Toggle export selected/all elements

* Hide copy to clipboard button if no support of clipboard

* Added border to swatches

* Fixed modal flickering
2020-01-15 07:42:02 -08:00
David Luzar
8104c8525d ensure contextMenu doesn't overflow viewport (#364) 2020-01-14 09:44:18 +01:00
Preet
8dbd1b80df Update to rough.js 4.0.1 (#363)
* upgrade to latest rough.js

* remove random.ts because roughjs now supports seeding.
2020-01-13 11:04:28 -08:00
Timur Khazamov
bc2bae2a9a Shift drag to add to selection (#355)
* Shift drag to add to selection

* Inlined variable
2020-01-12 15:32:25 -08:00
Guillermo Peralta Scura
4c62cbf57e Don't show resize cursor if multiple elements are selected (#353) 2020-01-12 12:24:11 -08:00
Christopher Chedeau
f91b708abb
Revert "Shift drag to add to selection (#350)" (#352)
This reverts commit ce467f7b6572615c5f4050f3e514943867b6fb9d.
2020-01-12 12:08:18 -08:00
Timur Khazamov
ce467f7b65 Shift drag to add to selection (#350) 2020-01-12 11:56:10 -08:00
David Luzar
58ad6d741d fix selecting elem inside already selected element (#349) 2020-01-12 11:43:31 -08:00
David Luzar
5887be6eda select filled elements by clicking inside (#340) 2020-01-12 11:16:48 -08:00
Guillermo Peralta Scura
c67435719f Use cursor delta to resize shape (#341) 2020-01-12 09:05:08 -08:00
Jeremy Press
abf2aaa102 "Select All" only appears when clicking outside of a shape via actionFilter (#329)
Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-12 07:10:15 -08:00
Enzo Ferey
88a9cee8bb History improvements (#337)
* Simplified redoOnce.

* Help mental model.

* Move clear redo stack where it belongs.

* Not needed anymore as we check for same state.
2020-01-12 03:19:24 -08:00
Gasim Gasimzada
ba8bc10431 Remove element shape object from local storage save (#336) 2020-01-12 15:08:47 +05:00
Christopher Chedeau
bc909b76da
Move copy paste handler to document (#334)
Hopefully it should resolve the copy pasting issues

Fixes #249
2020-01-11 21:39:16 -08:00
Christopher Chedeau
aad6e8f434
Reset to selection after creating a text (#333)
Fixes #252

Test plan:
- Click on text icon
- Click anywhere to start entering text
- Add a letter
- Make sure the cursor is selection and not text
- Click anywhere else, make sure it completes the text and not create a new one
2020-01-11 21:00:55 -08:00
Christopher Chedeau
44657efe71
Fix undoOnce (#332)
I just pasted @enzoferey's implementation and it fixed the bug reported by @dwelle

Fixes #307
2020-01-11 20:45:56 -08:00
Christopher Chedeau
dd2a7eb597
Fix copy-paste on input (#331)
If the input is active, we shouldn't override copy paste behavior
2020-01-11 20:41:47 -08:00
Christopher Chedeau
d45f48e60f
Set shape background to be transparent by default (#330)
Also makes "Clear canvas" reset the entire app state
2020-01-11 20:34:21 -08:00
Christopher Chedeau
3db7d69849
Debounce localstorage save (#328)
I profiled dragging and it looks like it takes ~3ms to save to localStorage a smallish scene and we're doing it twice per mousemove. Let's debounce so we don't pay that cost on every mouse move.

Stole the implementation from #220 which got reverted.
2020-01-11 20:15:41 -08:00
Christopher Chedeau
c745fd4e5e
Prevent cmd-r from selecting rectangle (#327)
I keep adding empty rectangles because I reload with cmd-r which enables rectangle :p Let's only make the shortcut work if there's no modifier enabled
2020-01-11 19:42:34 -08:00
Christopher Chedeau
407f00bbd5
Fix alt-duplicate (#326)
We need to unselect all the previous elements and select all the new ones. Also made sure that the shape is regenerated when the element is duplicated
2020-01-11 19:35:06 -08:00
Christopher Chedeau
8785bef523
Support transparent background + inline picker (#325)
Unfortunately, react-color has a bug where transparent color doesn't trigger onChange. I've been annoyed by the huge dependency anyway so decided to take the generated html (which is awesome) and reimplement a specific component for it.

I also made sure that we don't actually render anything when the background is transparent on rough (I looked at the generated path and made sure it didn't have the commands for the background)
2020-01-11 19:10:41 -08:00
Christopher Chedeau
157f0eae0c
Export to canvas only selected elements (#323)
Fixes #308
2020-01-11 16:15:26 -08:00
Christopher Chedeau
9fa69448e4
Remove Delete from panel (#322)
Now that we have context menu, we don't need it there
2020-01-11 16:11:21 -08:00
Christopher Chedeau
5bdd0a35f6
Fix cmd-a drawing arrows (#321)
We need to quit if we have either elements OR appState, not both.
2020-01-11 16:06:25 -08:00
Gasim Gasimzada
74764b06eb Regenerate roughjs shape only when the item is updated (#316)
* Regenerate roughjs shape only when the item is updated

* Remove shape object during export and history undo/redo

* Remove shape element during copying

* Fix shape generation during creation
2020-01-11 16:00:00 -08:00
Christopher Chedeau
1bf18fe4ed
Tweak context menu style (#320)
- Move the context menu right next to the mouse so it's not so far away. But 1px out so that nothing is selected until you move your mouse
- Change the colors to be closer to the macos one. Unfortunately, macos has a 0.5px border that I'm not able to reproduce without some annoying hacks, 1px it'll be.
2020-01-11 15:59:42 -08:00
Christopher Chedeau
b481a29024
Remove console.log (#317) 2020-01-11 15:21:24 -08:00
Enzo Ferey
c6accd9fc7 Improve color suggestions (#304)
* Add palettes for each type of color picker.

* Add white canvas background and black element stroke.

* Add white for element background.
2020-01-11 14:58:44 -08:00
Christopher Chedeau
6399b1f318
Remove zindex options from panel (#315)
Now that they are in the context menu, we don't need to have them in the panel anymore.

Fixes #242
2020-01-11 14:58:11 -08:00
Timur Khazamov
8f28c59deb Removed SceneState from renderElement (#301) 2020-01-11 14:38:41 -08:00
Gasim Gasimzada
76467073f2 Use innerText instead of innerHTML when measuring text (#312) 2020-01-11 14:25:33 -08:00
Gasim Gasimzada
f465121f9b Feature: Action System (#298)
* Add Action System

- Add keyboard test
- Add context menu label
- Add PanelComponent

* Show context menu items based on actions

* Add render action feature

- Replace bringForward etc buttons with action manager render functions

* Move all property changes and canvas into actions

* Remove unnecessary functions and add forgotten force update when elements array change

* Extract export operations into actions

* Add elements and app state as arguments to `keyTest` function

* Add key priorities

- Sort actions by key priority when handling key presses

* Extract copy/paste styles

* Add Context Menu Item order

- Sort context menu items based on menu item order parameter

* Remove unnecessary functions from App component
2020-01-11 14:22:03 -08:00
Timur Khazamov
c253c0b635 Command clicking should "xor" selection (#300)
* Command clicking should "xor" selection

* Only shift key should play a role

* Get rid of `isDraggingElements`

* Renamed someElementIsDragged to draggingOccured
2020-01-10 22:45:58 +01:00
Gunay Mert Karadogan
3eb6d1de68 Fix history saving for resizing/dragging element (#292) 2020-01-10 16:01:00 +01:00
dwelle
81f23a8ccb fix text shape contenteditable & paste handling (fixes #293) 2020-01-10 15:51:22 +01:00
Gasim Gasimzada
f2346275ef
Extract Side Panel from App component (#295)
* Extract Side Panel from App component

* Refactor SidePanel component

- Remove unnecessary props (we are already passing appState as a prop)
- Remove unnecessary allback (we are already passing setState)
2020-01-10 18:00:19 +04:00
Gasim Gasimzada
35b5f6dd0d Fix a bug where clipboard object doesn't exist in Safari (#296) 2020-01-10 10:38:39 +01:00
David Luzar
2fb3cdd5e4
fix copy/paste regression (#291) 2020-01-09 18:43:24 +01:00
David Luzar
deee57314d
support export canvas to clipboard (#232) 2020-01-09 17:37:08 +01:00
Giovanni Giordano
1541428ab1 Clear active tool on escape (#286)
* Clear active tool on escape

* Remove console log
2020-01-09 16:30:18 +01:00
Gasim Gasimzada
862231da4f Make all operations on elements array immutable (#283)
* Make scene functions return array instead of mutate array

- Not all functions were changes; so the given argument was a new array to some

* Make data restoration functions immutable

- Make mutations in App component

* Make history actions immutable

* Fix an issue in change property that was causing elements to be removed

* mark elements params as readonly & remove unnecessary copying

* Make `clearSelection` return a new array

* Perform Id comparisons instead of reference comparisons in onDoubleClick

* Allow deselecting items with SHIFT key

- Refactor hit detection code

* Fix a bug in element selection and revert drag functionality

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-09 16:22:04 +01:00
Faustino Kialungila
1ea72e9134
Center element on paste (#248)
* Center element on paste

* paste on cursor position

* correctly center elements

* rename vars
2020-01-09 12:34:46 +01:00
Guillermo Peralta Scura
4a044d3ace Show move and resize cursors on hover (#280)
* Change to move cursor on hover

* Show resize handlers on hover
2020-01-08 18:56:35 -08:00
davidbonan
a16cd3a34f Add font size and font familly option for selection (#278)
* Add font size and font familly option for selection

* Allow copy font style

* More clearner method name

* Update options size and font-familly
2020-01-08 17:29:41 -08:00
Gasim Gasimzada
299e7e9099
Extract app and keys (#276)
* Extract app component from entrypoint (index)

- Use refs to refer to canvas and rough context
- Remove ReactDOM double rendering

* Extract keys and key related utils into their own module

* Move everything back to entrypoint
2020-01-09 02:00:59 +04:00
Gasim Gasimzada
36ce6a26e6 Make panels collapsible (#239)
* Make panels collapsible

- Add Panel component with collapse logic
- Use the component in all the necessary panel groups

* Remove unnecessary container from PanelCanvas

* Add "hide property" to Pane component to hide Panel contents using a prop

- Instead of doing conditional rendering, pass the condition to Panel as props

* Change collapse icon rotation for closed

- Use one icon and use CSS transforms to rotate it

* Remove unnecessary imports from PanelSelection
2020-01-08 13:06:36 -08:00
Timur Khazamov
e38f65dea7
Contenteditable wysiwyg (#274)
* Contenteditable wysiwyg

* Added comment about pasting multiline text
2020-01-09 02:04:53 +05:00
Timur Khazamov
1739540f00
Creating a text near the center of a shape should put it in the center (#270)
* Snap to element center

* Fixed typo

* Added comment

* Reduced threshold to 30

* Skip snapping if alt key is pressed

* Fixed creating text with shape tool
2020-01-09 01:09:09 +05:00
David Luzar
068dca604f
prevent commit on eslint warnings & fix lint (#268) 2020-01-08 20:08:43 +01:00
Timur Khazamov
37934c0f8b
Fixes text jumping on creation (#266)
* Fixes text jumping on creation

* Do not remove node on ESC

* Fixed typo
2020-01-09 00:06:25 +05:00
David Luzar
2122a9cf9f
fix for duplicating elements (#261) 2020-01-08 19:54:42 +01:00
David Luzar
58ec6567ae ensure alt+drag duplicates all selected elems (#258) 2020-01-08 09:09:02 -08:00
dwelle
08b804ac63 ensure only selected elems can be resized (fixes #256) 2020-01-08 18:06:04 +01:00
dwelle
009412a093 improve typing for handlerRectangles 2020-01-08 17:05:00 +01:00
Jeremy Scatigna
e7bf034fef duplicate element by alt dragging (#255) 2020-01-08 17:03:13 +01:00
Gasim Gasimzada
4b7eb2f04a
Add IDs to elements (#236)
* Add IDs to elements

- Move round rect function within the renderer

* Generate IDs using nanoid

* If element ID does not exist, add the ID during restoration
2020-01-07 23:49:39 +04:00
Timur Khazamov
2f9aa0e3ca Async loading of TwitterPicker (#246) 2020-01-07 10:37:22 -08:00
Timur Khazamov
2d66616e3f Fixed: Copy + Paste moves text inside rectangle #229 (#245) 2020-01-07 19:02:15 +01:00
Faustino Kialungila
846f427732 adding comments about diamond dimensions (#241) 2020-01-07 18:59:10 +01:00
Timur Khazamov
10955f8bb0 Wysiwyg text 2.0 (#238)
* Fixed cleaning handlers after cleanup

* Double click to edit text

* Preserve text styles on change
2020-01-07 09:21:05 -08:00
Timur Khazamov
ae982e9298 Revert "Save scene in URL (#220)" (#234)
This reverts commit db973c61e85347120c46adba6cb33e50d49988ba.
2020-01-07 07:18:20 -08:00
Gasim Gasimzada
829a65b8cb
Refactor Element Functions (#233)
* Remove `generatedraw` from element object

- Create a function that renders a single element
- Refactor rendering selected elements

* Replace getElementAbsoluteXY with getElementAbsoluteCoords
2020-01-07 19:04:52 +04:00
Gasim Gasimzada
85365e5bcb
Extract Sidebar panels into separate components (#230)
* Extract Sidebar panels into separate components

* Add Jest TS types
2020-01-07 15:06:22 +04:00
Faustino Kialungila
2fb5c4cd13 Add styles copy and pasting in the context menu (#227) 2020-01-06 23:04:15 -08:00
Christopher Chedeau
f2665408fc
Revert "Wysiwyg text (#200)" (#225)
This reverts commit abbc04df0e5a3b9265ada12a73bc9b8a810a329c.
2020-01-06 19:50:37 -08:00
Timur Khazamov
db973c61e8 Save scene in URL (#220)
Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-06 19:08:23 -08:00
Timur Khazamov
abbc04df0e Wysiwyg text (#200) 2020-01-06 19:03:05 -08:00
Anirban Sengupta
b2eb2807cc Use Ctrl instead of Cmd for keyboard shortcuts on Windows (#216)
Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-06 18:57:38 -08:00
Timur Khazamov
257f697a98 Context menu with some commands (#217) 2020-01-06 18:50:59 -08:00
Faustino Kialungila
9305a33dba
Copy and paste styles (#219)
* copy and paste styles

* save copied styles in memory
2020-01-06 23:22:48 +01:00
David Luzar
1443cf1cd5
implement shift+resize for all sides (#210) 2020-01-06 21:19:21 +01:00
Abhishek Kulshrestha
b12ea7de3e paste inside the viewport (#214) 2020-01-06 20:36:48 +01:00
Faustino Kialungila
5ade8987e4
Fixes pasting colors in color picker (#215)
* improve lozenge dimensions

* fix pasting colors in color picker input
2020-01-06 20:28:14 +01:00
Timur Khazamov
7bf0184499
Fixed ellipse hit test if sizes are negative (#205) 2020-01-06 23:06:54 +05:00
Gasim Gasimzada
d0365933a9
Extract history (#213)
* Extract History into its own module

* Encapsulate undo and redo actions within history

* Encapsulate clearing redo stack within History

* Add private access modifiers to scene history class member variables

* Remove duplicate files
2020-01-06 21:58:48 +04:00
Gasim Gasimzada
054669cfef
Extract components and shapes into their respective modules (#212) 2020-01-06 21:29:44 +04:00
Gasim Gasimzada
86a1c29eec
Extract scene functions to their respective modules (#208)
- Also, extract utilities into utils module -- capitalizeString, getDateTime, isInputLike
2020-01-06 20:24:54 +04:00
Gasim Gasimzada
01805f734d
Extract element functions into modules (#207) 2020-01-06 19:34:22 +04:00
Gasim Gasimzada
e3eef04e00 Move math and random files into their respective modules (#198)
* Move math and random files into their respective modules

- Move distanceBetweenPointAndSegment to math module
- Move LCG, randomSeed, and withCustomMathRandom to random module

* Add everything else back
2020-01-06 10:33:22 +01:00
Faustino Kialungila
b3667000e2
improve lozenge dimensions (#197) 2020-01-06 09:08:09 +01:00
Guillermo Peralta Scura
ea534dd535 Implement redo (#191) 2020-01-05 19:58:54 -08:00
Christopher Chedeau
3bbcb9cbdc
Improve Color Picker *2 (#195) 2020-01-05 19:57:50 -08:00
Christopher Chedeau
23cd62d148
Improve selection view (#192) 2020-01-05 19:11:35 -08:00
Paulo Menezes
d5c6dd49a2 Styles fix (#190)
* Styles improvements

* Default values when restore elements
2020-01-05 18:17:24 -08:00
Paulo Menezes
feefb14bf5 Double click to add text (#184)
* Double click to add text

* Remove duplicate code

* Add text improvements

* Cast element to text element
2020-01-05 17:38:19 -08:00
Paulo Menezes
f360c3cb33 Change styles (#179)
* Fill style

* Roughness, opacity and more styles

* Remove duplicated options

* Support diamonds

* Remove unused import

* Fix typo and remove react import
2020-01-05 15:37:24 -08:00