@tolgee/core 2.0.0 → 2.4.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.
Files changed (89) hide show
  1. package/README.md +1 -1
  2. package/dist/tolgee.cjs.js +51 -21
  3. package/dist/tolgee.cjs.js.map +1 -1
  4. package/dist/tolgee.cjs.min.js +1 -1
  5. package/dist/tolgee.cjs.min.js.map +1 -1
  6. package/dist/tolgee.esm.js +16 -0
  7. package/dist/tolgee.esm.js.map +1 -0
  8. package/dist/tolgee.umd.js +51 -21
  9. package/dist/tolgee.umd.js.map +1 -1
  10. package/dist/tolgee.umd.min.js +1 -1
  11. package/dist/tolgee.umd.min.js.map +1 -1
  12. package/lib/Tolgee.d.ts +1 -1
  13. package/lib/Tolgee.js +4 -2
  14. package/lib/Tolgee.js.map +1 -1
  15. package/lib/handlers/WrappedHandler.js +2 -0
  16. package/lib/handlers/WrappedHandler.js.map +1 -1
  17. package/lib/highlighter/MouseEventHandler.d.ts +0 -1
  18. package/lib/highlighter/MouseEventHandler.js.map +1 -1
  19. package/lib/highlighter/TranslationHighlighter.d.ts +1 -1
  20. package/lib/highlighter/TranslationHighlighter.js +28 -13
  21. package/lib/highlighter/TranslationHighlighter.js.map +1 -1
  22. package/lib/types.d.ts +2 -0
  23. package/package.json +7 -7
  24. package/lib/Observer.test.d.ts +0 -2
  25. package/lib/Observer.test.js +0 -190
  26. package/lib/Observer.test.js.map +0 -1
  27. package/lib/Properties.test.d.ts +0 -1
  28. package/lib/Properties.test.js +0 -77
  29. package/lib/Properties.test.js.map +0 -1
  30. package/lib/Tolgee.test.d.ts +0 -1
  31. package/lib/Tolgee.test.js +0 -451
  32. package/lib/Tolgee.test.js.map +0 -1
  33. package/lib/TolgeeConfig.test.d.ts +0 -1
  34. package/lib/TolgeeConfig.test.js +0 -18
  35. package/lib/TolgeeConfig.test.js.map +0 -1
  36. package/lib/__testFixtures/classMock.d.ts +0 -3
  37. package/lib/__testFixtures/classMock.js +0 -8
  38. package/lib/__testFixtures/classMock.js.map +0 -1
  39. package/lib/__testFixtures/createElement.d.ts +0 -2
  40. package/lib/__testFixtures/createElement.js +0 -57
  41. package/lib/__testFixtures/createElement.js.map +0 -1
  42. package/lib/__testFixtures/createTestDom.d.ts +0 -9
  43. package/lib/__testFixtures/createTestDom.js +0 -18
  44. package/lib/__testFixtures/createTestDom.js.map +0 -1
  45. package/lib/__testFixtures/mocked.d.ts +0 -20
  46. package/lib/__testFixtures/mocked.js +0 -24
  47. package/lib/__testFixtures/mocked.js.map +0 -1
  48. package/lib/handlers/AttributeHandler.test.d.ts +0 -1
  49. package/lib/handlers/AttributeHandler.test.js +0 -177
  50. package/lib/handlers/AttributeHandler.test.js.map +0 -1
  51. package/lib/handlers/CoreHandler.test.d.ts +0 -1
  52. package/lib/handlers/CoreHandler.test.js +0 -148
  53. package/lib/handlers/CoreHandler.test.js.map +0 -1
  54. package/lib/handlers/TextHandler.test.d.ts +0 -1
  55. package/lib/handlers/TextHandler.test.js +0 -270
  56. package/lib/handlers/TextHandler.test.js.map +0 -1
  57. package/lib/helpers/TextHelper.test.d.ts +0 -1
  58. package/lib/helpers/TextHelper.test.js +0 -107
  59. package/lib/helpers/TextHelper.test.js.map +0 -1
  60. package/lib/highlighter/HighlightFunctionsInitializer.test.d.ts +0 -1
  61. package/lib/highlighter/HighlightFunctionsInitializer.test.js +0 -81
  62. package/lib/highlighter/HighlightFunctionsInitializer.test.js.map +0 -1
  63. package/lib/highlighter/MouseEventHandler.test.d.ts +0 -1
  64. package/lib/highlighter/MouseEventHandler.test.js +0 -195
  65. package/lib/highlighter/MouseEventHandler.test.js.map +0 -1
  66. package/lib/highlighter/TranslationHighlighter.test.d.ts +0 -1
  67. package/lib/highlighter/TranslationHighlighter.test.js +0 -207
  68. package/lib/highlighter/TranslationHighlighter.test.js.map +0 -1
  69. package/lib/services/CoreService.test.d.ts +0 -1
  70. package/lib/services/CoreService.test.js +0 -179
  71. package/lib/services/CoreService.test.js.map +0 -1
  72. package/lib/services/DependencyStore.test.d.ts +0 -1
  73. package/lib/services/DependencyStore.test.js +0 -67
  74. package/lib/services/DependencyStore.test.js.map +0 -1
  75. package/lib/services/ElementRegistrar.test.d.ts +0 -1
  76. package/lib/services/ElementRegistrar.test.js +0 -200
  77. package/lib/services/ElementRegistrar.test.js.map +0 -1
  78. package/lib/services/TextService.test.d.ts +0 -1
  79. package/lib/services/TextService.test.js +0 -430
  80. package/lib/services/TextService.test.js.map +0 -1
  81. package/lib/services/TranslationService.test.d.ts +0 -1
  82. package/lib/services/TranslationService.test.js +0 -649
  83. package/lib/services/TranslationService.test.js.map +0 -1
  84. package/lib/toolsManager/Messages.test.d.ts +0 -1
  85. package/lib/toolsManager/Messages.test.js +0 -114
  86. package/lib/toolsManager/Messages.test.js.map +0 -1
  87. package/lib/toolsManager/PluginManager.test.d.ts +0 -1
  88. package/lib/toolsManager/PluginManager.test.js +0 -120
  89. package/lib/toolsManager/PluginManager.test.js.map +0 -1
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ![test workflow](https://github.com/tolgee/tolgee-js/actions/workflows/test.yml/badge.svg)
2
2
  ![@tolgee/core version](https://img.shields.io/npm/v/@tolgee/core?label=%40tolgee%2Fcore)
3
3
  ![types typescript](https://img.shields.io/badge/Types-Typescript-blue)
4
- ![twitter](https://img.shields.io/twitter/follow/Tolgee_i18n?style=social)
4
+ [![twitter](https://img.shields.io/twitter/follow/Tolgee_i18n?style=social)](https://twitter.com/Tolgee_i18n)
5
5
  [![github stars](https://img.shields.io/github/stars/tolgee/tolgee-js?style=social)](https://github.com/tolgee/tolgee-js)
6
6
 
7
7
  # Tolgee core library
@@ -1330,11 +1330,17 @@ function icuUnitToEcma(unit) {
1330
1330
  return unit.replace(/^(.*?)-/, '');
1331
1331
  }
1332
1332
  var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
1333
- var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?$/g;
1333
+ var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?[rs]?$/g;
1334
1334
  var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
1335
1335
  var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
1336
1336
  function parseSignificantPrecision(str) {
1337
1337
  var result = {};
1338
+ if (str[str.length - 1] === 'r') {
1339
+ result.roundingPriority = 'morePrecision';
1340
+ }
1341
+ else if (str[str.length - 1] === 's') {
1342
+ result.roundingPriority = 'lessPrecision';
1343
+ }
1338
1344
  str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {
1339
1345
  // @@@ case
1340
1346
  if (typeof g2 !== 'string') {
@@ -1561,8 +1567,13 @@ function parseNumberSkeleton(tokens) {
1561
1567
  }
1562
1568
  return '';
1563
1569
  });
1564
- if (token.options.length) {
1565
- result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));
1570
+ var opt = token.options[0];
1571
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display
1572
+ if (opt === 'w') {
1573
+ result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });
1574
+ }
1575
+ else if (opt) {
1576
+ result = __assign(__assign({}, result), parseSignificantPrecision(opt));
1566
1577
  }
1567
1578
  continue;
1568
1579
  }
@@ -3233,7 +3244,7 @@ function createDefaultFormatters(cache) {
3233
3244
  for (var _i = 0; _i < arguments.length; _i++) {
3234
3245
  args[_i] = arguments[_i];
3235
3246
  }
3236
- return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();
3247
+ return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
3237
3248
  }, {
3238
3249
  cache: createFastMemoizeCache(cache.number),
3239
3250
  strategy: strategies.variadic,
@@ -3244,7 +3255,7 @@ function createDefaultFormatters(cache) {
3244
3255
  for (var _i = 0; _i < arguments.length; _i++) {
3245
3256
  args[_i] = arguments[_i];
3246
3257
  }
3247
- return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();
3258
+ return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
3248
3259
  }, {
3249
3260
  cache: createFastMemoizeCache(cache.dateTime),
3250
3261
  strategy: strategies.variadic,
@@ -3255,7 +3266,7 @@ function createDefaultFormatters(cache) {
3255
3266
  for (var _i = 0; _i < arguments.length; _i++) {
3256
3267
  args[_i] = arguments[_i];
3257
3268
  }
3258
- return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();
3269
+ return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();
3259
3270
  }, {
3260
3271
  cache: createFastMemoizeCache(cache.pluralRules),
3261
3272
  strategy: strategies.variadic,
@@ -3779,11 +3790,11 @@ var TranslationHighlighter = /** @class */ (function () {
3779
3790
  switch (_a.label) {
3780
3791
  case 0:
3781
3792
  if (!(typeof this.renderer === 'object')) return [3 /*break*/, 2];
3782
- return [4 /*yield*/, this.getKey(e, element)];
3793
+ return [4 /*yield*/, this.getKeyAndDefault(e, element)];
3783
3794
  case 1:
3784
3795
  key = _a.sent();
3785
3796
  if (key) {
3786
- this.renderer.renderViewer(key);
3797
+ this.renderer.renderViewer(key.key, key.defaultValue);
3787
3798
  return [2 /*return*/];
3788
3799
  }
3789
3800
  return [2 /*return*/];
@@ -3810,8 +3821,10 @@ var TranslationHighlighter = /** @class */ (function () {
3810
3821
  });
3811
3822
  TranslationHighlighter.getKeyOptions = function (node) {
3812
3823
  var nodes = Array.from(node._tolgee.nodes);
3813
- var keys = nodes.reduce(function (acc, curr) { return __spreadArray(__spreadArray([], __read(acc), false), __read(curr._tolgee.keys.map(function (k) { return k.key; })), false); }, []);
3814
- return new Set(keys);
3824
+ return nodes.reduce(function (acc, curr) { return __spreadArray(__spreadArray([], __read(acc), false), __read(curr._tolgee.keys.map(function (k) { return ({
3825
+ key: k.key,
3826
+ defaultValue: k.defaultValue,
3827
+ }); })), false); }, []);
3815
3828
  };
3816
3829
  TranslationHighlighter.prototype.listen = function (element) {
3817
3830
  var _this = this;
@@ -3823,22 +3836,35 @@ var TranslationHighlighter = /** @class */ (function () {
3823
3836
  }
3824
3837
  }); }); });
3825
3838
  };
3826
- TranslationHighlighter.prototype.getKey = function (mouseEvent, element) {
3839
+ TranslationHighlighter.prototype.getKeyAndDefault = function (mouseEvent, element) {
3827
3840
  return __awaiter(this, void 0, void 0, function () {
3828
- var keys;
3841
+ var keysWithDefaults, keySet, selectedKey_1, found;
3829
3842
  return __generator(this, function (_a) {
3830
3843
  switch (_a.label) {
3831
3844
  case 0:
3832
3845
  if (element._tolgee.wrappedWithElementOnlyKey) {
3833
- return [2 /*return*/, element._tolgee.wrappedWithElementOnlyKey];
3846
+ return [2 /*return*/, {
3847
+ key: element._tolgee.wrappedWithElementOnlyKey,
3848
+ defaultValue: element._tolgee.wrappedWithElementOnlyDefaultHtml,
3849
+ }];
3834
3850
  }
3835
- keys = TranslationHighlighter.getKeyOptions(element);
3836
- if (!(keys.size > 1)) return [3 /*break*/, 2];
3837
- return [4 /*yield*/, this.renderer.getKey({ keys: keys, openEvent: mouseEvent })];
3838
- case 1: return [2 /*return*/, _a.sent()];
3851
+ keysWithDefaults = TranslationHighlighter.getKeyOptions(element);
3852
+ keySet = new Set(keysWithDefaults.map(function (keyWithDefault) { return keyWithDefault.key; }));
3853
+ if (!(keySet.size > 1)) return [3 /*break*/, 2];
3854
+ return [4 /*yield*/, this.renderer.getKey({
3855
+ keys: keySet,
3856
+ openEvent: mouseEvent,
3857
+ })];
3858
+ case 1:
3859
+ selectedKey_1 = _a.sent();
3860
+ found = keysWithDefaults.find(function (kwd) { return kwd.key === selectedKey_1; });
3861
+ if (found) {
3862
+ return [2 /*return*/, found];
3863
+ }
3864
+ _a.label = 2;
3839
3865
  case 2:
3840
- if (keys.size === 1) {
3841
- return [2 /*return*/, Array.from(keys)[0]];
3866
+ if (keySet.size === 1) {
3867
+ return [2 /*return*/, keysWithDefaults[0]];
3842
3868
  }
3843
3869
  // eslint-disable-next-line no-console
3844
3870
  console.error('No key to translate. This seems like a bug in tolgee.');
@@ -4517,6 +4543,8 @@ var WrappedHandler = /** @class */ (function (_super) {
4517
4543
  filtered.forEach(function (element) {
4518
4544
  var elementWithMeta = AbstractHandler.initParentElement(element);
4519
4545
  elementWithMeta._tolgee.wrappedWithElementOnlyKey = element.getAttribute(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE);
4546
+ elementWithMeta._tolgee.wrappedWithElementOnlyDefaultHtml =
4547
+ element.innerHTML;
4520
4548
  _this.elementRegistrar.register(elementWithMeta);
4521
4549
  });
4522
4550
  return [2 /*return*/];
@@ -4900,11 +4928,12 @@ var Tolgee = /** @class */ (function () {
4900
4928
  if (noWrap === void 0) { noWrap = false; }
4901
4929
  if (defaultValue === void 0) { defaultValue = undefined; }
4902
4930
  return __awaiter(this, void 0, void 0, function () {
4903
- var key, props;
4931
+ var key, orEmpty, props;
4904
4932
  return __generator(this, function (_a) {
4905
4933
  switch (_a.label) {
4906
4934
  case 0:
4907
4935
  key = typeof keyOrProps === 'string' ? keyOrProps : keyOrProps.key;
4936
+ orEmpty = undefined;
4908
4937
  if (typeof keyOrProps === 'object') {
4909
4938
  props = keyOrProps;
4910
4939
  // if values are not provided in props object, get them from function
@@ -4913,6 +4942,7 @@ var Tolgee = /** @class */ (function () {
4913
4942
  noWrap = props.noWrap !== undefined ? props.noWrap : noWrap;
4914
4943
  defaultValue =
4915
4944
  props.defaultValue !== undefined ? props.defaultValue : defaultValue;
4945
+ orEmpty = props.orEmpty;
4916
4946
  }
4917
4947
  if (!(this.properties.config.mode === 'development' && !noWrap)) return [3 /*break*/, 3];
4918
4948
  return [4 /*yield*/, this.loadScopes()];
@@ -4922,7 +4952,7 @@ var Tolgee = /** @class */ (function () {
4922
4952
  case 2:
4923
4953
  _a.sent();
4924
4954
  return [2 /*return*/, this.dependencyStore.textService.wrap(key, params, defaultValue)];
4925
- case 3: return [2 /*return*/, this.dependencyStore.textService.translate(key, params, undefined, undefined, defaultValue)];
4955
+ case 3: return [2 /*return*/, this.dependencyStore.textService.translate(key, params, undefined, orEmpty, defaultValue)];
4926
4956
  }
4927
4957
  });
4928
4958
  });