@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
101 lines • 3.31 kB
JavaScript
import Taro, { getSystemInfoSync as TaroGetSystemInfoSync, getWindowInfo as TaroGetWindowInfo, createSelectorQuery } from '@tarojs/taro';
import * as raf from 'raf';
import { isDef, isPlainObject, isPromise } from './validator';
import { canIUseNextTick } from './version';
export { isDef } from './validator';
export function range(num, min, max) {
return Math.min(Math.max(num, min), max);
}
export function nextTick(cb) {
if (canIUseNextTick()) {
Taro.nextTick(cb);
} else {
setTimeout(function () {
cb();
}, 33.333333333333336);
}
}
var systemInfo;
export function getSystemInfoSync() {
systemInfo = TaroGetSystemInfoSync();
return systemInfo;
}
var windowInfo;
export function getWindowInfo() {
windowInfo = process.env.TARO_ENV === 'weapp' ? TaroGetWindowInfo() : getSystemInfoSync();
return windowInfo;
}
var menuInfo;
export function getMenuButtonBoundingClientRect() {
if (menuInfo == null) {
menuInfo = Taro.getMenuButtonBoundingClientRect();
}
return menuInfo;
}
export function addUnit(value) {
if (!isDef(value)) {
return undefined;
}
return /^-?\d+(\.\d+)?$/.test('' + value) ? Taro.pxTransform(value) : value;
}
export function requestAnimationFrame(cb) {
if (window.requestAnimationFrame) {
return window.requestAnimationFrame(cb);
}
return raf.default(cb);
}
export function cancelAnimationFrame(id) {
if (window.cancelAnimationFrame) {
return window.cancelAnimationFrame(id);
}
return raf.cancel(id);
}
export function pickExclude(obj, keys) {
if (!isPlainObject(obj)) {
return {};
}
return Object.keys(obj).reduce(function (prev, key) {
if (!keys.includes(key)) {
prev[key] = obj[key];
}
return prev;
}, {});
}
export function getRect(context, selector, parent) {
// 微信端层级太深找不到元素信息 (https://taro-docs.jd.com/docs/optimized#1-%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE%E9%A1%B9-baselevel)
var target = process.env.TARO_ENV === 'weapp' && parent ? "".concat(parent, " >>> ").concat(selector) : selector;
return new Promise(function (resolve) {
var query = createSelectorQuery();
if (context) {
query = query.in(context);
}
query.select(target).boundingClientRect().exec(function () {
var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return resolve(rect[0]);
});
});
}
export function getAllRect(context, selector, parent) {
// 微信端层级太深找不到元素信息 (https://taro-docs.jd.com/docs/optimized#1-%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE%E9%A1%B9-baselevel)
var target = process.env.TARO_ENV === 'weapp' && parent ? "".concat(parent, " >>> ").concat(selector) : selector;
return new Promise(function (resolve) {
var query = createSelectorQuery();
if (context) {
query = query.in(context);
}
query.selectAll(target).boundingClientRect().exec(function () {
var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return resolve(rect[0]);
});
});
}
export function toPromise(promiseLike) {
if (isPromise(promiseLike)) {
return promiseLike;
}
return Promise.resolve(promiseLike);
}
export function getCurrentPage() {
var pages = Taro.getCurrentPages();
return pages[pages.length - 1];
}