Commit Graph
397 Commits
Author SHA1 Message Date
Keavon Chambers aad4aab383 Add a temporary solution to non-Latin keyboards being unusable 2021-12-23 13:29:02 -08:00
0HyperCubeandKeavon Chambers 3a56476799 Fix new document position (#421)
* Fix new document pos

* All new documents are centered before deserialization

* Move constructors to the top of to block

* Fix merge (moving coe around is a bad idea)

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-23 04:02:22 -08:00
Oliver Davies 15a654b57c Move layer selection logic from vue to editor (#410)
* Add vue selectLayer(layer, ctrl, shift)

* Individual selection working, range fill next

* Frontend package-lock.json seems apparently needs to be pushed. Weird.

* Selection working with ctrl, shift from editor. Still some bugs to sqaush with folder nesting.

* WIP resolving nesting folders issues

* Changed comparison approach, handling corner cases now

* Fully working selection.

* Reverted changes to package-lock.json

* Removed unused code

* Resolved ctrl click not behaving similar to windows

* Slight comment clarification

* Double checked a windows behavior and corrected. Changed last_selected name.

* Simplified if statement slightly.

* Made the naming clearer regarding UUIDs versus indices

* Clarified comments further

* Minor comment fixup

* Implemented suggestions, clarified comments

* Resolved todo regarding clearing selection when ctrl not pressed

* Ensure we only push responses when needed

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Reviewed by: @TrueDoctor <3
2021-12-22 17:45:14 -08:00
Keavon Chambers 9020dd7428 Make the Pen Tool confirm when leaving the tool 2021-12-21 18:48:21 -08:00
Keavon Chambers 8f100b4f0a Skip the web page close confirmation when crashed or in debug mode 2021-12-21 18:43:02 -08:00
SonyStoneandKeavon Chambers 3b7a5548ae Change mouse to pointer events (#403)
* Change mouse to pointer events

* Add `npm start` command

* Change all mouse to pointer events;
Fix `touch-action: none;`

* Merge with master

* Fix middle mouse click

* Remove console.log

* Delete the empty line

* Re-add middle click auto-scroll blocking

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-21 03:37:58 -08:00
Keavon Chambers 583e0e87bc Set Cargo.toml versions to 0.0.0 to avoid version confusion 2021-12-20 14:59:47 -08:00
mfish33andKeavon Chambers 96a211f9fd Fix undefined behavior in the editor wasm bridge (#414)
* removed possible undifined behavior

* changed naming of Editor -> JsEditorHandle

* fix rust formatting

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-20 17:55:31 -05:00
Keavon Chambers cc0a733f46 Upgrade node packages (#413) 2021-12-20 13:09:24 -08:00
Keavon Chambers 6b26976778 Skip cargo-about in CI to save 5 minutes (#409) 2021-12-20 02:22:19 -08:00
448e72fe02 Rework wasm initialization and reduce global state (#379)
* wasm: do the async initialization only once

This allows the rest of the app to access wasm synchronously.

This allows removing of a global.

* provide the wasm via vue provide/inject.

There's still code directly accessing the wasm. That will be changed later.

* MenuBarInput: use injected wasm instead of the global instance

* Let the App handle event listeners

* move stateful modules into state/

* state/fullscreen: create per instance

* App: load the initial document list on mount.
This got lost a few commits ago. Now it's back.

* state/dialog: create per instance

* util/input: remove dependency on global dialog instance

* state/documents: create per instance

* reponse-handler: move into EditorWasm

* comingSoon: move into dialog

* wasm: allow instantiating multiple editors

* input handlers: do not look at canvases outside the mounted App

* input: listen on the container instead of the window when possible

* - removed proxy from wasm-loader
- integrated with js-dispatcher
- state functions to classes
- integrated some upstream changes

* fix errors caused by merge

* Getting closer:
- added global state to track all instances
- fix fullscreen close trigger
- wasm-loader is statefull
- panic across instanes

* - fix outline while using editor
- removed circular import rule
- added editorInstance to js message constructor

* - changed input handler to a class
- still need a better way of handeling it in App.vue

* - fixed single instance of inputManager to weakmap

* - fix no-explicit-any in a few places
- removed global state from input.ts

* simplified two long lines

* removed global state

* removed $data from App

* add mut self to functions in api.rs

* Update Workspace.vue

remove outdated import

* fixed missing import

* Changes throughout code review; note this causes some bugs to be fixed in a later commit

* PR review round 1

* - fix coming soon bugs
- changed folder structure

* moved declaration to .d.ts

* - changed from classes to functions
- moved decs back to app.vue

* removed need to export js function to rust

* changed folder structure

* fixed indentation breaking multiline strings

* Fix eslint rule to whitelist @/../

* Simplify strip-indents implementation

* replace type assertions with better annotations or proper runtime checks

* Small tweaks and code rearranging improvements after second code review pass

* maybe fix mouse events

* Add back preventDefault for mouse scroll

* code review round 2

* Comment improvements

* -removed runtime checks
- fixed layers not showing

* - extened proxy to cover classes
- stopped multiple panics from logging
- Stop wasm-bindgen from mut ref counting our struct

* cleaned up messageConstructors exports

* Fix input and fullscreen regressions

Co-authored-by: Max Fisher <maxmfishernj@gmail.com>
Co-authored-by: mfish33 <32677537+mfish33@users.noreply.github.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-19 22:37:19 -08:00
Keavon Chambers 37be856884 Make deployment switch branch from HEAD to master 2021-12-16 03:21:52 -08:00
Keavon Chambers ab049db98f Add the Help > About Graphite dialog with build info
Closes #404
2021-12-16 02:49:36 -08:00
Keavon Chambers d07eab029a Clean up JS message dispatcher and fix a bug thrown on empty-data messages
Fixes bug in #394
2021-12-16 02:49:12 -08:00
Keavon Chambers 50ae24e478 Fix floating menus above scrollable content; they now respect content's preferred width at edges 2021-12-15 04:05:07 -08:00
Keavon Chambers fbefcb614b Update the project readme 2021-12-06 16:53:44 -08:00
mfish33 d3767319e3 Fix blend mode serialization and de-serialization to match (#400) 2021-12-06 15:39:22 -08:00
Keavon Chambers 2255619a21 Fix bug in last commit that broke when scrolling on SVG elements 2021-12-06 02:55:05 -08:00
Keavon Chambers ee02b124ce Enable vertical scroll wheel on horizontal scrollable containers 2021-12-05 20:05:45 -08:00
Keavon Chambers 267ad207f9 Switch CI and CD scripts to use npm ci instead of npm install 2021-12-05 19:22:57 -08:00
Keavon Chambers 63e9552b4d Fix ESLint configuration triggering an error in the ESLint VS Code extension 2021-12-05 19:22:56 -08:00
mfish33 057c180f41 Change responses to use classes instead of interfaces (#394)
* ability to mark an open document as unsaved

* unsaved detection now being triggered based on layer tree height

* Changed responses to use classes instead of interfaces

* - rust implementation of unsaved markers
- upgraded eslint

* updated eslint in package.json

* - Renamed GetOpenDocumentsList -> UpdateOpenDocumentsList
- is not -> was not

* changed hash to current identifier to better reflect its meaning

* resolve some merge conflicts

* removed console.log statement leftover from debuging

* - changed Response to jsMessage
- split files
- Array<> -> []

* -remove path from UpdateLayer

* - remove unused if statements

* - comment for reflect-metadata
- registerJsMessageHandler -> subscribeJsMessage
- readonly message properties
- fixed binding filename and comment
- toRgb -> toRgba

* - newOpacity -> transformer
- added comments

* MessageMaker -> messageMaker
2021-12-05 19:14:16 -08:00
Keavon Chambers ca4faabd5c CSS editor layout fixes and scrolling
Major CSS improvements to layout at small screen sizes. By adding min-width: 0 and min-height: 0 on the nested display: flex structure, widgets no longer coerce the whole layout into large-scale resizing. Scrollbars are now used to allow correct overflowing of the tab bar (fixes #177), Document Panel options bar, and tool shelf. Improvements to responsive resizing are also included for viewing the UI correctly on mobile now. Additional small fixes to styling of widget colors and corner roundness. The ruler has been darkened one shade to improve text contrast and aesthetics.
2021-12-04 22:30:07 -08:00
mfish33 8339e317ea Confirm when the browser window is closed and there is unsaved work (#397)
* - browser confirmation on page exit
- prompt to save a document when closed will only trigger when unsaved

* add back select document for close prompt

* - name -> displayname
- add preventPropigation to middle click
2021-12-04 16:49:52 -08:00
mfish33 e78b9409c6 Display Asterisk on Unsaved Documents (#392)
* ability to mark an open document as unsaved

* unsaved detection now being triggered based on layer tree height

* - rust implementation of unsaved markers
- upgraded eslint

* updated eslint in package.json

* - Renamed GetOpenDocumentsList -> UpdateOpenDocumentsList
- is not -> was not

* changed hash to current identifier to better reflect its meaning

* resolve some merge conflicts

* removed console.log statement leftover from debuging
2021-11-30 10:06:07 -08:00
Keavon Chambers 027524833b Switch to Node.js 16 LTS, upgrade TypeScript, ESLint, and other dependencies (#395)
* Upgrade TypeScript, ESLint, and other dependencies

This also cleans up various other files where newer ESLint rules complained

* Set CI and CD to use Node.js version 16

* Small tweak

* Fix CD version printing

* Add nvm version for Cloudflare Pages
2021-11-29 03:32:09 -08:00
0HyperCube bf1706b698 Layer snapping
* Test snapping

* Snap new shapes

* Fix snapping when zoomed

* Refactor to use viewport bounds

* Reduce snap tolerance to 3

* Snap line and path tool

* Add disable snapping and refactor

* new_snap -> new status

* Rearrange import

* Cleanup

* Fix incorrect variable name

* Store snap data in tool data
2021-11-24 16:50:58 +00:00
Keavon Chambers 7cb80359df Upgrade rustfmt to 2021 edition 2021-11-02 20:08:39 -07:00
Keavon Chambers 36093f4e40 Update various node dependencies (#391) 2021-11-01 02:57:08 -07:00
Keavon Chambers 31ca5fd533 Update notice for Safari users that BigInt64Array is now supported in 15 (#390) 2021-11-01 01:16:19 -07:00
Keavon Chambers c679e8fdc2 Replace vue-svg-loader dependency with simple JS file (fixes a security alert) (#389) 2021-11-01 00:49:44 -07:00
Keavon ChambersandDennis Kobert a6d1a2dd4b Upgrade Graphite to Rust 2021 edition; upgrade dependencies (#387)
* Upgrade Graphite to Rust 2021 edition; upgrade dependencies

* Fix CI

* Move changes to the project Cargo.tomls

* Remove unnecessary 2021 edition upgrade tweak

* Show version number before and after updating rustc

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2021-11-01 00:00:22 -07:00
0HyperCube a19c4be0b6 Implement interactive scaling/motion of rulers (#306) (#385)
* Update ruler origin

* Fix ruler text

* Handle zoom

* Remove log

* Fix origin
2021-10-25 02:03:14 -07:00
Porrith Suong 639862b2bc id-based-docs (#376)
* Added some notes on what ds to use for the documents.

* Added a separate list of ids to associate ID to doc. Looks up all
documents by id to retrieve an index via linear search.

* Fixed function name.

* Removed id recycling, replaced document vector with hashmap.

* Uses the same logic for PrevDocument in closing
2021-09-20 07:25:27 +02:00
Christian Authmann 036c504ab0 Fix deployment script (#380) 2021-09-19 12:20:40 -07:00
Christian Authmann 8021899b19 Do not silently install cargo-about. (#377) 2021-09-19 16:58:04 +02:00
Christian Authmann f041fb9f3e Add proper type annotations for panicProxy (#378) 2021-09-13 15:39:18 -07:00
Keavon ChambersandDennis Kobert 7822151fc7 Hook up layer tree structure with frontend (#372)
* Hook up layer tree structure with frontend (decoding and Vue are WIP)

* Fix off by one error

* Avoid leaking memory

* Parse layer structure into list of layers

* Fix thumbnail updates

* Correctly popagate deletions

* Fix selection state in layer tree

* Respect expansion during root serialization

* Allow expanding of subfolders

* Fix arrow direction

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2021-09-11 17:15:51 -07:00
Keavon Chambers cece89a9eb Add an intentional panic for debug 2021-09-11 09:46:55 -07:00
Keavon Chambers 06cf133324 Change scrollbar drag color 2021-09-11 08:17:05 -07:00
TrueDoctorandKeavon Chambers 1f794d374a Add function to serialize the layer structure to a 1D array (#363)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-09-07 00:20:56 -07:00
Keavon Chambers b0cadbc439 Additional improvements to license notice formatting 2021-09-06 23:55:51 -07:00
Keavon Chambers b66607e4a2 Auto-generate third-party license notices (#370)
Closes #294
Closes #371
2021-09-06 06:57:35 -07:00
Keavon Chambers 4f84c706f0 Upgrade wasm-pack to 0.10.1 (#369)
Closes #167
2021-09-05 18:43:16 -07:00
Keavon Chambers 0a592b1491 Postpone 0.1 launch in readme from Aug to early Sept 2021-09-01 06:18:43 -07:00
Keavon Chambers e192b0d8e0 Reorganize and clean up the WASM wrapper 2021-09-01 06:10:05 -07:00
Keavon Chambers 636e5d8280 Improve and clean up panic dialog code and wasm wrapper (#368)
Part of #357
2021-09-01 04:09:23 -07:00
Keavon Chambers 51c2494d43 Show a crash dialog when the editor panics (#362)
* Show a crash dialog when the editor panics

Closes #357

* Suppress console usage lints

* Proxy cleanup and comments
2021-08-31 18:34:19 -07:00
dependabot[bot] 1999905221 Bump tar from 5.0.7 to 5.0.11 in /frontend (#367)
Bumps [tar](https://github.com/npm/node-tar) from 5.0.7 to 5.0.11.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v5.0.7...v5.0.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-31 17:31:51 -07:00
Keavon Chambers 9af1d9a7f7 Additional WASM translation layer cleanup 2021-08-31 01:40:11 -07:00