<template>
	<view id="shared" style="height: 500px; width: 300px; background-color: aqua;">
		
	</view>
</template>

<script lang="ts">
	import { getRect, getAllRect } from '@/uni_modules/lime-shared/getRect'
	
	import { camelCase } from '@/uni_modules/lime-shared/camelCase'
	import { canIUseCanvas2d } from '@/uni_modules/lime-shared/canIUseCanvas2d'
	import { clamp } from '@/uni_modules/lime-shared/clamp'
	import { cloneDeep } from '@/uni_modules/lime-shared/cloneDeep'
	import { closest } from '@/uni_modules/lime-shared/closest'
	import { debounce } from '@/uni_modules/lime-shared/debounce'
	import { fillZero } from '@/uni_modules/lime-shared/fillZero'
	import { floatAdd } from '@/uni_modules/lime-shared/floatAdd'
	import { getClassStr } from '@/uni_modules/lime-shared/getClassStr'
	import { getCurrentPage } from '@/uni_modules/lime-shared/getCurrentPage'
	import { getStyleStr } from '@/uni_modules/lime-shared/getStyleStr'
	import { hasOwn } from '@/uni_modules/lime-shared/hasOwn'
	import { isBase64 } from '@/uni_modules/lime-shared/isBase64'
	import { isBrowser } from '@/uni_modules/lime-shared/isBrowser'
	import { isDef } from '@/uni_modules/lime-shared/isDef'
	import { isEmpty } from '@/uni_modules/lime-shared/isEmpty'
	import { isFunction } from '@/uni_modules/lime-shared/isFunction'
	import { isNumber } from '@/uni_modules/lime-shared/isNumber'
	import { isNumeric } from '@/uni_modules/lime-shared/isNumeric'
	import { isObject } from '@/uni_modules/lime-shared/isObject'
	import { isPromise } from '@/uni_modules/lime-shared/isPromise'
	import { isString } from '@/uni_modules/lime-shared/isString'
	import { kebabCase } from '@/uni_modules/lime-shared/kebabCase'
	import { raf, doubleRaf } from '@/uni_modules/lime-shared/raf'
	import { random } from '@/uni_modules/lime-shared/random'
	import { range } from '@/uni_modules/lime-shared/range'
	import { sleep } from '@/uni_modules/lime-shared/sleep'
	import { throttle } from '@/uni_modules/lime-shared/throttle'
	import { toArray } from '@/uni_modules/lime-shared/toArray'
	import { toBoolean } from '@/uni_modules/lime-shared/toBoolean'
	import { toNumber } from '@/uni_modules/lime-shared/toNumber'
	import { unitConvert } from '@/uni_modules/lime-shared/unitConvert'
	import { getCurrentInstance } from '@/uni_modules/lime-shared/vue'
	
	// #ifdef VUE2
	type UTSJSONObject = any
	// #endif
	
	const context = getCurrentInstance()
	getRect('#shared', context!).then(res =>{
		console.log('res', res.bottom)
	})
	getAllRect('#shared', context).then(res =>{
		console.log('res', res)
	})
	
	
	console.log('camelCase::', camelCase("hello world"));
	console.log('camelCase::', camelCase("my_name_is_john", true));
	console.log('canIUseCanvas2d::', canIUseCanvas2d());
	console.log('clamp::', clamp(5 ,0, 10));
	console.log('cloneDeep::', cloneDeep<UTSJSONObject>({a:5}));
	console.log('closest::', closest([1, 3, 5, 7, 9], 6));
	
	
	
	
	const saveData = (data: any) => {
		// 模拟保存数据的操作
		console.log(`Saving data: ${data}`);
	}
	
	const debouncedSaveData = debounce(saveData, 500);
	debouncedSaveData('Data 1'); 
	debouncedSaveData('Data 2'); 
	
	console.log('fillZero', fillZero(1))
	console.log('floatAdd', floatAdd(0.1, 0.2))
	console.log('getClassStr', getClassStr({hover: true}))
	console.log('getStyleStr', getStyleStr({ color: 'red', fontSize: '16px', backgroundColor: '', border: null }))
	console.log('hasOwn', hasOwn({a: true}, 'key'))
	console.log('isBase64::', isBase64("SGVsbG8sIFdvcmxkIQ=="));
	console.log('isBrowser::', isBrowser);
	console.log('isDef::', isDef('6'));
	console.log('isEmpty::', isEmpty({a: true}));
	
	const b = () =>{}
	console.log('isFunction::', isFunction(b));
	console.log('isNumber::', isNumber('6'));
	console.log('isNumeric::', isNumeric('6'));
	console.log('isObject::', isObject({}));
	
	const promise = ():Promise<boolean> => {
		return new Promise((resolve) => {
			resolve(true)
		})
	}
	const a = promise()
	console.log('isPromise::', isPromise(a));
	console.log('isString::', isString('null'));
	console.log('kebabCase::', kebabCase('my love'));
	console.log('raf::', raf(()=>{
		console.log('raf:::1')
	}));
	console.log('doubleRaf::', doubleRaf(()=>{
		console.log('doubleRaf:::1')
	}));
	console.log('random', random(0, 10))
	console.log('random', random(0, 1, 2))
	console.log('range', range(0, 10, 2))
	console.log('sleep', sleep(300).then(res => {
		console.log('log')
	}))
	
	const handleScroll = (a: string) => {
	  console.log("Scroll event handled!", a);
	}
	
	// // 使用节流函数对 handleScroll 进行节流，间隔时间为 500 毫秒
	const throttledScroll = throttle(handleScroll, 500);
	throttledScroll('5');
	const page = getCurrentPage()
	console.log('getCurrentPage::', page)
	
	console.log('toArray', toArray<number>(5))
	console.log('toBoolean', toBoolean(5))
	console.log('toNumber', toNumber('5'))
	console.log('unitConvert', unitConvert('5'))
	
	// uni.getImageInfo({
	// 	src: '/static/logo.png',
	// 	success(res) {
	// 		console.log('res', res)
	// 	}
	// })
</script>

<style>

</style>