@officesdk/web
Version:
Web JS SDK for the Office SDK
1,707 lines (1,624 loc) • 42.2 kB
TypeScript
import { DocxWindow } from '@officesdk/editor-sdk-core/docx';
import type { PresentationToolbarOptions } from '@officesdk/editor-sdk-core/presentation';
import type { RPCReturnMapProxy } from '@officesdk/rpc';
import type { RPCReturnMethods } from '@officesdk/rpc';
import type { SheetToolbarOptions } from '@officesdk/editor-sdk-core/sheet';
/**
* 初始化 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 function createContentFacade(methods: RPCReturnMethods<EditorContentMethods>): RPCReturnMapProxy<EditorContent>;
/**
* 初始化 Office SDK 的配置项
*/
export declare type CreateOptions = DocumentCreateOptions | PresentationCreateOptions | SpreadsheetCreateOptions | DBTableCreateOptions | PdfCreateOptions | LiteDocCreateOptions;
/**
* 创建 Office SDK 实例
*/
export declare function createSDK<T extends FileType>(options: CreateOptions): OfficeSDK<T>;
/**
* 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;
/**
* Saves all pending changes to the database table
*/
saveChanges: () => Promise<void>;
}
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 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 {
}
/**
* 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;
};
/**
* 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 interface DBTableCreateOptions extends BaseCreateOptions {
fileType: FileType.DBTable;
settings?: unknown;
}
export declare interface DocumentCreateOptions extends BaseCreateOptions {
fileType: FileType.Document;
settings?: DocumentSettings;
}
/**
* 文档编辑器实例接口
*/
export declare interface DocumentEditor {
readonly ready: () => Promise<void>;
readonly selection: DocumentSelection;
readonly zoom: DocumentZoom;
readonly TOCs: DocumentTOCs;
readonly outline: DocumentOutline;
readonly window: DocxWindow;
}
export declare interface DocumentFacade {
/**
* 选区实例
*/
readonly selection: RPCReturnMapProxy<DocumentSelection>;
/**
* 主动保存内容
*/
readonly content: RPCReturnMapProxy<EditorContent>;
/**
* 缩放实例
*/
readonly zoom: RPCReturnMapProxy<DocumentZoom>;
/**
* 目录实例
*/
readonly TOCs: RPCReturnMapProxy<DocumentTOCs>;
/**
* 目录实例
*/
readonly outline: RPCReturnMapProxy<DocumentOutline>;
/**
* 窗口实例
*/
readonly window: RPCReturnMapProxy<DocxWindow>;
}
/**
* 传统文档工具栏一级菜单
*/
export declare type DocumentMenuEntryConfig = EditorMenuEntryConfig<DocumentMenuFeatureButtonName>;
/**
* 传统文档工具栏功能按钮
*/
export declare type DocumentMenuFeatureButtonConfig = EditorMenuFeatureButtonConfig<DocumentMenuFeatureButtonName>;
/**
* 传统文档工具栏内置功能按钮
*/
export declare type DocumentMenuFeatureButtonName = 'undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll';
export declare type DocumentMenuOptions = EditorMenuOptions<DocumentMenuFeatureButtonName>;
/**
* 传统文档目录大纲项接口
*/
export declare type DocumentOutline = EditorOutline<{
text: string;
}>;
/**
* 传统文档目录大纲项信息,用于描述传统文档中的目录项信息。
*/
export declare type DocumentOutlineItem = EditorOutlineItem<{
text: string;
}>;
/**
* 文档区域接口
*/
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 interface DocumentRangeValue {
start: string;
end: string;
}
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?: {
custom?: EditorMenuCustomButton[];
};
}
/**
* 通用目录项条目
* @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 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 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 EditorMenuEntryConfig<TName extends string> = {
/**
* 一级菜单名称
*/
name: string;
/**
* 二级菜单定义,定一个二维数组,用于定义二级菜单的结构,
* 将第一层数组中的所有按钮放到一个区域内用分隔符隔开,
* 第二层数组为按钮的定义,可以是功能按钮也可以是一个下拉入口。
*/
children: Array<EditorMenuFeatureButton<TName> | EditorMenuEntryButton>[];
};
/**
* 菜单栏功能按钮配置
*/
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 type EditorMenuOptions<TName extends string> = {
/**
* 菜单栏是否显示
*/
visible?: boolean;
/**
* 是否禁用菜单栏所有功能
*/
disabled?: boolean;
/**
* 菜单栏一级菜单配置
*/
entries?: EditorMenuEntryConfig<TName>[];
/**
* 菜单栏功能按钮配置
*/
features?: Partial<EditorMenuFeatureButtonConfig<TName>>;
/**
* 自定义按钮配置
*/
custom?: EditorMenuCustomButton[];
};
/**
* 编辑器模式
* - `standard` 标准模式,会根据用户权限配置不同的功能
* - `preview` 预览模式,只能查看内容
*/
export declare enum EditorModeType {
Standard = "standard",
Preview = "preview"
}
/**
* 通用目录接口
* @method getContent 获取目录信息
* @method addContentChangedListener 添加目录信息改变时的监听器
*/
export declare interface EditorOutline<Content = unknown> {
/**
* 获取目录信息
* @returns 目录信息
*/
getContent: () => Promise<EditorOutlineItem<Content>[]>;
/**
* 添加目录信息改变时的监听器
* @param listener 监听器
* @returns 取消监听器的函数
*/
addChangedListener: (listener: (content: EditorOutlineItem<Content>[]) => void) => () => void;
/**
* 跳转到指定条目对应的正文位置
* @param id 条目id
* @returns 跳转是否成功
*/
goto: (id: string) => Promise<boolean>;
}
/**
* 通用目录项条目
* @field id 目录项 ID
* @field level 目录项层级
* @field content 目录项内容
*/
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"
}
/**
* 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 interface LiteDocCreateOptions extends BaseCreateOptions {
fileType: FileType.LiteDoc;
settings?: unknown;
}
export declare interface LTDocFacade {
}
/**
* 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;
};
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 = EditorOutline<{
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;
}
/**
* 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 interface PresentationFacade {
/**
* 选区实例
*/
readonly selection: RPCReturnMapProxy<PresentationSelection>;
/**
* 内容实例
*/
readonly content: RPCReturnMapProxy<EditorContent>;
/**
* 缩放实例
*/
readonly zoom: RPCReturnMapProxy<PresentationZoom>;
/**
* 幻灯片集合实例
*/
readonly slides: RPCReturnMapProxy<PresentationSlides>;
}
/**
* 幻灯片选区接口
*/
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?: {
custom?: EditorMenuCustomButton[];
};
/**
* Toolbar related settings
*/
toolbar?: {
features?: PresentationToolbarOptions['features'];
};
}
/**
* 幻灯片形状接口
*/
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 type SDKSettings = {
[FileType.Document]: DocumentSettings;
[FileType.Presentation]: PresentationSettings;
[FileType.Spreadsheet]: SpreadsheetSettings;
};
/**
* 表格单元格对象
*/
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 ready: () => Promise<void>;
readonly workbook: SpreadsheetWorkbook;
readonly activeSheet: SpreadsheetWorksheet;
readonly activeCell: SpreadsheetCell | null;
readonly selections: SpreadsheetSelection[] | null;
}
export declare interface SpreadsheetFacade {
/**
* 工作簿实例
*/
readonly workbook: RPCReturnMapProxy<SpreadsheetWorkbook>;
/**
* 当前活跃工作表
*/
readonly activeSheet: Promise<RPCReturnMapProxy<SpreadsheetWorksheet>>;
/**
* 当前活动单元格
*/
readonly activeCell: Promise<RPCReturnMapProxy<SpreadsheetCell> | null>;
/**
* 当前选区
*/
readonly selections: Promise<RPCReturnMapProxy<SpreadsheetSelection>[] | null>;
/**
* 内容接口
*/
readonly content: ReturnType<typeof createContentFacade>;
}
/**
* 表格区域对象
*/
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 type SpreadsheetSelection = {
/**
* 获取选区的区域范围
* @param value 可选的选区值
*/
getRange: (value?: SpreadsheetRangeValue) => SpreadsheetRange | null;
/**
* 设置选区的区域范围
* @param value 选区的区域范围或null
*/
setRange: (value: SpreadsheetRangeValue | null) => void;
};
export declare interface SpreadsheetSettings {
/**
* 自定义菜单
*/
menu?: {
custom?: EditorMenuCustomButton[];
};
/**
* Toolbar related settings
*/
toolbar?: {
features?: SheetToolbarOptions['features'];
};
}
/**
* 工作簿接口
*/
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 { }