ht-emr 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas-editor.js +4545 -3112
- package/dist/canvas-editor.js.map +1 -1
- package/dist/canvas-editor.umd.cjs +63 -63
- package/dist/canvas-editor.umd.cjs.map +1 -1
- package/dist/src/editor/core/command/Command.d.ts +3 -0
- package/dist/src/editor/core/command/CommandAdapt.d.ts +36 -1
- package/dist/src/editor/core/cursor/Cursor.d.ts +100 -0
- package/dist/src/editor/core/cursor/CursorAgent.d.ts +79 -0
- package/dist/src/editor/core/draw/Draw.d.ts +539 -0
- package/dist/src/editor/core/event/CanvasEvent.d.ts +143 -0
- package/dist/src/editor/core/position/Position.d.ts +132 -0
- package/dist/src/editor/core/range/RangeManager.d.ts +278 -0
- package/dist/src/editor/index.d.ts +60 -2
- package/dist/src/editor/interface/Element.d.ts +27 -1
- package/dist/src/editor/utils/element.d.ts +2 -0
- package/dist/src/editor/utils/logicTemplate.d.ts +9 -0
- package/package.json +1 -1
|
@@ -3,55 +3,198 @@ import { ICurrentPosition, IPositionContext } from '../../interface/Position';
|
|
|
3
3
|
import { Draw } from '../draw/Draw';
|
|
4
4
|
import { IRange, IRangeElementStyle } from '../../interface/Range';
|
|
5
5
|
import { ICopyOption } from '../../interface/Event';
|
|
6
|
+
/**
|
|
7
|
+
* 输入法组合信息接口
|
|
8
|
+
*
|
|
9
|
+
* 在使用输入法(如中文输入法)时,记录组合输入的状态信息。
|
|
10
|
+
*/
|
|
6
11
|
export interface ICompositionInfo {
|
|
12
|
+
/** 组合开始时的起始索引 */
|
|
7
13
|
startIndex: number;
|
|
14
|
+
/** 组合结束时的结束索引 */
|
|
8
15
|
endIndex: number;
|
|
16
|
+
/** 组合输入的值 */
|
|
9
17
|
value: string;
|
|
18
|
+
/** 默认样式 */
|
|
10
19
|
defaultStyle: IRangeElementStyle | null;
|
|
20
|
+
/** 是否取消组合 */
|
|
11
21
|
cancel?: boolean;
|
|
22
|
+
/** 性能计时开始时间 */
|
|
12
23
|
perfStartTime?: number;
|
|
13
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* 鼠标按下起始位置接口
|
|
27
|
+
*
|
|
28
|
+
* 记录鼠标按下时的位置信息,用于拖拽和选区操作。
|
|
29
|
+
*/
|
|
14
30
|
export interface MouseDownStartPosition extends ICurrentPosition {
|
|
31
|
+
/** 鼠标按下时的原始元素索引 */
|
|
15
32
|
originalIndex?: number;
|
|
16
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Canvas事件处理类
|
|
36
|
+
*
|
|
37
|
+
* 负责处理Canvas上的所有用户交互事件:
|
|
38
|
+
* - 鼠标事件(点击、双击、三击、拖拽等)
|
|
39
|
+
* - 键盘事件
|
|
40
|
+
* - 输入法组合事件
|
|
41
|
+
* - 拖放事件
|
|
42
|
+
*
|
|
43
|
+
* 该类是用户与编辑器交互的核心桥梁。
|
|
44
|
+
*/
|
|
17
45
|
export declare class CanvasEvent {
|
|
46
|
+
/** 是否允许选区操作 */
|
|
18
47
|
isAllowSelection: boolean;
|
|
48
|
+
/** 是否正在进行输入法组合 */
|
|
19
49
|
isComposing: boolean;
|
|
50
|
+
/** 输入法组合信息 */
|
|
20
51
|
compositionInfo: ICompositionInfo | null;
|
|
52
|
+
/** 是否允许拖拽 */
|
|
21
53
|
isAllowDrag: boolean;
|
|
54
|
+
/** 是否允许放置 */
|
|
22
55
|
isAllowDrop: boolean;
|
|
56
|
+
/** 缓存的选区信息 */
|
|
23
57
|
cacheRange: IRange | null;
|
|
58
|
+
/** 缓存的元素列表 */
|
|
24
59
|
cacheElementList: IElement[] | null;
|
|
60
|
+
/** 缓存的位置列表 */
|
|
25
61
|
cachePositionList: IElementPosition[] | null;
|
|
62
|
+
/** 缓存的位置上下文 */
|
|
26
63
|
cachePositionContext: IPositionContext | null;
|
|
64
|
+
/** 鼠标按下时的起始位置 */
|
|
27
65
|
mouseDownStartPosition: MouseDownStartPosition | null;
|
|
66
|
+
/** Draw实例 */
|
|
28
67
|
private draw;
|
|
68
|
+
/** 页面容器元素 */
|
|
29
69
|
private pageContainer;
|
|
70
|
+
/** Canvas页面列表 */
|
|
30
71
|
private pageList;
|
|
72
|
+
/** 选区管理器 */
|
|
31
73
|
private range;
|
|
74
|
+
/** 位置管理器 */
|
|
32
75
|
private position;
|
|
76
|
+
/**
|
|
77
|
+
* 创建Canvas事件处理器
|
|
78
|
+
* @param draw - Draw实例
|
|
79
|
+
*/
|
|
33
80
|
constructor(draw: Draw);
|
|
81
|
+
/**
|
|
82
|
+
* 获取Draw实例
|
|
83
|
+
* @returns Draw实例
|
|
84
|
+
*/
|
|
34
85
|
getDraw(): Draw;
|
|
86
|
+
/**
|
|
87
|
+
* 注册事件监听器
|
|
88
|
+
*
|
|
89
|
+
* 为页面容器绑定所有必要的事件监听器。
|
|
90
|
+
*/
|
|
35
91
|
register(): void;
|
|
92
|
+
/**
|
|
93
|
+
* 设置是否允许选区操作
|
|
94
|
+
* @param payload - 是否允许
|
|
95
|
+
*/
|
|
36
96
|
setIsAllowSelection(payload: boolean): void;
|
|
97
|
+
/**
|
|
98
|
+
* 设置是否允许拖拽
|
|
99
|
+
* @param payload - 是否允许
|
|
100
|
+
*/
|
|
37
101
|
setIsAllowDrag(payload: boolean): void;
|
|
102
|
+
/**
|
|
103
|
+
* 清除格式刷样式
|
|
104
|
+
*
|
|
105
|
+
* 重置光标样式并清除格式刷状态。
|
|
106
|
+
*/
|
|
38
107
|
clearPainterStyle(): void;
|
|
108
|
+
/**
|
|
109
|
+
* 应用格式刷样式
|
|
110
|
+
*
|
|
111
|
+
* 将格式刷样式应用到当前选区或光标所在的词组。
|
|
112
|
+
*/
|
|
39
113
|
applyPainterStyle(): void;
|
|
114
|
+
/**
|
|
115
|
+
* 全选操作
|
|
116
|
+
*
|
|
117
|
+
* 选中所有内容。在表格内时选中整个表格。
|
|
118
|
+
*/
|
|
40
119
|
selectAll(): void;
|
|
120
|
+
/**
|
|
121
|
+
* 处理鼠标移动事件
|
|
122
|
+
* @param evt - 鼠标事件对象
|
|
123
|
+
*/
|
|
41
124
|
mousemove(evt: MouseEvent): void;
|
|
125
|
+
/**
|
|
126
|
+
* 处理鼠标按下事件
|
|
127
|
+
* @param evt - 鼠标事件对象
|
|
128
|
+
*/
|
|
42
129
|
mousedown(evt: MouseEvent): void;
|
|
130
|
+
/**
|
|
131
|
+
* 处理点击事件
|
|
132
|
+
*
|
|
133
|
+
* 在iOS系统上,需要用户主动触发才能弹出键盘。
|
|
134
|
+
*/
|
|
43
135
|
click(): void;
|
|
136
|
+
/**
|
|
137
|
+
* 处理鼠标释放事件
|
|
138
|
+
* @param evt - 鼠标事件对象
|
|
139
|
+
*/
|
|
44
140
|
mouseup(evt: MouseEvent): void;
|
|
141
|
+
/**
|
|
142
|
+
* 处理鼠标离开事件
|
|
143
|
+
* @param evt - 鼠标事件对象
|
|
144
|
+
*/
|
|
45
145
|
mouseleave(evt: MouseEvent): void;
|
|
146
|
+
/**
|
|
147
|
+
* 处理键盘按下事件
|
|
148
|
+
* @param evt - 键盘事件对象
|
|
149
|
+
*/
|
|
46
150
|
keydown(evt: KeyboardEvent): void;
|
|
151
|
+
/**
|
|
152
|
+
* 处理双击事件
|
|
153
|
+
* @param evt - 鼠标事件对象
|
|
154
|
+
*/
|
|
47
155
|
dblclick(evt: MouseEvent): void;
|
|
156
|
+
/**
|
|
157
|
+
* 处理三击事件
|
|
158
|
+
*
|
|
159
|
+
* 三击选中整个段落。
|
|
160
|
+
*/
|
|
48
161
|
threeClick(): void;
|
|
162
|
+
/**
|
|
163
|
+
* 处理文本输入事件
|
|
164
|
+
* @param data - 输入的文本数据
|
|
165
|
+
* @param source - 输入来源
|
|
166
|
+
*/
|
|
49
167
|
input(data: string, source?: string): void;
|
|
168
|
+
/**
|
|
169
|
+
* 处理剪切操作
|
|
170
|
+
*/
|
|
50
171
|
cut(): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* 处理复制操作
|
|
174
|
+
* @param options - 复制选项
|
|
175
|
+
*/
|
|
51
176
|
copy(options?: ICopyOption): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* 处理输入法组合开始事件
|
|
179
|
+
*/
|
|
52
180
|
compositionstart(): void;
|
|
181
|
+
/**
|
|
182
|
+
* 处理输入法组合结束事件
|
|
183
|
+
* @param evt - 组合事件对象
|
|
184
|
+
*/
|
|
53
185
|
compositionend(evt: CompositionEvent): void;
|
|
186
|
+
/**
|
|
187
|
+
* 取消输入法组合
|
|
188
|
+
*/
|
|
54
189
|
compositionCancel(): void;
|
|
190
|
+
/**
|
|
191
|
+
* 处理拖放事件
|
|
192
|
+
* @param evt - 拖放事件对象
|
|
193
|
+
*/
|
|
55
194
|
drop(evt: DragEvent): void;
|
|
195
|
+
/**
|
|
196
|
+
* 处理拖拽悬停事件
|
|
197
|
+
* @param evt - 拖拽事件对象
|
|
198
|
+
*/
|
|
56
199
|
dragover(evt: DragEvent | MouseEvent): void;
|
|
57
200
|
}
|
|
@@ -2,34 +2,166 @@ import { IComputePageRowPositionPayload, IComputePageRowPositionResult, ICompute
|
|
|
2
2
|
import { IElement, IElementPosition } from '../../interface/Element';
|
|
3
3
|
import { ICurrentPosition, IGetPositionByXYPayload, IPositionContext } from '../../interface/Position';
|
|
4
4
|
import { Draw } from '../draw/Draw';
|
|
5
|
+
/**
|
|
6
|
+
* 位置管理类
|
|
7
|
+
*
|
|
8
|
+
* 负责管理编辑器中所有元素的位置信息,包括:
|
|
9
|
+
* - 计算和存储元素位置列表
|
|
10
|
+
* - 管理光标位置
|
|
11
|
+
* - 处理浮动元素位置
|
|
12
|
+
* - 根据鼠标坐标定位元素
|
|
13
|
+
* - 管理位置上下文(是否在表格、控件内等)
|
|
14
|
+
*/
|
|
5
15
|
export declare class Position {
|
|
16
|
+
/** 当前光标位置信息 */
|
|
6
17
|
private cursorPosition;
|
|
18
|
+
/** 位置上下文(是否在表格、控件内等) */
|
|
7
19
|
private positionContext;
|
|
20
|
+
/** 元素位置列表 */
|
|
8
21
|
private positionList;
|
|
22
|
+
/** 浮动元素位置列表 */
|
|
9
23
|
private floatPositionList;
|
|
24
|
+
/** Draw实例 */
|
|
10
25
|
private draw;
|
|
26
|
+
/** 事件总线 */
|
|
11
27
|
private eventBus;
|
|
28
|
+
/** 编辑器配置选项 */
|
|
12
29
|
private options;
|
|
30
|
+
/**
|
|
31
|
+
* 创建位置管理器实例
|
|
32
|
+
* @param draw - Draw实例
|
|
33
|
+
*/
|
|
13
34
|
constructor(draw: Draw);
|
|
35
|
+
/**
|
|
36
|
+
* 获取浮动元素位置列表
|
|
37
|
+
* @returns 浮动元素位置数组
|
|
38
|
+
*/
|
|
14
39
|
getFloatPositionList(): IFloatPosition[];
|
|
40
|
+
/**
|
|
41
|
+
* 获取表格内元素位置列表
|
|
42
|
+
* @param sourceElementList - 源元素列表
|
|
43
|
+
* @returns 表格内元素位置数组
|
|
44
|
+
*/
|
|
15
45
|
getTablePositionList(sourceElementList: IElement[]): IElementPosition[];
|
|
46
|
+
/**
|
|
47
|
+
* 获取元素位置列表
|
|
48
|
+
* 根据当前位置上下文返回对应的位置列表
|
|
49
|
+
* @returns 元素位置数组
|
|
50
|
+
*/
|
|
16
51
|
getPositionList(): IElementPosition[];
|
|
52
|
+
/**
|
|
53
|
+
* 获取主区域元素位置列表
|
|
54
|
+
* @returns 主区域元素位置数组
|
|
55
|
+
*/
|
|
17
56
|
getMainPositionList(): IElementPosition[];
|
|
57
|
+
/**
|
|
58
|
+
* 获取原始位置列表
|
|
59
|
+
* 根据当前激活的区域返回对应的位置列表
|
|
60
|
+
* @returns 原始元素位置数组
|
|
61
|
+
*/
|
|
18
62
|
getOriginalPositionList(): IElementPosition[];
|
|
63
|
+
/**
|
|
64
|
+
* 获取原始主区域位置列表
|
|
65
|
+
* @returns 主区域位置数组
|
|
66
|
+
*/
|
|
19
67
|
getOriginalMainPositionList(): IElementPosition[];
|
|
68
|
+
/**
|
|
69
|
+
* 获取选区内的位置列表
|
|
70
|
+
* @returns 选区位置数组,如果没有选区则返回null
|
|
71
|
+
*/
|
|
20
72
|
getSelectionPositionList(): IElementPosition[] | null;
|
|
73
|
+
/**
|
|
74
|
+
* 设置元素位置列表
|
|
75
|
+
* @param payload - 元素位置数组
|
|
76
|
+
*/
|
|
21
77
|
setPositionList(payload: IElementPosition[]): void;
|
|
78
|
+
/**
|
|
79
|
+
* 设置浮动元素位置列表
|
|
80
|
+
* @param payload - 浮动元素位置数组
|
|
81
|
+
*/
|
|
22
82
|
setFloatPositionList(payload: IFloatPosition[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* 计算页面行位置
|
|
85
|
+
*
|
|
86
|
+
* 遍历行列表,计算每个元素的坐标位置,处理行对齐、浮动元素等
|
|
87
|
+
*
|
|
88
|
+
* @param payload - 计算参数
|
|
89
|
+
* @returns 计算结果,包含最终的x、y坐标和元素索引
|
|
90
|
+
*/
|
|
23
91
|
computePageRowPosition(payload: IComputePageRowPositionPayload): IComputePageRowPositionResult;
|
|
92
|
+
/**
|
|
93
|
+
* 计算位置列表
|
|
94
|
+
*
|
|
95
|
+
* 清空原有位置信息,遍历每页行计算所有元素的位置坐标
|
|
96
|
+
*/
|
|
24
97
|
computePositionList(): void;
|
|
98
|
+
/**
|
|
99
|
+
* 计算单行位置
|
|
100
|
+
* @param payload - 计算参数,包含行信息和内部宽度
|
|
101
|
+
* @returns 元素位置数组
|
|
102
|
+
*/
|
|
25
103
|
computeRowPosition(payload: IComputeRowPositionPayload): IElementPosition[];
|
|
104
|
+
/**
|
|
105
|
+
* 设置光标位置
|
|
106
|
+
* @param position - 光标位置信息
|
|
107
|
+
*/
|
|
26
108
|
setCursorPosition(position: IElementPosition | null): void;
|
|
109
|
+
/**
|
|
110
|
+
* 获取光标位置
|
|
111
|
+
* @returns 当前光标位置信息
|
|
112
|
+
*/
|
|
27
113
|
getCursorPosition(): IElementPosition | null;
|
|
114
|
+
/**
|
|
115
|
+
* 获取位置上下文
|
|
116
|
+
* @returns 当前位置上下文信息
|
|
117
|
+
*/
|
|
28
118
|
getPositionContext(): IPositionContext;
|
|
119
|
+
/**
|
|
120
|
+
* 设置位置上下文
|
|
121
|
+
*
|
|
122
|
+
* 同时会触发positionContextChange事件
|
|
123
|
+
*
|
|
124
|
+
* @param payload - 新的位置上下文
|
|
125
|
+
*/
|
|
29
126
|
setPositionContext(payload: IPositionContext): void;
|
|
127
|
+
/**
|
|
128
|
+
* 根据XY坐标获取位置
|
|
129
|
+
*
|
|
130
|
+
* 遍历位置列表,找到鼠标坐标所在的元素位置
|
|
131
|
+
* 支持表格内元素、浮动元素、控件等特殊处理
|
|
132
|
+
*
|
|
133
|
+
* @param payload - 坐标参数
|
|
134
|
+
* @returns 当前位置信息
|
|
135
|
+
*/
|
|
30
136
|
getPositionByXY(payload: IGetPositionByXYPayload): ICurrentPosition;
|
|
137
|
+
/**
|
|
138
|
+
* 根据XY坐标获取浮动元素位置
|
|
139
|
+
*
|
|
140
|
+
* 检查给定坐标是否在浮动元素范围内
|
|
141
|
+
*
|
|
142
|
+
* @param payload - 坐标参数,包含要检查的图片显示类型
|
|
143
|
+
* @returns 如果命中浮动元素则返回位置信息
|
|
144
|
+
*/
|
|
31
145
|
getFloatPositionByXY(payload: IGetFloatPositionByXYPayload): ICurrentPosition | void;
|
|
146
|
+
/**
|
|
147
|
+
* 调整位置上下文
|
|
148
|
+
*
|
|
149
|
+
* 根据鼠标位置调整光标位置和位置上下文
|
|
150
|
+
* 处理控件内光标移动等特殊情况
|
|
151
|
+
*
|
|
152
|
+
* @param payload - 坐标参数
|
|
153
|
+
* @returns 调整后的位置信息
|
|
154
|
+
*/
|
|
32
155
|
adjustPositionContext(payload: IGetPositionByXYPayload): ICurrentPosition | null;
|
|
156
|
+
/**
|
|
157
|
+
* 设置环绕元素位置
|
|
158
|
+
*
|
|
159
|
+
* 计算环绕文字的浮动元素对当前行元素的影响
|
|
160
|
+
* 调整元素位置以避免与浮动元素重叠
|
|
161
|
+
*
|
|
162
|
+
* @param payload - 设置参数
|
|
163
|
+
* @returns 调整后的X坐标和增加的行宽
|
|
164
|
+
*/
|
|
33
165
|
setSurroundPosition(payload: ISetSurroundPositionPayload): {
|
|
34
166
|
x: number;
|
|
35
167
|
rowIncreaseWidth: number;
|
|
@@ -2,49 +2,327 @@ import { IControlContext } from '../../interface/Control';
|
|
|
2
2
|
import { IElement } from '../../interface/Element';
|
|
3
3
|
import { IRange, IRangeElementStyle, IRangeParagraphInfo, RangeRowArray, RangeRowMap, SplitTdRange } from '../../interface/Range';
|
|
4
4
|
import { Draw } from '../draw/Draw';
|
|
5
|
+
/**
|
|
6
|
+
* 选区管理类
|
|
7
|
+
*
|
|
8
|
+
* 负责编辑器中文本选区的创建、管理和渲染。
|
|
9
|
+
* 选区用于表示用户选择的文本范围,支持普通文本选区、
|
|
10
|
+
* 表格单元格选区、跨行跨列选区等多种形式。
|
|
11
|
+
*/
|
|
5
12
|
export declare class RangeManager {
|
|
13
|
+
/** Draw实例,用于获取渲染上下文和状态 */
|
|
6
14
|
private draw;
|
|
15
|
+
/** 编辑器配置选项 */
|
|
7
16
|
private options;
|
|
17
|
+
/** 当前选区信息 */
|
|
8
18
|
private range;
|
|
19
|
+
/** 事件监听器,用于触发回调 */
|
|
9
20
|
private listener;
|
|
21
|
+
/** 事件总线,用于发布/订阅事件 */
|
|
10
22
|
private eventBus;
|
|
23
|
+
/** 位置管理器,用于获取元素位置 */
|
|
11
24
|
private position;
|
|
25
|
+
/** 历史管理器,用于撤销/重做功能 */
|
|
12
26
|
private historyManager;
|
|
27
|
+
/** 默认样式,用于新输入的文本 */
|
|
13
28
|
private defaultStyle;
|
|
29
|
+
/** 上次发射的选区样式,用于优化事件触发 */
|
|
14
30
|
private lastRangeStyle;
|
|
31
|
+
/**
|
|
32
|
+
* 创建选区管理器实例
|
|
33
|
+
* @param draw - Draw实例,用于获取渲染上下文
|
|
34
|
+
*/
|
|
15
35
|
constructor(draw: Draw);
|
|
36
|
+
/**
|
|
37
|
+
* 比较两个选区样式是否相同
|
|
38
|
+
*
|
|
39
|
+
* 用于优化选区样式变化事件的触发,避免重复发射相同样式。
|
|
40
|
+
*
|
|
41
|
+
* @param source - 源样式对象
|
|
42
|
+
* @param target - 目标样式对象
|
|
43
|
+
* @returns 如果两个样式完全相同则返回true
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
16
46
|
private _isSameRangeStyle;
|
|
47
|
+
/**
|
|
48
|
+
* 发射选区样式变化事件
|
|
49
|
+
*
|
|
50
|
+
* 当选区样式发生变化时,通知监听器和事件总线。
|
|
51
|
+
* 使用缓存机制避免重复发射相同的样式。
|
|
52
|
+
*
|
|
53
|
+
* @param rangeStyle - 当前的选区样式
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
17
56
|
private _emitRangeStyle;
|
|
57
|
+
/**
|
|
58
|
+
* 获取当前选区信息
|
|
59
|
+
* @returns 当前选区对象,包含起始和结束索引
|
|
60
|
+
*/
|
|
18
61
|
getRange(): IRange;
|
|
62
|
+
/**
|
|
63
|
+
* 清除当前选区
|
|
64
|
+
*
|
|
65
|
+
* 将选区重置为无效状态(startIndex和endIndex都设为-1)
|
|
66
|
+
*/
|
|
19
67
|
clearRange(): void;
|
|
68
|
+
/**
|
|
69
|
+
* 设置默认样式
|
|
70
|
+
*
|
|
71
|
+
* 用于设置新输入文本的默认样式,如字体、大小等。
|
|
72
|
+
*
|
|
73
|
+
* @param style - 要设置的样式对象,传入null则清除默认样式
|
|
74
|
+
*/
|
|
20
75
|
setDefaultStyle(style: IRangeElementStyle | null): void;
|
|
76
|
+
/**
|
|
77
|
+
* 获取默认样式
|
|
78
|
+
* @returns 当前的默认样式对象,如果没有设置则返回null
|
|
79
|
+
*/
|
|
21
80
|
getDefaultStyle(): IRangeElementStyle | null;
|
|
81
|
+
/**
|
|
82
|
+
* 获取选区锚点元素的样式
|
|
83
|
+
*
|
|
84
|
+
* 锚点元素是选区起始位置的元素,用于确定当前样式状态。
|
|
85
|
+
*
|
|
86
|
+
* @param elementList - 元素列表
|
|
87
|
+
* @param anchorIndex - 锚点索引
|
|
88
|
+
* @returns 合并了默认样式的锚点元素,如果不存在则返回null
|
|
89
|
+
*/
|
|
22
90
|
getRangeAnchorStyle(elementList: IElement[], anchorIndex: number): IElement | null;
|
|
91
|
+
/**
|
|
92
|
+
* 判断选区是否发生变化
|
|
93
|
+
*
|
|
94
|
+
* 比较新选区与当前选区的所有属性,包括表格相关属性。
|
|
95
|
+
*
|
|
96
|
+
* @param startIndex - 起始索引
|
|
97
|
+
* @param endIndex - 结束索引
|
|
98
|
+
* @param tableId - 表格ID(可选)
|
|
99
|
+
* @param startTdIndex - 起始单元格索引(可选)
|
|
100
|
+
* @param endTdIndex - 结束单元格索引(可选)
|
|
101
|
+
* @param startTrIndex - 起始行索引(可选)
|
|
102
|
+
* @param endTrIndex - 结束行索引(可选)
|
|
103
|
+
* @returns 如果选区发生变化则返回true
|
|
104
|
+
*/
|
|
23
105
|
getIsRangeChange(startIndex: number, endIndex: number, tableId?: string, startTdIndex?: number, endTdIndex?: number, startTrIndex?: number, endTrIndex?: number): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* 判断选区是否折叠
|
|
108
|
+
*
|
|
109
|
+
* 折叠选区表示光标位置(起始和结束位置相同),
|
|
110
|
+
* 未折叠选区表示用户选择了文本范围。
|
|
111
|
+
*
|
|
112
|
+
* @returns 如果选区是折叠的(起始等于结束)则返回true
|
|
113
|
+
*/
|
|
24
114
|
getIsCollapsed(): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* 判断是否存在有效选区
|
|
117
|
+
*
|
|
118
|
+
* 检查当前是否有文本被选中(选区非空且起始不等于结束)。
|
|
119
|
+
*
|
|
120
|
+
* @returns 如果存在有效选区则返回true
|
|
121
|
+
*/
|
|
25
122
|
getIsSelection(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* 获取选区内的元素列表
|
|
125
|
+
*
|
|
126
|
+
* 返回当前选区范围内的所有元素,支持跨页单元格选区。
|
|
127
|
+
*
|
|
128
|
+
* @returns 选区内的元素数组,如果没有选区则返回null
|
|
129
|
+
*/
|
|
26
130
|
getSelection(): IElement[] | null;
|
|
131
|
+
/**
|
|
132
|
+
* 获取选区元素列表(支持跨行跨列选区)
|
|
133
|
+
*
|
|
134
|
+
* 当选区跨越表格的多行多列时,返回所有涉及的单元格内容。
|
|
135
|
+
*
|
|
136
|
+
* @returns 选区内的所有元素数组,如果跨行跨列选区则包含多个单元格的内容
|
|
137
|
+
*/
|
|
27
138
|
getSelectionElementList(): IElement[] | null;
|
|
139
|
+
/**
|
|
140
|
+
* 获取选区内的文本类元素
|
|
141
|
+
*
|
|
142
|
+
* 过滤选区内非文本类型的元素,只返回文本、超链接等文本类元素。
|
|
143
|
+
*
|
|
144
|
+
* @returns 文本类元素数组,如果没有则返回null
|
|
145
|
+
*/
|
|
28
146
|
getTextLikeSelection(): IElement[] | null;
|
|
147
|
+
/**
|
|
148
|
+
* 获取选区元素列表中的文本类元素
|
|
149
|
+
*
|
|
150
|
+
* 过滤选区元素列表中的非文本类型元素,支持跨行跨列选区。
|
|
151
|
+
*
|
|
152
|
+
* @returns 文本类元素数组,如果没有则返回null
|
|
153
|
+
*/
|
|
29
154
|
getTextLikeSelectionElementList(): IElement[] | null;
|
|
155
|
+
/**
|
|
156
|
+
* 获取光标所选位置的行信息
|
|
157
|
+
*
|
|
158
|
+
* 返回一个Map,键为页码,值为该页中选区涉及的行号集合。
|
|
159
|
+
*
|
|
160
|
+
* @returns 行信息的Map结构,如果没有选区则返回null
|
|
161
|
+
*/
|
|
30
162
|
getRangeRow(): RangeRowMap | null;
|
|
163
|
+
/**
|
|
164
|
+
* 获取光标所选位置的元素列表
|
|
165
|
+
*
|
|
166
|
+
* 返回选区所在行的所有元素,支持跨行跨列选区。
|
|
167
|
+
*
|
|
168
|
+
* @returns 选区所在行的元素数组,如果没有选区则返回null
|
|
169
|
+
*/
|
|
31
170
|
getRangeRowElementList(): IElement[] | null;
|
|
171
|
+
/**
|
|
172
|
+
* 获取选区段落信息
|
|
173
|
+
*
|
|
174
|
+
* 返回当前光标或选区所在段落的行信息。
|
|
175
|
+
* 会向上和向下查找,直到找到段落边界(换行符或不同列表/标题)。
|
|
176
|
+
*
|
|
177
|
+
* @returns 段落行信息的Map结构,键为页码,值为行号数组
|
|
178
|
+
*/
|
|
32
179
|
getRangeParagraph(): RangeRowArray | null;
|
|
180
|
+
/**
|
|
181
|
+
* 获取选区段落信息
|
|
182
|
+
*
|
|
183
|
+
* 返回段落内的所有元素及其起始位置索引,
|
|
184
|
+
* 用于段落级别的格式操作。
|
|
185
|
+
*
|
|
186
|
+
* @returns 段落信息对象,包含元素列表和起始索引
|
|
187
|
+
*/
|
|
33
188
|
getRangeParagraphInfo(): IRangeParagraphInfo | null;
|
|
189
|
+
/**
|
|
190
|
+
* 获取选区段落元素列表
|
|
191
|
+
*
|
|
192
|
+
* 便捷方法,直接返回段落内的所有元素。
|
|
193
|
+
*
|
|
194
|
+
* @returns 段落元素数组,如果没有则返回null
|
|
195
|
+
*/
|
|
34
196
|
getRangeParagraphElementList(): IElement[] | null;
|
|
197
|
+
/**
|
|
198
|
+
* 获取选区所在的表格元素
|
|
199
|
+
*
|
|
200
|
+
* 当光标在表格内时,返回对应的表格元素。
|
|
201
|
+
*
|
|
202
|
+
* @returns 表格元素,如果不在表格内则返回null
|
|
203
|
+
*/
|
|
35
204
|
getRangeTableElement(): IElement | null;
|
|
205
|
+
/**
|
|
206
|
+
* 判断是否全选
|
|
207
|
+
*
|
|
208
|
+
* 检查当前选区是否覆盖了整个文档内容(非表格内)。
|
|
209
|
+
*
|
|
210
|
+
* @returns 如果是全选状态则返回true
|
|
211
|
+
*/
|
|
36
212
|
getIsSelectAll(): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* 判断指定点是否在选区范围内
|
|
215
|
+
*
|
|
216
|
+
* 用于检测鼠标位置是否在当前选区内。
|
|
217
|
+
*
|
|
218
|
+
* @param x - X坐标
|
|
219
|
+
* @param y - Y坐标
|
|
220
|
+
* @param curPageNo - 当前页码
|
|
221
|
+
* @returns 如果点在选区范围内则返回true
|
|
222
|
+
*/
|
|
37
223
|
getIsPointInRange(x: number, y: number, curPageNo: number): boolean;
|
|
224
|
+
/**
|
|
225
|
+
* 获取关键词的选区列表
|
|
226
|
+
*
|
|
227
|
+
* 在文档中搜索指定关键词,返回所有匹配位置的选区信息。
|
|
228
|
+
*
|
|
229
|
+
* @param payload - 要搜索的关键词
|
|
230
|
+
* @returns 匹配的选区数组
|
|
231
|
+
*/
|
|
38
232
|
getKeywordRangeList(payload: string): IRange[];
|
|
233
|
+
/**
|
|
234
|
+
* 判断当前位置是否可以输入
|
|
235
|
+
*
|
|
236
|
+
* 检查当前选区位置是否允许用户输入文本,
|
|
237
|
+
* 会考虑控件(如日期选择器)的限制。
|
|
238
|
+
*
|
|
239
|
+
* @returns 如果可以输入则返回true
|
|
240
|
+
*/
|
|
39
241
|
getIsCanInput(): boolean;
|
|
242
|
+
/**
|
|
243
|
+
* 设置选区
|
|
244
|
+
*
|
|
245
|
+
* 设置新的选区范围,支持普通文本选区和表格单元格选区。
|
|
246
|
+
* 当选区发生变化时,会重置默认样式并处理控件激活状态。
|
|
247
|
+
*
|
|
248
|
+
* @param startIndex - 起始索引
|
|
249
|
+
* @param endIndex - 结束索引
|
|
250
|
+
* @param tableId - 表格ID(可选)
|
|
251
|
+
* @param startTdIndex - 起始单元格索引(可选)
|
|
252
|
+
* @param endTdIndex - 结束单元格索引(可选)
|
|
253
|
+
* @param startTrIndex - 起始行索引(可选)
|
|
254
|
+
* @param endTrIndex - 结束行索引(可选)
|
|
255
|
+
* @param splitTdRange - 跨页单元格选区信息(可选)
|
|
256
|
+
*/
|
|
40
257
|
setRange(startIndex: number, endIndex: number, tableId?: string, startTdIndex?: number, endTdIndex?: number, startTrIndex?: number, endTrIndex?: number, splitTdRange?: SplitTdRange): void;
|
|
258
|
+
/**
|
|
259
|
+
* 替换选区
|
|
260
|
+
*
|
|
261
|
+
* 使用新的选区对象完全替换当前选区。
|
|
262
|
+
*
|
|
263
|
+
* @param range - 新的选区对象
|
|
264
|
+
*/
|
|
41
265
|
replaceRange(range: IRange): void;
|
|
266
|
+
/**
|
|
267
|
+
* 收缩选区
|
|
268
|
+
*
|
|
269
|
+
* 将选区收缩到结束位置(变成折叠状态)。
|
|
270
|
+
* 用于在删除操作后将光标移动到正确位置。
|
|
271
|
+
*/
|
|
42
272
|
shrinkRange(): void;
|
|
273
|
+
/**
|
|
274
|
+
* 设置并发射选区样式
|
|
275
|
+
*
|
|
276
|
+
* 根据当前选区计算样式信息,并通过监听器和事件总线通知外部。
|
|
277
|
+
* 用于更新工具栏按钮状态等场景。
|
|
278
|
+
*/
|
|
43
279
|
setRangeStyle(): void;
|
|
280
|
+
/**
|
|
281
|
+
* 恢复选区样式到默认值
|
|
282
|
+
*
|
|
283
|
+
* 将选区样式重置为编辑器默认值,
|
|
284
|
+
* 用于清除选区或文档为空时的样式状态。
|
|
285
|
+
*/
|
|
44
286
|
recoveryRangeStyle(): void;
|
|
287
|
+
/**
|
|
288
|
+
* 收缩选区边界
|
|
289
|
+
*
|
|
290
|
+
* 调整选区边界以处理控件元素的特殊情况。
|
|
291
|
+
* 当选区落在控件的占位符、前缀等位置时,
|
|
292
|
+
* 自动调整到合适的输入位置。
|
|
293
|
+
*
|
|
294
|
+
* @param context - 控件上下文,包含元素列表和选区信息
|
|
295
|
+
*/
|
|
45
296
|
shrinkBoundary(context?: IControlContext): void;
|
|
297
|
+
/**
|
|
298
|
+
* 渲染选区
|
|
299
|
+
*
|
|
300
|
+
* 在Canvas上绘制选区高亮矩形。
|
|
301
|
+
*
|
|
302
|
+
* @param ctx - Canvas 2D渲染上下文
|
|
303
|
+
* @param x - 矩形左上角X坐标
|
|
304
|
+
* @param y - 矩形左上角Y坐标
|
|
305
|
+
* @param width - 矩形宽度
|
|
306
|
+
* @param height - 矩形高度
|
|
307
|
+
*/
|
|
46
308
|
render(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number): void;
|
|
309
|
+
/**
|
|
310
|
+
* 将选区内容转换为字符串
|
|
311
|
+
*
|
|
312
|
+
* 提取选区内的文本内容,移除零宽字符。
|
|
313
|
+
*
|
|
314
|
+
* @returns 选区内的纯文本内容
|
|
315
|
+
*/
|
|
47
316
|
toString(): string;
|
|
317
|
+
/**
|
|
318
|
+
* 获取选区元素信息
|
|
319
|
+
*
|
|
320
|
+
* 根据上下文返回正确的元素列表和选区信息,
|
|
321
|
+
* 支持跨页单元格选区的特殊处理。
|
|
322
|
+
*
|
|
323
|
+
* @param context - 控件上下文,可指定元素列表和选区
|
|
324
|
+
* @returns 包含元素列表和选区信息的对象
|
|
325
|
+
*/
|
|
48
326
|
getRangeElement(context?: IControlContext): {
|
|
49
327
|
elementList: IElement[];
|
|
50
328
|
range: {
|