@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
77 lines (76 loc) • 2.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
getRectInMultiPlatform: function() {
return getRectInMultiPlatform;
},
makeRect: function() {
return makeRect;
}
});
var _async_to_generator = require("@swc/helpers/_/_async_to_generator");
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
var _ts_generator = require("@swc/helpers/_/_ts_generator");
var _taro = require("@tarojs/taro");
var _lru = require("../lru");
var _getrect = require("../get-rect");
var lru = new _lru.MiniLru(10);
function makeRect(width, height) {
return {
top: 0,
left: 0,
right: width,
bottom: height,
width: width,
height: height
};
}
var getRectInMultiPlatform = /*#__PURE__*/ function() {
var _ref = (0, _async_to_generator._)(function(element) {
var harmonyId;
var _arguments = arguments;
return (0, _ts_generator._)(this, function(_state) {
harmonyId = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : '';
if (element) {
if (_getrect.inBrowser) {
return [
2,
Promise.resolve((0, _getrect.getRect)(element))
];
}
// 小程序下的逻辑
return [
2,
new Promise(function(resolve, reject) {
if (lru.has(element)) {
resolve(lru.get(element));
return;
}
(0, _taro.createSelectorQuery)().select("#".concat(harmonyId || element.uid)).boundingClientRect().exec(function(param) {
var _param = (0, _sliced_to_array._)(param, 1), rects = _param[0];
if (rects) {
lru.set(element, rects);
}
resolve(rects);
});
})
];
}
return [
2,
Promise.resolve(makeRect(0, 0))
];
});
});
return function getRectInMultiPlatform(element) {
return _ref.apply(this, arguments);
};
}();
;