Enhance builder functionality by implementing drag-and-drop for lines and points, adding hover effects, and improving wall distance display in the UI.
This commit is contained in:
@@ -7,6 +7,7 @@ interface WallStore {
|
||||
addWall: (wall: Wall) => void;
|
||||
updateWall: (uuid: string, updated: Partial<Wall>) => void;
|
||||
removeWall: (uuid: string) => void;
|
||||
removeWallByPoints: (Points: [Point, Point]) => Wall | undefined;
|
||||
addDecal: (wallUuid: string, decal: Decal) => void;
|
||||
updateDecal: (decalUuid: string, decal: Decal) => void;
|
||||
removeDecal: (decalUuid: string) => void;
|
||||
@@ -48,6 +49,26 @@ export const useWallStore = create<WallStore>()(
|
||||
state.walls = state.walls.filter(w => w.wallUuid !== uuid);
|
||||
}),
|
||||
|
||||
removeWallByPoints: (points) => {
|
||||
let removedWall: Wall | undefined;
|
||||
const [pointA, pointB] = points;
|
||||
|
||||
set((state) => {
|
||||
state.walls = state.walls.filter(wall => {
|
||||
const wallPoints = wall.points.map(p => p.pointUuid);
|
||||
const hasBothPoints = wallPoints.includes(pointA.pointUuid) && wallPoints.includes(pointB.pointUuid);
|
||||
|
||||
if (hasBothPoints) {
|
||||
removedWall = JSON.parse(JSON.stringify(wall));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
});
|
||||
|
||||
return removedWall;
|
||||
},
|
||||
|
||||
addDecal: (wallUuid, decal) => set((state) => {
|
||||
const wallToUpdate = state.walls.find(w => w.wallUuid === wallUuid);
|
||||
if (wallToUpdate) {
|
||||
|
||||
Reference in New Issue
Block a user