@roderickhsiao/react-i13n
Version:
[Experiment] React I13n provides a performant and scalable solution to application instrumentation.
80 lines (62 loc) • 2.61 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = void 0;
var _react = require("react");
var _ReactI13n = _interopRequireDefault(require("../core/ReactI13n"));
var _variables = require("../utils/variables");
var _warnAndPrintTrace = _interopRequireDefault(require("../utils/warnAndPrintTrace"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Copyright 2015 - Present, Yahoo Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
/*
* @param {Object} options passed into ReactI13n
* @param {Boolean} options.isViewportEnabled if enable viewport checking
* @param {Object} options.displayName display name of the wrapper component
* @param {Object} options.i13nNodeClass the i13nNode class, you can inherit it with your own functionalities
* @param {Object} options.rootModelData model data of root i13n node
*/
var useReactI13n = function useReactI13n(options) {
var i13nInstance = (0, _react.useRef)();
var _useState = (0, _react.useState)(),
instance = _useState[0],
setInstance = _useState[1];
var setupI13nRoot = function setupI13nRoot() {
if (!i13nInstance.current) {
var reactI13n = new _ReactI13n["default"](options);
reactI13n.i13nInstance = reactI13n;
i13nInstance.current = reactI13n;
setInstance(reactI13n);
if (_variables.IS_CLIENT && !_variables.IS_PROD) {
window._reactI13nInstance = reactI13n;
}
}
};
var executeI13nEvent = (0, _react.useCallback)(function (eventName, payload, callback) {
if (payload === void 0) {
payload = {};
}
var errorMessage = ''; // payload.i13nNode = payload.i13nNode || this.getI13nNode();
if (instance) {
instance.execute(eventName, payload, callback);
} else {
/* istanbul ignore next */
if (!_variables.IS_PROD) {
errorMessage = 'ReactI13n instance is not found, please make sure you have setupI13n on the root component. ';
if (!_variables.IS_CLIENT) {
errorMessage += 'On server side, ' + 'you can only execute the i13n event on the components under setupI13n, ' + 'please make sure you are calling executeI13nEvent correctly';
}
(0, _warnAndPrintTrace["default"])(errorMessage);
}
callback === null || callback === void 0 ? void 0 : callback();
}
}, [instance]);
setupI13nRoot();
return {
i13nInstance: i13nInstance.current,
executeI13nEvent: executeI13nEvent
};
};
var _default = useReactI13n;
exports["default"] = _default;