@commercetools-frontend/l10n 22.2.0 → 22.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -50,7 +50,7 @@ var moment__default = /*#__PURE__*/_interopDefault(moment);
50
50
  var omit__default = /*#__PURE__*/_interopDefault(omit);
51
51
 
52
52
  // NOTE: This string will be replaced on build time with the package version.
53
- var version = "22.2.0";
53
+ var version = "22.3.0";
54
54
 
55
55
  const mapLocaleToIntlLocale = locale => {
56
56
  if (_startsWithInstanceProperty__default["default"](locale).call(locale, 'de')) return 'de';
@@ -60,101 +60,88 @@ const mapLocaleToIntlLocale = locale => {
60
60
  return 'en';
61
61
  };
62
62
  const supportedLocales = ['en', 'de', 'es', 'fr-FR', 'zh-CN'];
63
- const defaultLocale = 'en'; // Given a locale, return the locale only if it's supported.
64
- // If not, return a default locale.
63
+ const defaultLocale = 'en';
65
64
 
65
+ // Given a locale, return the locale only if it's supported.
66
+ // If not, return a default locale.
66
67
  function getSupportedLocale(locale) {
67
68
  const isSupported = _findInstanceProperty__default["default"](supportedLocales).call(supportedLocales, supportedLocale => _startsWithInstanceProperty__default["default"](locale).call(locale, supportedLocale));
68
-
69
69
  return isSupported ? locale : defaultLocale;
70
- } // given a currenyCode and a list of currencies with the following shape
71
- // [{ label, symbol }], we return the symbol.
70
+ }
72
71
 
72
+ // given a currenyCode and a list of currencies with the following shape
73
+ // [{ label, symbol }], we return the symbol.
73
74
  const getSymbolFromCurrency = (currencyCode, currencies) => {
74
75
  if (currencies[currencyCode] && currencies[currencyCode].symbol) {
75
76
  return currencies[currencyCode].symbol;
76
77
  }
77
-
78
78
  return '';
79
- }; // From https://github.com/acdlite/recompose/blob/master/src/packages/recompose/getDisplayName.js
79
+ };
80
80
 
81
+ // From https://github.com/acdlite/recompose/blob/master/src/packages/recompose/getDisplayName.js
81
82
  const getDisplayName = Component => {
82
83
  if (typeof Component === 'string') {
83
84
  return Component;
84
85
  }
85
-
86
86
  if (!Component) {
87
87
  return undefined;
88
88
  }
89
-
90
89
  return Component.displayName || Component.name || 'Component';
91
90
  };
92
91
  const getPrimaryLocale = locale => locale.split('-')[0];
93
92
  const formatLocalizedFallbackHint = (value, locale) => {
94
93
  var _context;
95
-
96
94
  return _concatInstanceProperty__default["default"](_context = "".concat(value, " (")).call(_context, locale.toUpperCase(), ")");
97
95
  };
98
96
  const findFallbackLocale = (localizedString, fallbackOrder) => {
99
97
  var _context2;
100
-
101
98
  return _findInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](fallbackOrder).call(fallbackOrder, _Object$keys__default["default"](localizedString))).call(_context2, lang => Boolean(localizedString[lang]));
102
99
  };
103
100
 
