You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							2.4 KiB
						
					
					
				
								import { isDef, isNumber, isPlainObject, isPromise } from './validator';
							 | 
						|
								import { canIUseGroupSetData, canIUseNextTick, getSystemInfoSync, } from './version';
							 | 
						|
								export { isDef } from './validator';
							 | 
						|
								export { getSystemInfoSync } from './version';
							 | 
						|
								export function range(num, min, max) {
							 | 
						|
								    return Math.min(Math.max(num, min), max);
							 | 
						|
								}
							 | 
						|
								export function nextTick(cb) {
							 | 
						|
								    if (canIUseNextTick()) {
							 | 
						|
								        wx.nextTick(cb);
							 | 
						|
								    }
							 | 
						|
								    else {
							 | 
						|
								        setTimeout(() => {
							 | 
						|
								            cb();
							 | 
						|
								        }, 1000 / 30);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								export function addUnit(value) {
							 | 
						|
								    if (!isDef(value)) {
							 | 
						|
								        return undefined;
							 | 
						|
								    }
							 | 
						|
								    value = String(value);
							 | 
						|
								    return isNumber(value) ? `${value}px` : value;
							 | 
						|
								}
							 | 
						|
								export function requestAnimationFrame(cb) {
							 | 
						|
								    return setTimeout(() => {
							 | 
						|
								        cb();
							 | 
						|
								    }, 1000 / 30);
							 | 
						|
								}
							 | 
						|
								export function pickExclude(obj, keys) {
							 | 
						|
								    if (!isPlainObject(obj)) {
							 | 
						|
								        return {};
							 | 
						|
								    }
							 | 
						|
								    return Object.keys(obj).reduce((prev, key) => {
							 | 
						|
								        if (!keys.includes(key)) {
							 | 
						|
								            prev[key] = obj[key];
							 | 
						|
								        }
							 | 
						|
								        return prev;
							 | 
						|
								    }, {});
							 | 
						|
								}
							 | 
						|
								export function getRect(context, selector) {
							 | 
						|
								    return new Promise((resolve) => {
							 | 
						|
								        wx.createSelectorQuery()
							 | 
						|
								            .in(context)
							 | 
						|
								            .select(selector)
							 | 
						|
								            .boundingClientRect()
							 | 
						|
								            .exec((rect = []) => resolve(rect[0]));
							 | 
						|
								    });
							 | 
						|
								}
							 | 
						|
								export function getAllRect(context, selector) {
							 | 
						|
								    return new Promise((resolve) => {
							 | 
						|
								        wx.createSelectorQuery()
							 | 
						|
								            .in(context)
							 | 
						|
								            .selectAll(selector)
							 | 
						|
								            .boundingClientRect()
							 | 
						|
								            .exec((rect = []) => resolve(rect[0]));
							 | 
						|
								    });
							 | 
						|
								}
							 | 
						|
								export function groupSetData(context, cb) {
							 | 
						|
								    if (canIUseGroupSetData()) {
							 | 
						|
								        context.groupSetData(cb);
							 | 
						|
								    }
							 | 
						|
								    else {
							 | 
						|
								        cb();
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								export function toPromise(promiseLike) {
							 | 
						|
								    if (isPromise(promiseLike)) {
							 | 
						|
								        return promiseLike;
							 | 
						|
								    }
							 | 
						|
								    return Promise.resolve(promiseLike);
							 | 
						|
								}
							 | 
						|
								// 浮点数精度处理
							 | 
						|
								export function addNumber(num1, num2) {
							 | 
						|
								    const cardinal = Math.pow(10, 10);
							 | 
						|
								    return Math.round((num1 + num2) * cardinal) / cardinal;
							 | 
						|
								}
							 | 
						|
								// 限制value在[min, max]之间
							 | 
						|
								export const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
							 | 
						|
								export function getCurrentPage() {
							 | 
						|
								    const pages = getCurrentPages();
							 | 
						|
								    return pages[pages.length - 1];
							 | 
						|
								}
							 | 
						|
								export const isPC = ['mac', 'windows'].includes(getSystemInfoSync().platform);
							 | 
						|
								// 是否企业微信
							 | 
						|
								export const isWxWork = getSystemInfoSync().environment === 'wxwork';
							 | 
						|
								
							 |