vantui-edit
Version:
一套适用于Taro3及React的vantui组件库
87 lines (74 loc) • 2.3 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import { createSelectorQuery } from '@tarojs/taro';
function selectorQuery(nodesRef) {
if (!nodesRef || nodesRef.nodeName === 'root') {
return createSelectorQuery().selectViewport();
} else {
return createSelectorQuery().select('#' + nodesRef.uid);
}
}
export function scrollOffset(nodesRef) {
return new Promise(function (resolve) {
// 没有固定高度-- 就去拿page的高度
if (process.env.TARO_ENV === 'h5') {
var _nodesRef = nodesRef || document.documentElement || document.body;
return resolve({
scrollLeft: _nodesRef.scrollLeft,
scrollTop: _nodesRef.scrollTop
});
}
return selectorQuery(nodesRef).scrollOffset().exec(function (res) {
resolve(res[0]);
});
});
}
export function boundingClientRect(nodesRef) {
return new Promise(function (resolve) {
if (process.env.TARO_ENV === 'h5') {
var _nodesRef = nodesRef || document.documentElement || document.body;
return resolve(_nodesRef.getBoundingClientRect());
}
return selectorQuery(nodesRef).boundingClientRect().exec(function (res) {
resolve(res[0]);
});
});
}
export var stopPropagation = function stopPropagation(event) {
return event.stopPropagation();
};
export function preventDefault(event, isStopPropagation) {
/* istanbul ignore else */
// if (typeof event?.cancelable !== 'boolean' || event?.cancelable) {
// }
event.preventDefault();
if (isStopPropagation) {
stopPropagation(event);
}
}
export var debounce = function debounce(fn, timeout) {
var handle = 0;
var lastArgs = null;
var ret = function ret() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
lastArgs = args;
clearTimeout(handle);
handle = setTimeout(function () {
lastArgs = null;
fn.apply(void 0, args);
}, timeout);
};
ret.flush = function () {
clearTimeout(handle);
if (lastArgs) {
var _lastArgs = lastArgs;
lastArgs = null;
return fn.apply(void 0, _toConsumableArray(_lastArgs));
}
}; // ret.cancel = () => {
// lastArgs = null
// clearTimeout(handle)
// }
return ret;
};