"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Utilities_1 = require("../../Utilities");
var Styling_1 = require("../../Styling");
exports.getClassNames = Utilities_1.memoizeFunction(function (styles, className, variantClassName, iconClassName, menuIconClassName, disabled, checked, expanded) {
    return {
        root: Styling_1.mergeStyles(className, 'ms-Button', variantClassName, styles.root, checked && [
            'is-checked',
            styles.rootChecked
        ], expanded && [
            'is-expanded',
            styles.rootExpanded,
            {
                selectors: {
                    ':hover .ms-Button-icon': styles.iconExpandedHovered,
                    ':hover': styles.rootExpandedHovered
                }
            }
        ], disabled && [
            'is-disabled',
            styles.rootDisabled
        ], !disabled && !expanded && !checked && {
            selectors: {
                ':hover': styles.rootHovered,
                ':hover .ms-Button-icon': styles.iconHovered,
                ':hover .ms-Button-description': styles.descriptionHovered,
                ':focus': styles.rootFocused,
                ':active': styles.rootPressed,
                ':active .ms-Button-icon': styles.iconPressed,
                ':active .ms-Button-description': styles.descriptionPressed
            }
        }, disabled && checked && [
            styles.rootCheckedDisabled
        ], !disabled && checked && {
            selectors: {
                ':hover': styles.rootCheckedHovered,
                ':active': styles.rootCheckedPressed
            }
        }),
        flexContainer: Styling_1.mergeStyles('ms-Button-flexContainer', styles.flexContainer),
        textContainer: Styling_1.mergeStyles('ms-Button-textContainer', styles.textContainer),
        icon: Styling_1.mergeStyles('ms-Button-icon', iconClassName, styles.icon, expanded && styles.iconExpanded, checked && styles.iconChecked, disabled && styles.iconDisabled),
        label: Styling_1.mergeStyles('ms-Button-label', styles.label, checked && styles.labelChecked, disabled && styles.labelDisabled),
        menuIcon: Styling_1.mergeStyles('ms-Button-menuIcon', menuIconClassName, styles.menuIcon, checked && styles.menuIconChecked, disabled && styles.menuIconDisabled),
        description: Styling_1.mergeStyles('ms-Button-description', styles.description, checked && styles.descriptionChecked, disabled && styles.descriptionDisabled),
        screenReaderText: Styling_1.mergeStyles('ms-Button-screenReaderText', styles.screenReaderText)
    };
});
//# sourceMappingURL=BaseButton.classNames.js.map