UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

59 lines 1.57 kB
var shared = { Host: { driver: {} } }; import React from "react"; import { render, unmountComponentAtNode } from "react-dom"; import DriverUniversal from 'driver-universal'; import { isStrictByteDanceMicroApp, isStrictWechatMiniProgram } from './env'; var provider = null; export function onProviderMount(p) { provider = p; } export 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.'); } var driver = ((_a = shared === null || shared === void 0 ? void 0 : shared.Host) === null || _a === void 0 ? void 0 : _a.driver) || DriverUniversal; var root = document.createElement('div'); var hid = false; var hide = function hide() { if (hid) { return; } try { hid = true; unmountComponentAtNode(root); document.body.removeChild(root); if (onHide) { onHide(); } } catch (e) { throw new Error('remove element error'); } }; if (isStrictWechatMiniProgram || isStrictByteDanceMicroApp) { render(element, root); } else { document.body.appendChild(root); render(element, root); } return hide; } export function renderToRoot(element, onHide) { if (provider) { return renderWithProvider(element, onHide); } return renderWithDriver(element, onHide); }