/** * 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', {}); }