Adds undo for drawn shapes, zoom scales rdp
This commit is contained in:
parent
c41def99d3
commit
bd02ca4fd9
6 changed files with 51 additions and 37 deletions
40
state/commands/draw.ts
Normal file
40
state/commands/draw.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
import Command from "./command"
|
||||
import history from "../history"
|
||||
import { Data } from "types"
|
||||
import { getPage } from "utils/utils"
|
||||
import { getShapeUtils } from "lib/shape-utils"
|
||||
import { current } from "immer"
|
||||
|
||||
export default function drawCommand(
|
||||
data: Data,
|
||||
id: string,
|
||||
before: number[][],
|
||||
after: number[][]
|
||||
) {
|
||||
const selectedIds = Array.from(data.selectedIds.values())
|
||||
const restoreShape = current(getPage(data).shapes[id])
|
||||
getShapeUtils(restoreShape).setPoints!(restoreShape, after)
|
||||
|
||||
history.execute(
|
||||
data,
|
||||
new Command({
|
||||
name: "set_points",
|
||||
category: "canvas",
|
||||
manualSelection: true,
|
||||
do(data, initial) {
|
||||
if (!initial) {
|
||||
getPage(data).shapes[id] = restoreShape
|
||||
}
|
||||
|
||||
data.selectedIds.clear()
|
||||
},
|
||||
undo(data) {
|
||||
delete getPage(data).shapes[id]
|
||||
data.selectedIds.clear()
|
||||
for (let id of selectedIds) {
|
||||
data.selectedIds.add(id)
|
||||
}
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue