// 全局挂载引入http相关请求拦截插件
import Request from './libs/luch-request'

// 引入全局mixin
import mixin from './libs/mixin/mixin.js'
// 小程序特有的mixin
import mpMixin from './libs/mixin/mpMixin.js'
// #ifdef MP
import mpShare from './libs/mixin/mpShare.js'
// #endif

// 路由封装
import route from './libs/util/route.js'
// 公共工具函数
import * as index from './libs/function/index.js'
// 防抖方法
import debounce from './libs/function/debounce.js'
// 节流方法
import throttle from './libs/function/throttle.js'
// 规则检验
import * as test from './libs/function/test.js'

// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
import * as colorGradient from './libs/function/colorGradient.js'

// 配置信息
import config from './libs/config/config.js'
// 平台
import platform from './libs/function/platform'

const $uv = {
	route,
	config,
	test,
	date: index.timeFormat, // 另名date
	...index,
	colorGradient: colorGradient.colorGradient,
	hexToRgb: colorGradient.hexToRgb,
	rgbToHex: colorGradient.rgbToHex,
	colorToRgba: colorGradient.colorToRgba,
	http: new Request(),
	debounce,
	throttle,
	platform,
	mixin,
	mpMixin
}
uni.$uv = $uv;
const install = (Vue,options={}) => {
		// #ifndef APP-NVUE
		const cloneMixin = index.deepClone(mixin);
		delete cloneMixin?.props?.customClass;
		delete cloneMixin?.props?.customStyle;
		Vue.mixin(cloneMixin);
		// #ifdef MP
		if(options.mpShare){
			Vue.mixin(mpShare);
		}
		// #endif
		// #endif
		// #ifdef VUE2
		// 时间格式化,同时两个名称,date和timeFormat
		Vue.filter('timeFormat', (timestamp, format) => uni.$uv.timeFormat(timestamp, format));
		Vue.filter('date', (timestamp, format) => uni.$uv.timeFormat(timestamp, format));
		// 将多久以前的方法,注入到全局过滤器
		Vue.filter('timeFrom', (timestamp, format) => uni.$uv.timeFrom(timestamp, format));
		// 同时挂载到uni和Vue.prototype中
		// #ifndef APP-NVUE
		// 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的
		Vue.prototype.$uv = $uv;
		// #endif
		// #endif
		// #ifdef VUE3
		Vue.config.globalProperties.$uv = $uv;
		// #endif
}
export default {
	install
}