45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
|
import Command from "./command"
|
||
|
import history from "../history"
|
||
|
import { TranslateSnapshot } from "state/sessions/translate-session"
|
||
|
import { Data } from "types"
|
||
|
import { getPage } from "utils/utils"
|
||
|
import { current } from "immer"
|
||
|
|
||
|
export default function deleteSelected(data: Data) {
|
||
|
const { currentPageId } = data
|
||
|
|
||
|
const selectedIds = Array.from(data.selectedIds.values())
|
||
|
|
||
|
const page = getPage(current(data))
|
||
|
|
||
|
const shapes = selectedIds.map((id) => page.shapes[id])
|
||
|
|
||
|
data.selectedIds.clear()
|
||
|
|
||
|
history.execute(
|
||
|
data,
|
||
|
new Command({
|
||
|
name: "delete_shapes",
|
||
|
category: "canvas",
|
||
|
manualSelection: true,
|
||
|
do(data) {
|
||
|
const page = getPage(data, currentPageId)
|
||
|
|
||
|
for (let id of selectedIds) {
|
||
|
delete page.shapes[id]
|
||
|
}
|
||
|
|
||
|
data.selectedIds.clear()
|
||
|
},
|
||
|
undo(data) {
|
||
|
const page = getPage(data, currentPageId)
|
||
|
data.selectedIds.clear()
|
||
|
for (let shape of shapes) {
|
||
|
page.shapes[shape.id] = shape
|
||
|
data.selectedIds.add(shape.id)
|
||
|
}
|
||
|
},
|
||
|
})
|
||
|
)
|
||
|
}
|