@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
@@ -1332,11 +1332,17 @@
1332
1332
  return unit.replace(/^(.*?)-/, '');
1333
1333
  }
1334
1334
  var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
1335
- var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?$/g;
1335
+ var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?[rs]?$/g;
1336
1336
  var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
1337
1337
  var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
1338
1338
  function parseSignificantPrecision(str) {
1339
1339
  var result = {};
1340
+ if (str[str.length - 1] === 'r') {
1341
+ result.roundingPriority = 'morePrecision';
1342
+ }
1343
+ else if (str[str.length - 1] === 's') {
1344
+ result.roundingPriority = 'lessPrecision';
1345
+ }
1340
1346
  str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {
1341
1347
  // @@@ case
1342
1348
  if (typeof g2 !== 'string') {
@@ -1563,8 +1569,13 @@
1563
1569
  }
1564
1570
  return '';
1565
1571
  });
1566
- if (token.options.length) {
1567
- result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));
1572
+ var opt = token.options[0];
1573
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display
1574
+ if (opt === 'w') {
1575
+ result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });
1576
+ }
1577
+ else if (opt) {
1578
+ result = __assign(__assign({}, result), parseSignificantPrecision(opt));
1568
1579
  }
1569
1580
  continue;
1570
1581
  }
@@ -3235,7 +3246,7 @@
3235
3246
  for (var _i = 0; _i < arguments.length; _i++) {
3236
3247
  args[_i] = arguments[_i];
3237
3248
  }
3238
- return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();
3249
+ return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
3239
3250
  }, {
3240
3251
  cache: createFastMemoizeCache(cache.number),
3241
3252
  strategy: strategies.variadic,
@@ -3246,7 +3257,7 @@
3246
3257
  for (var _i = 0; _i < arguments.length; _i++) {
3247
3258
  args[_i] = arguments[_i];
3248
3259
  }
3249
- return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();
3260
+ return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
3250
3261
  }, {
3251
3262
  cache: createFastMemoizeCache(cache.dateTime),
3252
3263
  strategy: strategies.variadic,
@@ -3257,7 +3268,7 @@
3257
3268
  for (var _i = 0; _i < arguments.length; _i++) {
3258
3269
  args[_i] = arguments[_i];
3259
3270
  }
3260
- return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();
3271
+ return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();
3261
3272
  }, {
3262
3273
  cache: createFastMemoizeCache(cache.pluralRules),
3263
3274
  strategy: strategies.variadic,
@@ -3781,11 +3792,11 @@
3781
3792
  switch (_a.label) {
3782
3793
  case 0:
3783
3794
  if (!(typeof this.renderer === 'object')) return [3 /*break*/, 2];
3784
- return [4 /*yield*/, this.getKey(e, element)];
3795
+ return [4 /*yield*/, this.getKeyAndDefault(e, element)];
3785
3796
  case 1:
3786
3797
  key = _a.sent();
3787
3798
  if (key) {
3788
- this.renderer.renderViewer(key);
3799
+ this.renderer.renderViewer(key.key, key.defaultValue);
3789
3800
  return [2 /*return*/];
3790
3801
  }
3791
3802
  return [2 /*return*/];
@@ -3812,8 +3823,10 @@
3812
3823
  });
3813
3824
  TranslationHighlighter.getKeyOptions = function (node) {
3814
3825
  var nodes = Array.from(node._tolgee.nodes);
3815
- var keys = nodes.reduce(function (acc, curr) { return __spreadArray(__spreadArray([], __read(acc), false), __read(curr._tolgee.keys.map(function (k) { return k.key; })), false); }, []);
3816
- return new Set(keys);
3826
+ return nodes.reduce(function (acc, curr) { return __spreadArray(__spreadArray([], __read(acc), false), __read(curr._tolgee.keys.map(function (k) { return ({
3827
+ key: k.key,
3828
+ defaultValue: k.defaultValue,
3829
+ }); })), false); }, []);
3817
3830
  };
3818
3831
  TranslationHighlighter.prototype.listen = function (element) {
3819
3832
  var _this = this;
@@ -3825,22 +3838,35 @@
3825
3838
  }
3826
3839
  }); }); });
3827
3840
  };
