UNPKG

@officesdk/web

Version:

Web JS SDK for the Office SDK

1,532 lines (1,446 loc) 39.3 kB
import type { DocxMenuFeatureButtonName } from '@officesdk/editor-sdk-core/combine'; import type { DocxMenuOptions } from '@officesdk/editor-sdk-core/combine'; import type { DocxParagraphs } from '@officesdk/editor-sdk-core/combine'; import type { DocxRangeValue } from '@officesdk/editor-sdk-core/combine'; import type { DocxToolbarOptions } from '@officesdk/editor-sdk-core/combine'; import type { DocxWindow } from '@officesdk/editor-sdk-core/combine'; import type { EditorOutline } from '@officesdk/editor-sdk-core/combine'; import type { EditorOutlineItem } from '@officesdk/editor-sdk-core/combine'; import type { PresentationMenuOptions } from '@officesdk/editor-sdk-core/combine'; import type { PresentationToolbarOptions } from '@officesdk/editor-sdk-core/combine'; import type { Server } from '@officesdk/rpc'; import type { SheetMenuEntryConfig } from '@officesdk/editor-sdk-core/combine'; import type { SheetMenuOptions } from '@officesdk/editor-sdk-core/combine'; import type { SheetToolbarOptions } from '@officesdk/editor-sdk-core/combine'; import type { TableFieldContextMenuOptions } from '@officesdk/editor-sdk-core/combine'; import type { TableListBarOptions } from '@officesdk/editor-sdk-core/combine'; import type { TableToolbarOptions } from '@officesdk/editor-sdk-core/combine'; import type { TableViewContextMenuOptions } from '@officesdk/editor-sdk-core/combine'; export declare type DatabaseTableContextFactory = (editor: DatabaseTableEditor) => Promise<EditorContext>; /** * 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 type DatabaseTableEditorFactory = (options: DatabaseTableSDKOptions | null) => Promise<DatabaseTableEditor>; 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; }; /** * Represents a sheet in a database table */ export declare interface DatabaseTableSheet { /** * The current selection in this sheet */ readonly selection: DatabaseTableSelection | null; } export declare type DocumentContextFactory = (editor: DocumentEditor) => Promise<EditorContext>; /** * 文档编辑器实例接口 */ 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 type DocumentEditorFactory = (options: DocumentSDKOptions | null) => Promise<DocumentEditor>; export declare enum DocumentExportType { Docx = "docx", Pdf = "pdf", Image = "image" } 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 interface DocumentSDKOptions { /** * menu settings */ menu?: { hidden?: boolean; disabled?: boolean; custom?: DocxMenuOptions['custom']; features?: DocxMenuOptions['features']; }; /** * toolbar settings */ toolbar?: { disabled?: boolean; hidden?: boolean; features?: DocxToolbarOptions['features']; }; } 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; }; /** * 通用目录项条目 * @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 DocumentWindow = DocxWindow; /** * 文档缩放接口 */ 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; }; /** * 编辑器内容接口 */ 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 EditorContext { /** * 编辑器内容接口 */ content?: EditorContent; } export declare type EditorContextFactoryMap = { [FileType.Document]: DocumentContextFactory; [FileType.Spreadsheet]: SpreadsheetContextFactory; [FileType.Presentation]: PresentationContextFactory; [FileType.LiteDoc]: LiteDocContextFactory; [FileType.DBTable]: DatabaseTableContextFactory; [FileType.Pdf]: PdfContextFactory; }; export declare type EditorFactoryMap = { [FileType.Document]: DocumentEditorFactory; [FileType.Spreadsheet]: SpreadsheetEditorFactory; [FileType.Presentation]: PresentationEditorFactory; [FileType.LiteDoc]: LiteDocEditorFactory; [FileType.DBTable]: DatabaseTableEditorFactory; [FileType.Pdf]: PdfEditorFactory; }; /** * 菜单栏自定义按钮配置 */ 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; }; /** * 菜单栏功能按钮配置 */ 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>>; /** * 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 LiteDocContextFactory = (editor: LiteDocEditor) => Promise<EditorContext>; export declare interface LiteDocEditor { } export declare type LiteDocEditorFactory = (options: LiteDocSDKOptions | null) => Promise<LiteDocEditor>; export declare interface LiteDocSDKOptions { } export declare type PdfContextFactory = (editor: PdfEditor) => Promise<EditorContext>; /** * PDF 编辑器实例接口 */ export declare interface PdfEditor { readonly pages: PdfPages; readonly selection: PdfSelection; readonly outline: PdfOutline; } export declare type PdfEditorFactory = (options: PdfSDKOptions | null) => Promise<PdfEditor>; /** * PDF 编辑器目录项接口,用于访问 pdf 文件中目录信息。 */ export declare type PdfOutline = Omit<EditorOutline<{ text: string; }>, 'setVisible'>; /** * PDF 编辑器目录项信息,用于描述 PDF 编辑器中的目录项信息。 */ export declare type PdfOutlineItem = EditorOutlineItem<{ text: string; }>; /** * 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; } export declare interface PdfSDKOptions { } /** * 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 type PresentationContextFactory = (editor: PresentationEditor) => Promise<EditorContext>; /** * 幻灯片编辑器实例接口 */ export declare interface PresentationEditor { readonly ready: () => Promise<void>; readonly export: (type: PresentationExportType) => Promise<void>; readonly selection: PresentationSelection; readonly zoom: PresentationZoom; readonly slides: PresentationSlides; } export declare type PresentationEditorFactory = (options: PresentationSDKOptions | null) => Promise<PresentationEditor>; export declare enum PresentationExportType { Pptx = "pptx", ImagePdf = "imagePdf", Image = "image" } export declare interface PresentationSDKOptions { /** * 自定义菜单 */ menu?: { disabled?: boolean; hidden?: boolean; custom?: PresentationMenuOptions['custom']; features?: PresentationMenuOptions['features']; }; /** * 工具栏设置 */ toolbar?: { disabled?: boolean; hidden?: boolean; features?: PresentationToolbarOptions['features']; }; } /** * 幻灯片选区接口 */ 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 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 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 declare interface ServeOptions<T extends FileType> { /** * 文件类型 */ fileType: T; /** * 编辑器实例 */ createEditor: EditorFactoryMap[T]; /** * 编辑器上下文 */ createContext?: EditorContextFactoryMap[T]; } export declare function serveSDK<T extends FileType>(options: ServeOptions<T>): Promise<Server>; /** * 表格单元格对象 */ 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 type SpreadsheetContextFactory = (editor: SpreadsheetEditor) => Promise<EditorContext>; /** * 电子表格编辑器实例接口 */ 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 SpreadsheetEditorFactory = (options: SpreadsheetSDKOptions | null) => Promise<SpreadsheetEditor>; export declare type SpreadsheetExportType = 'image' | 'pdf' | 'xlsx'; export declare type SpreadsheetMenuEntryConfig = SheetMenuEntryConfig; export declare type SpreadsheetMenuOptions = SheetMenuOptions; /** * 表格区域对象 */ export declare interface SpreadsheetRange { /** * 区域类型 */ readonly type: `${SpreadsheetRangeType}`; /** * 区域的行开始位置 */ readonly row: number; /** * 区域的列开始位置 */ readonly column: number; /** * 区域的行数 */ readonly rowCount: number; /** * 区域的列数 */ readonly columnCount: number; /** * 获取该区域对应的纯文本信息 */ getText: () => string; /** * 设置该区域的内容 * @param text 内容 */ setText: (text: string) => void; /** * 将区域中的内容以 HTML 格式返回 */ getHtml: () => string; /** * 设置该区域的内容为 HTML 格式 * @param html 内容 */ setHtml: (html: string) => void; } /** * 选区类型 */ export declare enum SpreadsheetRangeType { /** * 选中一个或多个单元格 */ Cells = "cells", /** * 选中一行或多行 */ Rows = "rows", /** * 选中一列或多列 */ Columns = "columns", /** * 选中整个工作表 */ Sheet = "sheet" } /** * 可用于描述一个表格选区的信息 */ export declare type SpreadsheetRangeValue = { /** * 单个或多个单元格 */ type: `${SpreadsheetRangeType.Cells}`; /** * 起始单元格的行号 */ row: number; /** * 总计行数 */ rowCount: number; /** * 起始单元格的列号 */ column: number; /** * 总计列数 */ columnCount: number; } | { /** * 一列或多列 */ type: `${SpreadsheetRangeType.Rows}`; /** * 起始行号 */ row: number; /** * 总计行数 */ rowCount: number; } | { /** * 一行或多行 */ type: `${SpreadsheetRangeType.Columns}`; /** * 起始列号 */ column: number; /** * 总计列数 */ columnCount: number; } | { /** * 整个工作表 */ type: `${SpreadsheetRangeType.Sheet}`; }; export declare interface SpreadsheetSDKOptions { /** * 菜单栏相关设置 */ menu?: { disabled?: boolean; hidden?: boolean; custom?: SpreadsheetMenuOptions['custom']; features?: SpreadsheetMenuOptions['features']; }; /** * Toolbar related settings */ toolbar?: { disabled?: boolean; hidden?: boolean; features?: SheetToolbarOptions['features']; }; } /** * 表格选区接口 */ export declare type SpreadsheetSelection = { /** * 获取选区的区域范围 * @param value 可选的选区值 */ getRange: (value?: SpreadsheetRangeValue) => SpreadsheetRange | null; /** * 设置选区的区域范围 * @param value 选区的区域范围或null */ setRange: (value: SpreadsheetRangeValue | null) => void; }; /** * 工作簿接口 */ export declare type SpreadsheetWorkbook = { /** * 获取所有工作表 */ getWorksheets: () => SpreadsheetWorksheet[]; /** * 获取指定的工作表 * @param sheetId 工作表ID */ getWorksheetById: (sheetId: string) => SpreadsheetWorksheet | null; /** * 获取当前活动的工作表 */ getActiveWorksheet: () => SpreadsheetWorksheet; /** * 激活指定的工作表 * @param sheetId 工作表ID */ setActiveWorksheet: (sheetId: string) => void; }; /** * 工作表对象 */ export declare type SpreadsheetWorksheet = { /** * 工作表对应编号 */ readonly id: string; /** * 工作表名称 */ readonly name: string; /** * 是否为当前活动的工作表 */ readonly isActive: boolean; /** * 获取工作表的所有选区 */ getSelections: () => SpreadsheetSelection[] | null; /** * 获取选区的物理位置(相对于浏览器窗口) * @param range 选区范围 */ getPhysicalPosition: (range: SpreadsheetRangeValue) => { left: number; top: number; width: number; height: number; } | null; /** * 添加选区变化监听器 * @param listener 监听函数 */ addRangeListener: (listener: (range: { sheet: string; ranges: SpreadsheetRangeValue[] | null; }) => void) => () => void; /** * 获取工作表中指定区域的单元格对象 * @param row 行号 * @param column 列号 */ getCell: (row: number, column: number) => SpreadsheetCell | null; /** * 获取工作表中选中的单元格对象 */ getActiveCell: () => SpreadsheetCell | null; /** * 激活工作表中某个单元格 * @param cell 单元格位置信息 */ setActiveCell: (cell: { row: number; column: number; }) => void; /** * 定位到单元格所在位置 * @param row 单元格所在行 * @param column 单元格所在列 */ locateCell: (row: number, column: number) => void; }; export { }