define(["require", "exports", "./Persona.types"], function (require, exports, Persona_types_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    /**
     * These colors are considered reserved colors and can only be set with overrides:
     * - Red is a color that often has a special meaning.
     * - Transparent is not intended to be used with typical initials due to accessibility issues,
     *   its primary use is for Facepile overflow buttons.
     */
    var COLOR_SWATCHES_LOOKUP = [
        Persona_types_1.PersonaInitialsColor.lightGreen,
        Persona_types_1.PersonaInitialsColor.lightBlue,
        Persona_types_1.PersonaInitialsColor.lightPink,
        Persona_types_1.PersonaInitialsColor.green,
        Persona_types_1.PersonaInitialsColor.darkGreen,
        Persona_types_1.PersonaInitialsColor.pink,
        Persona_types_1.PersonaInitialsColor.magenta,
        Persona_types_1.PersonaInitialsColor.purple,
        Persona_types_1.PersonaInitialsColor.black,
        Persona_types_1.PersonaInitialsColor.teal,
        Persona_types_1.PersonaInitialsColor.blue,
        Persona_types_1.PersonaInitialsColor.darkBlue,
        Persona_types_1.PersonaInitialsColor.orange,
        Persona_types_1.PersonaInitialsColor.darkRed
    ];
    var COLOR_SWATCHES_NUM_ENTRIES = COLOR_SWATCHES_LOOKUP.length;
    function getInitialsColorFromName(displayName) {
        var color = Persona_types_1.PersonaInitialsColor.blue;
        if (!displayName) {
            return color;
        }
        var hashCode = 0;
        for (var iLen = displayName.length - 1; iLen >= 0; iLen--) {
            var ch = displayName.charCodeAt(iLen);
            var shift = iLen % 8;
            // tslint:disable-next-line:no-bitwise
            hashCode ^= (ch << shift) + (ch >> (8 - shift));
        }
        color = COLOR_SWATCHES_LOOKUP[hashCode % COLOR_SWATCHES_NUM_ENTRIES];
        return color;
    }
    function personaInitialsColorToHexCode(personaInitialsColor) {
        switch (personaInitialsColor) {
            case Persona_types_1.PersonaInitialsColor.lightBlue:
                return '#4F6BED';
            case Persona_types_1.PersonaInitialsColor.blue:
                return '#0078D4';
            case Persona_types_1.PersonaInitialsColor.darkBlue:
                return '#004E8C';
            case Persona_types_1.PersonaInitialsColor.teal:
                return '#038387';
            case Persona_types_1.PersonaInitialsColor.lightGreen:
                return '#498205';
            case Persona_types_1.PersonaInitialsColor.green:
                return '#498205';
            case Persona_types_1.PersonaInitialsColor.darkGreen:
                return '#0B6A0B';
            case Persona_types_1.PersonaInitialsColor.lightPink:
                return '#C239B3';
            case Persona_types_1.PersonaInitialsColor.pink:
                return '#E3008C';
            case Persona_types_1.PersonaInitialsColor.magenta:
                return ' #881798';
            case Persona_types_1.PersonaInitialsColor.purple:
                return '#5C2E91';
            case Persona_types_1.PersonaInitialsColor.black:
                return '#1D1D1D';
            case Persona_types_1.PersonaInitialsColor.orange:
                return '#CA5010';
            case Persona_types_1.PersonaInitialsColor.red:
                return '#EE1111';
            case Persona_types_1.PersonaInitialsColor.darkRed:
                return '#A4262C';
            case Persona_types_1.PersonaInitialsColor.transparent:
                return 'transparent';
        }
    }
    function initialsColorPropToColorCode(props) {
        var primaryText = props.primaryText;
        var initialsColor = props.initialsColor;
        var initialsColorCode;
        if (typeof initialsColor === 'string') {
            initialsColorCode = initialsColor;
        }
        else {
            initialsColor = initialsColor !== undefined ? initialsColor : getInitialsColorFromName(primaryText);
            initialsColorCode = personaInitialsColorToHexCode(initialsColor);
        }
        return initialsColorCode;
    }
    exports.initialsColorPropToColorCode = initialsColorPropToColorCode;
});
//# sourceMappingURL=PersonaInitialsColor.js.map