UNPKG

weex-nuke

Version:

基于 Rax 、Weex 的高性能组件体系 ~~

93 lines (84 loc) 2.15 kB
/** @jsx createElement */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _rax = require('rax'); var isWeb = typeof callNative !== 'function'; function createEle(type) { var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var children = arguments[2]; var el = document.createElement(type); if (children) { if (!Array.isArray(children)) { children = [children]; } children.forEach(function (child) { child && el.appendChild(child); }); } (0, _rax.setNativeProps)(el, opts); return el; } function append(ele) { document.body.appendChild(ele); } function ready(callback) { if (callback) { callbacks = callbacks || []; callbacks.push(callback); } if (document.body) { clearInterval(timer); timer = null; while (callbacks.length) { callbacks.shift()(); } } else if (!timer) { timer = setInterval(bodyReady, 16); } } function getRect(ref) { return new Promise(function (resolve, reject) { var res = { width: null, height: null, isSuccess: false }; if (!ref) { reject(res); } var domEl = (0, _rax.findDOMNode)(ref); if (domEl) { if (isWeb) { var size = domEl.getBoundingClientRect(); resolve(_extends({ isSuccess: true }, size)); } } else { try { var dom = require('@weex-module/dom'); dom.getComponentRect(domEl.ref, function (e) { if (e && e.size) { resolve(_extends({ isSuccess: true }, e.size)); } else { reject(res); } }); } catch (e) { reject(res); } } }); } exports.default = { createEle: createEle, append: append, ready: ready, getRect: getRect }; module.exports = exports['default'];