feat: get range context info

pr675
Hufe921 3 years ago
parent 6ae27c4122
commit 09c4d53bca

@ -48,6 +48,14 @@ const wordCount = await instance.command.getWordCount()
const rangeText = instance.command.getRangeText()
```
## getRangeContext
功能:获取选区上下文
用法:
```javascript
const rangeContext = instance.command.getRangeContext()
```
## getPaperMargin
功能:获取页边距

@ -80,6 +80,7 @@ export class Command {
public getValue: CommandAdapt['getValue']
public getWordCount: CommandAdapt['getWordCount']
public getRangeText: CommandAdapt['getRangeText']
public getRangeContext: CommandAdapt['getRangeContext']
public getPaperMargin: CommandAdapt['getPaperMargin']
public getSearchNavigateInfo: CommandAdapt['getSearchNavigateInfo']
@ -168,6 +169,7 @@ export class Command {
this.getValue = adapt.getValue.bind(adapt)
this.getWordCount = adapt.getWordCount.bind(adapt)
this.getRangeText = adapt.getRangeText.bind(adapt)
this.getRangeContext = adapt.getRangeContext.bind(adapt)
this.getCatalog = adapt.getCatalog.bind(adapt)
this.getPaperMargin = adapt.getPaperMargin.bind(adapt)
this.getSearchNavigateInfo = adapt.getSearchNavigateInfo.bind(adapt)

@ -16,12 +16,13 @@ import { IAppendElementListOption, IDrawImagePayload, IGetValueOption, IPainterO
import { IEditorData, IEditorOption, IEditorResult } from '../../interface/Editor'
import { IElement, IElementStyle } from '../../interface/Element'
import { IMargin } from '../../interface/Margin'
import { RangeContext } from '../../interface/Range'
import { IColgroup } from '../../interface/table/Colgroup'
import { ITd } from '../../interface/table/Td'
import { ITr } from '../../interface/table/Tr'
import { IWatermark } from '../../interface/Watermark'
import { downloadFile, getUUID } from '../../utils'
import { formatElementContext, formatElementList, isTextLikeElement } from '../../utils/element'
import { deepClone, downloadFile, getUUID } from '../../utils'
import { formatElementContext, formatElementList, isTextLikeElement, pickElementAttr } from '../../utils/element'
import { printImageBase64 } from '../../utils/print'
import { Control } from '../draw/control/Control'
import { Draw } from '../draw/Draw'
@ -1601,6 +1602,29 @@ export class CommandAdapt {
return this.range.toString()
}
public getRangeContext(): RangeContext | null {
const range = this.range.getRange()
const { startIndex, endIndex } = range
if (!~startIndex && !~endIndex) return null
// 选区信息
const isCollapsed = startIndex === endIndex
// 元素信息
const elementList = this.draw.getElementList()
const startElement = pickElementAttr(elementList[isCollapsed ? startIndex : startIndex + 1])
const endElement = pickElementAttr(elementList[endIndex])
// 页码信息
const positionList = this.position.getPositionList()
const startPageNo = positionList[startIndex].pageNo
const endPageNo = positionList[endIndex].pageNo
return deepClone({
isCollapsed,
startElement,
endElement,
startPageNo,
endPageNo
})
}
public pageMode(payload: PageMode) {
this.draw.setPageMode(payload)
}

@ -1,4 +1,5 @@
import { EditorZone } from '../dataset/enum/Editor'
import { IElement } from './Element'
export interface IRange {
startIndex: number;
@ -15,3 +16,11 @@ export interface IRange {
export type RangeRowArray = Map<number, number[]>
export type RangeRowMap = Map<number, Set<number>>
export type RangeContext = {
isCollapsed: boolean;
startElement: IElement;
endElement: IElement;
startPageNo: number;
endPageNo: number;
}
Loading…
Cancel
Save