import CryptoJS from 'crypto-js';
import { IV_LENGTH, SECRET_KEY } from '../utils/constants';
export const encryptDataSync = (data) => {
    const iv = CryptoJS.lib.WordArray.random(IV_LENGTH);
    const encrypted = CryptoJS.AES.encrypt(JSON.stringify(data), CryptoJS.enc.Hex.parse(SECRET_KEY), {
        iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
    });
    return JSON.stringify({
        iv: CryptoJS.enc.Base64.stringify(iv),
        encryptedData: encrypted.toString(),
    });
};
export const decryptCookie = (encryptedJson) => {
    try {
        const { encryptedData, iv } = JSON.parse(encryptedJson);
        const ivBytes = CryptoJS.enc.Base64.parse(iv);
        const secretKeyBytes = CryptoJS.enc.Hex.parse(SECRET_KEY);
        const decrypted = CryptoJS.AES.decrypt(encryptedData, secretKeyBytes, {
            iv: ivBytes,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
        });
        const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
        return decryptedText ? JSON.parse(decryptedText) : null;
    }
    catch (error) {
        console.error('[decryptCookie] Error:', error);
        return null;
    }
};
// chuyển chữ có dấu thành không dấu
export function unaccentValue(rawValue) {
    if (!rawValue)
        return '';
    return rawValue
        .normalize('NFD') // Tách các ký tự có dấu thành ký tự cơ bản và dấu
        .replace(/[\u0300-\u036f]/g, '') // Loại bỏ các dấu
        .replace(/Đ/g, 'D') // Thay Đ thành D
        .replace(/đ/g, 'd'); // Thay đ thành d
}
export const getResponsiveClass = (prefix, value, map) => {
    if (!value)
        return '';
    if (typeof value !== 'object') {
        const finalVal = map ? map[value] : value;
        return finalVal ? `${prefix}-${String(finalVal)}` : prefix;
    }
    return Object.entries(value)
        .map(([breakpoint, val]) => {
        if (val === undefined)
            return '';
        const finalVal = map ? map[val] : val;
        const classBody = finalVal ? `${prefix}-${String(finalVal)}` : prefix;
        if (breakpoint === 'initial') {
            return classBody;
        }
        return `${breakpoint}:${classBody}`;
    })
        .filter(Boolean)
        .join(' ');
};
/**
 *
 *
 * @param {string} str
 * @return {*}
 * chuyển về chữ không dấu
 */
export const handleUnaccent = (str) => {
    if (!str || str === '')
        return '';
    const unaccentedStr = str
        .normalize('NFD')
        .replace(/[\u0300-\u036f]/g, '')
        .replace(/đ/g, 'd')
        .replace(/Đ/g, 'D')
        .replace(/_/g, '')
        .replace(/[^\w.\s]/g, '');
    return unaccentedStr;
};
//# sourceMappingURL=helpers.js.map