UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

65 lines (64 loc) 1.83 kB
"use strict"; exports.__esModule = true; exports.onProviderMount = onProviderMount; exports.onProviderUnMount = onProviderUnMount; exports.renderToRoot = renderToRoot; var _react = _interopRequireDefault(require("react")); var _reactDom = require("react-dom"); var _driverUniversal = _interopRequireDefault(require("driver-universal")); var _env = require("./env"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var shared = { Host: { driver: {} } }; var provider = null; function onProviderMount(p) { provider = p; } function onProviderUnMount() { provider = null; } function renderWithProvider(element, onHide) { return provider.addPortal({ element: element, onHide: onHide }); } function renderWithDriver(element, onHide) { var _a; if (!shared || !shared.Host || !shared.Host.driver) { console.warn('shared.Host.driver is invalid, using DriverUniversal instead.'); } ((_a = shared === null || shared === void 0 ? void 0 : shared.Host) === null || _a === void 0 ? void 0 : _a.driver) || _driverUniversal.default; var root = document.createElement('div'); var hid = false; if (_env.isStrictWechatMiniProgram || _env.isStrictByteDanceMicroApp) { (0, _reactDom.render)(element, root); } else { document.body.appendChild(root); (0, _reactDom.render)(element, root); } return function hide() { if (hid) { return; } try { hid = true; (0, _reactDom.unmountComponentAtNode)(root); document.body.removeChild(root); if (onHide) { onHide(); } } catch (e) { throw new Error('remove element error'); } }; } function renderToRoot(element, onHide) { if (provider) { return renderWithProvider(element, onHide); } return renderWithDriver(element, onHide); }