import { ShapeObjectType, ConnectorType, VBAShapeType } from "../common/enums"; import { LogicTable } from "../logics/logic_table"; import { CellRow } from "./table_helpers/row"; import { CellColumn } from "./table_helpers/column"; import { BorderRow } from "./table_helpers/border_row"; import { BorderColumn } from "./table_helpers/border_column"; import { Cell } from "./table_helpers/cell"; import { Rectangle } from "../common/vline"; import * as GOptions from "./x_options"; import { GVertex } from "./x_vertex"; import { CenterPosition, UpperLeftPosition } from "../common/vline"; import { TableOptionReteral } from "../logics/gobject_reterals"; export declare type _GTableOption = { rowCount?: number; columnCount?: number; rowHeight?: number; columnWidth?: number; columnWidths?: (number | null)[]; rowHeights?: (number | null)[]; position?: CenterPosition | UpperLeftPosition; }; export declare type GTableOption = GOptions.GObjectAttributes & _GTableOption; /** テーブルを表します。 */ export declare class GTable extends GVertex { /** * コンストラクタです。 */ constructor(svgbox: SVGElement); private _cellMap; getCellFromObjectID(id: string): Cell | null; protected setBasicOption(option: GTableOption): void; protected setOptionalSize(option: GTableOption): void; setOption(option: GTableOption): void; assignOption(option: TableOptionReteral): void; private _isNoneMode; get isNoneMode(): boolean; get isCenterBased(): boolean; updateSurfaceWithoutSVGText(): boolean; static constructAttributes(e: Element, removeAttributes?: boolean, output?: GTableOption): GTableOption; private _svgHiddenGroup; private _svgColumnInfo; private _svgRowBorderGroup; private _svgColumnBorderGroup; get svgRowBorderGroup(): SVGGElement; get svgColumnBorderGroup(): SVGGElement; get svgColumnInfo(): SVGMetadataElement; /** 各行を表す配列を返します。読み取り専用です。 */ private _rows; /** 各列を表す配列を返します。読み取り専用です。 */ private _columns; private _borderRows; private _borderColumns; get borderRows(): BorderRow[]; get borderColumns(): BorderColumn[]; get shape(): VBAShapeType; private isConstructing; get width(): number; set width(value: number); get height(): number; set height(value: number); /** * mergeによって見えなくなったBorderなどを格納している特別なSVGGElementです。 */ get svgHiddenGroup(): SVGGElement; get type(): ShapeObjectType; /** 各行を表す配列を返します。読み取り専用です。 */ get rows(): CellRow[]; /** 各列を表す配列を返します。読み取り専用です。 */ get columns(): CellColumn[]; /** 各セルを格納している二次元ジャグ配列を返します。 */ get cells(): Cell[][]; private _isDrawing; get isDrawing(): boolean; private _isAutoResized; get isAutoResized(): boolean; set isAutoResized(value: boolean); private _cellTextObserver; get cellTextObserver(): MutationObserver; private _cellTextObserverFunc; /** * テーブルの行方向の単位セルの数を返します。 * @returns 表の列数 */ get columnCount(): number; /** * テーブルの列方向の単位セルの数を返します。 * @returns 表の行数 */ get rowCount(): number; /** 各セルを表す配列を返します。テーブルの左上のセルから右に向かってインデックスが割り当てられ、 テーブル右下のセルが配列の最後の値となります。読み取り専用です。 */ createCellArray(): Cell[]; /** 各ボーダーを表す配列を返します。 ボーダーの順番は未定義です。 読み取り専用です。 */ get borders(): SVGLineElement[]; /** * セルの元々のサイズに合わせて表のサイズを調整します。 * @param allowShrink 各行と各列が現在の幅より短くなることを許す */ /** * 指定したセル座標のセルを返します。そのようなセルが存在しない場合nullを返します。 * @param x セルの列番号 * @param y セルの行番号 */ getTryCell(x: number, y: number): Cell | null; /** * 指定したセル座標範囲の二次元セル配列を返します。 * @param x 範囲の左上を示す列番号 * @param y 範囲の左上を示す行番号 * @param width 範囲に含まれる列数 * @param height 範囲に含まれる行数 */ getRangeCells(x: number, y: number, width: number, height: number): Cell[][]; /** * 指定したセル座標範囲のセルを配列でかえします。 * @param x 範囲の左上を示す列番号 * @param y 範囲の左上を示す行番号 * @param width 範囲に含まれる列数 * @param height 範囲に含まれる行数 */ getRangeCellArray(x: number, y: number, width: number, height: number): Cell[]; /** 所属しているSVGタグ上でのテーブルの領域を表すRectangleクラスを返します。 */ getRegion(): Rectangle; /** * 強調セルを全て返します。 */ getEmphasizedCells(): Cell[]; /** * 表を文字列に変換した結果を返します。 */ toPlainText(): string; private _isTextObserved; get isTextObserved(): boolean; set isTextObserved(b: boolean); private updateCellByLogicCell; /** * LogicTableからTableを構築します。 * @param logicTable 入力LogicTable */ buildFromLogicTable(logicTable: LogicTable): void; /** * 二次元文字列配列から表を作成します。 * @param table 各セルの文字列 * @param option 表情報 * @param option.x 表のx座標 * @param option.y 表のy座標 * @param option.rowHeight 各行の縦幅(px) * @param option.columnWidth 各列の横幅(px) * @param option.tableClassName 表(svgGroup)のクラス属性 * @param option.isLatexMode Trueのときセルの文字列をLatex表記とみなして描画します。 * */ construct(table: string[][], option?: { tableClassName?: string; x?: number; y?: number; rowHeight?: number; columnWidth?: number; isLatexMode?: boolean; }): void; /** * 表からVBAコードを作成します。 * @param id * @param slide */ createVBACode(id: number): string[]; /** * 現在のテーブルを表すVBAコードを返します。 */ private createVBAMainCode; /** * 新しいセルを作成します。 */ /** * テーブルを削除します。 * @param svg 表が格納されているSVG要素 */ removeTable(svg: SVGElement): void; private isSetSize; private firstSetSize; private borderSizeCheck; /** * 表の列数と行数を変更します。 * @param columnCount 列数 * @param rowCount 行数 */ setSize(columnCount: number, rowCount: number): void; private primitiveInsertRow; private primitiveInsertColumn; get borderColumnCount(): number; get borderRowCount(): number; /** * rowCount = 0, columnCount = 0のテーブルを作成します。 */ clear(): void; private removeCellRow; private removeCellColumn; private primitiveRemoveRow; private primitiveRemoveColumn; private removeColumnBorder; private removeRowBorder; removeRow(ithRow: number): void; removeColumn(ithColumn: number): void; private deleteXHorizontalBorders; private deleteYVerticalBorders; private createColumnBorder; private createRowBorder; private createRow; private createColumn; private insertXHorizontalBorders; private insertYVerticalBorders; /** * 新しい行をi番目の行に挿入します * @param 挿入行の行番号 */ insertRow(ithRow: number): void; /** * 新しい列をi番目の列に挿入します。 * @param ithColumn 挿入列の列番号 */ insertColumn(ithColumn: number): void; /** * 新しい行を作って挿入します。 * @param i 挿入行の行番号 * @param columnCount 挿入行の列数 */ /** 新しい列を最後の列に追加します。 */ appendColumn(): void; /** 新しい行を行の最後に追加します。 */ appendRow(): void; update(): void; protected connectObserverFunction(): void; /** * セル番号を振り直します。 */ private updateNodeRelations; /** * サイズを再計算します。 */ get childrenStableFlag(): boolean; /** * 接続部分の座標を返します。 * @param type * @param x * @param y */ getContactPosition(type: ConnectorType, x: number, y: number): [number, number]; getContactAutoPosition(x: number, y: number): ConnectorType; getVirtualWidth(): number; getVirtualHeight(): number; }