Commit Graph

987 Commits

Author SHA1 Message Date
Keavon Chambers cdcddf176b 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 5016fde231 Standardize icon sizes and folder paths (closes #110) 2021-05-27 00:14:50 -07:00
Keavon Chambers 9930ea2e13 Fix popover positioning regression 2021-05-25 21:49:43 -07:00
Keavon Chambers 0ed6f24664 Update the readme with new progress, details, and mockup screenshot 2021-05-24 00:33:09 -07:00
Keavon Chambers 34efac990b Update UI colors and alignment for consistency with the design mockup (#157)
Closes #111
2021-05-23 19:01:13 -07:00
TrueDoctor 4b19a459b7 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 c08b2d4b31 Fix icon cursor hitbox below SVGs by setting images to display: block
Fixes #133
2021-05-21 14:28:11 -07:00
Keavon Chambers 3b0762ef18 Rename and organize widget components to conform to design terminology (#132) 2021-05-21 13:10:32 -07:00
Keavon Chambers b9248b828c 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 267331728d Popovers now close when clicked out or mouse strays 100px outside bounds (#129) 2021-05-19 01:02:58 -07:00
akshay1992kalbhor a5bea53db2 Make the show/hide layer buttons work (#118) (#127) 2021-05-18 22:25:05 +05:30
Keavon Chambers 564560c7dd Move .eslintignore file rules into .eslintrc.js 2021-05-17 18:56:41 -07:00
Keavon Chambers a439b27d2b Implement popover component and beginnings of color picker (#128) 2021-05-17 12:07:54 -07:00
Keavon Chambers b7b329c85a Rename Panel Area -> Workspace and Dockable Panel -> Workspace Panel 2021-05-16 18:15:04 -07:00
Keavon Chambers 11e408523a Rename Footer Bar -> Status Bar 2021-05-16 18:04:26 -07:00
Keavon Chambers 5dc838079b Refactor type handling for response handler to fix dangerous casting (#126) 2021-05-15 01:02:33 -07:00
Keavon Chambers a28cb314aa Upgrade TypeScript from 3.9 to 4.x 2021-05-14 23:53:55 -07:00
dependabot[bot] 037aa90065 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 cba56e1dec Update node packages 2021-05-14 00:58:15 -07:00
Keavon Chambers 2fbdafb157 Update favicon 2021-05-09 23:34:12 -07:00
Keavon Chambers 935daa3a7a Change debug colors for dark theme readability 2021-05-09 01:37:58 -07:00
Paul Kupper 52bebfad25 Cancel in-progress drag with right click or escape key (#119) 2021-05-09 10:26:47 +02:00
RustyStriker 3522969fec Fix rect/hexagon not centering properly when holding alt (#121) 2021-05-09 10:23:13 +03:00
Keavon Chambers b91c416611 Change default draw color to orange, plus small fixes 2021-05-08 15:16:59 -07:00
Keavon Chambers 34036e42ee Rename human-readable layer types (#117) 2021-05-07 21:13:22 -07:00
Keavon Chambers 4975a4e737 Plumb frontend for layer visibility toggle 2021-05-07 16:57:45 -07:00
Paul Kupper 14e61d2328 Improved Rectangle, Line and Shape Tools (#106) 2021-05-07 20:05:03 +02:00
Keavon Chambers 2650b2c998 Fix "P" not switching to the Pen Tool 2021-05-07 01:51:15 -07:00
TrueDoctor 6adb984f2d 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:17:46 +02:00
Keavon Chambers 76d3e8cde4 Styling improvements to layers 2021-05-06 01:05:10 -07:00
Keavon Chambers c74575724c Replace placeholder with eye icons for layers 2021-05-05 22:09:50 -07:00
Keavon Chambers 6dc8c91578 Fix CSS extraneous space beneath icons 2021-05-05 22:08:58 -07:00
Paul Kupper b4ad274fd8 Fix ellipse tool behavior (#105) 2021-05-04 22:25:25 +02:00
T0mstone 3431128e66 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-04 15:08:24 +02:00
Paul Kupper 0ff9e5ff49 Improve Ellipse Tool (#98) 2021-05-04 10:53:00 +02:00
Keavon Chambers 4ffb836673 Add basic HTML for layers in the layer panel (#97) 2021-05-02 13:55:22 -07:00
TrueDoctor f8ebff033d Use serde to serialize responses (#96) 2021-05-02 22:46:47 +02:00
TrueDoctor f10a3c63d1 Add npm run lint-no-fix option (#93) 2021-05-02 21:27:44 +02:00
TrueDoctor fc10575dfa Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-02 21:21:39 +02:00
TrueDoctor 457c465342 Add caching to svg rendering (#94)
* Add documentation for functions in the document library
* Restructure backchannel
2021-05-02 20:34:23 +02:00
TrueDoctor 8d683a4162 Fix active tool selection (#92) 2021-05-02 08:30:51 +02:00
TrueDoctor f05cb30acb Add responses in document for layer system (#91) 2021-05-02 00:57:47 +02:00
Keavon Chambers b27eaf3fae Update architecture diagram around the Dispatcher 2021-05-01 13:36:05 -07:00
TrueDoctor c5506c71b3 Split mouse events according to the button pressed (#90) 2021-05-01 21:09:13 +02:00
Keavon Chambers 3b32184906 Rename tools: "Sample" to "Eyedropper", "Blur/Sharpen" to "Detail" (#87) 2021-04-29 00:50:55 -07:00
Keavon Chambers b6ce559d86 Add design documentation about user input and masking 2021-04-29 00:41:38 -07:00
Keavon Chambers f01e20571a Design tweaks to frontend components 2021-04-29 00:32:25 -07:00
0HyperCube 164e9f9729 Add preview for rectangles / shapes / lines (#85)
👀 Add preview for rectangles / shapes / lines
2021-04-24 22:18:48 +01:00
Edwin Cheng 8a981efd1d Use fold instead of join in PolyLine rendering (#83)
* Use fold instead of join in PolyLine rendering

* Add test
2021-04-23 03:34:11 +08:00
Edwin Cheng e40727e914 Implement Pen Tool (#79) 2021-04-23 00:12:24 +08:00