diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index 6df2a9a..ed7b3fd 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -330,10 +330,30 @@ export class Draw { return this.pageList } - public getRowList(): IRow[] { + public getTableRowList(sourceElementList: IElement[]): IRow[] { + const positionContext = this.position.getPositionContext() + const { index, trIndex, tdIndex } = positionContext + return sourceElementList[index!].trList![trIndex!].tdList[tdIndex!].rowList! + } + + public getOriginalRowList() { + const zoneManager = this.getZone() + if (zoneManager.isHeaderActive()) { + return this.header.getRowList() + } + if (zoneManager.isFooterActive()) { + return this.footer.getRowList() + } return this.rowList } + public getRowList(): IRow[] { + const positionContext = this.position.getPositionContext() + return positionContext.isTable + ? this.getTableRowList(this.getOriginalElementList()) + : this.getOriginalRowList() + } + public getPageRowList(): IRow[][] { return this.pageRowList } diff --git a/src/editor/core/draw/frame/Footer.ts b/src/editor/core/draw/frame/Footer.ts index b72cc46..9e36191 100644 --- a/src/editor/core/draw/frame/Footer.ts +++ b/src/editor/core/draw/frame/Footer.ts @@ -27,6 +27,10 @@ export class Footer { this.positionList = [] } + public getRowList(): IRow[] { + return this.rowList + } + public setElementList(elementList: IElement[]) { this.elementList = elementList } diff --git a/src/editor/core/draw/frame/Header.ts b/src/editor/core/draw/frame/Header.ts index bfc8b45..df94234 100644 --- a/src/editor/core/draw/frame/Header.ts +++ b/src/editor/core/draw/frame/Header.ts @@ -27,6 +27,10 @@ export class Header { this.positionList = [] } + public getRowList(): IRow[] { + return this.rowList + } + public setElementList(elementList: IElement[]) { this.elementList = elementList } diff --git a/src/editor/core/event/handlers/input.ts b/src/editor/core/event/handlers/input.ts index e1bee65..a5aae9b 100644 --- a/src/editor/core/event/handlers/input.ts +++ b/src/editor/core/event/handlers/input.ts @@ -38,7 +38,11 @@ export function input(data: string, host: CanvasEvent) { restArg = { tdId, trId, tableId } } const elementList = draw.getElementList() - const element = elementList[endIndex] + const endElement = elementList[endIndex] + const endNextElement = elementList[endIndex + 1] + const copyElement = endElement.value === ZERO && endNextElement + ? endNextElement + : endElement const inputData: IElement[] = splitText(text).map(value => { const newElement: IElement = { value, @@ -46,15 +50,15 @@ export function input(data: string, host: CanvasEvent) { } const nextElement = elementList[endIndex + 1] if ( - element.type === TEXT - || (!element.type && element.value !== ZERO) - || (element.type === HYPERLINK && nextElement?.type === HYPERLINK) - || (element.type === DATE && nextElement?.type === DATE) - || (element.type === SUBSCRIPT && nextElement?.type === SUBSCRIPT) - || (element.type === SUPERSCRIPT && nextElement?.type === SUPERSCRIPT) + copyElement.type === TEXT + || (!copyElement.type && copyElement.value !== ZERO) + || (copyElement.type === HYPERLINK && nextElement?.type === HYPERLINK) + || (copyElement.type === DATE && nextElement?.type === DATE) + || (copyElement.type === SUBSCRIPT && nextElement?.type === SUBSCRIPT) + || (copyElement.type === SUPERSCRIPT && nextElement?.type === SUPERSCRIPT) ) { EDITOR_ELEMENT_COPY_ATTR.forEach(attr => { - const value = element[attr] as never + const value = copyElement[attr] as never if (value !== undefined) { newElement[attr] = value } diff --git a/src/editor/core/event/handlers/keydown.ts b/src/editor/core/event/handlers/keydown.ts index 7c41401..5ac9bc4 100644 --- a/src/editor/core/event/handlers/keydown.ts +++ b/src/editor/core/event/handlers/keydown.ts @@ -35,6 +35,16 @@ export function keydown(evt: KeyboardEvent, host: CanvasEvent) { evt.preventDefault() return } + // 清空当前行对齐方式 + const startElement = elementList[startIndex] + if (isCollapsed && startElement.rowFlex && startElement.value === ZERO) { + const rowList = draw.getRowList() + const rowNo = positionList[startIndex].rowNo + const rowFlexElementList = rowList[rowNo].elementList + rowFlexElementList.forEach(element => { + delete element.rowFlex + }) + } if (!isCollapsed) { elementList.splice(startIndex + 1, endIndex - startIndex) } else {