psychedelicious
a37592f9f3
chore(ui): lint
2024-09-08 21:55:26 +10:00
psychedelicious
60d4514fd8
tidy(ui): CanvasSettingsAutoSaveCheckbox
2024-09-08 21:55:26 +10:00
psychedelicious
9709da901c
feat(ui): add snap & autosave to HUD
2024-09-08 21:55:26 +10:00
psychedelicious
44df59e9e9
feat(ui): snap to grid
...
Snap can be any of off, 8px or 64px.
The snap is used when moving and transforming entities.
When transforming and locking aspect ratio, the snap is ignored entirely, because we'd change the aspect ratio if we forced the snap.
Otherwise, if we are not locking aspect ratio (e.g. the user is holding shift), we snap the transform anchors to the grid.
2024-09-08 21:55:26 +10:00
psychedelicious
f024cb1d05
chore(ui): lint
2024-09-08 21:55:26 +10:00
psychedelicious
3d6d5affb5
tidy(ui): organise canvas entity classes
2024-09-08 21:55:26 +10:00
psychedelicious
d7cde0fc23
feat(ui): add spandrel filter
2024-09-08 21:55:26 +10:00
psychedelicious
5ab4818eb6
tidy(ui): rename canvas session slice to staging area slice
2024-09-08 21:55:26 +10:00
psychedelicious
6f4d3d0395
fix(ui): do not merge disabled layers when merging visible
2024-09-08 06:16:53 +10:00
psychedelicious
2a1bc3e044
fix(ui): do not allow transform when entity is "empty"
2024-09-08 06:16:53 +10:00
psychedelicious
464603e0ea
feat(ui): rework control adapter/ip adapter creation handling
...
- Add selectors to get the default control adapter and ip adapter with model, preferring controlnet over t2i adapter for model
- Add hooks to add each entity type, using the defaults
- Add hooks to add prompts/ip adapters to a regional guidance layer
- Use the defaults in other places where we add control layers or ip adapters (e.g. dnd-triggered entity creation)
2024-09-08 06:16:53 +10:00
psychedelicious
670e054fe0
feat(ui): refactor filter module
...
- Each entity gets its own `CanvasEntityFilterer`
- Add auto-preview feature to filter, debounced by 1000ms leading + trailing
- Fix flash when preview updates
2024-09-08 06:16:53 +10:00
psychedelicious
bf484bc90e
feat(ui): tweak padding on entity group header
2024-09-06 22:56:24 +10:00
psychedelicious
fc58d34d25
feat(ui): use plurals for entity group header hidden tooltip
2024-09-06 22:56:24 +10:00
psychedelicious
c15793b794
feat(ui): move delete entity button down to entity list item
2024-09-06 22:56:24 +10:00
psychedelicious
1e32be827e
feat(ui): add fit bbox to layers
2024-09-06 22:56:24 +10:00
psychedelicious
8422908b70
fix(ui): tidy incorrect component name
2024-09-06 22:56:24 +10:00
psychedelicious
eab1f50a6f
feat(ui): do not allow transform, filter or merge while staging
2024-09-06 22:56:24 +10:00
psychedelicious
28385d06d1
feat(ui): filter UI layout
2024-09-06 22:56:24 +10:00
psychedelicious
12e6f1be89
feat(ui): revised entity list action bars
...
- Global action bar on top
- Selected Entity action bar below
2024-09-06 22:56:24 +10:00
psychedelicious
e1a66e22e9
feat(ui): fit bbox to stage on canvas reset
2024-09-06 22:56:24 +10:00
psychedelicious
b3569e5c0d
chore(ui): lint
2024-09-06 22:56:24 +10:00
psychedelicious
ce9f17726f
feat(ui): restore aspect ratio preview component
2024-09-06 22:56:24 +10:00
psychedelicious
b1e85f8b60
chore(ui): lint
2024-09-06 22:56:24 +10:00
psychedelicious
aa418f0aba
feat(ui): iterate on state flow and rendering 2
...
- Rely on redux + reselect more
- Remove all nanostores that simply "mirrored" redux state in favor of direct subscriptions to redux store
- Add abstractions for creating redux subs and running selectors
- Add `initialize` method to CanvasModuleBase, for post-instantiation tasks
- Reduce local caching of state in modules to a minimum
2024-09-06 22:56:24 +10:00
psychedelicious
ed4b5dfac3
feat(ui): slight layout change for staging area toolbar
2024-09-06 22:56:24 +10:00
psychedelicious
b189937bc9
feat(ui): clean up adapter API
2024-09-06 22:56:24 +10:00
psychedelicious
e176e48fa3
feat(ui): streamlined state flow
2024-09-06 22:56:24 +10:00
psychedelicious
4e5f4dadf2
feat(ui): abstract out CanvasEntityAdapterBase
...
Things were getting to complex to reason about & classes a bit complicated. Trying to simplify...
2024-09-06 22:56:24 +10:00
psychedelicious
1c15c2cb03
feat(ui): revise entity rendering flow
2024-09-06 22:56:24 +10:00
psychedelicious
f92730080c
feat(ui): prevent layer interactions when transforming or filtering
2024-09-06 22:56:24 +10:00
psychedelicious
f83b500645
feat(ui): add compositeMaskedRegions setting
2024-09-06 22:56:24 +10:00
psychedelicious
1349e73a1a
tidy(ui): merge tool slice, sendToCanvas into settings slice
2024-09-06 22:56:24 +10:00
psychedelicious
a5a077964e
feat(ui): tool buttons are only disabled when currently selected
2024-09-06 22:56:24 +10:00
psychedelicious
eb09253b4e
feat(ui): tidy stateApi atoms & add docstrings
2024-09-06 22:56:24 +10:00
psychedelicious
d81cd050ef
feat(ui): streamline manager -> react transform interface
2024-09-06 22:56:24 +10:00
psychedelicious
437ea1109b
feat(ui): tweak bookmark verbiage
2024-09-06 22:56:24 +10:00
psychedelicious
95177a7389
feat(ui): move transformer state to nanostores
...
This provides some free reactivity for this canvas-manager-managed state.
2024-09-06 22:56:24 +10:00
psychedelicious
d50ee14d0b
feat(ui): add fit to bbox as transform helper
2024-09-06 22:56:24 +10:00
psychedelicious
e3b6ad7076
fix(ui): disable merge visible when 1 or fewer layers of type
2024-09-06 22:56:24 +10:00
psychedelicious
db99b773bc
fix(ui): edge cases in quick switch, simpler logic
2024-09-06 22:56:24 +10:00
psychedelicious
ea062ab01a
feat(ui): add bookmark for quick switch
2024-09-06 22:56:24 +10:00
psychedelicious
f49cee976d
feat(ui): "IP Adapter" -> "Global IP Adapter"
2024-09-06 22:56:24 +10:00
psychedelicious
c246fc98b3
tidy(ui): canvas hotkey hooks
2024-09-06 22:56:24 +10:00
psychedelicious
45e155d392
feat(ui): add alt+[ and alt+] hotkeys to cycle through layers
2024-09-06 22:56:24 +10:00
psychedelicious
c82e17916f
feat(ui): add layer quick switch
...
Q toggles between the last-selected layers.
2024-09-06 22:56:24 +10:00
psychedelicious
d9359bac23
feat(ui): bbox hotkey is c
2024-09-06 22:56:24 +10:00
psychedelicious
dd8b25260d
feat(ui): brush & eraser width ui/ux
...
Use same pattern as canvas scale & opacity sliders w/ scaled slider values for precision at low values.
2024-09-06 22:56:24 +10:00
psychedelicious
4f76f5f848
tidy(ui): canvas scale & entity opacity sliders
2024-09-06 22:56:24 +10:00
psychedelicious
3cdc5d869f
feat(ui): hotkeys for brush/eraser size
2024-09-06 22:56:24 +10:00