// @ts-nocheck
import { isString } from '../isString'
import { isNumeric } from '../isNumeric'

/**
 * 單位轉換函數，將字符串數字或帶有單位的字符串轉換為數字
 * @param value 要轉換的值，可以是字符串數字或帶有單位的字符串
 * @returns 轉換後的數字，如果無法轉換則返回0
 */
// #ifndef APP-IOS || APP-ANDROID
export function unitConvert(value : string | number) : number {
	// 如果是字符串數字
	if (isNumeric(value)) {
		return Number(value);
	}
	// 如果有單位
	if (isString(value)) {
		const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g;
		const results = reg.exec(value);
		if (!value || !results) {
			return 0;
		}
		const unit = results[3];
		value = parseFloat(value);
		if (unit === 'rpx') {
			return uni.upx2px(value);
		}
		if (unit === 'px') {
			return value * 1;
		}
		// 如果是其他單位，可以繼續添加對應的轉換邏輯
	}
	return 0;
}
// #endif


// #ifdef APP-IOS || APP-ANDROID
import { isNumber } from '../isNumber'
export function unitConvert(value : any | null) : number {
	if (isNumber(value)) {
		return value as number
	}
	// 如果是字符串數字
	if (isNumeric(value)) {
		return parseFloat(value as string);
	}
	// 如果有單位
	if (isString(value)) {
		const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g;
		const results = reg.exec(value as string);
		if (results == null) {
			return 0;
		}
		const unit = results[3];
		const v = parseFloat(value);
		if (unit == 'rpx') {
			const { windowWidth } = uni.getWindowInfo()
			return windowWidth / 750 * v;
		}
		if (unit == 'px') {
			return v;
		}
		// 如果是其他單位，可以繼續添加對應的轉換邏輯
	}
	return 0;
}
// #endif
// 示例
// console.log(unitConvert("123")); // 輸出: 123 (字符串數字轉換為數字)
// console.log(unitConvert("3.14em")); // 輸出: 0 (無法識別的單位)
// console.log(unitConvert("20rpx")); // 輸出: 根據具體情況而定 (根據單位進行轉換)
// console.log(unitConvert(10)); // 輸出: 10 (數字不需要轉換)