123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { isNumber, isPlainObject } from './validator';
- export function isDef(value) {
- return value !== undefined && value !== null;
- }
- export function isObj(x) {
- const type = typeof x;
- return x !== null && (type === 'object' || type === 'function');
- }
- export function range(num, min, max) {
- return Math.min(Math.max(num, min), max);
- }
- export function nextTick(fn) {
- setTimeout(() => {
- fn();
- }, 1000 / 30);
- }
- let systemInfo;
- export function getSystemInfoSync() {
- if (systemInfo == null) {
- systemInfo = wx.getSystemInfoSync();
- }
- return systemInfo;
- }
- export function addUnit(value) {
- if (!isDef(value)) {
- return undefined;
- }
- value = String(value);
- return isNumber(value) ? `${value}px` : value;
- }
- export function requestAnimationFrame(cb) {
- const systemInfo = getSystemInfoSync();
- if (systemInfo.platform === 'devtools') {
- return nextTick(cb);
- }
- return wx
- .createSelectorQuery()
- .selectViewport()
- .boundingClientRect()
- .exec(() => {
- cb();
- });
- }
- 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(selector) {
- return new Promise((resolve) => {
- wx.createSelectorQuery()
- .in(this)
- .select(selector)
- .boundingClientRect()
- .exec((rect = []) => resolve(rect[0]));
- });
- }
- export function getAllRect(selector) {
- return new Promise((resolve) => {
- wx.createSelectorQuery()
- .in(this)
- .selectAll(selector)
- .boundingClientRect()
- .exec((rect = []) => resolve(rect[0]));
- });
- }
|