104
101
  function ownKeys$2(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
105
-
106
102
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(source))).call(_context3, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
107
103
  const initialState = {
108
104
  isLoading: true,
109
105
  // Keep it as an empty object, for backwards compatibility
110
106
  data: {}
111
107
  };
112
-
113
108
  function reducer() {
114
109
  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
115
110
  let action = arguments.length > 1 ? arguments[1] : undefined;
116
-
117
111
  switch (action.type) {
118
112
  case 'loading':
119
113
  return _objectSpread$2(_objectSpread$2({}, state), {}, {
120
114
  isLoading: true,
121
115
  data: {}
122
116
  });
123
-
124
117
  case 'ok':
125
118
  return _objectSpread$2(_objectSpread$2({}, state), {}, {
126
119
  isLoading: false,
127
120
  data: action.data
128
121
  });
129
-
130
122
  case 'error':
131
123
  return _objectSpread$2(_objectSpread$2({}, state), {}, {
132
124
  isLoading: false,
133
125
  error: action.error
134
126
  });
135
-
136
127
  default:
137
128
  return state;
138
129
  }
139
130
  }
140
-
141
131
  function createL10NHook(loadLocale) {
142
132
  return locale => {
143
133
  const _useReducer = react.useReducer(reducer, initialState),
144
- _useReducer2 = _slicedToArray(_useReducer, 2),
145
- data = _useReducer2[0],
146
- dispatch = _useReducer2[1];
147
-
134
+ _useReducer2 = _slicedToArray(_useReducer, 2),
135
+ data = _useReducer2[0],
136
+ dispatch = _useReducer2[1];
148
137
  react.useEffect(() => {
149
138
  let cleaning = false;
150
139
  dispatch({
151
140
  type: 'loading'
152
141
  });
153
-
154
142
  async function run() {
155
143
  try {
156
144
  const data = await loadLocale(locale);
157
-
158
145
  if (!cleaning) {
159
146
  dispatch({
160
147
  type: 'ok',
@@ -164,7 +151,6 @@ function createL10NHook(loadLocale) {
164
151
  } catch (error) {
165
152
  if (error instanceof Error) {
166
153
  sentry.reportErrorToSentry(error);
167
-
168
154
  if (!cleaning) {
169
155
  dispatch({
170
156
  type: 'error',
@@ -174,7 +160,6 @@ function createL10NHook(loadLocale) {
174
160
  }
175
161
  }
176
162
  }
177
-
178
163
  run();
179
164
  return () => {
180
165
  cleaning = true;
@@ -185,14 +170,13 @@ function createL10NHook(loadLocale) {
185
170
  }
186
171
  function createL10NInjector(_ref) {
187
172
  let displayName = _ref.displayName,
188
- propKey = _ref.propKey,
189
- propLoadingKey = _ref.propLoadingKey,
190
- loadLocale = _ref.loadLocale;
173
+ propKey = _ref.propKey,
174
+ propLoadingKey = _ref.propLoadingKey,
175
+ loadLocale = _ref.loadLocale;
191
176
  return function createHOC(mapPropsToLocale) {
192
177
  const useL10n = createL10NHook(loadLocale);
193
178
  return WrappedComponent => {
194
179
  var _context;
195
-
196
180
  const L10NComponent = props => {
197
181
  const state = useL10n(mapPropsToLocale(props));
198
182
  return jsxRuntime.jsx(WrappedComponent, _objectSpread$2(_objectSpread$2({}, props), {}, {
@@ -200,7 +184,6 @@ function createL10NInjector(_ref) {
200
184
  [propKey]: state.data
201
185
  }));
202
186
  };
203
-
204
187
  L10NComponent.displayName = _concatInstanceProperty__default["default"](_context = "".concat(displayName, "(")).call(_context, getDisplayName(WrappedComponent), ")");
205
188
  return L10NComponent;
206
189
  };
@@ -209,52 +192,35 @@ function createL10NInjector(_ref) {
209
192
 
210
193
  const getImportChunk$3 = locale => {
211
194
  const intlLocale = mapLocaleToIntlLocale(locale);
212
-
213
195
  switch (intlLocale) {
214
196
  case 'de':
215
- return Promise.resolve().then(function () { return require(
216
- /* webpackChunkName: "country-data-de" */
217
- './de-d39b5241.cjs.dev.js'); });
218
-
197
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "country-data-de" */'./de-d39b5241.cjs.dev.js'); });
219
198
  case 'es':
220
- return Promise.resolve().then(function () { return require(
221
- /* webpackChunkName: "country-data-es" */
222
- './es-8c811c5d.cjs.dev.js'); });
223
-
199
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "country-data-es" */'./es-8c811c5d.cjs.dev.js'); });
224
200
  case 'fr-FR':
225
- return Promise.resolve().then(function () { return require(
226
- /* webpackChunkName: "country-data-fr-FR" */
227
- './fr-FR-25212b0c.cjs.dev.js'); });
228
-
201
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "country-data-fr-FR" */'./fr-FR-25212b0c.cjs.dev.js'); });
229
202
  case 'zh-CN':
230
- return Promise.resolve().then(function () { return require(
231
- /* webpackChunkName: "country-data-zh-CN" */
232
- './zh-CN-7b011ecd.cjs.dev.js'); });
233
-
203
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "country-data-zh-CN" */'./zh-CN-7b011ecd.cjs.dev.js'); });
234
204
  default:
235
- return Promise.resolve().then(function () { return require(
236
- /* webpackChunkName: "country-data-en" */
237
- './en-2cb6372d.cjs.dev.js'); });
205
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "country-data-en" */'./en-2cb6372d.cjs.dev.js'); });
238
206
  }
239
207
  };
240
-
241
208
  const countriesShape = PropTypes__default["default"].objectOf(PropTypes__default["default"].string);
209
+
242
210
  /**
243
211
  * If running through webpack, code splitting makes `getCountriesForLocale`
244
212
  * a function that asynchronously loads the country data.
245
213
  */
246
-
247
214
  const getCountriesForLocale = async locale => {
248
- const supportedLocale = getSupportedLocale(locale); // Use default webpackMode (lazy) so that we generate one file per locale.
215
+ const supportedLocale = getSupportedLocale(locale);
216
+ // Use default webpackMode (lazy) so that we generate one file per locale.
249
217
  // The files are named like "country-data-en-json.chunk.js" after compilation
250
218
  // https://webpack.js.org/api/module-methods/#import-
251
-
252
- const countries = await getImportChunk$3(supportedLocale); // Prefer loading `default` (for ESM bundles) and
219
+ const countries = await getImportChunk$3(supportedLocale);
220
+ // Prefer loading `default` (for ESM bundles) and
253
221
  // fall back to normal import (for CJS bundles).
254
-
255
222
  return countries.default || countries;
256
223
  };
257
-
258
224
  const withCountries = createL10NInjector({
259
225
  displayName: 'withCountries',
260
226
  propKey: 'countries',
@@ -265,55 +231,38 @@ const useCountries = createL10NHook(getCountriesForLocale);
265
231
 
266
232
  const getImportChunk$2 = locale => {
267
233
  const intlLocale = mapLocaleToIntlLocale(locale);
268
-
269
234
  switch (intlLocale) {
270
235
  case 'de':
271
- return Promise.resolve().then(function () { return require(
272
- /* webpackChunkName: "currency-data-de" */
273
- './de-d18a0288.cjs.dev.js'); });
274
-
236
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "currency-data-de" */'./de-d18a0288.cjs.dev.js'); });
275
237
  case 'es':
276
- return Promise.resolve().then(function () { return require(
277
- /* webpackChunkName: "currency-data-es" */
278
- './es-7043188a.cjs.dev.js'); });
279
-
238
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "currency-data-es" */'./es-7043188a.cjs.dev.js'); });
280
239
  case 'fr-FR':
281
- return Promise.resolve().then(function () { return require(
282
- /* webpackChunkName: "currency-data-fr-FR" */
283
- './fr-FR-a7f43360.cjs.dev.js'); });
284
-
240
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "currency-data-fr-FR" */'./fr-FR-a7f43360.cjs.dev.js'); });
285
241
  case 'zh-CN':
