import { StringUtilities } from '@sd-angular/core/utilities/extensions';
import { firstValueFrom, from, of } from 'rxjs';

const SdPatternCommons = [
    {
        type: 'EMAIL',
        name: 'Email',
        regex: StringUtilities.REGEX_EMAIL,
        errorMessage: 'Email không hợp lệ',
    },
    {
        type: 'PHONE',
        name: 'SĐT',
        regex: StringUtilities.REGEX_PHONE,
        errorMessage: 'Số điện thoại không hợp lệ',
    },
    {
        type: 'PHONE_VN',
        name: 'SĐT VN',
        regex: StringUtilities.REGEX_PHONE_VN,
        errorMessage: 'Số điện thoại không hợp lệ',
    },
];

const SD_EMPTY_STR = '--';

const SdResolveMaybeAsync = (value) => {
    if (value instanceof Promise) {
        return value;
    }
    if (isObservable(value)) {
        return firstValueFrom(value);
    }
    return Promise.resolve(value);
};
const SdNormalizeAsync = (value) => {
    if (isObservable(value)) {
        return value; // Nếu là Observable, giữ nguyên
    }
    if (value instanceof Promise) {
        return from(value); // Nếu là Promise, chuyển sang Observable
    }
    return of(value); // Nếu là giá trị thuần (Object, string...), bọc lại bằng of
};
function isObservable(obj) {
    return obj && typeof obj.subscribe === 'function';
}

const SdOperators = [
    {
        value: 'EQUAL',
        symbol: '=',
        display: 'Bằng',
    },
    {
        value: 'NOT_EQUAL',
        symbol: '≠',
        display: 'Không bằng',
    },
    {
        value: 'GREATER_THAN',
        symbol: '>',
        display: 'Lớn hơn',
    },
    {
        value: 'LESS_THAN',
        symbol: '<',
        display: 'Nhỏ hơn',
    },
    {
        value: 'GREATER_OR_EQUAL',
        symbol: '≥',
        display: 'Lớn hơn, hoặc bằng',
    },
    {
        value: 'LESS_OR_EQUAL',
        symbol: '≤',
        display: 'Nhỏ hơn, hoặc bằng',
    },
    {
        value: 'CONTAIN',
        symbol: 'join_inner',
        display: 'Chứa',
    },
    {
        value: 'NOT_CONTAIN',
        symbol: 'join',
        display: 'Không chứa',
    },
    {
        value: 'START_WITH',
        symbol: 'line_start_circle',
        display: 'Bắt đầu bởi',
    },
    {
        value: 'END_WITH',
        symbol: 'line_end_circle',
        display: 'Kết thúc bởi',
    },
    {
        value: 'IN',
        symbol: 'checklist_rtl',
        display: 'Nằm trong',
    },
    {
        value: 'NOT_IN',
        symbol: 'event_list',
        display: 'Không nằm trong',
    },
    {
        value: 'NULL',
        symbol: 'motion_photos_off',
        display: 'Là rỗng',
    },
    {
        value: 'NOT_NULL',
        symbol: 'adjust',
        display: 'Không rỗng',
    },
];

/**
 * Generated bundle index. Do not edit.
 */

export { SD_EMPTY_STR, SdNormalizeAsync, SdOperators, SdPatternCommons, SdResolveMaybeAsync };
//# sourceMappingURL=sd-angular-core-utilities-models.mjs.map
