feat(ui): add bookmark for quick switch

This commit is contained in:
psychedelicious
2024-09-01 22:34:05 +10:00
parent 0c81a435f4
commit ea062ab01a
8 changed files with 132 additions and 36 deletions

View File

@@ -84,6 +84,7 @@ const getRGMaskFill = (state: CanvasState): RgbColor => {
const initialState: CanvasState = {
_version: 3,
selectedEntityIdentifier: null,
quickSwitchEntityIdentifier: null,
rasterLayers: {
isHidden: false,
entities: [],
@@ -791,6 +792,22 @@ export const canvasSlice = createSlice({
}
state.selectedEntityIdentifier = entityIdentifier;
},
entityIsBookmarkedForQuickSwitchChanged: (
state,
action: PayloadAction<{ entityIdentifier: CanvasEntityIdentifier | null }>
) => {
const { entityIdentifier } = action.payload;
if (!entityIdentifier) {
state.quickSwitchEntityIdentifier = null;
return;
}
const entity = selectEntity(state, entityIdentifier);
if (!entity) {
// Cannot select a non-existent entity
return;
}
state.quickSwitchEntityIdentifier = entityIdentifier;
},
entityNameChanged: (state, action: PayloadAction<EntityIdentifierPayload<{ name: string | null }>>) => {
const { entityIdentifier, name } = action.payload;
const entity = selectEntity(state, entityIdentifier);
@@ -1105,6 +1122,7 @@ export const {
canvasClearHistory,
// All entities
entitySelected,
entityIsBookmarkedForQuickSwitchChanged,
entityNameChanged,
entityReset,
entityIsEnabledToggled,

View File

@@ -181,6 +181,11 @@ export const selectSelectedEntityIdentifier = createSelector(
(canvas) => canvas.selectedEntityIdentifier
);
export const selectQuickSwitchEntityIdentifier = createSelector(
selectCanvasSlice,
(canvas) => canvas.quickSwitchEntityIdentifier
);
export const selectIsSelectedEntityDrawable = createSelector(
selectSelectedEntityIdentifier,
(selectedEntityIdentifier) => {

View File

@@ -688,6 +688,7 @@ export type StagingAreaImage = {
export type CanvasState = {
_version: 3;
selectedEntityIdentifier: CanvasEntityIdentifier | null;
quickSwitchEntityIdentifier: CanvasEntityIdentifier | null;
inpaintMasks: {
isHidden: boolean;
entities: CanvasInpaintMaskState[];