286
- return Promise.resolve().then(function () { return require(
287
- /* webpackChunkName: "currency-data-zh-CN" */
288
- './zh-CN-10572f2d.cjs.dev.js'); });
289
-
242
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "currency-data-zh-CN" */'./zh-CN-10572f2d.cjs.dev.js'); });
290
243
  default:
291
- return Promise.resolve().then(function () { return require(
292
- /* webpackChunkName: "currency-data-en" */
293
- './en-68409d0b.cjs.dev.js'); });
244
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "currency-data-en" */'./en-68409d0b.cjs.dev.js'); });
294
245
  }
295
246
  };
296
-
297
247
  PropTypes__default["default"].objectOf(PropTypes__default["default"].shape({
298
248
  label: PropTypes__default["default"].string,
299
249
  symbol: PropTypes__default["default"].string
300
250
  }));
251
+
301
252
  /**
302
253
  * If running through webpack, code splitting makes `getCurrenciesForLocale`
303
254
  * a function that asynchronously loads the country data.
304
255
  */
305
-
306
256
  const getCurrenciesForLocale = async locale => {
307
- const supportedLocale = getSupportedLocale(locale); // Use default webpackMode (lazy) so that we generate one file per locale.
257
+ const supportedLocale = getSupportedLocale(locale);
258
+ // Use default webpackMode (lazy) so that we generate one file per locale.
308
259
  // The files are named like "currency-data-en-json.chunk.js" after compilation
309
260
  // https://webpack.js.org/api/module-methods/#import-
310
-
311
- const currencies = await getImportChunk$2(supportedLocale); // Prefer loading `default` (for ESM bundles) and
261
+ const currencies = await getImportChunk$2(supportedLocale);
262
+ // Prefer loading `default` (for ESM bundles) and
312
263
  // fall back to normal import (for CJS bundles).
313
-
314
264
  return currencies.default || currencies;
315
265
  };
