@wttech/graal-bridge-react
Version:
React entrypoint for Graal integration
43 lines • 1.72 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var server_1 = __importDefault(require("react-dom/server"));
function renderComponent(componentType) {
return function (props) {
var value = JSON.parse(props);
return server_1.default.renderToString(react_1.default.createElement(componentType, value));
};
}
function renderStaticComponent(componentType) {
return function (props) {
var value = JSON.parse(props);
return server_1.default.renderToStaticMarkup(react_1.default.createElement(componentType, value));
};
}
var GraalBridgeReact = /** @class */ (function () {
function GraalBridgeReact() {
this.registry = {};
}
GraalBridgeReact.prototype.register = function (name, renderFunction) {
this.registry[name] = renderFunction;
};
GraalBridgeReact.prototype.registerReact = function (name, componentType) {
this.register(name, renderComponent(componentType));
};
GraalBridgeReact.prototype.registerReactStatic = function (name, componentType) {
this.register(name, renderStaticComponent(componentType));
};
GraalBridgeReact.prototype.render = function (name, props) {
var renderFunction = this.registry[name];
return renderFunction(props);
};
GraalBridgeReact.prototype.expose = function () {
global.render = this.render.bind(this);
};
return GraalBridgeReact;
}());
exports.default = GraalBridgeReact;
//# sourceMappingURL=graal-bridge-react.js.map
;