UNPKG

respond-framework

Version:
41 lines (39 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = render; var React = require("react"); var _reactNative = require("react-native"); var _client = require("react-dom/client"); var _constants = require("../helpers/constants.js"); var _Provider = require("./Provider.js"); function render(props = {}, opts = {}) { const app = createApp(this, props, opts.last); if (_constants.isTest) return app;else if (!_constants.isNative) renderWeb(app, this.mem, this);else renderNative(app, this.mem); } const createApp = (respond, props, last) => { if (last) respond.state.replayTools.playing = false; // optimization, so additional render isn't queued after main render -- see replayEvents.js respond.mem.rendered = true; respond.mem.props ??= props; const state = respond.proxify(); const Provider = props.Provider || state.components?.Provider || _Provider.default; return /*#__PURE__*/React.createElement(Provider, { state, ...respond.mem.props }); }; const renderWeb = (app, mem, respond) => { const el = document.getElementById('root'); if (respond.state.options.unmountOnReplays) { if (mem.app) mem.app.unmount(); mem.app = (0, _client.createRoot)(el); } else mem.app ??= (0, _client.createRoot)(el); mem.app.render(app); }; const renderNative = (app, { props }) => { _reactNative.AppRegistry.registerComponent(props.appName, () => () => app); _reactNative.AppRegistry.runApplication(props.appName, props.appParams); };