316
-
317
266
  const withCurrencies = createL10NInjector({
318
267
  displayName: 'withCurrencies',
319
268
  propKey: 'currencies',
@@ -324,55 +273,38 @@ const useCurrencies = createL10NHook(getCurrenciesForLocale);
324
273
 
325
274
  const getImportChunk$1 = locale => {
326
275
  const intlLocale = mapLocaleToIntlLocale(locale);
327
-
328
276
  switch (intlLocale) {
329
277
  case 'de':
330
- return Promise.resolve().then(function () { return require(
331
- /* webpackChunkName: "language-data-de" */
332
- './de-179da050.cjs.dev.js'); });
333
-
278
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "language-data-de" */'./de-179da050.cjs.dev.js'); });
334
279
  case 'es':
335
- return Promise.resolve().then(function () { return require(
336
- /* webpackChunkName: "language-data-es" */
337
- './es-2f0ccbcf.cjs.dev.js'); });
338
-
280
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "language-data-es" */'./es-2f0ccbcf.cjs.dev.js'); });
339
281
  case 'fr-FR':
340
- return Promise.resolve().then(function () { return require(
341
- /* webpackChunkName: "language-data-fr-FR" */
342
- './fr-FR-d5a3cd0b.cjs.dev.js'); });
343
-
282
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "language-data-fr-FR" */'./fr-FR-d5a3cd0b.cjs.dev.js'); });
344
283
  case 'zh-CN':
345
- return Promise.resolve().then(function () { return require(
346
- /* webpackChunkName: "language-data-zh-CN" */
347
- './zh-CN-028efd5b.cjs.dev.js'); });
348
-
284
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "language-data-zh-CN" */'./zh-CN-028efd5b.cjs.dev.js'); });
349
285
  default:
350
- return Promise.resolve().then(function () { return require(
351
- /* webpackChunkName: "language-data-en" */
352
- './en-255416b8.cjs.dev.js'); });
286
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "language-data-en" */'./en-255416b8.cjs.dev.js'); });
353
287
  }
354
288
  };
355
-
356
289
  const languagesShape = PropTypes__default["default"].objectOf(PropTypes__default["default"].shape({
357
290
  country: PropTypes__default["default"].string,
358
291
  language: PropTypes__default["default"].string.isRequired
359
292
  }));
293
+
360
294
  /**
361
295
  * If running through webpack, code splitting makes `getLanguagesForLocale`
362
296
  * a function that asynchronously loads the country data.
363
297
  */
364
-
365
298
  const getLanguagesForLocale = async locale => {
366
- const supportedLocale = getSupportedLocale(locale); // Use default webpackMode (lazy) so that we generate one file per locale.
299
+ const supportedLocale = getSupportedLocale(locale);
300
+ // Use default webpackMode (lazy) so that we generate one file per locale.
367
301
  // The files are named like "language-data-en-json.chunk.js" after compilation
368
302
  // https://webpack.js.org/api/module-methods/#import-
369
-
370
- const languages = await getImportChunk$1(supportedLocale); // Prefer loading `default` (for ESM bundles) and
303
+ const languages = await getImportChunk$1(supportedLocale);
304
+ // Prefer loading `default` (for ESM bundles) and
371
305
  // fall back to normal import (for CJS bundles).
372
-
373
306
  return languages.default || languages;
374
307
  };
