UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

53 lines (52 loc) 1.8 kB
/* @if server ** export class ClientPageRenderer {}; /* @else */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ClientPageRenderer", { enumerable: true, get: function() { return ClientPageRenderer; } }); const _core = require("@ima/core"); const _client = require("react-dom/client"); const _AbstractClientPageRenderer = require("./AbstractClientPageRenderer"); class ClientPageRenderer extends _AbstractClientPageRenderer.AbstractClientPageRenderer { _reactRoot; unmount() { if (this._reactRoot) { this._reactRoot.unmount(); this._reactRoot = undefined; this._runUnmountCallback(); } super.unmount(); } _hydrateViewAdapter() { const serverNode = this._viewContainer?.cloneNode(true); this._reactRoot = (0, _client.hydrateRoot)(this._viewContainer, this._getViewAdapterElement({ refCallback: this._getHydrateCallback() }), { onRecoverableError: (error)=>{ if ($Debug) { console.error('onRecoverableError', error); } this._dispatcher.fire(_core.RendererEvents.HYDRATE_ERROR, { error, serverNode, clientNode: this._viewContainer?.cloneNode(true) }); } }); } _renderViewAdapter(callback, props) { if (!this._reactRoot) { this._reactRoot = (0, _client.createRoot)(this._viewContainer); } this._reactRoot.render(this._getViewAdapterElement(Object.assign({}, props, { refCallback: callback }))); } } /* @endif */ //# sourceMappingURL=ClientPageRenderer.js.map