vantui-edit
Version:
一套适用于Taro3及React的vantui组件库
109 lines (86 loc) • 2.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.boundingClientRect = boundingClientRect;
exports.debounce = void 0;
exports.preventDefault = preventDefault;
exports.scrollOffset = scrollOffset;
exports.stopPropagation = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _taro = require("@tarojs/taro");
function selectorQuery(nodesRef) {
if (!nodesRef || nodesRef.nodeName === 'root') {
return (0, _taro.createSelectorQuery)().selectViewport();
} else {
return (0, _taro.createSelectorQuery)().select('#' + nodesRef.uid);
}
}
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]);
});
});
}
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]);
});
});
}
var stopPropagation = function stopPropagation(event) {
return event.stopPropagation();
};
exports.stopPropagation = stopPropagation;
function preventDefault(event, isStopPropagation) {
/* istanbul ignore else */
// if (typeof event?.cancelable !== 'boolean' || event?.cancelable) {
// }
event.preventDefault();
if (isStopPropagation) {
stopPropagation(event);
}
}
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, (0, _toConsumableArray2.default)(_lastArgs));
}
}; // ret.cancel = () => {
// lastArgs = null
// clearTimeout(handle)
// }
return ret;
};
exports.debounce = debounce;