375
-
376
308
  const withLanguages = createL10NInjector({
377
309
  displayName: 'withLanguages',
378
310
  propKey: 'languages',
@@ -382,32 +314,25 @@ const withLanguages = createL10NInjector({
382
314
  const useLanguages = createL10NHook(getLanguagesForLocale);
383
315
 
384
316
  function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
385
-
386
317
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$1(Object(source), !0)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$1(Object(source))).call(_context5, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
387
-
388
318
  const getTranslationsMapChunk = async () => {
389
- const translationsMapChunk = await Promise.resolve().then(function () { return require(
390
- /* webpackChunkName: "time-zone-translations-map" */
391
- './translations-map-0e2bd91e.cjs.dev.js'); }); // Prefer loading `default` (for ESM bundles) and
319
+ const translationsMapChunk = await Promise.resolve().then(function () { return require( /* webpackChunkName: "time-zone-translations-map" */'./translations-map-0e2bd91e.cjs.dev.js'); });
320
+ // Prefer loading `default` (for ESM bundles) and
392
321
  // fall back to normal import (for CJS bundles).
393
-
394
322
  return translationsMapChunk.default || translationsMapChunk;
395
323
  };
324
+
396
325
  /**
397
326
  * Build offset and abbreviation data for each timezone at runtime from moment-timezone
398
327
  * in order to return accurate offset values for timezones that have daylight time.
399
328
  */
400
-
401
-
402
329
  const augmentTimeZoneData = async timeZones => {
403
330
  var _context, _context2, _context3;
404
-
405
331
  const translationsMap = await getTranslationsMapChunk();
406
332
  return _reduceInstanceProperty__default["default"](_context = _sortInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](_context3 = _Object$entries__default["default"](timeZones)).call(_context3, _ref => {
407
333
  let _ref2 = _slicedToArray(_ref, 2),
408
- id = _ref2[0],
409
- name = _ref2[1];
410
-
334
+ id = _ref2[0],
335
+ name = _ref2[1];
411
336
  return {
412
337
  id,
413
338
  name,
@@ -419,63 +344,46 @@ const augmentTimeZoneData = async timeZones => {
419
344
  [timeZone.id]: timeZone
420
345
  }), {});
421
346
  };
422
-
423
347
  const getImportChunk = locale => {
424
348
  const intlLocale = mapLocaleToIntlLocale(locale);
425
-
426
349
  switch (intlLocale) {
427
350
  case 'de':
428
- return Promise.resolve().then(function () { return require(
429
- /* webpackChunkName: "timezone-data-de" */
430
- './de-a35429c3.cjs.dev.js'); });
431
-
351
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "timezone-data-de" */'./de-a35429c3.cjs.dev.js'); });
432
352
  case 'es':
433
- return Promise.resolve().then(function () { return require(
434
- /* webpackChunkName: "timezone-data-es" */
435
- './es-dac5d844.cjs.dev.js'); });
436
-
353
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "timezone-data-es" */'./es-dac5d844.cjs.dev.js'); });
437
354
  case 'fr-FR':
438
- return Promise.resolve().then(function () { return require(
439
- /* webpackChunkName: "timezone-data-fr-FR" */
440
- './fr-FR-0bcee641.cjs.dev.js'); });
441
-
355
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "timezone-data-fr-FR" */'./fr-FR-0bcee641.cjs.dev.js'); });
442
356
  case 'zh-CN':
443
- return Promise.resolve().then(function () { return require(
444
- /* webpackChunkName: "timezone-data-zh-CN" */
445
- './zh-CN-e4b0166a.cjs.dev.js'); });
446
-
357
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "timezone-data-zh-CN" */'./zh-CN-e4b0166a.cjs.dev.js'); });
447
358
  default:
448
- return Promise.resolve().then(function () { return require(
449
- /* webpackChunkName: "timezone-data-en" */
450
- './en-c5d0a319.cjs.dev.js'); });
359
+ return Promise.resolve().then(function () { return require( /* webpackChunkName: "timezone-data-en" */'./en-c5d0a319.cjs.dev.js'); });
451
360
  }
452
361
  };
453
-
454
362
  const timeZonesShape = PropTypes__default["default"].objectOf(PropTypes__default["default"].shape({
455
363
  label: PropTypes__default["default"].string,
456
364
  abbr: PropTypes__default["default"].string,
457
365
  offset: PropTypes__default["default"].string,
458
366
  translationFor: PropTypes__default["default"].array
459
367
  }));
368
+
460
369
  /**
461
370
  * If running through webpack, code splitting makes `getTimeZonesForLocale`
462
371
  * a function that asynchronously loads the country data.
463
372
  */
