UNPKG

@officesdk/web

Version:

Web JS SDK for the Office SDK

2,280 lines (2,131 loc) 69.6 kB
import { RPCMap } from '@officesdk/rpc'; import { RPCReturnMapProxy } from '@officesdk/rpc'; import { RPCReturnMethods } from '@officesdk/rpc'; import { RPCReturnValueProxy } from '@officesdk/rpc'; /** * 初始化 Office SDK 的基础配置项, * 需要传入 endpoint、 token、 fileId 用于连接服务端并鉴权, * 以及指定 fileType 用于初始化 SDK 操作接口。 */ export declare interface BaseCreateOptions { /** * 连接的 endpoint */ endpoint: string; /** * 鉴权 token */ token: string; /** * 文件 ID */ fileId: string; /** * 自定义页面路径 */ path?: string; /** * 加载 SDK iframe 的根节点,这个是个可选配置, * 也可以在创建实例后再将 sdk.iframe 加载到页面任意位置。 */ root?: HTMLElement; /** * 用户自定义参数 */ userQuery?: Record<string, string>; /** * 已加载 SDK 环境的 iframe 实例 */ iframe?: HTMLIFrameElement; /** * 语言 */ lang?: 'zh-CN' | 'en-US'; /** * 编辑器模式 */ mode?: EditorModeType; /** * 编辑器在 `standard` 模式下的权限模式 */ role?: EditorStandardRole; } /** * 基础视图菜单项 */ export declare type BaseMenuItemName = /** 查看/展开记录 */ 'view' /** 复制记录 */ | 'copy' /** 删除记录 */ | 'remove' /** 添加评论 */ | 'comment' /** 获取记录链接 */ | 'link'; /** * 日历视图菜单项 */ export declare type CalendarMenuItemName = /** 查看/展开记录 */ 'view' /** 复制记录 */ | 'copy' /** 删除记录 */ | 'remove'; export declare function createContentFacade(methods: RPCReturnMethods<EditorContentMethods>): RPCReturnMapProxy<EditorContent>; /** * 初始化 Office SDK 的配置项 */ export declare type CreateOptions = DocumentCreateOptions | PresentationCreateOptions | SpreadsheetCreateOptions | DBTableCreateOptions | PdfCreateOptions | LiteDocCreateOptions; /** * create Office SDK instance */ export declare function createSDK(options: DocumentCreateOptions): OfficeDocumentSDK; export declare function createSDK(options: SpreadsheetCreateOptions): OfficeSpreadSheetSDK; export declare function createSDK(options: PresentationCreateOptions): OfficePresentationSDK; export declare function createSDK(options: PdfCreateOptions): OfficePdfSDK; export declare function createSDK(options: DBTableCreateOptions): OfficeDBTableSDK; export declare function createSDK(options: LiteDocCreateOptions): OfficeLiteDocSDK; /** * Represents the editor interface for database tables */ export declare interface DatabaseTableEditor { /** * The currently active database table sheet */ readonly activeDBTable: DatabaseTableSheet; /** * The current selection in the database table */ readonly selection: DatabaseTableSelection; /** * Related content changes */ readonly content: EditorContent; } export declare interface DatabaseTableFacade { /** * Current activeDBSheet */ readonly activeDBSheet: Promise<RPCReturnMapProxy<DatabaseTableSheet>>; /** * Current selection */ readonly selection: RPCReturnMapProxy<DatabaseTableSelection>; /** * Get content */ readonly content: ReturnType<typeof createContentFacade>; } export declare type DatabaseTableFieldContextMenuFeatureButtonName = TableFieldContextMenuFeatureButtonName; export declare type DatabaseTableFieldContextMenuOptions = TableFieldContextMenuOptions; export declare type DatabaseTableListBarButtonName = TableListBarButtonName; export declare type DatabaseTableListBarCustomButtonConfig = TableListBarCustomButtonConfig; export declare type DatabaseTableListBarOptions = TableListBarOptions; export declare type DatabaseTableMethods = { /** * Returns the active database table sheet */ getActiveDBSheet: () => DatabaseTableSheet; /** * Returns the current database table selection */ getDBTableSelection: () => DatabaseTableSelection; /** * Returns the editor content */ getContent: () => EditorContent; }; /** * Configuration options for the database table SDK */ export declare interface DatabaseTableSDKOptions { /** * Options for customizing the field context menu in database table * Controls the visibility, behavior and available actions in the context menu for table fields */ fieldContextMenu?: TableFieldContextMenuOptions; /** * Options for customizing the view context menu in database table * Controls the visibility, behavior and available actions in the view context menu */ viewContextMenu?: TableViewContextMenuOptions; /** * Options for customizing the toolbar in database table * Controls the visibility, behavior and available buttons in the main toolbar */ toolbar?: TableToolbarOptions; /** * Options for customizing the list bar in database table * Controls the visibility, behavior and available actions in the list bar */ listBar?: TableListBarOptions; } /** * Provides methods to get and manipulate the current selection in a database table */ export declare type DatabaseTableSelection = { /** * Returns the type of the current selection */ getSelectionType: () => DatabaseTableSelectionType | null; /** * Returns the current selection value or null if nothing is selected */ getSelection: () => DatabaseTableSelectionValue | null; /** * Selects a rectangular range of cells * @param range - The range to select, or null to clear selection */ selectRange: (range: { /** * Starting zero-based row index in the current view */ row: number; /** * Starting zero-based column index in the current view */ column: number; /** * Number of rows in the selection */ rowCount: number; /** * Number of columns in the selection */ columnCount: number; } | null) => void; /** * Selects a single row * @param row - Zero-based row index in the current view */ selectRow: (row: number) => void; /** * Selects a single column * @param column - Zero-based column index in the current view */ selectColumn: (column: number) => void; /** * Selects a single cell * @param row - Zero-based row index in the current view * @param column - Zero-based column index in the current view */ selectCell: (row: number, column: number) => void; /** * Selects multiple non-contiguous rows * @param rows - Array of zero-based row indices in the current view */ selectMultipleRows: (rows: number[]) => void; /** * Selects multiple contiguous columns * @param column - Starting zero-based column index in the current view * @param columnCount - Number of columns to select */ selectMultipleColumns: (column: number, columnCount: number) => void; /** /** * Selects all cells * */ selectAll: () => void; }; /** * Defines the types of selections that can be made in a database table */ export declare enum DatabaseTableSelectionType { /** * Single cell selection */ Cell = "Cell", /** * Row selection */ Row = "Row", /** * Column selection */ Column = "Column", /** * Entire table selection */ All = "All", /** * Multiple non-contiguous rows selection */ MultipleRows = "MultipleRows", /** * Rectangular range selection (multiple cells) */ Range = "Range", /** * Multiple contiguous columns selection */ MultipleColumns = "MultipleColumns" } /** * Represents the value of a database table selection based on its type */ export declare type DatabaseTableSelectionValue = { /** * Single cell selection */ type: DatabaseTableSelectionType.Cell; /** * Zero-based row index in the current view */ row: number; /** * Zero-based column index in the current view */ column: number; } | { /** * Single row selection */ type: DatabaseTableSelectionType.Row; /** * Zero-based row index in the current view */ row: number; } | { /** * Single column selection */ type: DatabaseTableSelectionType.Column; /** * Zero-based column index in the current view */ column: number; } | { /** * Entire database table selection */ type: DatabaseTableSelectionType.All; } | { /** * Multiple non-contiguous rows selection */ type: DatabaseTableSelectionType.MultipleRows; /** * Array of zero-based row indices in the current view */ rows: number[]; } | { /** * Multiple contiguous columns selection */ type: DatabaseTableSelectionType.MultipleColumns; /** * Starting zero-based column index in the current view */ column: number; /** * Number of columns selected */ columnCount: number; } | { /** * Rectangular range selection */ type: DatabaseTableSelectionType.Range; /** * Starting zero-based row index in the current view */ row: number; /** * Starting zero-based column index in the current view */ column: number; /** * Number of rows in the selection */ rowCount: number; /** * Number of columns in the selection */ columnCount: number; }; export declare interface DatabaseTableSettings { fieldContextMenu?: DatabaseTableSDKOptions['fieldContextMenu']; viewContextMenu?: DatabaseTableSDKOptions['viewContextMenu']; toolbar?: DatabaseTableSDKOptions['toolbar']; listBar?: DatabaseTableSDKOptions['listBar']; } /** * Represents a sheet in a database table */ export declare interface DatabaseTableSheet { /** * The current selection in this sheet */ readonly selection: DatabaseTableSelection | null; } export declare type DatabaseTableToolbarFeatureButtonName = TableToolbarFeatureButtonName; export declare type DatabaseTableToolbarOptions = TableToolbarOptions; export declare type DatabaseTableViewContextMenuFeatureButtonName = TableViewContextMenuFeatureButtonName; export declare type DatabaseTableViewContextMenuOptions = TableViewContextMenuOptions; export declare interface DBTableCreateOptions extends BaseCreateOptions { fileType: FileType.DBTable; settings?: DatabaseTableSettings; } export declare interface DocumentCreateOptions extends BaseCreateOptions { fileType: FileType.Document; settings?: DocumentSettings; } /** * 文档编辑器实例接口 */ export declare interface DocumentEditor { readonly ready: () => Promise<void>; readonly export: (type: DocumentExportType) => Promise<void>; readonly selection: DocumentSelection; readonly zoom: DocumentZoom; readonly TOCs: DocumentTOCs; readonly outline: DocumentOutline; readonly window: DocumentWindow; readonly paragraphs: DocumentParagraphs; } export declare enum DocumentExportType { Docx = "docx", Pdf = "pdf", Image = "image" } export declare interface DocumentFacade { /** * 导出文档 */ readonly export: (type: DocumentExportType) => Promise<void>; /** * 选区实例 */ readonly selection: RPCReturnMapProxy<DocumentSelection>; /** * 主动保存内容 */ readonly content: RPCReturnMapProxy<EditorContent>; /** * 缩放实例 */ readonly zoom: RPCReturnMapProxy<DocumentZoom>; /** * 目录实例 */ readonly TOCs: RPCReturnMapProxy<DocumentTOCs>; /** * 目录实例 */ readonly outline: RPCReturnMapProxy<DocumentOutline>; /** * 窗口实例 */ readonly window: RPCReturnMapProxy<DocumentWindow>; /** * 段落实例 */ readonly paragraphs: RPCReturnMapProxy<DocumentParagraphs>; } export declare type DocumentMenuEntryConfig = DocxMenuEntryConfig; export declare type DocumentMenuFeatureButtonName = DocxMenuFeatureButtonName; export declare type DocumentMenuOptions = DocxMenuOptions; /** * 传统文档目录大纲项接口 */ export declare type DocumentOutline = Omit<EditorOutline<{ text: string; }>, 'setVisible'>; /** * 传统文档目录大纲项信息,用于描述传统文档中的目录项信息。 */ export declare type DocumentOutlineItem = EditorOutlineItem<{ text: string; }>; export declare type DocumentParagraphs = DocxParagraphs; /** * 文档区域接口 */ export declare interface DocumentRange { /** * 区域的开始位置, * 当文档发生变化后,区域的标识可能会失效。 */ readonly start: string; /** * 区域的结束位置, * 当文档发生变化后,区域的标识可能会失效。 */ readonly end: string; /** * 是否为光标。 */ readonly isCaret: boolean; /** * 获取该区域对应的纯文本信息。 * @returns 返回纯文本字符串 */ getText: () => string; /** * 将区域内的文本设置为指定的文本, * 如果文本为空,则清空区域内的文本。 * 如果区域为 * @param text */ setText: (text: string) => void; /** * 将区域中的内容以 HTML 格式返回。 * @returns 返回 HTML 字符串 */ getHtml: () => string; /** * 将区域内的文本设置为指定的 HTML 内容, * 如果内容为空,则清空区域内的内容。 * 如果区域为光标,则会将光标位置的文本替换为指定的 HTML 格式。 * @param html 指定的 HTML 内容 */ setHtml: (html: string) => void; /** * 获取选区在当前屏幕上的位置信息 * @returns */ getBounding: () => DocumentRangeBounding | null; } /** * 记录区域在屏幕上的位置信息, * 包含了区域的四个边界值,以及开始和结束位置。 * 因为选区是由多个矩形区域组成的, * 所以这里的位置信息是一个矩形区域的边界值。 */ export declare interface DocumentRangeBounding { /** * 区域的左边界值, * 代表区域的最左边的 X 坐标, * 也就是区域的最左边的矩形区域的左边界值。 */ top: number; /** * 区域的上边界值, * 代表区域的最上边的 Y 坐标, * 也就是区域的最上边的矩形区域的上边界值。 */ right: number; /** * 区域的右边界值, * 代表区域的最右边的 X 坐标, * 也就是区域的最右边的矩形区域的右边界值。 */ bottom: number; /** * 区域的下边界值, * 代表区域的最下边的 Y 坐标, * 也就是区域的最下边的矩形区域的下边界值。 */ left: number; /** * 第一行的开始 X 坐标, */ start: number; /** * 最后一行的结束 X 坐标, */ end: number; } export declare type DocumentRangeValue = DocxRangeValue; export declare type DocumentSelection = { /** * 获取选区的区域范围, * 如果选区不存在,则返回 null。 * @returns */ getRange: (range?: DocumentRangeValue) => DocumentRange | null; /** * 设置选区的区域范围, * 设置后,选区会自动选中指定范围。 * 如果设置为 null,则清空选区。 * @param value 选区的区域范围 */ setRange: (range: DocumentRangeValue | null) => void; /** * 添加选区变化监听器,当选区发生变化时,会触发回调。 * @param listener * @returns */ addRangeListener: (listener: (range: DocumentRangeValue | null) => void) => void; /** * 获取文档全部选区范围。 * @returns */ getWholeRange: () => DocumentRange; }; export declare interface DocumentSettings { /** * menu settings */ menu?: { disabled?: boolean; hidden?: boolean; custom?: DocxMenuOptions['custom']; features?: DocxMenuOptions['features']; }; /** * toolbar settings */ toolbar?: { disabled?: boolean; hidden?: boolean; features?: DocxToolbarOptions['features']; }; } /** * 通用目录项条目 * @field id 目录项 ID * @field level 目录项层级 * @field content 目录项内容 */ export declare interface DocumentTocContentItem { /** * 目录项 ID */ id: string; /** * 目录项层级 */ level: number; /** * 目录项内容 */ content: { /** * 目录项内容 */ text: string; }; } /** * 传统文档目录操作接口, * 可以调用接口更新目录和页码, * 也可以设置目录级别、页码等样式。 */ export declare interface DocumentTocItem { /** * 获取目录信息 * @returns 目录信息 */ getContent: () => Promise<DocumentTocContentItem[]>; /** * 添加目录信息改变时的监听器 * @param listener 监听器 * @returns 取消监听器的函数 */ addContentChangedListener: (listener: (content: DocumentTocContentItem[]) => void) => () => void; /** * 跳转到指定条目对应的正文位置 * @param id 条目id * @returns 跳转是否成功 */ goto: (id: string) => Promise<boolean>; /** * 更新整个目录 * @returns 是否更新成功 */ update: () => Promise<boolean>; /** * 仅更新页码 * @returns 是否更新成功 */ updatePageNumbers: () => Promise<boolean>; /** * 设置目录层级 * @param level 目录层级 * @returns 是否设置成功 */ setLevel: (level: number) => Promise<boolean>; } /** * 传统文档目录接口, * 表示文档中的所有目录, * 需要注意的是,DocumentTOCs 和 DocumentTocItem 是两个不同的对象,前者代表代表目录集合(一个文档可以插入多个目录),后者单个目录。 */ export declare interface DocumentTOCs { /** * 获取所有目录列表 * @returns 目录列表 */ getAll: () => Promise<DocumentTocItem[]>; /** * 获取某个目录 * @param index 目录索引 * @returns 目录 */ getOne: (index: number) => Promise<DocumentTocItem | null>; /** * 删除所有目录 * @returns 删除结果 */ deleteAll: () => Promise<boolean>; /** * 删除某个目录 * @param index * @returns 删除结果 */ deleteOne: (index: number) => Promise<boolean>; /** * 添加目录 * @param options 目录选项 * @returns 添加结果 */ add: (options: { /** * 添加目录的位置, * 默认为当前选区位置。 * 如果添加失败,如:当前选区信息不正确,会返回 false。 * 如果添加成功,会返回 true。 */ range?: string; }) => Promise<boolean>; } export declare type DocumentToolbarFeatureButtonName = DocxToolbarFeatureButtonName; export declare type DocumentWindow = DocxWindow; export declare type DocumentWindowScrollIntoViewOptions = DocxWindowScrollIntoViewOptions; export declare type DocumentWindowScrollParams = DocxWindowScrollParams; /** * 文档缩放接口 */ export declare type DocumentZoom = { /** * 获取当前缩放比例。 * @returns */ getPercentage: () => number; /** * 设置缩放比例, * 有效范围 10 ~ 500。 * @param percentage */ setPercentage: (percentage: number) => void; /** * 设置自动缩放模式, * none: 不自动缩放,默认值。 * window: 根据窗口宽度自动缩放,页面宽度随着窗口宽度变化而变化 * page: 根据页面尺寸自动缩放,将页面缩放到可以完整显示的大小 * @param mode 缩放模式,可以是 'window' 或 'page' */ setFitMode: (mode: 'none' | 'window' | 'page') => void; /** * 获取当前缩放模式。 * @returns */ getFitMode: () => 'none' | 'window' | 'page'; /** * 放大。 */ zoomIn: () => void; /** * 缩小。 */ zoomOut: () => void; }; /** * 传统文档菜单栏一级菜单 * 可以通过指定泛型T来指定一级菜单的类型,例如DocxMenuEntryConfig<'button'>,不指定则默认为所有类型都有可能 */ export declare type DocxMenuEntryConfig<T extends EditorMenuItemType = EditorMenuItemType> = EditorMenuEntryConfig<DocxMenuFeatureButtonName> & { type: T; }; /** * 传统文档菜单栏内置功能按钮 */ export declare type DocxMenuFeatureButtonName = 'file' | 'edit' | 'view' | 'insert' | 'format' | 'design' | 'transform-file' | 'plugins' | 'undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll' | 'export' | 'saveTemplate' | 'viewHistory' | 'saveHistory' | 'exportWord' | 'exportImage' | 'exportPDF' | 'exportWPS' | 'exportImagePDF' | 'print' | 'viewFileInfo' | 'insertAttachment' | 'insertFilesFromDrive' | 'insertSignature' | 'insertImage' | 'insertImageFromLocal' | 'insertImageFromUrl' | 'enableEditingRestriction'; /** * 传统文档菜单栏相关配置,目前菜单栏不是所有套件都支持, */ export declare type DocxMenuOptions = EditorMenuOptions<DocxMenuFeatureButtonName>; export declare interface DocxParagraphItem { /** * 获取段落范围(Range) * @returns 段落范围 */ getRange: () => Promise<DocxRange>; } export declare interface DocxParagraphs { /** * 获取所有段落列表 * @returns 段落列表 */ getAll: () => Promise<DocxParagraphItem[]>; /** * 获取某个段落对象 * @param index 段落对象索引 * @returns 段落对象 */ getOne: (index: number) => Promise<DocxParagraphItem | null>; /** * 获取段落数量 * @returns 段落数量 */ count: () => Promise<number>; } /** * 区域(Range) * 区域对象,表示文档中的一个连续区域,每个 Range 对象包含起始字符位置和终止字符位置。 */ /** * 文档区域对象, * 用于表示文档中的一个连续区域, * 每个选区值包含了起始位置和结束位置信息的字符串。 */ export declare interface DocxRange { /** * 区域的开始位置, * 当文档发生变化后,区域的标识可能会失效。 */ readonly start: string; /** * 区域的结束位置, * 当文档发生变化后,区域的标识可能会失效。 */ readonly end: string; /** * 是否为光标。 */ readonly isCaret: boolean; /** * 获取该区域对应的纯文本信息。 * @returns */ getText: () => string; /** * 将区域中的内容以 HTML 格式返回。 * @returns */ getHtml: () => string; /** * 将区域内的文本设置为指定的文本, * 如果文本为空,则清空区域内的文本。 * 如果区域为 * @param text */ setText: (text: string) => void; /** * 将区域内的文本设置为指定的 HTML 内容, * 如果内容为空,则清空区域内的内容。 * 如果区域为光标,则会将光标位置的文本替换为指定的 HTML 格式。 * @param html */ setHtml: (html: string) => void; /** * 获取选区在当前屏幕上的位置信息 * @returns */ getBounding: () => DocxRangeBounding | null; } /** * 记录区域在屏幕上的位置信息, * 包含了区域的四个边界值,以及开始和结束位置。 * 因为选区是由多个矩形区域组成的, * 所以这里的位置信息是一个矩形区域的边界值。 */ export declare interface DocxRangeBounding { /** * 区域的左边界值, * 代表区域的最左边的 X 坐标, * 也就是区域的最左边的矩形区域的左边界值。 */ top: number; /** * 区域的上边界值, * 代表区域的最上边的 Y 坐标, * 也就是区域的最上边的矩形区域的上边界值。 */ right: number; /** * 区域的右边界值, * 代表区域的最右边的 X 坐标, * 也就是区域的最右边的矩形区域的右边界值。 */ bottom: number; /** * 区域的下边界值, * 代表区域的最下边的 Y 坐标, * 也就是区域的最下边的矩形区域的下边界值。 */ left: number; /** * 第一行的开始 X 坐标, */ start: number; /** * 最后一行的结束 X 坐标, */ end: number; } /** * 区域值, * 包含了区域的开始位置和结束位置。 */ export declare interface DocxRangeValue { /** * 开始位置 */ start: string; /** * 结束位置 */ end: string; } /** * Docx 工具栏按钮名称类型 */ export declare type DocxToolbarFeatureButtonName = /** 撤销 */ 'undo' /** 重做 */ | 'redo' /** 格式刷 */ | 'formatPainter' /** 清除格式 */ | 'clearFormat' /** 缩放 */ | 'zoom' /** 样式 */ | 'styles' /** 字体 */ | 'font' /** 字号 */ | 'fontSize' /** 增加字号 */ | 'increaseFontSize' /** 减少字号 */ | 'decreaseFontSize' /** 粗体 */ | 'bold' /** 斜体 */ | 'italic' /** 下划线 */ | 'underline' /** 删除线 */ | 'strikeThrough' /** 文字颜色 */ | 'textColor' /** 高亮颜色 */ | 'highlightColor' /** 上标 */ | 'superScript' /** 下标 */ | 'subScript' /** 左对齐 */ | 'leftAlign' /** 居中 */ | 'center' /** 右对齐 */ | 'rightAlign' /** 两端对齐 */ | 'justify' /** 编号列表 */ | 'numberedList' /** 项目符号列表 */ | 'bulletedList' /** 增加缩进 */ | 'increaseIndent' /** 减少缩进 */ | 'decreaseIndent' /** 行距 */ | 'lineSpacing' /** 插入图片 */ | 'insertImage' /** 插入图片-从本地 */ | 'insertImageFromLocal' /** 插入图片-来自链接 */ | 'insertImageFromURL' /** 插入表格 */ | 'insertTable' /** 链接 */ | 'insertLink' /** 开启限制编辑 */ | 'enableEditingRestriction' /** 添加评论 */ | 'addComments'; /** * 传统文档工具栏配置 */ export declare type DocxToolbarOptions = EditorToolbarOptions<DocxToolbarFeatureButtonName>; /** * 文档窗口接口 */ export declare interface DocxWindow { /** * 获取当前文档滚动位置, * 返回值为当前文档滚动位置的偏移量, * 这个偏移量是基于文档的左上角为原点,向右向下为正方向 * @returns */ getScrollPosition: () => { x: number; y: number; }; /** * 滚动到指定位置 * @param params 滚动参数 */ scrollTo: (params: DocxWindowScrollParams) => void; /** * 滚动到指定页面 * @param page */ scrollToPage: (page: number) => void; /** * 将传入的区域滚动到可视区域 * @param range */ scrollIntoView: (range: DocxRangeValue, options?: DocxWindowScrollIntoViewOptions) => void; /** * 添加滚动监听器 * @param listener */ addScrollListener: (listener: (offset: { x: number; y: number; }) => void) => () => void; } /** * 滚动到指定区域的选项 */ export declare interface DocxWindowScrollIntoViewOptions { /** * 滚动到指定区域的位置,默认是start */ position?: 'start' | 'end'; /** * 是否将滚动到的区域置于文档可见范围的顶部。默认为bottom */ alignment?: 'top' | 'bottom'; } export declare type DocxWindowScrollParams = { /** * 区域,跳转到对应区域位置 */ type: 'range'; /** * 区域值,这个值可以通过 DocxSelection 的 getRange 方法拿到,取start或者end */ range: string; } | { /** * 页码,跳转到对应页码位置 */ type: 'page'; /** * 页码 */ page: number; } | { /** * 顶部,跳转到文档顶部 */ type: 'top'; } | { /** * 滚动到某个位置, * 这个位置是基于文档的左上角为原点,向右向下为正方向 */ type: 'position'; /** * 位置 */ position: { x: number; y: number; }; } | { /** * 偏移量,跳转到对应偏移量位置 */ type: 'offset'; /** * 偏移量 */ offset: { x: number; y: number; }; } | { /** * 跳转到某个评论 */ type: 'comment'; /** * 评论 ID */ commentId: string; }; /** * 编辑器内容接口 */ export declare type EditorContent = { /** * 主动保存内容 */ save: () => void; /** * 文件内容发生变化时触发回调 * @param listener * @returns */ addContentListener: (listener: (record: EditorContentRecord) => void) => () => void; }; export declare type EditorContentMethods = { getContent: () => EditorContent; }; /** * 每次内容发生变化时,会生成一个当前页面唯一的记录。 */ export declare interface EditorContentRecord { /** * 生成内容的时间戳 */ timestamp: number; /** * 内容标识 */ id: string; } export declare interface EditorFeatureConfig { /** * 功能是否被禁用(入口还在) */ disabled?: boolean; /** * 功能入口是否被隐藏 */ hidden?: boolean; } /** * 基础菜单项配置,所有菜单项类型都包含这些属性 */ export declare interface EditorMenuBaseMenuItemConfig<TName extends string> { /** * 菜单项的唯一标识,用以确定配置的是哪个菜单 */ name: TName; /** * 菜单项类型 */ type: EditorMenuItemType; } /** * 按钮菜单项配置 */ export declare interface EditorMenuButtonMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> { type: 'button'; /** * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击 */ disabled?: boolean; /** * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案 */ label?: string; /** * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url * 配置为空字符串则可以隐藏菜单项默认的图标 */ icon?: string; /** * 菜单项点击事件,接受一个函数,可以自定义点击事件 */ callback?: () => void; } /** * 菜单栏自定义按钮配置 */ export declare type EditorMenuCustomButton = { /** * 按钮名称 */ name: string; /** * 链接 */ type: 'link'; /** * 按钮文本 */ text: string; /** * 链接地址 */ url: string; } | { /** * 按钮名称 */ name: string; /** * 按钮,点击后触发 callback 回调 */ type: 'button'; /** * 按钮文本 */ label: string; /** * 按钮图标,可以是 base64 的图片信息,也可以是图片 url */ icon?: string; /** * 按钮点击事件 */ callback: () => void; }; /** * 菜单栏二级以下的菜单入口 */ export declare type EditorMenuEntryButton = { type: 'entry'; /** * 菜单名称 */ name: string; /** * 菜单图标 */ icon?: string; }; /** * 编辑器菜单配置类型 * 根据 TName 类型的不同返回不同的菜单配置类型: * 1. 当 TName 是对象类型时(如 {pasteMenu: [...]}),会自动提取对象的键作为菜单名称 * 2. 当 TName 是字符串时,返回普通菜单项配置 */ export declare type EditorMenuEntryConfig<TName extends EditorMenuName> = TName extends Record<string, EditorMenuName[]> ? EditorMenuEntryMenuItemConfig<string & keyof TName, TName[keyof TName]> : TName extends string ? EditorMenuHiddenMenuItemConfig<TName> | EditorMenuButtonMenuItemConfig<TName> | EditorMenuLinkMenuItemConfig<TName> | EditorMenuEntryMenuItemConfig<TName, never> : never; /** * 子菜单入口配置 * TName: 菜单项名称(字符串类型) * TChildName: 子菜单项名称数组类型,用于配置下一级菜单项 */ export declare interface EditorMenuEntryMenuItemConfig<TName extends string, TChildName extends EditorMenuName[]> extends EditorMenuBaseMenuItemConfig<TName> { type: 'entry'; /** * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击 */ disabled?: boolean; /** * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案 */ label?: string; /** * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url * 配置为空字符串则可以隐藏菜单项默认的图标 */ icon?: string; /** * 下一级菜单配置,下一级菜单配置项和上一级相同 * 如果下一级仍然是 entry 类型,可以无限向下扩展 * 只有当 TName 是对象类型时才应有子菜单 */ children?: TChildName extends EditorMenuName[] ? EditorMenuEntryConfig<TChildName[number]>[] : never; } /** * 菜单栏功能按钮配置 */ export declare type EditorMenuFeatureButton<TName extends string> = { /** * 隐藏按钮,用作在需要隐藏菜单栏时定义 */ type: 'hidden'; /** * 按钮名称 */ name: TName; } | { type: 'button'; /** * 按钮名称 */ name: TName; /** * 按钮标签(显示文本) */ label: string; /** * 按钮图标,可以是 base64 的图片信息,也可以是图片 url */ icon?: string; }; /** * 菜单栏按钮配置 */ export declare type EditorMenuFeatureButtonConfig<TName extends string> = Record<TName, EditorMenuFeatureButton<TName>>; /** * 菜单功能按钮配置 */ export declare interface EditorMenuFeatureConfig extends EditorFeatureConfig { /** * 按钮标签(显示文本)一般工具栏上的按钮不会显示文本,如果需要显示文本,配置此项。 */ label?: string; /** * 按钮图标,可以是 base64 的图片信息,也可以是图片 url */ icon?: string; /** * 按钮点击事件.接受一个函数,可以自定义点击事件。 */ callback?: () => void; /** * 按钮提示文本,鼠标悬浮到按钮上时显示的tooltip文字 */ tooltip?: string; /** * 按钮在工具栏中位置,不设置则按照默认位置 */ index?: number; } /** * 隐藏菜单项配置 */ export declare interface EditorMenuHiddenMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> { type: 'hidden'; } /** * 菜单项类型 */ export declare type EditorMenuItemType = 'hidden' | 'button' | 'link' | 'entry'; /** * 链接菜单项配置 */ export declare interface EditorMenuLinkMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> { type: 'link'; /** * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击 */ disabled?: boolean; /** * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案 */ text?: string; /** * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url * 配置为空字符串则可以隐藏菜单项默认的图标 */ icon?: string; /** * 跳转链接地址 */ url?: string; } /** * 菜单项名称类型 * 可以是字符串或包含子菜单数组的对象 * 如: 'copy' 或 { pasteMenu: ['pasteAll', 'pasteHead', 'pasteValueOnly'] } */ export declare type EditorMenuName = string | Record<string, EditorMenuName[]>; /** * 菜单栏相关配置,目前菜单栏不是所有套件都支持, * 菜单栏是指的编辑器最上放可以展开二级菜单的那一栏。 */ export declare interface EditorMenuOptions<TName extends EditorMenuName> { /** * 菜单栏是否隐藏,设置为true, 则整个菜单栏不显示 */ hidden?: boolean; /** * 是否禁用菜单栏所有功能。设置为true,菜单栏依旧显示,但所有菜单项为灰色不可点击 */ disabled?: boolean; /** * 菜单栏一级菜单配置,指显示在菜单栏上的菜单项。 * 支持普通菜单项和嵌套菜单项 */ entries?: EditorMenuEntryConfig<TName>[]; /** * 菜单栏功能按钮配置 * 更加间接的配置项 * 仅在 TName 为字符串类型时有效 */ features?: [TName] extends [string] ? Partial<Record<TName, EditorMenuFeatureConfig>> : never; /** * 自定义按钮配置 */ custom?: (EditorMenuButtonMenuItemConfig<string> | EditorMenuLinkMenuItemConfig<string>)[]; } /** * 编辑器模式 * - `standard` 标准模式,会根据用户权限配置不同的功能 * - `preview` 预览模式,只能查看内容 */ export declare enum EditorModeType { Standard = "standard", Preview = "preview" } /** * 大纲目录接口 */ export declare interface EditorOutline<Content = unknown> { /** * 设置大纲目录是否可见 * @param visible 是否可见 */ setVisible: (visible: boolean) => void; /** * 获取目录信息 * @returns 目录信息 */ getContent: () => Promise<EditorOutlineItem<Content>[]>; /** * 添加目录信息改变时的监听器 * @param listener 监听器 * @returns 取消监听器的函数 */ addChangedListener: (listener: (content: EditorOutlineItem<Content>[]) => void) => () => void; /** * 跳转到指定条目对应的正文位置 * @param id 条目id * @returns 跳转是否成功 */ goto: (id: string) => Promise<boolean>; } /** * 大纲目录项条目 */ export declare interface EditorOutlineItem<Content = unknown> { /** * 目录项 ID */ id: string; /** * 目录项层级 */ level: number; /** * 目录项内容 */ content: Content; } /** * 编辑器在 `standard` 模式下的权限模式 * - `editor` 编辑模式 * - `viewer` 阅读模式 * - `reviewer` 评论模式 */ export declare enum EditorStandardRole { Editor = "editor", Viewer = "viewer", Reviewer = "reviewer" } /** * 工具栏功能按钮配置(包括内置按钮和自定义按钮) */ export declare interface EditorToolbarFeatureButton<TName extends string> extends EditorFeatureConfig { /** * 按钮的唯一标识,用以确定配置的是哪个按钮。 */ name?: TName; /** * 按钮标签(显示文本)一般工具栏上的按钮不会显示文本,如果需要显示文本,配置此项。 */ label?: string; /** * 按钮图标,可以是 base64 的图片信息,也可以是图片 url */ icon?: string; /** * 按钮点击事件.接受一个函数,可以自定义点击事件。 */ callback?: () => void; /** * 按钮提示文本,鼠标悬浮到按钮上时显示的tooltip文字 */ tooltip?: string; /** * 按钮在工具栏中位置,不设置则按照默认位置 */ index?: number; } /** * 工具栏内置功能按钮配置 */ export declare type EditorToolbarFeatureButtonConfig<TName extends string> = { [key in TName]?: EditorToolbarFeatureButton<key>; }; /** * 工具栏相关设置,可以控制工具栏的显示内容 */ export declare interface EditorToolbarOptions<TName extends string> { /** * 控制工具栏显隐状态 */ hidden?: boolean; /** * 是否禁用工具栏所有功能 */ disabled?: boolean; /** * 现有按钮的功能配置 */ features?: EditorToolbarFeatureButtonConfig<TName>; /** * 自定义按钮 */ custom?: EditorToolbarFeatureButtonConfig<string>; /** * 工具栏挂载的容器dom,配置后则挂载到指定的容器上 * * 如果不配置则按照套件的默认方式挂载。 */ container?: HTMLElement; } /** * Supported file types for the Office SDK. */ export declare enum FileType { Document = 0,// Document file, like .doc, .docx Spreadsheet = 1,// Spreadsheet file, like .xls, .xlsx Presentation = 2,// Presentation file, like .ppt, .pptx LiteDoc = 3,// Lite document. DBTable = 4,// Database table. Pdf = 5 } /** * 画廊视图菜单项 */ export declare type GalleryMenuItemName = BaseMenuItemName | 'insert'; /** * 甘特图视图菜单项 */ export declare type GanttMenuItemName = GridMenuItemName /** 设置为里程碑 */ | 'milestone' /** 取消里程碑 */ | 'cancelMilestone' /** 清除内容 */ | 'clear'; /** * 网格视图菜单项 */ export declare type GridMenuItemName = BaseMenuItemName /** 粘贴 */ | 'pasteValue' /** 选择性粘贴 - 含子菜单 */ | { pasteMenu: [ /** 粘贴内容及表头 */ 'pasteAll', /** 仅粘贴表头 */ 'pasteHead', /** 仅粘贴内容 */ 'pasteValueOnly' ]; } /** 向上插入记录 */ | 'insertBefore' /** 向下插入记录 */ | 'insertAfter' /** 新增子任务 */ | 'newSubRecord' /** 展开父任务 */ | 'parentRecord'; /** * 看板视图菜单项 */ export declare type KanbanMenuItemName = BaseMenuItemName /** 编辑分组 */ | 'editGroup' /** 移除分组 */ | 'removeGroup'; /** * 列表视图菜单项 */ export declare type ListMenuItemName = BaseMenuItemName /** 向上插入记录 */ | 'insertBefore' /** 向下插入记录 */ | 'insertAfter' /** 新增子任务 */ | 'newSubRecord' /** 展开父任务 */ | 'parentRecord' /** 获取指向此记录的链接 */ | 'copyRecordLink'; export declare interface LiteDocCreateOptions extends BaseCreateOptions { fileType: FileType.LiteDoc; settings?: unknown; } export declare interface LTDocFacade { } /** * dbtable sdk */ export declare type OfficeDBTableSDK = OfficeSDK<FileType.DBTable>; /** * document sdk */ export declare type OfficeDocumentSDK = OfficeSDK<FileType.Document>; /** * liteDoc sdk */ export declare type OfficeLiteDocSDK = OfficeSDK<FileType.LiteDoc>; /** * pdf sdk */ export declare type OfficePdfSDK = OfficeSDK<FileType.Pdf>; /** * presentation sdk */ export declare type OfficePresentationSDK = OfficeSDK<FileType.Presentation>; /** * Office SDK 实例对象,调用 connect 方法初始化后返回的可操作对象。 * 实例内封装了一些常用的属性和函数供开发者使用。 */ export declare interface OfficeSDK<T extends FileType> { /** * 连接 Office SDK, * 连接成功返回 Office SDK 实例, * 如果失败会抛出对应错误。 * @returns 返回 Office SDK 实例 */ connect: () => Promise<OfficeSDKMap[T]>; /** * 当前 SDK iframe 加载的 URL */ readonly url: string; /** * 当前 SDK iframe 的实例 */ readonly iframe: HTMLIFrameElement; /** * 销毁当前 SDK 实例 */ destroy(): void; } export declare type OfficeSDKMap = { [FileType.Document]: DocumentFacade; [FileType.Spreadsheet]: SpreadsheetFacade; [FileType.Presentation]: PresentationFacade; [FileType.LiteDoc]: LTDocFacade; [FileType.DBTable]: DatabaseTableFacade; [FileType.Pdf]: PdfFacade; }; /** * spreadsheet sdk */ export declare type OfficeSpreadSheetSDK = OfficeSDK<FileType.Spreadsheet>; export declare interface PdfCreateOptions extends BaseCreateOptions { fileType: FileType.Pdf; settings?: unknown; } export declare interface PdfFacade { /** * 页面操作实例 */ readonly pages: RPCReturnMapProxy<PdfPages>; /** * 选区实例 */ readonly selection: RPCReturnMapProxy<PdfSelection>; /** * 目录实例 */ readonly outline: RPCReturnMapProxy<PdfOutline>; } /** * PDF 编辑器目录项接口,用于访问 pdf 文件中目录信息。 */ export declare type PdfOutline = Omit<EditorOutline<{ text: string; }>, 'setVisible'>; /** * PDF 页面实例 */ export declare interface PdfPage { /** * 获取当前页码 */ readonly pageNumber: number; /** * 获取当前页面的大小 * @returns */ getPageSize: () => { width: number; height: number; }; } /** * PDF 页面集合操作接口 */ export declare interface PdfPages { /** * 获取当前页码 * @returns */ getCurrentPageNumber: () => number; /** * 设置当前页码并跳转至对应页面 * @param page */ setCurrentPage: (page: number) => void; /** * 获取总页数 * @returns */ getPagesCount: () => number; /** * 获取指定页面 */ getPage: (page: number) => Promise<PdfPage | null>; } /** * PDF 区域对象 */ export declare interface PdfRange { /** * 区域的开始位置 */ readonly start: string; /** * 区域的结束位置 */ readonly end: string; /** * 获取该区域对应的纯文本信息。 * @returns */ getText: () => string; /** * 将区域中的内容以 HTML 格式返回。 * @returns */ getHtml: () => string; /** * 获取选区在当前屏幕上的位置信息 * @returns */ getBounding: () => PdfRangeBounding | null; } /** * 记录选区在屏幕上的矩形位置信息, * 包含整个选区包围盒的四个边界值(top, right, bottom, left), * 以及第一行开始和最后一行结束的横向坐标。 * 这些信息是选区中所有 ClientRects 的集合范围。 */ export declare interface PdfRangeBounding { /** * 区域的上边界值, * 表示所有选区中最上方的 Y 坐标。 */ top: number; /** * 区域的右边界值, * 表示所有选区中最右侧的 X 坐标。 */ right: number; /** * 区域的下边界值, * 表示所有选区中最下方的 Y 坐标。 */ bottom: number; /** * 区域的左边界值, * 表示所有选区中最左侧的 X 坐标。 */ left: number; /** * 第一行选区的起始 X 坐标。 */ start: number; /** * 最后一行选区的结束 X 坐标。 */ end: number; } /** * 可用于描述一个 PDF 区域的信息。 */ export declare interface PdfRangeValue { start: string; end: string; } /** * PDF 选区接口 */ export declare interface PdfSelection { /** * 获取选区的区域范围, * 如果没有指定范围,则返回当前选区的范围。 * 如果指定了范围,则返回指定范围的选区。 * 如果选区不存在,则返回 null。 * @returns */ getRange: (value?: PdfRangeValue) => PdfRange | null; /** * 设置选区的区域范围, * 设置后,选区会自动选中指定范围。 * 如果设置为 null,则清空选区。 * @param value */ setRange: (value: PdfRangeValue | null) => void; /** * 添加选区变化监听器,当选区发生变化时,会触发回调。 * @param listener * @returns */ addRangeListener: (listener: (value: PdfRangeValue | null) => void) => void; /** * 获取 pdf 全部选区范围。 * @returns */ getWholeRange: () => PdfRange; } export declare interface PresentationCreateOptions extends BaseCreateOptions { fileType: FileType.Presentation; settings?: PresentationSettings; } export declare enum PresentationExportType { Pptx = "pptx", ImagePdf = "imagePdf", Image = "image" } export declare interface PresentationFacade { /** * export file */ readonly export: (type: PresentationExportType) => Promise<void>; /** * 选区实例 */ readonly selection: RPCReturnMapProxy<PresentationSelection>; /** * 内容实例 */ readonly content: RPCReturnMapProxy<EditorContent>; /** * 缩放实例 */ readonly zoom: RPCReturnMapProxy<PresentationZoom>; /** * 幻灯片集合实例 */ readonly slides: RPCReturnMapProxy<PresentationSlides>; } /** * 幻灯片工具栏内置功能按钮 */ export declare type PresentationMenuFeatureButtonName = 'edit' | 'insert' | 'format' | 'animation' | 'arrange' | 'design' | 'slide' | 'view' | 'slideshow' | 'review' | 'exportConverter'; export declare type PresentationMenuOptions = EditorMenuOptions<PresentationMenuFeatureButtonName>; /** * 幻灯片选区接口 */ export declare type PresentationSelection = { /** * 获取选区的文本区域范围, * 如果选区不存在,则返回 null。 * @returns */ getTextRange: () => PresentationTextRange | null; /** * 设置选区的文本区域范围, * 设置后,选区会自动选中指定范围。 * 如果设置为 null,则清空选区。 * @param value 选区的区域范围 */ setTextRange: (range: PresentationTextRangeValue | null) => void; /** * 获取当前选中的形状, * 如果没有选中形状,则返回 null。 */ getSelectedShapes: () => PresentationShape[] | null; /** * 选中指定的形状,选中形状后会清空文字选区。 * 如果 value 为 null,则清空选中的形状。 * @param ids 指定的形状 id */ setSelectedShapes: (ids: string[] | null) => void; /** * 添加选区变化监听器,当选区发生变化时,会触发回调。 * @param listener * @returns */ addRangeListener: (listener: (range: PresentationTextRangeValue | null) => void) => void; }; export declare interface PresentationSettings { /** * 自定义菜单 */ menu?: { disabled?: boolean; hidden?: boolean; custom?: PresentationMenuOptions['custom']; features?: PresentationMenuOptions['features']; }; /** * Toolbar related settings */ toolbar?: { disabled?: boolean; hidden?: boolean; features?: PresentationToolbarFeatureButtonConfig; }; } /** * 幻灯片形状接口 */ export declare interface PresentationShape { /** * 获取形状的 id */ readonly id: string; } /** * 幻灯片页面接口 */ export declare interface PresentationSlide { /** * 当前幻灯片的 id */ readonly id: string; /** * 获取当前幻灯片在所有幻灯片中的索引 * @returns */ getIndex: () => number; /** * 获取当前页面所有的形状 * @returns */ getShapes: () => PresentationShape[]; } /** * 幻灯片集合接口 */ export declare interface PresentationSlides { /** * 获取当前幻灯片 */ getCurrentSlide: () => PresentationSlide; /** * 切换当前幻灯片 * @param slideId */ setCurrentSlideIndex: (slideId: string) => void; /** * 获取幻灯片索引 * @param slideId * @returns */ getSlideIndex: (slideId: string) => number; /** * 获取幻灯片总数 */ getSlidesCount: () => number; /** * 获取所有幻灯片 * @returns */ getSlides: () => PresentationSlide[]; /** * 获取指定幻灯片 * @param slideId */ getSlideById: (slideId: string) => PresentationSlide; /** * 获取当前选中的幻灯片。 * 至少存在一个选中的幻灯片。 * @returns */ getSelectedSlides: () => PresentationSlide[]; /** * 设置选中的幻灯片 * @param ids * @returns */ setSelectedSlides: (ids: string[]) => void; } /** * 幻灯片文本区域接口 */ export declare interface PresentationTextRange { /** * 区域的开始位置, * 当内容发生变化后,区域的标识可能会失效。 */ readonly start: string; /** * 区域的结束位置, * 当内容发生变化后,区域的标识可能会失效。 */ readonly end: string; /** * 获取该区域对应的纯文本信息。 * @returns 返回纯文本字符串 */ getText: () => string; /** * 设置该区域的内容 * @param text 内容 */ setText: (text: string) => void; /** * 将区域中的内容以 HTML 格式返回。 * @returns 返回 HTML 字符串 */ getHtml: () => string; /** * 设置该区域的内容为 HTML 格式 * @param html 内容 */ setHtml: (html: string) => void; } /** * 可用于描述一个幻灯片文本区域的信息。 */ export declare interface PresentationTextRangeValue { start: string; end: string; } /** * 幻灯片工具栏功能按钮配置 */ export declare type PresentationToolbarFeatureButtonConfig = EditorToolbarFeatureButtonConfig<PresentationToolbarFeatureButtonName>; /** * 幻灯片工具栏按钮名称 */ export declare type PresentationToolbarFeatureButtonName = 'insertImage' | 'insertShape' | 'insertChart' | 'insertTable' | 'insertTextbox' | 'insertSymbol' | 'insertDiagram' | 'insertAudio' | 'insertAttachment' | 'insertVideo' | 'insertLink' | 'changeTheme' | 'presentationSize' | 'backgroundSetting' | 'pageTransitionAnimation' | 'elementAnimation' | 'searchAndReplace' | 'addComment'; /** * 幻灯片工具栏 */ export declare type PresentationToolbarOptions = EditorToolbarOptions<PresentationToolbarFeatureButtonName>; /** * 幻灯片缩放接口 */ export declare type PresentationZoom = { /** * 获取当前缩放比例。 * @returns */ getPercentage: () => number; /** * 设置缩放比例, * 有效范围 10 ~ 500。 * @param percentage */ setPercentage: (percentage: number) => void; /** * 设置自动缩放模式, * none: 不自动缩放,默认值。 * window: 根据窗口宽度自动缩放,页面宽度随着窗口宽度变化而变化 * @param mode 缩放模式 */ setFitMode: (mode: 'none' | 'window') => void; /** * 获取当前缩放模式。 * @returns */ getFitMode: () => 'none' | 'window'; /** * 放大。 */ zoomIn: () => void; /** * 缩小。 */ zoomOut: () => void; }; export { RPCMap } export { RPCReturnMapProxy } export { RPCReturnMethods } export { RPCReturnValueProxy } export declare type SDKSettings = { [FileType.Document]: DocumentSettings; [FileType.Presentation]: PresentationSettings; [FileType.Spreadsheet]: SpreadsheetSettings; }; /** * 专业表格工具栏一级菜单 */ export declare type SheetMenuEntryConfig = EditorMenuEntryConfig<SheetMenuFeatureButtonName>; /** * 专业表格工具栏内置功能按钮 */ export declare type SheetMenuFeatureButtonName = 'edit' | 'insert' | 'format' | 'formula' | 'data' | 'view' | 'form' | 'tools' | 'plugins' | 'help'; export declare type SheetMenuOptions = EditorMenuOptions<SheetMenuFeatureButtonName>; /** * 专业表格工具栏按钮名称 */ export declare type SheetToolbarFeatureButtonName = 'undo' | 'redo' | 'print' | 'optionalPaste' | 'brush' | 'clear' | 'dataFormat' | 'percentage' | 'thousandsSeparator' | 'increasePrecision' | 'decreasePrecision' | 'fontFamily' | 'fontSize' | 'increaseFontSize' | 'decreaseFontSize' | 'fontColor' | 'bold' | 'italic' | 'underline' | 'strike' | 'border' | 'backgroundColor' | 'align' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'textWrap' | 'vertical' | 'verticalTop' | 'verticalMiddle' | 'verticalBottom' | 'mergeCell' | 'sheetLtr' | 'sheetRtl' | 'cellLtr' | 'cellRtl' | 'textRotation' | 'increaseIndent' | 'decreaseIndent' | 'frozen' | 'sort' | 'filter' | 'conditionalFormat' | 'dataValidation' | 'formula' | 'importRange' | 'checkbox' | 'link' | 'chart' | 'image' | 'quickTools' | 'searchReplace' | 'revision' | 'comment'; /** * 专业表格工具栏 */ export declare type SheetToolbarOptions = EditorToolbarOptions<SheetToolbarFeatureButtonName>; /** * 表格单元格对象 */ export declare type SpreadsheetCell = { /** * 单元格所在的行号 */ readonly row: number; /** * 单元格所在的列号 */ readonly column: number; /** * 单元格所在的工作表 ID */ readonly sheetId: string; /** * 获取单元格的文本 */ getCellText: () => string; /** * 获取单元格的值 */ getCellValue: () => SpreadsheetCellValue | null; }; /** * 单元格值类型 */ export declare type SpreadsheetCellValue = { type: 'primitive'; value: string | number | boolean; } | { type: 'date'; value: number; } | { type: 'calcError'; value: { error: string; }; }; export declare interface SpreadsheetCreateOptions extends BaseCreateOptions { fileType: FileType.Spreadsheet; settings?: SpreadsheetSettings; } /** * 电子表格编辑器实例接口 */ export declare interface SpreadsheetEditor { readonly export: (type: SpreadsheetExportType) => Promise<void>; readonly ready: () => Promise<void>; readonly workbook: SpreadsheetWorkbook; readonly activeSheet: SpreadsheetWorksheet; readonly activeCell: SpreadsheetCell | null; readonly selections: SpreadsheetSelection[] | null; } export declare type SpreadsheetExportType = 'image' | 'pdf' | 'xlsx'; export declare interface SpreadsheetFacade { /** * export file */ readonly export: (type: SpreadsheetExportType) => Promise<void>; /** * 工作簿实例 */ readonly workbook: RPCReturnMapProxy<SpreadsheetWorkbook>; /** * 当前活跃工作表 */ readonly activeSheet: Promise<RPCReturnMapProxy<SpreadsheetWorksheet>>; /** * 当前活动单元格 */