export const cleanHtml = (strHtml) => {
    if (!strHtml) return ""
    if (!isString(strHtml)) return ""

    // if (isNotEmptyArray(tags)) {
    //     var tagsRegex = tags.join("|")
    //     var regex = new RegExp(
    //         "<(?:" + tagsRegex + ")[^>]*>[\\s\\S]*?<\\/(?:" + tagsRegex + ")>",
    //         "gi"
    //     )
    //     return strHtml.replace(regex, "")
    // }

    return strHtml.replace(/<\/?[^>]+(>|$)/g, "")
}

export const stripImg = (strHtml) => {
    if (!strHtml) return ""
    if (!isString(strHtml)) return ""

    return strHtml.replace(/<img[^>]*>/g, "")
}

export const isBrowser = typeof window !== "undefined"

export const isBoolean = (val) => "boolean" === typeof val

export const isString = (val) => {
    return Object.prototype.toString.call(val) === "[object String]"
}

export const isArray = (val) => {
    return Object.prototype.toString.call(val) === "[object Array]"
}
export const isNotEmptyArray = (val) => {
    return isArray(val) && val.length > 0
}

export const isObject = (val) => {
    return Object.prototype.toString.call(val) === "[object Object]"
}

// Thanks ChatGPT ;)
export const merge = (obj1: object, obj2: object): object => {
    if (!obj1) return obj2
    if (!obj2) return obj1

    for (let key in obj2) {
        if (obj2.hasOwnProperty(key)) {
            if (obj1.hasOwnProperty(key)) {
                if (isObject(obj1[key]) && isObject(obj2[key])) {
                    obj1[key] = merge(obj1[key], obj2[key])
                } else if (isString(obj1[key]) && isString(obj2[key])) {
                    obj1[key] = obj1[key] + " " + obj2[key]
                } else {
                    obj1[key] = obj2[key]
                }
            } else {
                obj1[key] = obj2[key]
            }
        }
    }
    return obj1
}