3828
- TranslationHighlighter.prototype.getKey = function (mouseEvent, element) {
3841
+ TranslationHighlighter.prototype.getKeyAndDefault = function (mouseEvent, element) {
3829
3842
  return __awaiter(this, void 0, void 0, function () {
3830
- var keys;
3843
+ var keysWithDefaults, keySet, selectedKey_1, found;
3831
3844
  return __generator(this, function (_a) {
3832
3845
  switch (_a.label) {
3833
3846
  case 0:
3834
3847
  if (element._tolgee.wrappedWithElementOnlyKey) {
3835
- return [2 /*return*/, element._tolgee.wrappedWithElementOnlyKey];
3848
+ return [2 /*return*/, {
3849
+ key: element._tolgee.wrappedWithElementOnlyKey,
3850
+ defaultValue: element._tolgee.wrappedWithElementOnlyDefaultHtml,
3851
+ }];
3836
3852
  }
3837
- keys = TranslationHighlighter.getKeyOptions(element);
3838
- if (!(keys.size > 1)) return [3 /*break*/, 2];
3839
- return [4 /*yield*/, this.renderer.getKey({ keys: keys, openEvent: mouseEvent })];
3840
- case 1: return [2 /*return*/, _a.sent()];
3853
+ keysWithDefaults = TranslationHighlighter.getKeyOptions(element);
3854
+ keySet = new Set(keysWithDefaults.map(function (keyWithDefault) { return keyWithDefault.key; }));
3855
+ if (!(keySet.size > 1)) return [3 /*break*/, 2];
3856
+ return [4 /*yield*/, this.renderer.getKey({
3857
+ keys: keySet,
3858
+ openEvent: mouseEvent,
3859
+ })];
3860
+ case 1:
3861
+ selectedKey_1 = _a.sent();
3862
+ found = keysWithDefaults.find(function (kwd) { return kwd.key === selectedKey_1; });
3863
+ if (found) {
3864
+ return [2 /*return*/, found];
3865
+ }
3866
+ _a.label = 2;
3841
3867
  case 2:
3842
- if (keys.size === 1) {
3843
- return [2 /*return*/, Array.from(keys)[0]];
3868
+ if (keySet.size === 1) {
3869
+ return [2 /*return*/, keysWithDefaults[0]];
3844
3870
  }
3845
3871
  // eslint-disable-next-line no-console
3846
3872
  console.error('No key to translate. This seems like a bug in tolgee.');
@@ -4519,6 +4545,8 @@
4519
4545
  filtered.forEach(function (element) {
4520
4546
  var elementWithMeta = AbstractHandler.initParentElement(element);
4521
4547
  elementWithMeta._tolgee.wrappedWithElementOnlyKey = element.getAttribute(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE);
4548
+ elementWithMeta._tolgee.wrappedWithElementOnlyDefaultHtml =
4549
+ element.innerHTML;
4522
4550
  _this.elementRegistrar.register(elementWithMeta);
4523
4551
  });
4524
4552
  return [2 /*return*/];
@@ -4902,11 +4930,12 @@
4902
4930
  if (noWrap === void 0) { noWrap = false; }
4903
4931
  if (defaultValue === void 0) { defaultValue = undefined; }
4904
4932
  return __awaiter(this, void 0, void 0, function () {
4905
- var key, props;
4933
+ var key, orEmpty, props;
4906
4934
  return __generator(this, function (_a) {
4907
4935
  switch (_a.label) {
4908
4936
  case 0:
4909
4937
  key = typeof keyOrProps === 'string' ? keyOrProps : keyOrProps.key;
4938
+ orEmpty = undefined;
4910
4939
  if (typeof keyOrProps === 'object') {
4911
4940
  props = keyOrProps;
4912
4941
  // if values are not provided in props object, get them from function
@@ -4915,6 +4944,7 @@
4915
4944
  noWrap = props.noWrap !== undefined ? props.noWrap : noWrap;
4916
4945
  defaultValue =
4917
4946
  props.defaultValue !== undefined ? props.defaultValue : defaultValue;
4947
+ orEmpty = props.orEmpty;
4918
4948
  }
4919
4949
  if (!(this.properties.config.mode === 'development' && !noWrap)) return [3 /*break*/, 3];
4920
4950
  return [4 /*yield*/, this.loadScopes()];
@@ -4924,7 +4954,7 @@
4924
4954
  case 2:
4925
4955
  _a.sent();
4926
4956
  return [2 /*return*/, this.dependencyStore.textService.wrap(key, params, defaultValue)];
4927
- case 3: return [2 /*return*/, this.dependencyStore.textService.translate(key, params, undefined, undefined, defaultValue)];
4957
+ case 3: return [2 /*return*/, this.dependencyStore.textService.translate(key, params, undefined, orEmpty, defaultValue)];
4928
4958
  }
4929
4959
  });
4930
4960
  });