// @ts-nocheck

// #ifdef APP-IOS || APP-ANDROID
import { isNumber } from '../isNumber'
import { isString } from '../isString'
import { isDef } from '../isDef'
// #endif

/**
 * 獲取對象的類名字符串
 * @param obj - 需要處理的對象
 * @returns 由對象屬性作為類名組成的字符串
 */
export function getClassStr<T>(obj : T) : string {
	let classNames : string[] = [];
	// #ifdef APP-IOS || APP-ANDROID
	if (obj instanceof UTSJSONObject) {
		(obj as UTSJSONObject).toMap().forEach((value, key) => {
			if (isDef(value)) {
				if (isNumber(value)) {
					classNames.push(key);
				}
				if (isString(value) && value !== '') {
					classNames.push(key);
				}
				if (typeof value == 'boolean' && (value as boolean)) {
					classNames.push(key);
				}
			}
		})
	} 
	// #endif
	// #ifndef APP-IOS || APP-ANDROID
	// 遍歷對象的屬性
	for (let key in obj) {
		// 檢查屬性確實屬於對象自身且其值為true
		if ((obj as any).hasOwnProperty(key) && obj[key]) {
			// 將屬性名添加到類名數組中
			classNames.push(key);
		}
	}
	// #endif


	// 將類名數組用空格連接成字符串並返回
	return classNames.join(' ');
}


// 示例
// const obj = { foo: true, bar: false, baz: true };
// const classNameStr = getClassStr(obj);
// console.log(classNameStr); // 輸出: "foo baz"