123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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);
|