import type { ISlidePlaceholderData, ISlideTableElement } from '@univerjs-pro/slides'; import type { IDocumentData, Injector } from '@univerjs/core'; import type { ISlideTableCellStyle, ISlideTableSnapshot, ISlideTableStyleOptions } from '../types'; export interface ISlideTableBuilderInfo { unitId: string; subUnitId: string; table: ISlideTableSnapshot; element: ISlideTableElement; } /** * Builder for creating slide tables through the facade. * * @example * ```ts * import '@univerjs-pro/slides-table/facade'; * * const fPresentation = univerAPI.getActivePresentation(); * const fSlide = fPresentation?.getActiveSlide(); * const tableInfo = fSlide?.newTable(2, 3) * .setTableId('quarterly-table') * .setPosition(80, 100) * .setSize(420, 180) * .setValues([ * ['Quarter', 'Owner', 'Status'], * ['Q1', 'Sales', 'Done'], * ]) * .build(); * if (fSlide && tableInfo) { * fSlide.insertTable(tableInfo); * } * ``` */ export declare class FSlideTableBuilder { readonly unitId: string; readonly subUnitId: string; protected readonly _injector: Injector; private _rows; private _columns; tableId: string; elementId: string; left: number; top: number; width: number; height: number; rotation: number; rowHeight: number | undefined; columnWidth: number | undefined; name: string | undefined; description: string | undefined; styleId: string | undefined; custom: Record | null | undefined; options: ISlideTableStyleOptions; placeholder: ISlidePlaceholderData | undefined; private _values; private _textData; private _cellStyles; constructor(unitId: string, subUnitId: string, _injector: Injector, _rows?: number, _columns?: number); /** * Set the table resource id. * * @param {string} tableId The table resource id. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setTableId('pricing-table') * .build(); * fSlide.insertTable(tableInfo); * ``` */ setTableId(tableId: string): this; /** * Set the slide element id. * * @param {string} elementId The table element id. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setElementId('pricing-table-element') * .build(); * fSlide.insertTable(tableInfo); * ``` */ setElementId(elementId: string): this; /** * Set the table position by slide coordinates. * * @param {number} left The x-coordinate of the table. * @param {number} top The y-coordinate of the table. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setPosition(80, 120) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setPosition(left: number, top: number): this; /** * Set the table position by slide coordinates. * * @param {number} left The x-coordinate of the table. * @param {number} top The y-coordinate of the table. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setAbsolutePosition(80, 120) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setAbsolutePosition(left: number, top: number): this; /** * Set the table size. * * @param {number} width The table width. * @param {number} height The table height. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setSize(480, 220) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setSize(width: number, height: number): this; /** * Set the table width. * * @param {number} width The table width. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setWidth(480) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setWidth(width: number): this; /** * Set the table height. * * @param {number} height The table height. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setHeight(220) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setHeight(height: number): this; /** * Set the table rotation. * * @param {number} rotation The rotation in degrees. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setRotation(0) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setRotation(rotation: number): this; /** * Set default row height for all created rows. * * @param {number} height The row height. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setRowHeight(32) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setRowHeight(height: number): this; /** * Set default column width for all created columns. * * @param {number} width The column width. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setColumnWidth(120) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setColumnWidth(width: number): this; /** * Set table style options such as first row or banded rows. * * @param {ISlideTableStyleOptions} options The table style options. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(3, 4) * .setOptions({ firstRow: true, bandRow: true }) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setOptions(options: ISlideTableStyleOptions): this; /** * Set plain text values for the table cells. * * @param {string[][]} values Two-dimensional plain text values. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable() * .setValues([ * ['Name', 'Status'], * ['Facade', 'Ready'], * ]) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setValues(values: string[][]): this; /** * Set rich text document data for the table cells. * * @param {IDocumentData[][]} textData Two-dimensional rich text document data. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const doc = { * id: 'cell-doc', * body: { dataStream: 'Ready\r\n', paragraphs: [{ startIndex: 0 }], textRuns: [] }, * documentStyle: {}, * }; * const tableInfo = fSlide.newTable(1, 1) * .setTextData([[doc]]) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setTextData(textData: IDocumentData[][]): this; /** * Set style for one cell in the initial table snapshot. * * @param {number} row The zero-based row index. * @param {number} column The zero-based column index. * @param {ISlideTableCellStyle} style The cell style. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(1, 1) * .setCellStyle(0, 0, { fill: { color: '#E8F1FF', alpha: 1 } }) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setCellStyle(row: number, column: number, style: ISlideTableCellStyle): this; /** * Set the table name. * * @param {string} name The table name. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setName('Status table') * .build(); * fSlide.insertTable(tableInfo); * ``` */ setName(name: string): this; /** * Set the table description. * * @param {string} description The table description. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setDescription('Quarterly status table') * .build(); * fSlide.insertTable(tableInfo); * ``` */ setDescription(description: string): this; /** * Set the table theme style id. * * @param {string} styleId The table style id. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setStyleId('mediumStyle2') * .build(); * fSlide.insertTable(tableInfo); * ``` */ setStyleId(styleId: string): this; /** * Set custom table metadata. * * @param {Record | null} custom The custom metadata. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setCustom({ source: 'agent' }) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setCustom(custom: Record | null): this; /** * Set placeholder metadata on the table element. * * @param {ISlidePlaceholderData} placeholder The placeholder metadata. * @returns {FSlideTableBuilder} This builder, for chaining. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2) * .setPlaceholder({ id: 'body-1', type: univerAPI.Enum.PlaceholderTypeEnum.Table }) * .build(); * fSlide.insertTable(tableInfo); * ``` */ setPlaceholder(placeholder: ISlidePlaceholderData): this; /** * Build the table info used by `fSlide.insertTable()`. * * @returns {ISlideTableBuilderInfo} The table resource and element data. * * @example * ```ts * const tableInfo = fSlide.newTable(2, 2).build(); * const table = fSlide.insertTable(tableInfo); * console.log(table.getTableId()); * ``` */ build(): ISlideTableBuilderInfo; private _buildTable; }