"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSelectValue = parseSelectValue;
exports.resolveComboboxValueContainer = resolveComboboxValueContainer;
exports.normalizeFormFieldsValues = normalizeFormFieldsValues;
exports.countFormFieldsValues = countFormFieldsValues;
const FORM_FIELDS_VALUES_KEYS = new Set([
    'textFields',
    'comboboxFields',
    'multiComboboxFields',
    'fileFields',
    'radioButtons',
    'checkboxes',
    'toggleButtons',
    'daDataFields',
]);
/**
 * Парсит значение combobox: префикс `=` означает точное совпадение текста опции.
 * @param selectValue — строка значения или опции с префиксом `=`
 */
function parseSelectValue(selectValue) {
    const isExact = selectValue.startsWith('=');
    return {
        exact: isExact,
        value: isExact ? selectValue.substring(1) : selectValue,
    };
}
/**
 * Возвращает единственный контейнер mat-form-field для проверки отображаемого значения combobox.
 * Для role=combobox внутри mat-form-field поднимается к предку; если локатор уже mat-form-field — остаётся он.
 * @param field — локатор combobox или mat-form-field
 */
function resolveComboboxValueContainer(field) {
    return field.locator('xpath=ancestor-or-self::mat-form-field[1]');
}
/**
 * Нормализует ожидаемые значения.
 * @param expected — ожидаемые значения полей формы
 */
function normalizeFormFieldsValues(expected) {
    if (isFormFieldsValues(expected)) {
        return expected;
    }
    return { textFields: expected };
}
/**
 * Подсчитывает количество полей во всех группах FormFieldsValues.
 * @param values — ожидаемые значения полей формы
 */
function countFormFieldsValues(values) {
    return (Object.keys(values.textFields ?? {}).length
        + Object.keys(values.comboboxFields ?? {}).length
        + Object.keys(values.multiComboboxFields ?? {}).length
        + Object.keys(values.fileFields ?? {}).length
        + (values.radioButtons?.length ?? 0)
        + Object.keys(values.checkboxes ?? {}).length
        + Object.keys(values.toggleButtons ?? {}).length
        + Object.keys(values.daDataFields ?? {}).length);
}
function isFormFieldsValues(value) {
    return Object.keys(value).some((key) => FORM_FIELDS_VALUES_KEYS.has(key));
}
