Commit Graph

3431 Commits

Author SHA1 Message Date
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
davidbonan a73e4e28aa Add contributing md (#279)
* Add contributing setup file

* Add sandbox method
2020-01-09 12:06:24 +01:00
Christopher Chedeau 2553d10d34
Yet another awesome testimonial (#282) 2020-01-08 20:49:42 -08:00
Christopher Chedeau 77400c7b70
One more testimonial (#281) 2020-01-08 19:58:19 -08: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
Christopher Chedeau 556843d9a2
Adding open collective sponsor (#275)
I just created an open collective for the project.
2020-01-08 13:04:13 -08: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 7f7f51f70b
remove static/ from git & ignore (#265) 2020-01-08 19:18:17 +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 db973c61e8.
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 abbc04df0e.
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
Ben Kraft 9fe3fe5091 Fix URL in README (#222)
Looks like excalidraw.com is an SSL error, but www.excalidraw.com
works great.  It's possible the github pages config could be changed
to make both work, but this seemed easier to fix.
2020-01-06 15:42:37 -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
Christopher Chedeau 8a91f4fe7b
One more testimonial (#221) 2020-01-06 13:57:04 -08: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