Commit Graph

187 Commits

Author SHA1 Message Date
Keavon Chambers
c205fec0d4 Move all icon SVG imports to the Icon component
This change also removes the need to specify the icon size.
2021-05-27 02:14:32 -07:00
Keavon Chambers
313a1dfc65 Standardize icon sizes and folder paths (closes #110) 2021-05-27 00:14:50 -07:00
Keavon Chambers
3fba54fad1 Fix popover positioning regression 2021-05-25 21:49:43 -07:00
Keavon Chambers
b3fa6347c2 Update the readme with new progress, details, and mockup screenshot 2021-05-24 00:33:09 -07:00
Keavon Chambers
d7478f5890 Update UI colors and alignment for consistency with the design mockup (#157)
Closes #111
2021-05-23 19:01:13 -07:00
TrueDoctor
a596ce0104 Major overhaul of input and communication systems
* Add input manager

* WIP lifetime hell

* Hell yeah, dark lifetime magic

* Replace events with actions in tools

* Fix borrow in GlobalEventHandler

* Fix typo in response-handler

* Distribute dispatch structure

* Add translation from events to actions

* Port default key actions to input_mapper

* Split actions macro

* Add handling for Ambiguous Mouse events

* Fix warnings and clippy lints

* Add actions macro

* WIP rework

* Add AsMessage macro

* Add implementation for derived enums

* Add macro implementation for top level message

* Add #[child] attribute to indicate derivation

* Replace some mentions of Actions and Responses with Message

* It compiles !!!

* Add functionality to some message handlers

* Add document rendering

* ICE

* Rework the previous code while keeping basic functionality

* Reduce parent-top-level macro args to only two

* Add workaround for ICE

* Fix cyclic reference in document.rs

* Make derive_transitive_child a bit more powerful

This addresses the todo that was left,
enabling arbitrary expressions to be passed as the last
parameter of a #[parent] attribute

* Adapt frontend message format

* Make responses use VecDeque

Our responses are a queue so we should use a queue type for them

* Move traits to sensible location

* Are we rectangle yet?

* Simplify, improve & document `derive_discriminant`

* Change `child` to `sub_discriminant`

This only applies to `ToDiscriminant`.
Code using `#[impl_message]` continues to work.

* Add docs for `derive_transitive_child`

* Finish docs and improve macros

The improvements are that impl_message now uses trait
resolution to obtain the parent's discriminant
and that derive_as_message now allows for non-unit
variants (which we don't use but it's nice to have,
just in case)

* Remove logging call

* Move files around and cleanup structure

* Fix proc macro doc tests

* Improve actions_fn!() macro

* Add ellipse tool

* Pass populated actions list to the input mapper

* Add KeyState bitvector

* Merge mouse buttons into "keyboard"

* Add macro for initialization of key mapper table

* Add syntactic sugar for the macro

* Implement mapping function

* Translate the remaining tools

* Fix shape tool

* Add keybindings for line and pen tool

* Fix modifiers

* Cleanup

* Add doc comments for the actions macro

* Fix formatting

* Rename MouseMove to PointerMove

* Add keybinds for tools

* Apply review suggestions

* Rename KeyMappings -> KeyMappingEntries

* Apply review changes

Co-authored-by: T0mstone <realt0mstone@gmail.com>
Co-authored-by: Paul Kupper <kupper.pa@gmail.com>
2021-05-23 01:26:24 +02:00
Keavon Chambers
56c1110800 Fix icon cursor hitbox below SVGs by setting images to display: block
Fixes #133
2021-05-21 14:28:11 -07:00
Keavon Chambers
c97cb9905c Rename and organize widget components to conform to design terminology (#132) 2021-05-21 13:10:32 -07:00
Keavon Chambers
c8eea1e4b1 Complete implementing popover system main features (#131)
* Make popover buttons open popover menus and add placeholder messages to all of them.
* Implement all directions for drawing, aligning, and edge-clamping popovers.
* Fix popovers so they are drawn outside their parent panel bounds and not clipped.
* Fix popover HTML to avoid nesting it inside a <button> element.
2021-05-21 12:22:30 -07:00
Keavon Chambers
4ed093bb4b Popovers now close when clicked out or mouse strays 100px outside bounds (#129) 2021-05-19 01:02:58 -07:00
akshay1992kalbhor
b23fa6d84f Make the show/hide layer buttons work (#118) (#127) 2021-05-18 18:55:05 +02:00
Keavon Chambers
81effa550f Move .eslintignore file rules into .eslintrc.js 2021-05-17 18:56:41 -07:00
Keavon Chambers
b20addaaaf Implement popover component and beginnings of color picker (#128) 2021-05-17 12:07:54 -07:00
Keavon Chambers
94485fe6cb Rename Panel Area -> Workspace and Dockable Panel -> Workspace Panel 2021-05-16 18:15:04 -07:00
Keavon Chambers
7fc6eddb1a Rename Footer Bar -> Status Bar 2021-05-16 18:04:26 -07:00
Keavon Chambers
1419f3bc6b Refactor type handling for response handler to fix dangerous casting (#126) 2021-05-15 01:02:33 -07:00
Keavon Chambers
a1b80db51f Upgrade TypeScript from 3.9 to 4.x 2021-05-14 23:53:55 -07:00
dependabot[bot]
9eba2ef782 Bump lodash from 4.17.20 to 4.17.21 in /client/web (#125)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-14 01:05:27 -07:00
Keavon Chambers
15459256b6 Update node packages 2021-05-14 00:58:15 -07:00
Keavon Chambers
c9e9f1acc0 Update favicon 2021-05-09 23:34:12 -07:00
Keavon Chambers
dc5b563ab2 Change debug colors for dark theme readability 2021-05-09 01:37:58 -07:00
Paul Kupper
57252fa828 Cancel in-progress drag with right click or escape key (#119) 2021-05-09 01:26:47 -07:00
RustyStriker
78ff81ffa8 Fix rect/hexagon not centering properly when holding alt (#121) 2021-05-09 00:23:13 -07:00
Keavon Chambers
722c777ba6 Change default draw color to orange, plus small fixes 2021-05-08 15:17:31 -07:00
Keavon Chambers
64f716e081 Rename human-readable layer types (#117) 2021-05-07 21:13:22 -07:00
Keavon Chambers
7ec0558cbd Plumb frontend for layer visibility toggle 2021-05-07 16:57:45 -07:00
Paul Kupper
1230e9d829 Improved Rectangle, Line and Shape Tools (#106) 2021-05-07 11:05:03 -07:00
Keavon Chambers
5bf0452b9c Fix "P" not switching to the Pen Tool 2021-05-07 10:42:09 -07:00
TrueDoctor
437251f90e Plumb layer panel (#107)
* WIP ExpandFolder handling

* Implement response parsing in typescript

* Update layer panel with list sent by wasm

* Add events for layer interaction

* Add proper default naming

* Fix displaying of the eye icon

* Attach path to LayerPanelEntry

* Fix lint issues

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-05-07 10:41:38 -07:00
Keavon Chambers
67abeadf32 Styling improvements to layers 2021-05-07 02:47:38 -07:00
Keavon Chambers
0ebd127333 Replace placeholder with eye icons for layers 2021-05-07 02:47:38 -07:00
Keavon Chambers
e448f908e3 Fix CSS extraneous space beneath icons 2021-05-07 02:47:38 -07:00
Paul Kupper
9c324edfe0 Fix ellipse tool behavior (#105) 2021-05-07 02:47:38 -07:00
T0mstone
47458115b8 Another round of polishing (#101)
* Implement basic refactorings

* Simplify some match statements

* Rename `ix` to `index`

If we're not going with a single letter name,
then a full word makes more sense.

* Rename `as_hex` to `to_hex`

`as_` implies lossless reinterpretation
while the function does a conversion that loses information

* Replace `for_each` with for loops

for loops are a lot easier to read and maintain.

* factor out x and y coords in Line::render

this is arguably more ergonomic

* Remove redundant `format!(format_args!())`
2021-05-07 02:47:38 -07:00
Paul Kupper
c9fea54ec5 Improve Ellipse Tool (#98) 2021-05-07 02:47:38 -07:00
Keavon Chambers
76eb944233 Add basic HTML for layers in the layer panel (#97) 2021-05-07 02:47:38 -07:00
TrueDoctor
721a442b75 Use serde to serialize responses (#96) 2021-05-07 02:47:38 -07:00
TrueDoctor
9ad5f4ce78 Add npm run lint-no-fix option (#93) 2021-05-07 02:47:38 -07:00
TrueDoctor
cb9d34c84d Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-07 02:47:38 -07:00
TrueDoctor
5f1620b008 Add caching to svg rendering (#94)
* Add documentation for functions in the document library
* Restructure backchannel
2021-05-07 02:47:38 -07:00
TrueDoctor
c540d781e1 Fix active tool selection (#92) 2021-05-07 02:47:38 -07:00
TrueDoctor
3ab5f6b7ef Add responses in document for layer system (#91) 2021-05-07 02:47:38 -07:00
Keavon Chambers
76a998dea4 Update architecture diagram around the Dispatcher 2021-05-07 02:47:38 -07:00
TrueDoctor
0b3a53c223 Split mouse events according to the button pressed (#90) 2021-05-07 02:47:38 -07:00
Keavon Chambers
825e6954df Rename tools: "Sample" to "Eyedropper", "Blur/Sharpen" to "Detail" (#87) 2021-05-07 02:47:38 -07:00
Keavon Chambers
e28b5575f7 Add design documentation about user input and masking 2021-05-07 02:47:38 -07:00
Keavon Chambers
46eb6b46ec Design tweaks to frontend components 2021-05-07 02:47:37 -07:00
0HyperCube
2500fc5053 Add preview for rectangles / shapes / lines (#85)
👀 Add preview for rectangles / shapes / lines
2021-05-07 02:47:37 -07:00
Edwin Cheng
6ddbc29614 Use fold instead of join in PolyLine rendering (#83)
* Use fold instead of join in PolyLine rendering

* Add test
2021-05-07 02:47:37 -07:00
Edwin Cheng
5991181f91 Implement Pen Tool (#79) 2021-05-07 02:47:37 -07:00