"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnFolderPropsMixin = exports.CfnCustomPermissionsPropsMixin = exports.CfnActionConnectorPropsMixin = exports.CfnVPCConnectionPropsMixin = exports.CfnTopicPropsMixin = exports.CfnThemePropsMixin = exports.CfnTemplatePropsMixin = exports.CfnRefreshSchedulePropsMixin = exports.CfnDataSourcePropsMixin = exports.CfnDataSetPropsMixin = exports.CfnDashboardPropsMixin = exports.CfnAnalysisPropsMixin = void 0;
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/* eslint-disable @stylistic/max-len, eol-last */
const cdk = __importStar(require("aws-cdk-lib/core"));
const service = __importStar(require("aws-cdk-lib/aws-quicksight"));
/**
 * Creates an analysis in Amazon QuickSight.
 *
 * @cloudformationResource AWS::QuickSight::Analysis
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-analysis.html
 */
class CfnAnalysisPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnAnalysisPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["analysisId", "awsAccountId", "definition", "errors", "folderArns", "name", "parameters", "permissions", "sheets", "sourceEntity", "status", "tags", "themeArn", "validationStrategy"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Analysis`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnAnalysisMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnAnalysisPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnAnalysisMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnAnalysis.isCfnAnalysis(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnAnalysisPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnAnalysisPropsMixin = CfnAnalysisPropsMixin;
// @ts-ignore TS6133
function flattenCfnAnalysisPropsMixinDataSetReferenceProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        dataSetArn: (!props.dataSetArn ? undefined : cdk.getRefProperty(props.dataSetArn?.dataSetRef, 'dataSetArn') ?? cdk.ensureStringOrUndefined(props.dataSetArn, "dataSetArn", "quicksight.IDataSetRef | string")),
        dataSetPlaceholder: (!props.dataSetPlaceholder ? undefined : props.dataSetPlaceholder)
    };
}
// @ts-ignore TS6133
function flattenCfnAnalysisPropsMixinAnalysisSourceTemplateProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        arn: (!props.arn ? undefined : cdk.getRefProperty(props.arn?.templateRef, 'templateArn') ?? cdk.ensureStringOrUndefined(props.arn, "arn", "quicksight.ITemplateRef | string")),
        dataSetReferences: (!props.dataSetReferences ? undefined : (cdk.isResolvableObject(props.dataSetReferences) ? props.dataSetReferences : cdk.mapArrayInPlace(props.dataSetReferences, (item) => flattenCfnAnalysisPropsMixinDataSetReferenceProperty(item))))
    };
}
// @ts-ignore TS6133
function flattenCfnAnalysisPropsMixinAnalysisSourceEntityProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        sourceTemplate: (!props.sourceTemplate ? undefined : (!props.sourceTemplate ? undefined : flattenCfnAnalysisPropsMixinAnalysisSourceTemplateProperty(props.sourceTemplate)))
    };
}
// @ts-ignore TS6133
function flattenCfnAnalysisMixinProps(props) {
    const ret = {};
    if ((props.sourceEntity !== undefined))
        ret.sourceEntity = flattenCfnAnalysisPropsMixinAnalysisSourceEntityProperty(props.sourceEntity);
    return ret;
}
/**
 * Creates a dashboard from a template. To first create a template, see the `CreateTemplate` API operation.
 *
 * A dashboard is an entity in Quick that identifies Quick reports, created from analyses. You can share Quick dashboards. With the right permissions, you can create scheduled email reports from them. If you have the correct permissions, you can create a dashboard from a template that exists in a different AWS account .
 *
 * @cloudformationResource AWS::QuickSight::Dashboard
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dashboard.html
 */
class CfnDashboardPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnDashboardPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "dashboardId", "dashboardPublishOptions", "definition", "folderArns", "linkEntities", "linkSharingConfiguration", "name", "parameters", "permissions", "sourceEntity", "tags", "themeArn", "validationStrategy", "versionDescription"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Dashboard`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnDashboardMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDashboardPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDashboardMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDashboard.isCfnDashboard(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDashboardPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDashboardPropsMixin = CfnDashboardPropsMixin;
// @ts-ignore TS6133
function flattenCfnDashboardPropsMixinDataSetReferenceProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        dataSetArn: (!props.dataSetArn ? undefined : cdk.getRefProperty(props.dataSetArn?.dataSetRef, 'dataSetArn') ?? cdk.ensureStringOrUndefined(props.dataSetArn, "dataSetArn", "quicksight.IDataSetRef | string")),
        dataSetPlaceholder: (!props.dataSetPlaceholder ? undefined : props.dataSetPlaceholder)
    };
}
// @ts-ignore TS6133
function flattenCfnDashboardPropsMixinDashboardSourceTemplateProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        arn: (!props.arn ? undefined : cdk.getRefProperty(props.arn?.templateRef, 'templateArn') ?? cdk.ensureStringOrUndefined(props.arn, "arn", "quicksight.ITemplateRef | string")),
        dataSetReferences: (!props.dataSetReferences ? undefined : (cdk.isResolvableObject(props.dataSetReferences) ? props.dataSetReferences : cdk.mapArrayInPlace(props.dataSetReferences, (item) => flattenCfnDashboardPropsMixinDataSetReferenceProperty(item))))
    };
}
// @ts-ignore TS6133
function flattenCfnDashboardPropsMixinDashboardSourceEntityProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        sourceTemplate: (!props.sourceTemplate ? undefined : (!props.sourceTemplate ? undefined : flattenCfnDashboardPropsMixinDashboardSourceTemplateProperty(props.sourceTemplate)))
    };
}
// @ts-ignore TS6133
function flattenCfnDashboardMixinProps(props) {
    const ret = {};
    if ((props.sourceEntity !== undefined))
        ret.sourceEntity = flattenCfnDashboardPropsMixinDashboardSourceEntityProperty(props.sourceEntity);
    if ((props.themeArn !== undefined))
        ret.themeArn = cdk.getRefProperty(props.themeArn?.themeRef, 'themeArn') ?? cdk.ensureStringOrUndefined(props.themeArn, "themeArn", "quicksight.IThemeRef | string");
    return ret;
}
/**
 * Creates a dataset.
 *
 * This operation doesn't support datasets that include uploaded files as a source.
 *
 * @cloudformationResource AWS::QuickSight::DataSet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dataset.html
 */
class CfnDataSetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnDataSetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "columnGroups", "columnLevelPermissionRules", "dataPrepConfiguration", "dataSetId", "datasetParameters", "dataSetRefreshProperties", "dataSetUsageConfiguration", "fieldFolders", "folderArns", "importMode", "ingestionWaitPolicy", "logicalTableMap", "name", "performanceConfiguration", "permissions", "physicalTableMap", "rowLevelPermissionDataSet", "rowLevelPermissionTagConfiguration", "semanticModelConfiguration", "tags", "useAs"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::DataSet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnDataSetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataSetPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDataSetMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDataSet.isCfnDataSet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataSetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataSetPropsMixin = CfnDataSetPropsMixin;
// @ts-ignore TS6133
function flattenCfnDataSetPropsMixinRowLevelPermissionDataSetProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        arn: (!props.arn ? undefined : cdk.getRefProperty(props.arn?.dataSetRef, 'dataSetArn') ?? cdk.ensureStringOrUndefined(props.arn, "arn", "quicksight.IDataSetRef | string")),
        formatVersion: (!props.formatVersion ? undefined : props.formatVersion),
        namespace: (!props.namespace ? undefined : props.namespace),
        permissionPolicy: (!props.permissionPolicy ? undefined : props.permissionPolicy),
        status: (!props.status ? undefined : props.status)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSetPropsMixinRowLevelPermissionConfigurationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        rowLevelPermissionDataSet: (!props.rowLevelPermissionDataSet ? undefined : (!props.rowLevelPermissionDataSet ? undefined : flattenCfnDataSetPropsMixinRowLevelPermissionDataSetProperty(props.rowLevelPermissionDataSet))),
        tagConfiguration: (!props.tagConfiguration ? undefined : props.tagConfiguration)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSetPropsMixinSemanticTableProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        alias: (!props.alias ? undefined : props.alias),
        destinationTableId: (!props.destinationTableId ? undefined : props.destinationTableId),
        rowLevelPermissionConfiguration: (!props.rowLevelPermissionConfiguration ? undefined : (!props.rowLevelPermissionConfiguration ? undefined : flattenCfnDataSetPropsMixinRowLevelPermissionConfigurationProperty(props.rowLevelPermissionConfiguration))),
        semanticMetadata: (!props.semanticMetadata ? undefined : props.semanticMetadata)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSetMixinProps(props) {
    const ret = {};
    if ((props.rowLevelPermissionDataSet !== undefined))
        ret.rowLevelPermissionDataSet = flattenCfnDataSetPropsMixinRowLevelPermissionDataSetProperty(props.rowLevelPermissionDataSet);
    return ret;
}
/**
 * Creates a data source.
 *
 * @cloudformationResource AWS::QuickSight::DataSource
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-datasource.html
 */
class CfnDataSourcePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnDataSourcePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["alternateDataSourceParameters", "awsAccountId", "credentials", "dataSourceId", "dataSourceParameters", "errorInfo", "folderArns", "name", "permissions", "sslProperties", "tags", "type", "vpcConnectionProperties"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::DataSource`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnDataSourceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataSourcePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDataSourceMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDataSource.isCfnDataSource(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataSourcePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataSourcePropsMixin = CfnDataSourcePropsMixin;
// @ts-ignore TS6133
function flattenCfnDataSourcePropsMixinAthenaParametersProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        identityCenterConfiguration: (!props.identityCenterConfiguration ? undefined : props.identityCenterConfiguration),
        roleArn: (!props.roleArn ? undefined : props.roleArn),
        workGroup: (!props.workGroup ? undefined : cdk.getRefProperty(props.workGroup?.workGroupRef, 'workGroupName') ?? cdk.ensureStringOrUndefined(props.workGroup, "workGroup", "athena.IWorkGroupRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnDataSourcePropsMixinDataSourceParametersProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        amazonElasticsearchParameters: (!props.amazonElasticsearchParameters ? undefined : props.amazonElasticsearchParameters),
        amazonOpenSearchParameters: (!props.amazonOpenSearchParameters ? undefined : props.amazonOpenSearchParameters),
        athenaParameters: (!props.athenaParameters ? undefined : (!props.athenaParameters ? undefined : flattenCfnDataSourcePropsMixinAthenaParametersProperty(props.athenaParameters))),
        auroraParameters: (!props.auroraParameters ? undefined : props.auroraParameters),
        auroraPostgreSqlParameters: (!props.auroraPostgreSqlParameters ? undefined : props.auroraPostgreSqlParameters),
        databricksParameters: (!props.databricksParameters ? undefined : props.databricksParameters),
        mariaDbParameters: (!props.mariaDbParameters ? undefined : props.mariaDbParameters),
        mySqlParameters: (!props.mySqlParameters ? undefined : props.mySqlParameters),
        oracleParameters: (!props.oracleParameters ? undefined : props.oracleParameters),
        postgreSqlParameters: (!props.postgreSqlParameters ? undefined : props.postgreSqlParameters),
        prestoParameters: (!props.prestoParameters ? undefined : props.prestoParameters),
        rdsParameters: (!props.rdsParameters ? undefined : props.rdsParameters),
        redshiftParameters: (!props.redshiftParameters ? undefined : props.redshiftParameters),
        s3Parameters: (!props.s3Parameters ? undefined : props.s3Parameters),
        s3TablesParameters: (!props.s3TablesParameters ? undefined : props.s3TablesParameters),
        snowflakeParameters: (!props.snowflakeParameters ? undefined : props.snowflakeParameters),
        sparkParameters: (!props.sparkParameters ? undefined : props.sparkParameters),
        sqlServerParameters: (!props.sqlServerParameters ? undefined : props.sqlServerParameters),
        starburstParameters: (!props.starburstParameters ? undefined : props.starburstParameters),
        teradataParameters: (!props.teradataParameters ? undefined : props.teradataParameters),
        trinoParameters: (!props.trinoParameters ? undefined : props.trinoParameters)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSourcePropsMixinCredentialPairProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        alternateDataSourceParameters: (!props.alternateDataSourceParameters ? undefined : (cdk.isResolvableObject(props.alternateDataSourceParameters) ? props.alternateDataSourceParameters : (!props.alternateDataSourceParameters ? undefined : cdk.mapArrayInPlace(props.alternateDataSourceParameters, (item) => flattenCfnDataSourcePropsMixinDataSourceParametersProperty(item))))),
        password: (!props.password ? undefined : props.password),
        username: (!props.username ? undefined : props.username)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSourcePropsMixinDataSourceCredentialsProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        copySourceArn: (!props.copySourceArn ? undefined : props.copySourceArn),
        credentialPair: (!props.credentialPair ? undefined : (!props.credentialPair ? undefined : flattenCfnDataSourcePropsMixinCredentialPairProperty(props.credentialPair))),
        keyPairCredentials: (!props.keyPairCredentials ? undefined : props.keyPairCredentials),
        secretArn: (!props.secretArn ? undefined : props.secretArn)
    };
}
// @ts-ignore TS6133
function flattenCfnDataSourceMixinProps(props) {
    const ret = {};
    if ((props.alternateDataSourceParameters !== undefined))
        ret.alternateDataSourceParameters = (cdk.isResolvableObject(props.alternateDataSourceParameters) ? props.alternateDataSourceParameters : cdk.mapArrayInPlace(props.alternateDataSourceParameters, (item) => flattenCfnDataSourcePropsMixinDataSourceParametersProperty(item)));
    if ((props.credentials !== undefined))
        ret.credentials = flattenCfnDataSourcePropsMixinDataSourceCredentialsProperty(props.credentials);
    if ((props.dataSourceParameters !== undefined))
        ret.dataSourceParameters = flattenCfnDataSourcePropsMixinDataSourceParametersProperty(props.dataSourceParameters);
    return ret;
}
/**
 * Creates a refresh schedule for a dataset in Quick .
 *
 * @cloudformationResource AWS::QuickSight::RefreshSchedule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-refreshschedule.html
 */
class CfnRefreshSchedulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnRefreshSchedulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "dataSetId", "schedule"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::RefreshSchedule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnRefreshScheduleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRefreshSchedulePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRefreshSchedule.isCfnRefreshSchedule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRefreshSchedulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRefreshSchedulePropsMixin = CfnRefreshSchedulePropsMixin;
/**
 * Creates a template from an existing Quick analysis or template.
 *
 * You can use the resulting template to create a dashboard.
 *
 * A *template* is an entity in Quick that encapsulates the metadata required to create an analysis and that you can use to create s dashboard. A template adds a layer of abstraction by using placeholders to replace the dataset associated with the analysis. You can use templates to create dashboards by replacing dataset placeholders with datasets that follow the same schema that was used to create the source analysis and template.
 *
 * @cloudformationResource AWS::QuickSight::Template
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-template.html
 */
class CfnTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "definition", "name", "permissions", "sourceEntity", "tags", "templateId", "validationStrategy", "versionDescription"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Template`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTemplatePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnTemplateMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTemplate.isCfnTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTemplatePropsMixin = CfnTemplatePropsMixin;
// @ts-ignore TS6133
function flattenCfnTemplatePropsMixinDataSetReferenceProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        dataSetArn: (!props.dataSetArn ? undefined : cdk.getRefProperty(props.dataSetArn?.dataSetRef, 'dataSetArn') ?? cdk.ensureStringOrUndefined(props.dataSetArn, "dataSetArn", "quicksight.IDataSetRef | string")),
        dataSetPlaceholder: (!props.dataSetPlaceholder ? undefined : props.dataSetPlaceholder)
    };
}
// @ts-ignore TS6133
function flattenCfnTemplatePropsMixinTemplateSourceAnalysisProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        arn: (!props.arn ? undefined : props.arn),
        dataSetReferences: (!props.dataSetReferences ? undefined : (cdk.isResolvableObject(props.dataSetReferences) ? props.dataSetReferences : cdk.mapArrayInPlace(props.dataSetReferences, (item) => flattenCfnTemplatePropsMixinDataSetReferenceProperty(item))))
    };
}
// @ts-ignore TS6133
function flattenCfnTemplatePropsMixinTemplateSourceEntityProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        sourceAnalysis: (!props.sourceAnalysis ? undefined : (!props.sourceAnalysis ? undefined : flattenCfnTemplatePropsMixinTemplateSourceAnalysisProperty(props.sourceAnalysis))),
        sourceTemplate: (!props.sourceTemplate ? undefined : props.sourceTemplate)
    };
}
// @ts-ignore TS6133
function flattenCfnTemplateMixinProps(props) {
    const ret = {};
    if ((props.sourceEntity !== undefined))
        ret.sourceEntity = flattenCfnTemplatePropsMixinTemplateSourceEntityProperty(props.sourceEntity);
    return ret;
}
/**
 * Creates a theme.
 *
 * A *theme* is set of configuration options for color and layout. Themes apply to analyses and dashboards. For more information, see [Using Themes in Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html) in the *Amazon Quick User Guide* .
 *
 * @cloudformationResource AWS::QuickSight::Theme
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-theme.html
 */
class CfnThemePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnThemePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "baseThemeId", "configuration", "name", "permissions", "tags", "themeId", "versionDescription"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Theme`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnThemeMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnThemePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTheme.isCfnTheme(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnThemePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnThemePropsMixin = CfnThemePropsMixin;
/**
 * Creates a new Q topic.
 *
 * @cloudformationResource AWS::QuickSight::Topic
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-topic.html
 */
class CfnTopicPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnTopicPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "configOptions", "customInstructions", "dataSets", "description", "folderArns", "name", "tags", "topicId", "userExperienceVersion"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Topic`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnTopicMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTopicPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTopic.isCfnTopic(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTopicPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTopicPropsMixin = CfnTopicPropsMixin;
/**
 * Creates a new VPC connection.
 *
 * @cloudformationResource AWS::QuickSight::VPCConnection
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-vpcconnection.html
 */
class CfnVPCConnectionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnVPCConnectionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["availabilityStatus", "awsAccountId", "dnsResolvers", "name", "roleArn", "securityGroupIds", "subnetIds", "tags", "vpcConnectionId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::VPCConnection`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnVPCConnectionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnVPCConnectionPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnVPCConnection.isCfnVPCConnection(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnVPCConnectionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnVPCConnectionPropsMixin = CfnVPCConnectionPropsMixin;
/**
 * Definition of the AWS::QuickSight::ActionConnector Resource Type.
 *
 * @cloudformationResource AWS::QuickSight::ActionConnector
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-actionconnector.html
 */
class CfnActionConnectorPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnActionConnectorPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["actionConnectorId", "authenticationConfig", "awsAccountId", "description", "name", "permissions", "tags", "type", "vpcConnectionArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::ActionConnector`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnActionConnectorMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnActionConnectorPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnActionConnector.isCfnActionConnector(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnActionConnectorPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnActionConnectorPropsMixin = CfnActionConnectorPropsMixin;
/**
 * Creates a custom permissions profile.
 *
 * @cloudformationResource AWS::QuickSight::CustomPermissions
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-custompermissions.html
 */
class CfnCustomPermissionsPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnCustomPermissionsPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "capabilities", "customPermissionsName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::CustomPermissions`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnCustomPermissionsMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCustomPermissionsPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCustomPermissions.isCfnCustomPermissions(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCustomPermissionsPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCustomPermissionsPropsMixin = CfnCustomPermissionsPropsMixin;
/**
 * Creates an empty shared folder.
 *
 * @cloudformationResource AWS::QuickSight::Folder
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-folder.html
 */
class CfnFolderPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_quicksight.CfnFolderPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsAccountId", "folderId", "folderType", "name", "parentFolderArn", "permissions", "sharingModel", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::QuickSight::Folder`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_quicksight_CfnFolderMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnFolderPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnFolder.isCfnFolder(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnFolderPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnFolderPropsMixin = CfnFolderPropsMixin;
