diff --git a/docs/en/guide/command-get.md b/docs/en/guide/command-get.md index cd74701..bd885d1 100644 --- a/docs/en/guide/command-get.md +++ b/docs/en/guide/command-get.md @@ -67,6 +67,26 @@ Usage: const rangeContext = instance.command.getRangeContext() ``` +## getRangeRow + +Feature: Get selection row element list + +Usage: + +```javascript +const rowElementList = instance.command.getRangeRow() +``` + +## getRangeParagraph + +Feature: Get selection paragraph element list + +Usage: + +```javascript +const paragraphElementList = instance.command.getRangeParagraph() +``` + ## getPaperMargin Feature: Gets the margins @@ -137,4 +157,4 @@ const { ```javascript const locale = await instance.command.getLocale() -``` \ No newline at end of file +``` diff --git a/docs/guide/command-get.md b/docs/guide/command-get.md index 2fb800b..b78842e 100644 --- a/docs/guide/command-get.md +++ b/docs/guide/command-get.md @@ -67,6 +67,26 @@ const rangeText = instance.command.getRangeText() const rangeContext = instance.command.getRangeContext() ``` +## getRangeRow + +功能:获取选区所在行元素列表 + +用法: + +```javascript +const rowElementList = instance.command.getRangeRow() +``` + +## getRangeParagraph + +功能:获取选区所在段落元素列表 + +用法: + +```javascript +const paragraphElementList = instance.command.getRangeParagraph() +``` + ## getPaperMargin 功能:获取页边距 diff --git a/src/editor/core/command/Command.ts b/src/editor/core/command/Command.ts index c66e786..aaf9166 100644 --- a/src/editor/core/command/Command.ts +++ b/src/editor/core/command/Command.ts @@ -84,6 +84,8 @@ export class Command { public getWordCount: CommandAdapt['getWordCount'] public getRangeText: CommandAdapt['getRangeText'] public getRangeContext: CommandAdapt['getRangeContext'] + public getRangeRow: CommandAdapt['getRangeRow'] + public getRangeParagraph: CommandAdapt['getRangeParagraph'] public getPaperMargin: CommandAdapt['getPaperMargin'] public getSearchNavigateInfo: CommandAdapt['getSearchNavigateInfo'] public getLocale: CommandAdapt['getLocale'] @@ -180,6 +182,8 @@ export class Command { this.getWordCount = adapt.getWordCount.bind(adapt) this.getRangeText = adapt.getRangeText.bind(adapt) this.getRangeContext = adapt.getRangeContext.bind(adapt) + this.getRangeRow = adapt.getRangeRow.bind(adapt) + this.getRangeParagraph = adapt.getRangeParagraph.bind(adapt) this.getCatalog = adapt.getCatalog.bind(adapt) this.getPaperMargin = adapt.getPaperMargin.bind(adapt) this.getSearchNavigateInfo = adapt.getSearchNavigateInfo.bind(adapt) diff --git a/src/editor/core/command/CommandAdapt.ts b/src/editor/core/command/CommandAdapt.ts index 1a10d1f..4672181 100644 --- a/src/editor/core/command/CommandAdapt.ts +++ b/src/editor/core/command/CommandAdapt.ts @@ -47,7 +47,8 @@ import { isTextLikeElement, pickElementAttr, getElementListByHTML, - getTextFromElementList + getTextFromElementList, + zipElementList } from '../../utils/element' import { printImageBase64 } from '../../utils/print' import { Control } from '../draw/control/Control' @@ -434,7 +435,7 @@ export class CommandAdapt { // 需要改变的元素列表 const changeElementList = startIndex === endIndex - ? this.range.getRangeElementList() + ? this.range.getRangeParagraphElementList() : elementList.slice(startIndex + 1, endIndex + 1) if (!changeElementList || !changeElementList.length) return // 设置值 @@ -470,7 +471,7 @@ export class CommandAdapt { const { startIndex, endIndex } = this.range.getRange() if (!~startIndex && !~endIndex) return // 需要改变的元素列表 - const changeElementList = this.range.getRangeElementList() + const changeElementList = this.range.getRangeParagraphElementList() if (!changeElementList || !changeElementList.length) return // 如果包含列表则设置为取消列表 const isUnsetList = changeElementList.find( @@ -1749,6 +1750,16 @@ export class CommandAdapt { }) } + public getRangeRow(): IElement[] | null { + const rowElementList = this.range.getRangeRowElementList() + return rowElementList ? zipElementList(rowElementList) : null + } + + public getRangeParagraph(): IElement[] | null { + const paragraphElementList = this.range.getRangeParagraphElementList() + return paragraphElementList ? zipElementList(paragraphElementList) : null + } + public pageMode(payload: PageMode) { this.draw.setPageMode(payload) } diff --git a/src/editor/core/range/RangeManager.ts b/src/editor/core/range/RangeManager.ts index 3442634..c31469d 100644 --- a/src/editor/core/range/RangeManager.ts +++ b/src/editor/core/range/RangeManager.ts @@ -200,8 +200,8 @@ export class RangeManager { return rangeRow } - // 获取选区元素列表 - public getRangeElementList(): IElement[] | null { + // 获取选区段落元素列表 + public getRangeParagraphElementList(): IElement[] | null { const { startIndex, endIndex } = this.range if (!~startIndex && !~endIndex) return null // 需要改变的元素列表