UNPKG

@roderickhsiao/react-i13n

Version:

[Experiment] React I13n provides a performant and scalable solution to application instrumentation.

80 lines (62 loc) 2.61 kB
"use strict"; 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;