Commit Graph
17 Commits
Author SHA1 Message Date
Gasim GasimzadaandTimur Khazamov ba8bc10431 Remove element shape object from local storage save (#336) 2020-01-12 15:08:47 +05:00
Gasim GasimzadaandChristopher Chedeau 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
Gasim GasimzadaandChristopher Chedeau 76467073f2 Use innerText instead of innerHTML when measuring text (#312) 2020-01-11 14:25:33 -08:00
Gasim GasimzadaandChristopher Chedeau 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
Gasim GasimzadaandGitHub 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 GasimzadaandDavid Luzar 35b5f6dd0d Fix a bug where clipboard object doesn't exist in Safari (#296) 2020-01-10 10:38:39 +01:00
Gasim GasimzadaandDavid Luzar 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
Gasim GasimzadaandGitHub 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 GasimzadaandChristopher Chedeau 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
Gasim GasimzadaandGitHub 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
Gasim GasimzadaandGitHub 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 GasimzadaandGitHub 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
Gasim GasimzadaandGitHub 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 GasimzadaandGitHub 054669cfef Extract components and shapes into their respective modules (#212) 2020-01-06 21:29:44 +04:00
Gasim GasimzadaandGitHub 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 GasimzadaandGitHub 01805f734d Extract element functions into modules (#207) 2020-01-06 19:34:22 +04:00
Gasim GasimzadaandFaustino Kialungila 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