feat:add interface for cypress

pr675
黄云飞 4 years ago
parent c025f3d19c
commit 30ee6933f9

@ -12,6 +12,8 @@ export class Command {
private static copy: Function
private static paste: Function
private static selectAll: Function
private static backspace: Function
private static setRange: Function
private static undo: Function
private static redo: Function
private static painter: Function
@ -60,6 +62,8 @@ export class Command {
Command.copy = adapt.copy.bind(adapt)
Command.paste = adapt.paste.bind(adapt)
Command.selectAll = adapt.selectAll.bind(adapt)
Command.backspace = adapt.backspace.bind(adapt)
Command.setRange = adapt.setRange.bind(adapt)
Command.undo = adapt.undo.bind(adapt)
Command.redo = adapt.redo.bind(adapt)
Command.painter = adapt.painter.bind(adapt)
@ -124,6 +128,14 @@ export class Command {
return Command.selectAll()
}
public executeBackspace() {
return Command.backspace()
}
public executeSetRange(startIndex: number, endIndex: number) {
return Command.setRange(startIndex, endIndex)
}
// 撤销、重做、格式刷、清除格式
public executeUndo() {
return Command.undo()

@ -78,6 +78,38 @@ export class CommandAdapt {
this.canvasEvent.selectAll()
}
public backspace() {
const isReadonly = this.draw.isReadonly()
if (isReadonly) return
const elementList = this.draw.getElementList()
const { startIndex, endIndex } = this.range.getRange()
const isCollapsed = startIndex === endIndex
// 首字符禁止删除
if (isCollapsed && elementList[startIndex].value === ZERO && startIndex === 0) {
return
}
if (!isCollapsed) {
elementList.splice(startIndex + 1, endIndex - startIndex)
} else {
elementList.splice(startIndex, 1)
}
const curIndex = isCollapsed ? startIndex - 1 : startIndex
this.range.setRange(curIndex, curIndex)
this.draw.render({ curIndex })
}
public setRange(startIndex: number, endIndex: number) {
if (startIndex < 0 || endIndex < 0 || endIndex < startIndex) return
this.range.setRange(startIndex, endIndex)
const isCollapsed = startIndex === endIndex
this.draw.render({
curIndex: isCollapsed ? startIndex : undefined,
isComputeRowList: false,
isSubmitHistory: false,
isSetCursor: isCollapsed
})
}
public undo() {
const isReadonly = this.draw.isReadonly()
if (isReadonly) return

@ -246,7 +246,7 @@ export class CanvasEvent {
if (evt.key === KeyMap.Backspace) {
if (isReadonly) return
// 判断是否允许删除
if (elementList[index].value === ZERO && index === 0) {
if (isCollapsed && elementList[index].value === ZERO && index === 0) {
evt.preventDefault()
return
}

Loading…
Cancel
Save