respond-framework
Version:
create as fast you think
36 lines (35 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactTestRenderer = require("react-test-renderer");
var _createNodeMock = require("./createNodeMock.js");
const createRenderer = (respond, opts = {}) => ({
async render() {
if (!this._renderer) this.create(); // for performance and to match the rendering of a real Respond app, we create renderer after first trigger event
else (0, _reactTestRenderer.act)(() => respond.commit()); // after, reactivity will handle subsequent renders, but we assume control for precision batching here (similar to queueNotification.js in a real app)
},
create() {
(0, _reactTestRenderer.act)(() => {
const app = respond.render();
const createNodeMock = opts.createNodeMock ?? _createNodeMock.default;
this._renderer = (0, _reactTestRenderer.create)(app, {
createNodeMock
});
});
this.root = this._renderer.root;
},
toJSON() {
return this.prevJson = this._renderer.toJSON();
},
toPrevNextJSON() {
const prev = this.prevJson;
const next = this.prevJson = this._renderer.toJSON();
return {
prev,
next
};
}
});
var _default = exports.default = createRenderer;