168 lines
5.2 KiB
JavaScript
Executable File
168 lines
5.2 KiB
JavaScript
Executable File
/******/ (() => { // webpackBootstrap
|
|
/******/ "use strict";
|
|
/******/ // The require scope
|
|
/******/ var __webpack_require__ = {};
|
|
/******/
|
|
/************************************************************************/
|
|
/******/ /* webpack/runtime/define property getters */
|
|
/******/ (() => {
|
|
/******/ // define getter functions for harmony exports
|
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
/******/ for(var key in definition) {
|
|
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
/******/ }
|
|
/******/ }
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/make namespace object */
|
|
/******/ (() => {
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = (exports) => {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/************************************************************************/
|
|
var __webpack_exports__ = {};
|
|
// ESM COMPAT FLAG
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
I18nProvider: () => (/* binding */ I18nProvider),
|
|
useI18n: () => (/* binding */ useI18n),
|
|
withI18n: () => (/* binding */ withI18n)
|
|
});
|
|
|
|
;// external ["wp","element"]
|
|
const external_wp_element_namespaceObject = window["wp"]["element"];
|
|
;// external ["wp","i18n"]
|
|
const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
|
|
;// external "ReactJSXRuntime"
|
|
const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
|
|
;// ./packages/react-i18n/build-module/index.js
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
|
|
/**
|
|
* WordPress dependencies
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
* Utility to make a new context value
|
|
*
|
|
* @param i18n
|
|
*/
|
|
function makeContextValue(i18n) {
|
|
return {
|
|
__: i18n.__.bind(i18n),
|
|
_x: i18n._x.bind(i18n),
|
|
_n: i18n._n.bind(i18n),
|
|
_nx: i18n._nx.bind(i18n),
|
|
isRTL: i18n.isRTL.bind(i18n),
|
|
hasTranslation: i18n.hasTranslation.bind(i18n)
|
|
};
|
|
}
|
|
const I18nContext = (0,external_wp_element_namespaceObject.createContext)(makeContextValue(external_wp_i18n_namespaceObject.defaultI18n));
|
|
/**
|
|
* The `I18nProvider` should be mounted above any localized components:
|
|
*
|
|
* @example
|
|
* ```js
|
|
* import { createI18n } from '@wordpress/i18n';
|
|
* import { I18nProvider } from '@wordpress/react-i18n';
|
|
* const i18n = createI18n();
|
|
*
|
|
* ReactDom.render(
|
|
* <I18nProvider i18n={ i18n }>
|
|
* <App />
|
|
* </I18nProvider>,
|
|
* el
|
|
* );
|
|
* ```
|
|
*
|
|
* You can also instantiate the provider without the `i18n` prop. In that case it will use the
|
|
* default `I18n` instance exported from `@wordpress/i18n`.
|
|
*
|
|
* @param props i18n provider props.
|
|
* @return Children wrapped in the I18nProvider.
|
|
*/
|
|
function I18nProvider(props) {
|
|
const {
|
|
children,
|
|
i18n = external_wp_i18n_namespaceObject.defaultI18n
|
|
} = props;
|
|
const [update, forceUpdate] = (0,external_wp_element_namespaceObject.useReducer)(() => [], []);
|
|
|
|
// Rerender translations whenever the i18n instance fires a change event.
|
|
(0,external_wp_element_namespaceObject.useEffect)(() => i18n.subscribe(forceUpdate), [i18n]);
|
|
const value = (0,external_wp_element_namespaceObject.useMemo)(() => makeContextValue(i18n), [i18n, update]);
|
|
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(I18nContext.Provider, {
|
|
value: value,
|
|
children: children
|
|
});
|
|
}
|
|
|
|
/**
|
|
* React hook providing access to i18n functions. It exposes the `__`, `_x`, `_n`, `_nx`,
|
|
* `isRTL` and `hasTranslation` functions from [`@wordpress/i18n`](../i18n).
|
|
* Refer to their documentation there.
|
|
*
|
|
* @example
|
|
* ```js
|
|
* import { useI18n } from '@wordpress/react-i18n';
|
|
*
|
|
* function MyComponent() {
|
|
* const { __ } = useI18n();
|
|
* return __( 'Hello, world!' );
|
|
* }
|
|
* ```
|
|
*/
|
|
const useI18n = () => (0,external_wp_element_namespaceObject.useContext)(I18nContext);
|
|
/**
|
|
* React higher-order component that passes the i18n translate functions (the same set
|
|
* as exposed by the `useI18n` hook) to the wrapped component as props.
|
|
*
|
|
* @example
|
|
* ```js
|
|
* import { withI18n } from '@wordpress/react-i18n';
|
|
*
|
|
* function MyComponent( { __ } ) {
|
|
* return __( 'Hello, world!' );
|
|
* }
|
|
*
|
|
* export default withI18n( MyComponent );
|
|
* ```
|
|
*
|
|
* @param InnerComponent React component to be wrapped and receive the i18n functions like `__`
|
|
* @return The wrapped component
|
|
*/
|
|
function withI18n(InnerComponent) {
|
|
const EnhancedComponent = props => {
|
|
const i18nProps = useI18n();
|
|
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(InnerComponent, {
|
|
...props,
|
|
...i18nProps
|
|
});
|
|
};
|
|
const innerComponentName = InnerComponent.displayName || InnerComponent.name || 'Component';
|
|
EnhancedComponent.displayName = `WithI18n(${innerComponentName})`;
|
|
return EnhancedComponent;
|
|
}
|
|
|
|
(window.wp = window.wp || {}).reactI18n = __webpack_exports__;
|
|
/******/ })()
|
|
; |