// @ts-nocheck
import {isDef} from '../isDef'
import {isString} from '../isString'
import {isNumber} from '../isNumber'
/**
 * 判斷壹個值是否為空。
 *
 * 對於字符串，去除首尾空格後判斷長度是否為0。
 * 對於數組，判斷長度是否為0。
 * 對於對象，判斷鍵的數量是否為0。
 * 對於null或undefined，直接返回true。
 * 其他類型（如數字、布爾值等）默認不為空。
 *
 * @param {any} value - 要檢查的值。
 * @returns {boolean} 如果值為空，返回true，否則返回false。
 */


// #ifdef APP-IOS || APP-ANDROID
export function isEmpty(value : any | null) : boolean {
	// 為null
	if(!isDef(value)){
		return true
	}
	// 為空字符
	if(isString(value)){
		return value.toString().trim().length == 0
	}
	// 為數值
	if(isNumber(value)){
		return false
	}

	if(typeof value == 'object'){
		// 數組
		if(Array.isArray(value)){
			return (value as Array<unknown>).length == 0
		}
		// Map
		if(value instanceof Map<unknown, unknown>) {
			return value.size == 0
		}
		// Set
		if(value instanceof Set<unknown>) {
			return value.size == 0
		}
		if(value instanceof UTSJSONObject) {
			return value.toMap().size == 0
		}
		return JSON.stringify(value) == '{}'
	}
	
	return true
}
// #endif


// #ifndef APP-IOS || APP-ANDROID
export function isEmpty(value: any): boolean {
    // 檢查是否為null或undefined
    if (value == null) {
        return true;
    }

    // 檢查字符串是否為空
    if (typeof value === 'string') {
        return value.trim().length === 0;
    }

    // 檢查數組是否為空
    if (Array.isArray(value)) {
        return value.length === 0;
    }

    // 檢查對象是否為空
    if (typeof value === 'object') {
        return Object.keys(value).length === 0;
    }

    // 其他類型（如數字、布爾值等）不為空
    return false;
}
// #endif