/*!
 * tym-table-editor.js
 * Copyright (c) 2022 shinichi tayama
 * Released under the MIT license.
 * see https://opensource.org/licenses/MIT
 */
import { AfterViewInit, ElementRef, Renderer2 } from '@angular/core';
import * as i0 from "@angular/core";
/** カラム定義 */
export type TYM_EDITOR_DEF = {
    /** 対象列番号(1～) */
    col: number;
    /** 対象列タイプ */
    type?: string;
    /** 対象列揃え指定 {'left' | 'center' | 'right'}, 規定値: 'left' */
    align?: 'left' | 'center' | 'right';
    /** 表示モードだけにする, 規定値: false */
    readonly?: boolean;
    /** 値を表示文字に変換する関数, 規定値: なし */
    viewfnc?: (val: string, type?: string, col?: number) => string;
    /** 値を編集する関数, 規定値: なし */
    editfnc?: (elm: HTMLElement, val: string, type?: string, col?: number) => Promise<string | null>;
};
/** オプション定義 */
export type TYM_EDITOR_OPTS = {
    /** 選択, カレントセルを折り返ししない */
    whiteSpaceNoWrap?: boolean;
    /** 編集モードの解除時に列のリサイズを実行する */
    editModeAutoResize?: boolean;
    /** フラットデザインにする */
    flatDesign?: boolean;
    /** 垂直方向のリサイズを無しにする */
    noVerticalResize?: boolean;
};
export declare class TymTableEditorComponent implements AfterViewInit {
    private _elmRef;
    private _renderer;
    private static idnum;
    private _thisElm;
    row: number;
    col: number;
    defs: TYM_EDITOR_DEF[];
    data: any[][];
    menu: (event: MouseEvent, row1: number, col1: number, row2: number, col2: number) => boolean;
    private _opts;
    set opts(opts: TYM_EDITOR_OPTS);
    private _setopt;
    /** Host Binding style */
    protected thFont: string;
    protected thWidth: string;
    protected thBgColor: string;
    protected thBorder: string;
    protected thWidth1: string;
    protected thWidth2: string;
    protected tdShadow: string;
    /**
     * コンストラクタ
     *
     * @memberof TymTreeViewComponent
     */
    constructor(_elmRef: ElementRef, _renderer: Renderer2);
    /**
     * ビューを初期化した後の処理
     */
    ngAfterViewInit(): void;
    /******************************************************************
     * セルの文字列を取得する
     * @param rownum 取得する行数
     * @param colnum 取得する列数
     * @param fnc 取得用コールバック関数
     */
    getCells(rownum: number, colnum: number, fnc: (row: number, col: number, val: string, eol: boolean) => void): void;
    /******************************************************************
     * テーブルにデータを設定する
     * @param data 設定するデータ
     */
    setData(data: any[][]): void;
    /******************************************************************
     * テーブルにデータを設定する
     * @param data 設定するデータ
     * @param row1 設定する開始行番号
     * @param col1 設定する開始列番号
     */
    setData(data: any[][], row1: number, col1: number): void;
    /******************************************************************
     * テーブルからデータを取得する
     * @param rownum 取得する行数
     * @param colnum 取得する列数
     * @returns data: any[][]
     */
    getData(rownum: number, colnum: number): any[][];
    /******************************************************************
     * テーブルからデータを取得する
     * @param row1 取得する開始行番号
     * @param col1 取得する開始列番号
     * @param row2 取得する終了行番号
     * @param col2 取得する終了列番号
     * @returns data: any[][]
     */
    getData(row1: number, col1: number, row2: number, col2: number): any[][];
    /******************************************************************
     * テーブルに行の挿入する
     * @param row 挿入する位置の行番号
     */
    insertRow(row: number): void;
    /******************************************************************
     * テーブルから行を削除する
     * @param row 削除する位置の行番号
     */
    removeRow(row: number): void;
    /******************************************************************
     * テーブルに列の挿入する
     * @param col 挿入する位置の列番号
     * @param def 定義
     */
    insertCol(col: number, def?: TYM_EDITOR_DEF): void;
    /******************************************************************
     * テーブルから列を削除する
     * @param col 削除する位置の列番号
     */
    removeCol(col: number): void;
    /******************************************************************
     * 選択範囲のセルをコピーする
     */
    copy(): void;
    /******************************************************************
     * カレントセルから貼り付ける
     */
    paste(): void;
    /******************************************************************
     * 選択範囲のテキストを消去する
     */
    delete(): void;
    /******************************************************************
     * 編集を元に戻す
     */
    undo(): void;
    /******************************************************************
     * 編集をやり直す
     */
    redo(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TymTableEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TymTableEditorComponent, "ngx-tym-table-editor", never, { "row": { "alias": "row"; "required": false; }; "col": { "alias": "col"; "required": false; }; "defs": { "alias": "defs"; "required": false; }; "data": { "alias": "data"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; "opts": { "alias": "opts"; "required": false; }; }, {}, never, never, false, never>;
}
