"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.StyledColumnApiImpl = void 0;
const tslib_1 = require("tslib");
const ApiBase_1 = require("./ApiBase");
const StyledColumnRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/StyledColumnRedux"));
const StyledColumnInternalApi_1 = require("../Internal/StyledColumnInternalApi");
const ModuleConstants = tslib_1.__importStar(require("../../Utilities/Constants/ModuleConstants"));
class StyledColumnApiImpl extends ApiBase_1.ApiBase {
    internalApi;
    constructor(_adaptable) {
        super(_adaptable);
        this.internalApi = new StyledColumnInternalApi_1.StyledColumnInternalApi(_adaptable);
    }
    getStyledColumnState() {
        return this.getAdaptableState().StyledColumn;
    }
    getStyledColumns(config) {
        return (this.handleLayoutExtensionObjects(this.getStyledColumnState().StyledColumns, 'StyledColumn', config) ?? []);
    }
    getStyledColumnById(id, config) {
        return this.getStyledColumns(config).find((styledcolumn) => styledcolumn.Uuid === id);
    }
    getStyledColumnForColumnId(columnId, config) {
        return this.getStyledColumns(config).find((styledcolumn) => styledcolumn.ColumnId === columnId);
    }
    getActiveStyledColumns(config) {
        return this.getStyledColumns(config).filter((styledcolumn) => !styledcolumn.IsSuspended);
    }
    getSuspendedStyledColumns(config) {
        return this.getStyledColumns(config).filter((styledcolumn) => styledcolumn.IsSuspended);
    }
    deleteStyledColumn(styledColumn) {
        this.dispatchAction(StyledColumnRedux.StyledColumnDelete(styledColumn));
    }
    deleteAllStyledColumns() {
        this.dispatchAction(StyledColumnRedux.StyledColumnDeleteAll());
    }
    addStyledColumn(styledColumn) {
        this.dispatchAction(StyledColumnRedux.StyledColumnAdd(styledColumn));
    }
    editStyledColumn(styledColumn) {
        this.dispatchAction(StyledColumnRedux.StyledColumnEdit(styledColumn));
        return this.getStyledColumnById(styledColumn.Uuid);
    }
    isSparklineStyleStyledColumn(column) {
        if (!column) {
            return false;
        }
        return !!this.getStyledColumns().find((styledColumn) => !!styledColumn.SparklineStyle && styledColumn.ColumnId === column.columnId);
    }
    getActiveStyledColumnForColumn(column) {
        const styledColumns = this.getActiveStyledColumns();
        return styledColumns.find((sc) => sc.ColumnId == column.columnId);
    }
    hasPercentBarStyle(columnId) {
        if (!columnId) {
            return false;
        }
        return !!this.getStyledColumns().find((styledColumn) => !!styledColumn.PercentBarStyle && styledColumn.ColumnId === columnId);
    }
    hasGradientStyle(columnId) {
        if (!columnId) {
            return false;
        }
        return !!this.getStyledColumns().find((styledColumn) => !!styledColumn.GradientStyle && styledColumn.ColumnId === columnId);
    }
    canDisplaySparklines() {
        return this._adaptable.canDisplaySparklines();
    }
    suspendStyledColumn(styledColumn) {
        this.dispatchAction(StyledColumnRedux.StyledColumnSuspend(styledColumn));
    }
    unSuspendStyledColumn(styledColumn) {
        this.dispatchAction(StyledColumnRedux.StyledColumnUnSuspend(styledColumn));
    }
    suspendAllStyledColumn() {
        this.dispatchAction(StyledColumnRedux.StyledColumnSuspendAll());
    }
    unSuspendAllStyledColumn() {
        this.dispatchAction(StyledColumnRedux.StyledColumnUnSuspendAll());
    }
    openStyledColumnSettingsPanel() {
        this.showModulePopup(ModuleConstants.StyledColumnModuleId);
    }
}
exports.StyledColumnApiImpl = StyledColumnApiImpl;
