Source: common/getWebClassName/index.js

import {
    isDesktopWeb,
    isIosApp,
    isMobile,
    isMobileIpad,
    isMobileWeb,
} from '../../vk';
import isAndroidApp from '../../vk/isAndroidApp';

/**
 * Возвращаем класс для платформы
 * @param {string} className - Название класса.
 * @param {Object} params - Парметры функции.
 * @param {boolean} params.isNeedWebMvkApp - Добавлять ли web, mvk или app.
 * @param {boolean} params.isNeedIpad - Добавлять ли ipad.
 * @param {boolean} params.isNeedIosAndroid - Добавлять ли ios или android.
 * @param {boolean} params.isOnlyAdditionalClasses - Вернуть только добавочные классы.
 * @param {boolean} params.defaultWebMvkApp - Значение по-умолчанию если не найден web, mvk или app.
 * @param {boolean} params.defaultIpad - Значение по-умолчанию если не найден ipda.
 * @param {boolean} params.defaultIosAndroid - Значение по-умолчанию если не найден ios или android.
 * @return {string}
 */
const getPlatformClassNames = (className, params = {}) => {
    const isNeedWebMvkApp = params.isNeedWebMvkApp !== undefined ? params.isNeedWebMvkApp : true;
    const isNeedIpad = params.isNeedIpad !== undefined ? params.isNeedIpad : false;
    const isNeedIosAndroid = params.isNeedIosAndroid !== undefined
        ? params.isNeedIosAndroid : false;
    const isOnlyAdditionalClasses = params.isOnlyAdditionalClasses !== undefined
        ? params.isOnlyAdditionalClasses : false;
    const defaultWebMvkApp = params.defaultWebMvkApp !== undefined ? params.defaultWebMvkApp : '';
    const defaultIpad = params.defaultIpad !== undefined ? params.defaultIpad : '';
    const defaultIosAndroid = params.defaultIosAndroid !== undefined ? params.defaultIosAndroid : '';

    const fullClassName = [];

    if (isNeedWebMvkApp) {
        if (isDesktopWeb()) {
            fullClassName.push(`${className}_web`);
        } else if (isMobileWeb()) {
            fullClassName.push(`${className}_mvk`);
        } else if (isMobile()) {
            fullClassName.push(`${className}_app`);
        } else {
            fullClassName.push(`${className}_${defaultWebMvkApp}`);
        }
    }

    if (isNeedIpad) {
        if (isMobileIpad()) {
            fullClassName.push(`${className}_ipad`);
        } else {
            fullClassName.push(`${className}_${defaultIpad}`);
        }
    }

    if (isNeedIosAndroid) {
        if (isIosApp()) {
            fullClassName.push(`${className}_ios`);
        } else if (isAndroidApp()) {
            fullClassName.push(`${className}_android`);
        } else {
            fullClassName.push(`${className}_${defaultIosAndroid}`);
        }
    }

    if (!isOnlyAdditionalClasses) {
        fullClassName.unshift(className);
    }

    return fullClassName.join(' ');
};

export default getPlatformClassNames;