feat(ui): support bookmarking an entity when adding it

This commit is contained in:
psychedelicious
2025-05-30 21:30:06 +10:00
parent 172142ce03
commit 8dad22ef93

View File

@@ -107,10 +107,11 @@ export const canvasSlice = createSlice({
id: string;
overrides?: Partial<CanvasRasterLayerState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}>
) => {
const { id, overrides, isSelected, mergedEntitiesToDelete = [] } = action.payload;
const { id, overrides, isSelected, isBookmarked, mergedEntitiesToDelete = [] } = action.payload;
const entityState = getRasterLayerState(id, overrides);
state.rasterLayers.entities.push(entityState);
@@ -121,13 +122,20 @@ export const canvasSlice = createSlice({
);
}
const entityIdentifier = getEntityIdentifier(entityState);
if (isSelected || mergedEntitiesToDelete.length > 0) {
state.selectedEntityIdentifier = getEntityIdentifier(entityState);
state.selectedEntityIdentifier = entityIdentifier;
}
if (isBookmarked) {
state.bookmarkedEntityIdentifier = entityIdentifier;
}
},
prepare: (payload: {
overrides?: Partial<CanvasRasterLayerState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}) => ({
payload: { ...payload, id: getPrefixedId('raster_layer') },
@@ -260,10 +268,11 @@ export const canvasSlice = createSlice({
id: string;
overrides?: Partial<CanvasControlLayerState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}>
) => {
const { id, overrides, isSelected, mergedEntitiesToDelete = [] } = action.payload;
const { id, overrides, isSelected, isBookmarked, mergedEntitiesToDelete = [] } = action.payload;
const entityState = getControlLayerState(id, overrides);
@@ -274,14 +283,20 @@ export const canvasSlice = createSlice({
(entity) => !mergedEntitiesToDelete.includes(entity.id)
);
}
const entityIdentifier = getEntityIdentifier(entityState);
if (isSelected || mergedEntitiesToDelete.length > 0) {
state.selectedEntityIdentifier = getEntityIdentifier(entityState);
state.selectedEntityIdentifier = entityIdentifier;
}
if (isBookmarked) {
state.bookmarkedEntityIdentifier = entityIdentifier;
}
},
prepare: (payload: {
overrides?: Partial<CanvasControlLayerState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}) => ({
payload: { ...payload, id: getPrefixedId('control_layer') },
@@ -547,18 +562,32 @@ export const canvasSlice = createSlice({
referenceImageAdded: {
reducer: (
state,
action: PayloadAction<{ id: string; overrides?: Partial<CanvasReferenceImageState>; isSelected?: boolean }>
action: PayloadAction<{
id: string;
overrides?: Partial<CanvasReferenceImageState>;
isSelected?: boolean;
isBookmarked?: boolean;
}>
) => {
const { id, overrides, isSelected } = action.payload;
const { id, overrides, isSelected, isBookmarked } = action.payload;
const entityState = getReferenceImageState(id, overrides);
state.referenceImages.entities.push(entityState);
const entityIdentifier = getEntityIdentifier(entityState);
if (isSelected) {
state.selectedEntityIdentifier = getEntityIdentifier(entityState);
state.selectedEntityIdentifier = entityIdentifier;
}
if (isBookmarked) {
state.bookmarkedEntityIdentifier = entityIdentifier;
}
},
prepare: (payload?: { overrides?: Partial<CanvasReferenceImageState>; isSelected?: boolean }) => ({
prepare: (payload?: {
overrides?: Partial<CanvasReferenceImageState>;
isSelected?: boolean;
isBookmarked?: boolean;
}) => ({
payload: { ...payload, id: getPrefixedId('reference_image') },
}),
},
@@ -725,10 +754,11 @@ export const canvasSlice = createSlice({
id: string;
overrides?: Partial<CanvasRegionalGuidanceState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}>
) => {
const { id, overrides, isSelected, mergedEntitiesToDelete = [] } = action.payload;
const { id, overrides, isSelected, isBookmarked, mergedEntitiesToDelete = [] } = action.payload;
const entityState = getRegionalGuidanceState(id, overrides);
@@ -739,14 +769,20 @@ export const canvasSlice = createSlice({
(entity) => !mergedEntitiesToDelete.includes(entity.id)
);
}
const entityIdentifier = getEntityIdentifier(entityState);
if (isSelected || mergedEntitiesToDelete.length > 0) {
state.selectedEntityIdentifier = getEntityIdentifier(entityState);
state.selectedEntityIdentifier = entityIdentifier;
}
if (isBookmarked) {
state.bookmarkedEntityIdentifier = entityIdentifier;
}
},
prepare: (payload?: {
overrides?: Partial<CanvasRegionalGuidanceState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}) => ({
payload: { ...payload, id: getPrefixedId('regional_guidance') },
@@ -1026,10 +1062,11 @@ export const canvasSlice = createSlice({
id: string;
overrides?: Partial<CanvasInpaintMaskState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}>
) => {
const { id, overrides, isSelected, mergedEntitiesToDelete = [] } = action.payload;
const { id, overrides, isSelected, isBookmarked, mergedEntitiesToDelete = [] } = action.payload;
const entityState = getInpaintMaskState(id, overrides);
@@ -1040,14 +1077,20 @@ export const canvasSlice = createSlice({
(entity) => !mergedEntitiesToDelete.includes(entity.id)
);
}
const entityIdentifier = getEntityIdentifier(entityState);
if (isSelected || mergedEntitiesToDelete.length > 0) {
state.selectedEntityIdentifier = getEntityIdentifier(entityState);
state.selectedEntityIdentifier = entityIdentifier;
}
if (isBookmarked) {
state.bookmarkedEntityIdentifier = entityIdentifier;
}
},
prepare: (payload?: {
overrides?: Partial<CanvasInpaintMaskState>;
isSelected?: boolean;
isBookmarked?: boolean;
mergedEntitiesToDelete?: string[];
}) => ({
payload: { ...payload, id: getPrefixedId('inpaint_mask') },