65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
/**
|
|
* Collabora 高亮功能模块
|
|
*
|
|
* @encoding UTF-8
|
|
*/
|
|
|
|
import { sendUnoCommand } from '../Uno';
|
|
|
|
/**
|
|
* 高亮文本
|
|
* @param iframeWindow - iframe 的 contentWindow
|
|
* @param text - 要高亮的文本
|
|
* @param color - 高亮颜色,默认 16776960 = 黄色
|
|
*/
|
|
export function unoHighlightText(
|
|
iframeWindow: Window,
|
|
text: string,
|
|
color: number = 16776960
|
|
): void {
|
|
// 1. 查找所有
|
|
sendUnoCommand(iframeWindow, '.uno:ExecuteSearch', {
|
|
'SearchItem.SearchString': { type: 'string', value: text },
|
|
'SearchItem.Command': { type: 'long', value: 1 }, // 1 = FindAll
|
|
'SearchItem.SearchFlags': { type: 'long', value: 0 },
|
|
'SearchItem.AlgorithmType': { type: 'short', value: 0 },
|
|
'SearchItem.Backward': { type: 'boolean', value: false },
|
|
'Quiet': { type: 'boolean', value: true },
|
|
});
|
|
|
|
// 2. 设置背景色
|
|
sendUnoCommand(iframeWindow, '.uno:BackColor', {
|
|
BackColor: { type: 'long', value: color },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 移除高亮
|
|
* @param iframeWindow - iframe 的 contentWindow
|
|
* @param text - 要移除高亮的文本
|
|
*/
|
|
export function unoRemoveHighlight(iframeWindow: Window, text: string): void {
|
|
// 1. 查找所有
|
|
sendUnoCommand(iframeWindow, '.uno:ExecuteSearch', {
|
|
'SearchItem.SearchString': { type: 'string', value: text },
|
|
'SearchItem.Command': { type: 'long', value: 1 }, // 1 = FindAll
|
|
'SearchItem.SearchFlags': { type: 'long', value: 0 },
|
|
'SearchItem.AlgorithmType': { type: 'short', value: 0 },
|
|
'SearchItem.Backward': { type: 'boolean', value: false },
|
|
'Quiet': { type: 'boolean', value: true },
|
|
});
|
|
|
|
// 2. 移除背景色 -1 = 无色
|
|
sendUnoCommand(iframeWindow, '.uno:BackColor', {
|
|
BackColor: { type: 'long', value: -1 },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 取消 - Escape
|
|
* @param iframeWindow - iframe 的 contentWindow
|
|
*/
|
|
export function unoEscape(iframeWindow: Window): void {
|
|
sendUnoCommand(iframeWindow, '.uno:Escape', {});
|
|
}
|