UNPKG

@react-native-localize-ext/react

Version:
41 lines (40 loc) 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.I18nProvider = void 0; const tslib_1 = require("tslib"); const react_1 = tslib_1.__importStar(require("react")); const hoist_non_react_statics_1 = tslib_1.__importDefault(require("hoist-non-react-statics")); const utils_1 = require("./utils"); exports.I18nProvider = (...i18nList) => { return function (WrappedComponent) { class I18nComponent extends react_1.PureComponent { constructor() { super(...arguments); this.state = { sign: utils_1.getSignatures(i18nList), }; this.listeners = []; } componentDidMount() { this.listeners = i18nList.map((i18n, index) => { return i18n._.listen(() => { const data = this.state.sign.split(utils_1.SPLIT_STR); data[index] = utils_1.getSignature(i18n); this.setState({ sign: data.join(utils_1.SPLIT_STR), }); }); }); } componentWillUnmount() { this.listeners.forEach((unListen) => unListen()); } render() { const { sign } = this.state; return react_1.default.createElement(WrappedComponent, Object.assign({}, this.props, { "$i18n$": sign })); } } I18nComponent.displayName = `I18n(${WrappedComponent.displayName || WrappedComponent.name})`; return hoist_non_react_statics_1.default(I18nComponent, WrappedComponent); }; };