psychedelicious
db50525442
feat(ui): add CanvasModuleBase class to standardize canvas APIs
...
I did this ages ago but undid it for some reason, not sure why. Caught a few issues related to subscriptions.
2024-09-06 22:56:24 +10:00
psychedelicious
e8190f4389
feat(ui): move selected tool and tool buffer out of redux
...
This ephemeral state can live in the canvas classes.
2024-09-06 22:56:24 +10:00
psychedelicious
e5e59bf801
feat(ui): move ephemeral state into canvas classes
...
Things like `$lastCursorPos` are now created within the canvas drawing classes. Consumers in react access them via `useCanvasManager`.
For example:
```tsx
const canvasManager = useCanvasManager();
const lastCursorPos = useStore(canvasManager.stateApi.$lastCursorPos);
```
2024-09-06 22:56:24 +10:00
psychedelicious
dd7d4da5e3
feat(ui): normalize all actions to accept an entityIdentifier
...
Previously, canvas actions specific to an entity type only needed the id of that entity type. This allowed you to pass in the id of an entity of the wrong type.
All actions for a specific entity now take a full entity identifier, and the entity identifier type can be narrowed.
`selectEntity` and `selectEntityOrThrow` now need a full entity identifier, and narrow their return values to a specific entity type _if_ the entity identifier is narrowed.
The types for canvas entities are updated with optional type parameters for this purpose.
All reducers, actions and components have been updated.
2024-09-06 22:56:24 +10:00
psychedelicious
c5c8859463
feat(ui): add context menu to entity list
2024-09-06 22:56:24 +10:00
psychedelicious
60b3dc846e
fix(ui): lint & fix issues with adding regional ip adapters
2024-09-06 22:56:24 +10:00
psychedelicious
7f437adaba
feat(ui): duplicate entity
2024-09-06 22:56:24 +10:00
psychedelicious
cc7ae42baa
fix(ui): newly-added entities are selected
2024-09-06 22:56:24 +10:00
psychedelicious
fd38668f55
feat(ui): colored mask preview image
2024-09-06 22:56:24 +10:00
psychedelicious
772f0b80a1
feat(ui): disable most interaction while filtering
2024-09-06 22:56:24 +10:00
psychedelicious
fef1dddd50
feat(ui): tweak layout of staging area toolbar
2024-09-06 22:56:24 +10:00
psychedelicious
33b3268f83
fix(ui): staging area interaction scopes
2024-09-06 22:56:24 +10:00
psychedelicious
3dbd8212aa
fix(ui): staging area actions
2024-09-06 22:56:24 +10:00
psychedelicious
3694f337bc
tidy(ui): more cleanup
2024-09-06 22:56:24 +10:00
psychedelicious
664987f2aa
tidy(ui): "eye dropper" -> "color picker"
2024-09-06 22:56:24 +10:00
psychedelicious
9e391ec431
tidy(ui): regional guidance buttons
2024-09-06 22:56:24 +10:00
psychedelicious
06944b3ea7
feat(ui): update entity list menu
2024-09-06 22:56:24 +10:00
psychedelicious
f48b949aa8
feat(ui): add log debug button
2024-09-06 22:56:24 +10:00
psychedelicious
56d53b18f0
chore(ui): prettier
2024-09-06 22:56:24 +10:00
psychedelicious
20961215e7
chore(ui): eslint
2024-09-06 22:56:24 +10:00
psychedelicious
cf6751cc06
tidy(ui): remove unused stuff 3
2024-09-06 22:56:24 +10:00
psychedelicious
c2be63a811
tidy(ui): remove unused stuff
2024-09-06 22:56:24 +10:00
psychedelicious
c4a85cf1bf
feat(ui): refine canvas entity list items & menus
2024-09-06 22:56:24 +10:00
psychedelicious
cff80524a8
feat(ui): canvas layer preview, revised reactivity for adapters
2024-09-06 22:56:24 +10:00
psychedelicious
efb97c301e
feat(ui): transform tool ux
2024-09-06 22:56:24 +10:00
psychedelicious
cd865347eb
feat(ui): rough out canvas mode
2024-09-06 22:56:24 +10:00
psychedelicious
54ccb9846d
feat(ui): add canvas autosave checkbox
2024-09-06 22:56:24 +10:00
psychedelicious
2bae67cfe9
feat(ui): rework settings menu
2024-09-06 22:56:24 +10:00
psychedelicious
de8e8d9f68
feat(ui): no entities fallback buttons
2024-09-06 22:56:24 +10:00
psychedelicious
591e8162c1
feat(ui): remove "solid" background option
2024-09-06 22:56:24 +10:00
psychedelicious
018807d678
tidy(ui): abstract caching logic to module
2024-09-06 22:56:24 +10:00
psychedelicious
03ae65863c
tidy(ui): abstract stage logic into module
2024-09-06 22:56:24 +10:00
psychedelicious
3b7b6d6404
feat(ui): add entity group hiding
2024-09-06 22:56:24 +10:00
psychedelicious
e9171c80f6
feat(ui): move all caching out of redux
...
While we lose the benefit of the caches persisting across reloads, this is a much simpler way to handle things. If we need a persistent cache, we can explore it in the future.
2024-09-06 22:56:24 +10:00
psychedelicious
01ac4c3b3e
feat(ui): revise filter implementation
2024-09-06 22:56:24 +10:00
psychedelicious
f1fcc98a09
fix(ui): add button to delete inpaint mask
2024-09-06 22:56:24 +10:00
psychedelicious
b2823569f0
feat(ui): add contexts/hooks to access entity adapters directly
2024-09-06 22:56:24 +10:00
psychedelicious
318672be53
feat(ui) do not set $canvasManager until ready
2024-09-06 22:56:24 +10:00
psychedelicious
a1534b6503
feat(ui): allow multiple inpaint masks
...
This is easier than making it a nullable singleton
2024-09-06 22:56:24 +10:00
psychedelicious
85eb6ad616
feat(ui): iterate on filter UI, flow
2024-09-06 22:56:24 +10:00
psychedelicious
afa2da3d2d
feat(ui): better editable title
2024-09-06 22:56:24 +10:00
psychedelicious
0276dac38f
feat(ui): restore transparency effect for control layers
2024-09-06 22:56:24 +10:00
psychedelicious
5a3dd83167
feat(ui): use text cursor for entity title
2024-09-06 22:56:24 +10:00
psychedelicious
d6fec0a0df
feat(ui): layer opacity via caching
2024-09-06 22:56:24 +10:00
psychedelicious
37dc7ee595
feat(ui): reset view fits all visible objects
2024-09-06 22:56:24 +10:00
psychedelicious
6d79dc61d2
fix(ui): rerenders when changing canvas scale
2024-09-06 22:56:24 +10:00
psychedelicious
4c66a0dcd0
feat(ui): revise app layout strategy, add interaction scopes for hotkeys
2024-09-06 22:56:24 +10:00
psychedelicious
82b1d8dab8
feat(ui): move socket event handling out of redux
...
Download events and invocation status events (including progress images) are very frequent. There's no real need for these to pass through redux. Handling them outside redux is a significant performance win - far fewer store subscription calls, far fewer trips through middleware.
All event handling is moved outside middleware. Cleanup of unused actions and listeners to follow.
2024-09-06 22:56:24 +10:00
psychedelicious
5dda364b2c
fix(ui): rebase conflicts
2024-09-06 22:56:24 +10:00
psychedelicious
a0d644ac42
feat(ui): add canvas background style
2024-09-06 22:56:24 +10:00