@ima/react-page-renderer
Version:
IMA.js React page renderer.
53 lines (52 loc) • 1.8 kB
JavaScript
/* @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