UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

59 lines (58 loc) 2.13 kB
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator"; import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array"; import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator"; import { createSelectorQuery } from "@tarojs/taro"; import MiniLru from "./lru"; import { getRect, inBrowser } from "../hooks/use-client-rect"; var lru = new MiniLru(10); export function makeRect(width, height) { return { top: 0, left: 0, right: width, bottom: height, width: width, height: height }; } export var getRectByTaro = /*#__PURE__*/ function() { var _ref = _async_to_generator(function(element) { var harmonyId; var _arguments = arguments; return _ts_generator(this, function(_state) { harmonyId = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : ''; if (element) { if (inBrowser) { return [ 2, Promise.resolve(getRect(element)) ]; } // 小程序下的逻辑 return [ 2, new Promise(function(resolve, reject) { if (lru.has(element)) { resolve(lru.get(element)); return; } createSelectorQuery().select("#".concat(harmonyId || element.uid)).boundingClientRect().exec(function(param) { var _param = _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 getRectByTaro(element) { return _ref.apply(this, arguments); }; }();