464
-
465
373
  const getTimeZonesForLocale = async locale => {
466
- const supportedLocale = getSupportedLocale(locale); // Use default webpackMode (lazy) so that we generate one file per locale.
374
+ const supportedLocale = getSupportedLocale(locale);
375
+ // Use default webpackMode (lazy) so that we generate one file per locale.
467
376
  // The files are named like "time-zone-data-en-json.chunk.js" after compilation
468
377
  // https://webpack.js.org/api/module-methods/#import-
469
-
470
- const timeZonesChunk = await getImportChunk(supportedLocale); // Prefer loading `default` (for ESM bundles) and
378
+ const timeZonesChunk = await getImportChunk(supportedLocale);
379
+ // Prefer loading `default` (for ESM bundles) and
471
380
  // fall back to normal import (for CJS bundles).
381
+ const timeZones = timeZonesChunk.default || timeZonesChunk;
472
382
 
473
- const timeZones = timeZonesChunk.default || timeZonesChunk; // create time zone object with abbreviations and offsets
474
-
383
+ // create time zone object with abbreviations and offsets
475
384
  const timeZoneData = await augmentTimeZoneData(timeZones);
476
385
  return timeZoneData;
477
386
  };
478
-
479
387
  const withTimeZones = createL10NInjector({
480
388
  displayName: 'withTimeZones',
481
389
  propKey: 'timeZones',
@@ -485,37 +393,34 @@ const withTimeZones = createL10NInjector({
485
393
  const useTimeZones = createL10NHook(getTimeZonesForLocale);
486
394
 
487
395
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
488
-
489
396
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
397
+
490
398
  /**
491
399
  * Transforms a list of `LocalizedField` into a `LocalizedString` object
492
400
  * [{ locale: 'sv', value: 'Hej' }] -> { sv: 'Hej' }
493
401
  */
494
-
495
402
  const transformLocalizedFieldToLocalizedString = localizedFields => {
496
403
  if (!localizedFields || localizedFields.length === 0) return null;
497
404
  return _reduceInstanceProperty__default["default"](localizedFields).call(localizedFields, (nexLocalizedString, field) => _objectSpread(_objectSpread({}, nexLocalizedString), {}, {
498
405
  [field.locale]: field.value
499
406
  }), {});
500
407
  };
408
+
501
409
  /**
502
410
  * Transforms a `LocalizedString` object into a list of `LocalizedField`
503
411
  *
504
412
  * { sv: 'Hej' } -> [{ locale: 'sv', value: 'Hej' }]
505
413
  */
506
-
507
414
  const transformLocalizedStringToLocalizedField = localizedString => {
508
415
  var _context;
509
-
510
416
  if (!localizedString || _Object$keys__default["default"](localizedString).length === 0) return [];
511
-
512
417
  const sorted = _sortInstanceProperty__default["default"](_context = _Object$keys__default["default"](localizedString)).call(_context);
513
-
514
418
  return _reduceInstanceProperty__default["default"](sorted).call(sorted, (updatedLocalizedField, locale) => [...updatedLocalizedField, {
515
419
  locale,
516
420
  value: localizedString[locale]
517
421
  }], []);
518
422
  };
423
+
519
424
  /**
520
425
  * Given a list of localized field names to map, replace the fields in the
521
426
  * format of `LocalizedField` to a `LocalizedString` object.
@@ -529,17 +434,15 @@ const transformLocalizedStringToLocalizedField = localizedString => {
529
434
  * * `from`: the field to transform and to remove after
530
435
  * * `to`: the target field to write the transformed shape
531
436
  */
532
-
533
437
  const applyTransformedLocalizedFields = (objectWithLocalizedFields, fieldNames) => {
534
438
  const transformedFieldDefinitions = _reduceInstanceProperty__default["default"](fieldNames).call(fieldNames, (nextTransformed, fieldName) => _objectSpread(_objectSpread({}, nextTransformed), {}, {
535
439
  [fieldName.to]: transformLocalizedFieldToLocalizedString(objectWithLocalizedFields[fieldName.from])
536
440
  }), {});
537
-
538
441
  const namesToOmit = _mapInstanceProperty__default["default"](fieldNames).call(fieldNames, fieldName => fieldName.from);
539
-
540
442
  const objectWithouLocalizedFields = omit__default["default"](objectWithLocalizedFields, namesToOmit);
541
443
  return _objectSpread(_objectSpread({}, objectWithouLocalizedFields), transformedFieldDefinitions);
542
444
  };
445
+
543
446
  /**
544
447
  * Given a list of localized string names to map, replace the fields in the
545
448
  * format of `LocalizedString` to a `LocalizedField` object.
@@ -553,17 +456,15 @@ const applyTransformedLocalizedFields = (objectWithLocalizedFields, fieldNames)
553
456
  * * `from`: the field to transform and to remove after
554
457
  * * `to`: the target field to write the transformed shape
555
458
  */
556
-
557
459
  const applyTransformedLocalizedStrings = (objectWithLocalizedStrings, fieldNames) => {
558
460
  const transformedFieldDefinitions = _reduceInstanceProperty__default["default"](fieldNames).call(fieldNames, (nextTransformed, fieldName) => _objectSpread(_objectSpread({}, nextTransformed), {}, {
559
461
  [fieldName.to]: transformLocalizedStringToLocalizedField(objectWithLocalizedStrings[fieldName.from])
560
462
  }), {});
561
-
562
463
  const namesToOmit = _mapInstanceProperty__default["default"](fieldNames).call(fieldNames, fieldName => fieldName.from);
563
-
564
464
  const objectWithouLocalizedFields = omit__default["default"](objectWithLocalizedStrings, namesToOmit);
565
465
  return _objectSpread(_objectSpread({}, objectWithouLocalizedFields), transformedFieldDefinitions);
566
466
  };
467
+
567
468
  /**
568
469
  * Translates a localized string on an entity.
569
470
  *
@@ -597,32 +498,35 @@ const applyTransformedLocalizedStrings = (objectWithLocalizedStrings, fieldNames
597
498
  * let c = formatLocalizedString(undefined, { locale: 'en' })
598
499
  * a === b && a === c -> true
599
500
  */
600
-
601
501
  const formatLocalizedString = (entity, _ref) => {
602
502
  let _ref$key = _ref.key,
603
- key = _ref$key === void 0 ? '' : _ref$key,
604
- locale = _ref.locale,
605
- _ref$fallbackOrder = _ref.fallbackOrder,
606
- fallbackOrder = _ref$fallbackOrder === void 0 ? [] : _ref$fallbackOrder,
607
- _ref$fallback = _ref.fallback,
608
- fallback = _ref$fallback === void 0 ? '' : _ref$fallback;
503
+ key = _ref$key === void 0 ? '' : _ref$key,
504
+ locale = _ref.locale,
505
+ _ref$fallbackOrder = _ref.fallbackOrder,
506
+ fallbackOrder = _ref$fallbackOrder === void 0 ? [] : _ref$fallbackOrder,
507
+ _ref$fallback = _ref.fallback,
508
+ fallback = _ref$fallback === void 0 ? '' : _ref$fallback;
609
509
  if (!entity || !entity[key]) return fallback;
610
510
  const localizedString = entity[key];
611
511
  const fallbackLocale = findFallbackLocale(localizedString, fallbackOrder);
612
- const formattedLocalizedFallback = fallbackLocale ? formatLocalizedFallbackHint(localizedString[fallbackLocale], fallbackLocale) : fallback; // GIVEN no `locale`
512
+ const formattedLocalizedFallback = fallbackLocale ? formatLocalizedFallbackHint(localizedString[fallbackLocale], fallbackLocale) : fallback;
513
+
514
+ // GIVEN no `locale`
613
515
  // THEN return formattedFallback by fallbackOrder
516
+ if (!locale) return formattedLocalizedFallback;
614
517
 
615
- if (!locale) return formattedLocalizedFallback; // GIVEN locale
518
+ // GIVEN locale
616
519
  // AND there is a value on `localizedString`
617
520
  // THEN return value
521
+ if (localizedString[locale]) return localizedString[locale];
618
522
 
619
- if (localizedString[locale]) return localizedString[locale]; // GIVEN locale
523
+ // GIVEN locale
620
524
  // AND there is a value on primary locale
621
525
  // THEN return value on primary locale
622
-
623
526
  const primaryLocale = locale && getPrimaryLocale(locale);
624
- if (localizedString[primaryLocale]) return localizedString[primaryLocale]; // use formattedFallback by fallbackOrder as last resort
527
+ if (localizedString[primaryLocale]) return localizedString[primaryLocale];
625
528
 
529
+ // use formattedFallback by fallbackOrder as last resort
626
530
  return formattedLocalizedFallback;
627
531
  };
628
532