UNPKG

@antmjs/vantui

Version:

一套适用于Taro3及React的vantui组件库

101 lines 3.31 kB
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]; }