@tolgee/core 2.5.1 → 2.8.2
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.
- package/README.md +2 -1
- package/dist/tolgee.cjs.js +156 -100
- package/dist/tolgee.cjs.js.map +1 -1
- package/dist/tolgee.cjs.min.js +1 -1
- package/dist/tolgee.cjs.min.js.map +1 -1
- package/dist/tolgee.esm.js +1 -1
- package/dist/tolgee.esm.js.map +1 -1
- package/dist/tolgee.umd.js +156 -100
- package/dist/tolgee.umd.js.map +1 -1
- package/dist/tolgee.umd.min.js +1 -1
- package/dist/tolgee.umd.min.js.map +1 -1
- package/lib/Observer.test.d.ts +2 -0
- package/lib/Observer.test.js +190 -0
- package/lib/Observer.test.js.map +1 -0
- package/lib/Properties.d.ts +1 -0
- package/lib/Properties.js.map +1 -1
- package/lib/Properties.test.d.ts +1 -0
- package/lib/Properties.test.js +77 -0
- package/lib/Properties.test.js.map +1 -0
- package/lib/Tolgee.d.ts +1 -1
- package/lib/Tolgee.js +11 -11
- package/lib/Tolgee.js.map +1 -1
- package/lib/Tolgee.test.d.ts +1 -0
- package/lib/Tolgee.test.js +482 -0
- package/lib/Tolgee.test.js.map +1 -0
- package/lib/TolgeeConfig.d.ts +1 -1
- package/lib/TolgeeConfig.test.d.ts +1 -0
- package/lib/TolgeeConfig.test.js +18 -0
- package/lib/TolgeeConfig.test.js.map +1 -0
- package/lib/__testFixtures/classMock.d.ts +3 -0
- package/lib/__testFixtures/classMock.js +8 -0
- package/lib/__testFixtures/classMock.js.map +1 -0
- package/lib/__testFixtures/createElement.d.ts +2 -0
- package/lib/__testFixtures/createElement.js +58 -0
- package/lib/__testFixtures/createElement.js.map +1 -0
- package/lib/__testFixtures/createTestDom.d.ts +9 -0
- package/lib/__testFixtures/createTestDom.js +18 -0
- package/lib/__testFixtures/createTestDom.js.map +1 -0
- package/lib/__testFixtures/mocked.d.ts +20 -0
- package/lib/__testFixtures/mocked.js +24 -0
- package/lib/__testFixtures/mocked.js.map +1 -0
- package/lib/__testFixtures/setupAfterEnv.d.ts +8 -0
- package/lib/__testFixtures/setupAfterEnv.js +23 -0
- package/lib/__testFixtures/setupAfterEnv.js.map +1 -0
- package/lib/handlers/AbstractHandler.js +1 -1
- package/lib/handlers/AbstractHandler.js.map +1 -1
- package/lib/handlers/AttributeHandler.js +1 -1
- package/lib/handlers/AttributeHandler.js.map +1 -1
- package/lib/handlers/AttributeHandler.test.d.ts +1 -0
- package/lib/handlers/AttributeHandler.test.js +177 -0
- package/lib/handlers/AttributeHandler.test.js.map +1 -0
- package/lib/handlers/CoreHandler.test.d.ts +1 -0
- package/lib/handlers/CoreHandler.test.js +148 -0
- package/lib/handlers/CoreHandler.test.js.map +1 -0
- package/lib/handlers/TextHandler.js +1 -1
- package/lib/handlers/TextHandler.js.map +1 -1
- package/lib/handlers/TextHandler.test.d.ts +1 -0
- package/lib/handlers/TextHandler.test.js +270 -0
- package/lib/handlers/TextHandler.test.js.map +1 -0
- package/lib/handlers/WrappedHandler.js +1 -1
- package/lib/handlers/WrappedHandler.js.map +1 -1
- package/lib/helpers/NodeHelper.d.ts +1 -1
- package/lib/helpers/NodeHelper.js +19 -18
- package/lib/helpers/NodeHelper.js.map +1 -1
- package/lib/helpers/TextHelper.test.d.ts +1 -0
- package/lib/helpers/TextHelper.test.js +107 -0
- package/lib/helpers/TextHelper.test.js.map +1 -0
- package/lib/highlighter/HighlightFunctionsInitializer.test.d.ts +1 -0
- package/lib/highlighter/HighlightFunctionsInitializer.test.js +81 -0
- package/lib/highlighter/HighlightFunctionsInitializer.test.js.map +1 -0
- package/lib/highlighter/MouseEventHandler.js +4 -2
- package/lib/highlighter/MouseEventHandler.js.map +1 -1
- package/lib/highlighter/MouseEventHandler.test.d.ts +1 -0
- package/lib/highlighter/MouseEventHandler.test.js +215 -0
- package/lib/highlighter/MouseEventHandler.test.js.map +1 -0
- package/lib/highlighter/TranslationHighlighter.d.ts +2 -2
- package/lib/highlighter/TranslationHighlighter.js +89 -28
- package/lib/highlighter/TranslationHighlighter.js.map +1 -1
- package/lib/highlighter/TranslationHighlighter.test.d.ts +1 -0
- package/lib/highlighter/TranslationHighlighter.test.js +287 -0
- package/lib/highlighter/TranslationHighlighter.test.js.map +1 -0
- package/lib/services/ApiHttpService.js +1 -1
- package/lib/services/ApiHttpService.js.map +1 -1
- package/lib/services/CoreService.d.ts +3 -1
- package/lib/services/CoreService.js +2 -3
- package/lib/services/CoreService.js.map +1 -1
- package/lib/services/CoreService.test.d.ts +1 -0
- package/lib/services/CoreService.test.js +178 -0
- package/lib/services/CoreService.test.js.map +1 -0
- package/lib/services/DependencyStore.test.d.ts +1 -0
- package/lib/services/DependencyStore.test.js +67 -0
- package/lib/services/DependencyStore.test.js.map +1 -0
- package/lib/services/ElementRegistrar.js +13 -9
- package/lib/services/ElementRegistrar.js.map +1 -1
- package/lib/services/ElementRegistrar.test.d.ts +1 -0
- package/lib/services/ElementRegistrar.test.js +215 -0
- package/lib/services/ElementRegistrar.test.js.map +1 -0
- package/lib/services/ScreenshotService.js +1 -1
- package/lib/services/ScreenshotService.js.map +1 -1
- package/lib/services/TextService.js +5 -5
- package/lib/services/TextService.js.map +1 -1
- package/lib/services/TextService.test.d.ts +1 -0
- package/lib/services/TextService.test.js +430 -0
- package/lib/services/TextService.test.js.map +1 -0
- package/lib/services/TranslationService.js +7 -7
- package/lib/services/TranslationService.js.map +1 -1
- package/lib/services/TranslationService.test.d.ts +1 -0
- package/lib/services/TranslationService.test.js +649 -0
- package/lib/services/TranslationService.test.js.map +1 -0
- package/lib/services/__mocks__/CoreService.d.ts +2 -0
- package/lib/services/__mocks__/CoreService.js +49 -0
- package/lib/services/__mocks__/CoreService.js.map +1 -0
- package/lib/toolsManager/Messages.test.d.ts +1 -0
- package/lib/toolsManager/Messages.test.js +114 -0
- package/lib/toolsManager/Messages.test.js.map +1 -0
- package/lib/toolsManager/PluginManager.test.d.ts +1 -0
- package/lib/toolsManager/PluginManager.test.js +120 -0
- package/lib/toolsManager/PluginManager.test.js.map +1 -0
- package/lib/types.d.ts +11 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# Tolgee core library
|
|
1
2
|

|
|
2
3
|

|
|
3
4
|

|
|
4
5
|
[](https://twitter.com/Tolgee_i18n)
|
|
5
6
|
[](https://github.com/tolgee/tolgee-js)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
|
|
9
10
|
[<img src="https://raw.githubusercontent.com/tolgee/documentation/main/tolgee_logo_text.svg" alt="Tolgee" width="200" />](https://tolgee.io)
|
|
10
11
|
|
package/dist/tolgee.cjs.js
CHANGED
|
@@ -129,23 +129,6 @@ var TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = 'data-tolgee-key-only';
|
|
|
129
129
|
var NodeHelper = /** @class */ (function () {
|
|
130
130
|
function NodeHelper() {
|
|
131
131
|
}
|
|
132
|
-
NodeHelper.evaluateGenerator = function (expression, targetNode) {
|
|
133
|
-
var node, evaluated;
|
|
134
|
-
return __generator(this, function (_a) {
|
|
135
|
-
switch (_a.label) {
|
|
136
|
-
case 0:
|
|
137
|
-
evaluated = document.evaluate(expression, targetNode, undefined, XPathResult.ANY_TYPE);
|
|
138
|
-
_a.label = 1;
|
|
139
|
-
case 1:
|
|
140
|
-
if (!((node = evaluated.iterateNext()) !== null)) return [3 /*break*/, 3];
|
|
141
|
-
return [4 /*yield*/, node];
|
|
142
|
-
case 2:
|
|
143
|
-
_a.sent();
|
|
144
|
-
return [3 /*break*/, 1];
|
|
145
|
-
case 3: return [2 /*return*/];
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
};
|
|
149
132
|
NodeHelper.evaluate = function () {
|
|
150
133
|
var args = [];
|
|
151
134
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -195,13 +178,31 @@ var NodeHelper = /** @class */ (function () {
|
|
|
195
178
|
return true;
|
|
196
179
|
}
|
|
197
180
|
if (node instanceof Attr) {
|
|
198
|
-
var ownerContainsAttr =
|
|
181
|
+
var ownerContainsAttr = node.ownerElement &&
|
|
182
|
+
Object.values(node.ownerElement.attributes).indexOf(node) > -1;
|
|
199
183
|
if (descendant.contains(node.ownerElement) && ownerContainsAttr) {
|
|
200
184
|
return true;
|
|
201
185
|
}
|
|
202
186
|
}
|
|
203
187
|
return false;
|
|
204
188
|
};
|
|
189
|
+
NodeHelper.evaluateGenerator = function (expression, targetNode) {
|
|
190
|
+
var node, evaluated;
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
evaluated = document.evaluate(expression, targetNode, undefined, XPathResult.ANY_TYPE);
|
|
195
|
+
_a.label = 1;
|
|
196
|
+
case 1:
|
|
197
|
+
if (!((node = evaluated.iterateNext()) !== null)) return [3 /*break*/, 3];
|
|
198
|
+
return [4 /*yield*/, node];
|
|
199
|
+
case 2:
|
|
200
|
+
_a.sent();
|
|
201
|
+
return [3 /*break*/, 1];
|
|
202
|
+
case 3: return [2 /*return*/];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
};
|
|
205
206
|
return NodeHelper;
|
|
206
207
|
}());
|
|
207
208
|
|
|
@@ -521,7 +522,7 @@ var ApiHttpService = /** @class */ (function () {
|
|
|
521
522
|
};
|
|
522
523
|
ApiHttpService.prototype.getUrl = function (path) {
|
|
523
524
|
var querySeparator = path.indexOf('?') < 0 ? '?' : '&';
|
|
524
|
-
return this.properties.config.apiUrl
|
|
525
|
+
return "".concat(this.properties.config.apiUrl, "/").concat(path).concat(querySeparator, "ak=").concat(this.properties.config.apiKey);
|
|
525
526
|
};
|
|
526
527
|
return ApiHttpService;
|
|
527
528
|
}());
|
|
@@ -580,9 +581,9 @@ var TranslationService = /** @class */ (function () {
|
|
|
580
581
|
_e.trys.push([1, 3, , 7]);
|
|
581
582
|
languagesArray = __spreadArray([], __read(languages), false);
|
|
582
583
|
languagesQuery = languagesArray
|
|
583
|
-
.map(function (l) { return "languages="
|
|
584
|
+
.map(function (l) { return "languages=".concat(l); })
|
|
584
585
|
.join('&');
|
|
585
|
-
return [4 /*yield*/, this.apiHttpService.fetchJson("v2/projects/translations?"
|
|
586
|
+
return [4 /*yield*/, this.apiHttpService.fetchJson("v2/projects/translations?".concat(languagesQuery, "&filterKeyName=").concat(encodeURIComponent(key)))];
|
|
586
587
|
case 2:
|
|
587
588
|
data = _e.sent();
|
|
588
589
|
translationData_1 = languagesArray.reduce(function (acc, curr) {
|
|
@@ -707,7 +708,7 @@ var TranslationService = /** @class */ (function () {
|
|
|
707
708
|
switch (_c.label) {
|
|
708
709
|
case 0:
|
|
709
710
|
this.coreService.checkScope('translations.edit');
|
|
710
|
-
return [4 /*yield*/, this.apiHttpService.postJson("v2/projects/keys/"
|
|
711
|
+
return [4 /*yield*/, this.apiHttpService.postJson("v2/projects/keys/".concat(id, "/complex-update"), __assign(__assign({}, data), { screenshotUploadedImageIds: ((_a = data.screenshotUploadedImageIds) === null || _a === void 0 ? void 0 : _a.length)
|
|
711
712
|
? data.screenshotUploadedImageIds
|
|
712
713
|
: undefined, screenshotIdsToDelete: ((_b = data.screenshotIdsToDelete) === null || _b === void 0 ? void 0 : _b.length)
|
|
713
714
|
? data.screenshotIdsToDelete
|
|
@@ -865,7 +866,7 @@ var TranslationService = /** @class */ (function () {
|
|
|
865
866
|
}
|
|
866
867
|
_c.label = 3;
|
|
867
868
|
case 3:
|
|
868
|
-
url = ""
|
|
869
|
+
url = "".concat(this.properties.config.filesUrlPrefix || '/').concat(language, ".json");
|
|
869
870
|
_c.label = 4;
|
|
870
871
|
case 4:
|
|
871
872
|
_c.trys.push([4, 10, , 11]);
|
|
@@ -890,14 +891,14 @@ var TranslationService = /** @class */ (function () {
|
|
|
890
891
|
case 8:
|
|
891
892
|
_c.sent();
|
|
892
893
|
// eslint-disable-next-line no-console
|
|
893
|
-
console.error("Error parsing json retrieved from "
|
|
894
|
+
console.error("Error parsing json retrieved from ".concat(url, "."));
|
|
894
895
|
this.setEmptyLanguageData(language);
|
|
895
896
|
return [3 /*break*/, 9];
|
|
896
897
|
case 9: return [3 /*break*/, 11];
|
|
897
898
|
case 10:
|
|
898
899
|
_c.sent();
|
|
899
900
|
// eslint-disable-next-line no-console
|
|
900
|
-
console.error("Error fetching localization data from "
|
|
901
|
+
console.error("Error fetching localization data from ".concat(url, "."));
|
|
901
902
|
this.setEmptyLanguageData(language);
|
|
902
903
|
return [3 /*break*/, 11];
|
|
903
904
|
case 11: return [2 /*return*/];
|
|
@@ -915,7 +916,7 @@ var TranslationService = /** @class */ (function () {
|
|
|
915
916
|
_a.label = 1;
|
|
916
917
|
case 1:
|
|
917
918
|
_a.trys.push([1, 3, , 4]);
|
|
918
|
-
return [4 /*yield*/, this.apiHttpService.fetchJson("v2/projects/translations/"
|
|
919
|
+
return [4 /*yield*/, this.apiHttpService.fetchJson("v2/projects/translations/".concat(language))];
|
|
919
920
|
case 2:
|
|
920
921
|
data = _a.sent();
|
|
921
922
|
this.setLanguageData(language, data[language] || {});
|
|
@@ -1595,8 +1596,8 @@ function parseNumberSkeleton(tokens) {
|
|
|
1595
1596
|
}
|
|
1596
1597
|
|
|
1597
1598
|
var _a;
|
|
1598
|
-
var SPACE_SEPARATOR_START_REGEX = new RegExp("^"
|
|
1599
|
-
var SPACE_SEPARATOR_END_REGEX = new RegExp(SPACE_SEPARATOR_REGEX.source
|
|
1599
|
+
var SPACE_SEPARATOR_START_REGEX = new RegExp("^".concat(SPACE_SEPARATOR_REGEX.source, "*"));
|
|
1600
|
+
var SPACE_SEPARATOR_END_REGEX = new RegExp("".concat(SPACE_SEPARATOR_REGEX.source, "*$"));
|
|
1600
1601
|
function createLocation(start, end) {
|
|
1601
1602
|
return { start: start, end: end };
|
|
1602
1603
|
}
|
|
@@ -1843,7 +1844,7 @@ var Parser = /** @class */ (function () {
|
|
|
1843
1844
|
return {
|
|
1844
1845
|
val: {
|
|
1845
1846
|
type: TYPE.literal,
|
|
1846
|
-
value: "<"
|
|
1847
|
+
value: "<".concat(tagName, "/>"),
|
|
1847
1848
|
location: createLocation(startPosition, this.clonePosition()),
|
|
1848
1849
|
},
|
|
1849
1850
|
err: null,
|
|
@@ -2448,7 +2449,7 @@ var Parser = /** @class */ (function () {
|
|
|
2448
2449
|
}
|
|
2449
2450
|
var code = codePointAt(this.message, offset);
|
|
2450
2451
|
if (code === undefined) {
|
|
2451
|
-
throw Error("Offset "
|
|
2452
|
+
throw Error("Offset ".concat(offset, " is at invalid UTF-16 code unit boundary"));
|
|
2452
2453
|
}
|
|
2453
2454
|
return code;
|
|
2454
2455
|
};
|
|
@@ -2516,7 +2517,7 @@ var Parser = /** @class */ (function () {
|
|
|
2516
2517
|
*/
|
|
2517
2518
|
Parser.prototype.bumpTo = function (targetOffset) {
|
|
2518
2519
|
if (this.offset() > targetOffset) {
|
|
2519
|
-
throw Error("targetOffset "
|
|
2520
|
+
throw Error("targetOffset ".concat(targetOffset, " must be greater than or equal to the current offset ").concat(this.offset()));
|
|
2520
2521
|
}
|
|
2521
2522
|
targetOffset = Math.min(targetOffset, this.message.length);
|
|
2522
2523
|
while (true) {
|
|
@@ -2525,7 +2526,7 @@ var Parser = /** @class */ (function () {
|
|
|
2525
2526
|
break;
|
|
2526
2527
|
}
|
|
2527
2528
|
if (offset > targetOffset) {
|
|
2528
|
-
throw Error("targetOffset "
|
|
2529
|
+
throw Error("targetOffset ".concat(targetOffset, " is at invalid UTF-16 code unit boundary"));
|
|
2529
2530
|
}
|
|
2530
2531
|
this.bump();
|
|
2531
2532
|
if (this.isEOF()) {
|
|
@@ -2991,28 +2992,28 @@ var FormatError = /** @class */ (function (_super) {
|
|
|
2991
2992
|
return _this;
|
|
2992
2993
|
}
|
|
2993
2994
|
FormatError.prototype.toString = function () {
|
|
2994
|
-
return "[formatjs Error: "
|
|
2995
|
+
return "[formatjs Error: ".concat(this.code, "] ").concat(this.message);
|
|
2995
2996
|
};
|
|
2996
2997
|
return FormatError;
|
|
2997
2998
|
}(Error));
|
|
2998
2999
|
var InvalidValueError = /** @class */ (function (_super) {
|
|
2999
3000
|
__extends(InvalidValueError, _super);
|
|
3000
3001
|
function InvalidValueError(variableId, value, options, originalMessage) {
|
|
3001
|
-
return _super.call(this, "Invalid values for \""
|
|
3002
|
+
return _super.call(this, "Invalid values for \"".concat(variableId, "\": \"").concat(value, "\". Options are \"").concat(Object.keys(options).join('", "'), "\""), ErrorCode.INVALID_VALUE, originalMessage) || this;
|
|
3002
3003
|
}
|
|
3003
3004
|
return InvalidValueError;
|
|
3004
3005
|
}(FormatError));
|
|
3005
3006
|
var InvalidValueTypeError = /** @class */ (function (_super) {
|
|
3006
3007
|
__extends(InvalidValueTypeError, _super);
|
|
3007
3008
|
function InvalidValueTypeError(value, type, originalMessage) {
|
|
3008
|
-
return _super.call(this, "Value for \""
|
|
3009
|
+
return _super.call(this, "Value for \"".concat(value, "\" must be of type ").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;
|
|
3009
3010
|
}
|
|
3010
3011
|
return InvalidValueTypeError;
|
|
3011
3012
|
}(FormatError));
|
|
3012
3013
|
var MissingValueError = /** @class */ (function (_super) {
|
|
3013
3014
|
__extends(MissingValueError, _super);
|
|
3014
3015
|
function MissingValueError(variableId, originalMessage) {
|
|
3015
|
-
return _super.call(this, "The intl string context variable \""
|
|
3016
|
+
return _super.call(this, "The intl string context variable \"".concat(variableId, "\" was not provided to the string \"").concat(originalMessage, "\""), ErrorCode.MISSING_VALUE, originalMessage) || this;
|
|
3016
3017
|
}
|
|
3017
3018
|
return MissingValueError;
|
|
3018
3019
|
}(FormatError));
|
|
@@ -3173,7 +3174,7 @@ originalMessage) {
|
|
|
3173
3174
|
continue;
|
|
3174
3175
|
}
|
|
3175
3176
|
if (isPluralElement(el)) {
|
|
3176
|
-
var opt = el.options["="
|
|
3177
|
+
var opt = el.options["=".concat(value)];
|
|
3177
3178
|
if (!opt) {
|
|
3178
3179
|
if (!Intl.PluralRules) {
|
|
3179
3180
|
throw new FormatError("Intl.PluralRules is not available in this environment.\nTry polyfilling it using \"@formatjs/intl-pluralrules\"\n", ErrorCode.MISSING_INTL_API, originalMessage);
|
|
@@ -3457,7 +3458,7 @@ var TextService = /** @class */ (function () {
|
|
|
3457
3458
|
get: function () {
|
|
3458
3459
|
var escapedPrefix = this.escapeForRegExp(this.properties.config.inputPrefix);
|
|
3459
3460
|
var escapedSuffix = this.escapeForRegExp(this.properties.config.inputSuffix);
|
|
3460
|
-
return "(\\\\?)("
|
|
3461
|
+
return "(\\\\?)(".concat(escapedPrefix, "(.*?)").concat(escapedSuffix, ")");
|
|
3461
3462
|
},
|
|
3462
3463
|
enumerable: false,
|
|
3463
3464
|
configurable: true
|
|
@@ -3617,12 +3618,12 @@ var TextService = /** @class */ (function () {
|
|
|
3617
3618
|
var paramString = Object.entries(params)
|
|
3618
3619
|
.map(function (_a) {
|
|
3619
3620
|
var _b = __read(_a, 2), name = _b[0], value = _b[1];
|
|
3620
|
-
return _this.escapeParam(name)
|
|
3621
|
+
return "".concat(_this.escapeParam(name), ":").concat(_this.escapeParam(value));
|
|
3621
3622
|
})
|
|
3622
3623
|
.join(',');
|
|
3623
|
-
paramString = paramString.length ? ":"
|
|
3624
|
-
var defaultString = defaultValue !== undefined ? ","
|
|
3625
|
-
return ""
|
|
3624
|
+
paramString = paramString.length ? ":".concat(paramString) : '';
|
|
3625
|
+
var defaultString = defaultValue !== undefined ? ",".concat(this.escapeParam(defaultValue)) : '';
|
|
3626
|
+
return "".concat(this.properties.config.inputPrefix).concat(this.escapeParam(key)).concat(defaultString).concat(paramString).concat(this.properties.config.inputSuffix);
|
|
3626
3627
|
};
|
|
3627
3628
|
TextService.prototype.getTranslatedWithMetadata = function (text) {
|
|
3628
3629
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -3684,7 +3685,7 @@ var MouseEventHandler = /** @class */ (function () {
|
|
|
3684
3685
|
}
|
|
3685
3686
|
};
|
|
3686
3687
|
element.addEventListener('mouseover', onMouseOver);
|
|
3687
|
-
element.addEventListener('click', onClick);
|
|
3688
|
+
element.addEventListener('click', onClick, { capture: true });
|
|
3688
3689
|
var onMouseDownOrUp = function (e) {
|
|
3689
3690
|
if (_this.areKeysDown()) {
|
|
3690
3691
|
e.stopPropagation();
|
|
@@ -3698,7 +3699,7 @@ var MouseEventHandler = /** @class */ (function () {
|
|
|
3698
3699
|
element.removeEventListener('mousedown', onMouseDownOrUp);
|
|
3699
3700
|
element.removeEventListener('mouseup', onMouseDownOrUp);
|
|
3700
3701
|
element.removeEventListener('mouseover', onMouseOver);
|
|
3701
|
-
element.removeEventListener('click', onClick);
|
|
3702
|
+
element.removeEventListener('click', onClick, { capture: true });
|
|
3702
3703
|
element.removeEventListener('mouseout', onMouseOut);
|
|
3703
3704
|
};
|
|
3704
3705
|
};
|
|
@@ -3719,11 +3720,13 @@ var MouseEventHandler = /** @class */ (function () {
|
|
|
3719
3720
|
}
|
|
3720
3721
|
};
|
|
3721
3722
|
MouseEventHandler.prototype.onMouseOut = function (element) {
|
|
3723
|
+
element._tolgee.preventClean = false;
|
|
3722
3724
|
this.mouseOn.delete(element);
|
|
3723
3725
|
this.mouseOnChanged.emit(this.getMouseOn());
|
|
3724
3726
|
};
|
|
3725
3727
|
MouseEventHandler.prototype.onMouseOver = function (element) {
|
|
3726
3728
|
this.filterMouseOn();
|
|
3729
|
+
element._tolgee.preventClean = true;
|
|
3727
3730
|
this.mouseOn.delete(element); //to get in to last place
|
|
3728
3731
|
this.mouseOn.add(element);
|
|
3729
3732
|
this.mouseOnChanged.emit(this.getMouseOn());
|
|
@@ -3785,40 +3788,26 @@ var TranslationHighlighter = /** @class */ (function () {
|
|
|
3785
3788
|
var _this = this;
|
|
3786
3789
|
this.dependencies = dependencies;
|
|
3787
3790
|
this.translationEdit = function (e, element) { return __awaiter(_this, void 0, void 0, function () {
|
|
3788
|
-
var key;
|
|
3791
|
+
var renderer, key;
|
|
3789
3792
|
return __generator(this, function (_a) {
|
|
3790
3793
|
switch (_a.label) {
|
|
3791
|
-
case 0:
|
|
3792
|
-
if (!(typeof this.renderer === 'object')) return [3 /*break*/, 2];
|
|
3793
|
-
return [4 /*yield*/, this.getKeyAndDefault(e, element)];
|
|
3794
|
+
case 0: return [4 /*yield*/, this.getRenderer()];
|
|
3794
3795
|
case 1:
|
|
3796
|
+
renderer = _a.sent();
|
|
3797
|
+
if (!(typeof renderer === 'object')) return [3 /*break*/, 3];
|
|
3798
|
+
return [4 /*yield*/, this.getKeyAndDefault(e, element)];
|
|
3799
|
+
case 2:
|
|
3795
3800
|
key = _a.sent();
|
|
3796
3801
|
if (key) {
|
|
3797
|
-
|
|
3802
|
+
renderer.renderViewer(key.key, key.defaultValue);
|
|
3798
3803
|
return [2 /*return*/];
|
|
3799
3804
|
}
|
|
3800
3805
|
return [2 /*return*/];
|
|
3801
|
-
case 2
|
|
3802
|
-
// eslint-disable-next-line no-console
|
|
3803
|
-
console.warn('Tolgee UI is not provided. To translate interactively provide tolgee ui constructor to "ui" configuration property. ' +
|
|
3804
|
-
'To disable highlighting use production mode.');
|
|
3805
|
-
return [2 /*return*/];
|
|
3806
|
+
case 3: return [2 /*return*/];
|
|
3806
3807
|
}
|
|
3807
3808
|
});
|
|
3808
3809
|
}); };
|
|
3809
3810
|
}
|
|
3810
|
-
Object.defineProperty(TranslationHighlighter.prototype, "renderer", {
|
|
3811
|
-
get: function () {
|
|
3812
|
-
if (this._renderer === undefined) {
|
|
3813
|
-
if (typeof this.dependencies.properties.config.ui === 'function') {
|
|
3814
|
-
this._renderer = new this.dependencies.properties.config.ui(this.dependencies);
|
|
3815
|
-
}
|
|
3816
|
-
}
|
|
3817
|
-
return this._renderer;
|
|
3818
|
-
},
|
|
3819
|
-
enumerable: false,
|
|
3820
|
-
configurable: true
|
|
3821
|
-
});
|
|
3822
3811
|
TranslationHighlighter.getKeyOptions = function (node) {
|
|
3823
3812
|
var nodes = Array.from(node._tolgee.nodes);
|
|
3824
3813
|
return nodes.reduce(function (acc, curr) { return __spreadArray(__spreadArray([], __read(acc), false), __read(curr._tolgee.keys.map(function (k) { return ({
|
|
@@ -3836,9 +3825,70 @@ var TranslationHighlighter = /** @class */ (function () {
|
|
|
3836
3825
|
}
|
|
3837
3826
|
}); }); });
|
|
3838
3827
|
};
|
|
3828
|
+
TranslationHighlighter.prototype.getRenderer = function () {
|
|
3829
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3830
|
+
var possibleProviders, possibleProviders_1, possibleProviders_1_1, possibleProvider, constructorProvider, constructor, constructor, e_2_1;
|
|
3831
|
+
var e_2, _a;
|
|
3832
|
+
return __generator(this, function (_b) {
|
|
3833
|
+
switch (_b.label) {
|
|
3834
|
+
case 0:
|
|
3835
|
+
if (!(this._renderer === undefined)) return [3 /*break*/, 11];
|
|
3836
|
+
possibleProviders = [
|
|
3837
|
+
this.dependencies.properties.config.ui,
|
|
3838
|
+
window['@tolgee/ui'],
|
|
3839
|
+
];
|
|
3840
|
+
_b.label = 1;
|
|
3841
|
+
case 1:
|
|
3842
|
+
_b.trys.push([1, 8, 9, 10]);
|
|
3843
|
+
possibleProviders_1 = __values(possibleProviders), possibleProviders_1_1 = possibleProviders_1.next();
|
|
3844
|
+
_b.label = 2;
|
|
3845
|
+
case 2:
|
|
3846
|
+
if (!!possibleProviders_1_1.done) return [3 /*break*/, 7];
|
|
3847
|
+
possibleProvider = possibleProviders_1_1.value;
|
|
3848
|
+
if (!(typeof possibleProvider === 'function')) return [3 /*break*/, 6];
|
|
3849
|
+
_b.label = 3;
|
|
3850
|
+
case 3:
|
|
3851
|
+
_b.trys.push([3, 5, , 6]);
|
|
3852
|
+
constructorProvider = possibleProvider;
|
|
3853
|
+
return [4 /*yield*/, constructorProvider()];
|
|
3854
|
+
case 4:
|
|
3855
|
+
constructor = _b.sent();
|
|
3856
|
+
this._renderer = new constructor(this.dependencies);
|
|
3857
|
+
return [3 /*break*/, 6];
|
|
3858
|
+
case 5:
|
|
3859
|
+
_b.sent();
|
|
3860
|
+
constructor = possibleProvider;
|
|
3861
|
+
this._renderer = new constructor(this.dependencies);
|
|
3862
|
+
return [3 /*break*/, 6];
|
|
3863
|
+
case 6:
|
|
3864
|
+
possibleProviders_1_1 = possibleProviders_1.next();
|
|
3865
|
+
return [3 /*break*/, 2];
|
|
3866
|
+
case 7: return [3 /*break*/, 10];
|
|
3867
|
+
case 8:
|
|
3868
|
+
e_2_1 = _b.sent();
|
|
3869
|
+
e_2 = { error: e_2_1 };
|
|
3870
|
+
return [3 /*break*/, 10];
|
|
3871
|
+
case 9:
|
|
3872
|
+
try {
|
|
3873
|
+
if (possibleProviders_1_1 && !possibleProviders_1_1.done && (_a = possibleProviders_1.return)) _a.call(possibleProviders_1);
|
|
3874
|
+
}
|
|
3875
|
+
finally { if (e_2) throw e_2.error; }
|
|
3876
|
+
return [7 /*endfinally*/];
|
|
3877
|
+
case 10:
|
|
3878
|
+
if (this._renderer === undefined) {
|
|
3879
|
+
// eslint-disable-next-line no-console
|
|
3880
|
+
console.warn('Tolgee UI is not provided. To translate interactively provide tolgee ui constructor to "ui" configuration property. ' +
|
|
3881
|
+
'To disable highlighting use production mode.');
|
|
3882
|
+
}
|
|
3883
|
+
_b.label = 11;
|
|
3884
|
+
case 11: return [2 /*return*/, this._renderer];
|
|
3885
|
+
}
|
|
3886
|
+
});
|
|
3887
|
+
});
|
|
3888
|
+
};
|
|
3839
3889
|
TranslationHighlighter.prototype.getKeyAndDefault = function (mouseEvent, element) {
|
|
3840
3890
|
return __awaiter(this, void 0, void 0, function () {
|
|
3841
|
-
var keysWithDefaults, keySet, selectedKey_1, found;
|
|
3891
|
+
var keysWithDefaults, keySet, renderer, selectedKey_1, found;
|
|
3842
3892
|
return __generator(this, function (_a) {
|
|
3843
3893
|
switch (_a.label) {
|
|
3844
3894
|
case 0:
|
|
@@ -3850,19 +3900,22 @@ var TranslationHighlighter = /** @class */ (function () {
|
|
|
3850
3900
|
}
|
|
3851
3901
|
keysWithDefaults = TranslationHighlighter.getKeyOptions(element);
|
|
3852
3902
|
keySet = new Set(keysWithDefaults.map(function (keyWithDefault) { return keyWithDefault.key; }));
|
|
3853
|
-
if (!(keySet.size > 1)) return [3 /*break*/,
|
|
3854
|
-
return [4 /*yield*/, this.
|
|
3903
|
+
if (!(keySet.size > 1)) return [3 /*break*/, 3];
|
|
3904
|
+
return [4 /*yield*/, this.getRenderer()];
|
|
3905
|
+
case 1:
|
|
3906
|
+
renderer = _a.sent();
|
|
3907
|
+
return [4 /*yield*/, renderer.getKey({
|
|
3855
3908
|
keys: keySet,
|
|
3856
3909
|
openEvent: mouseEvent,
|
|
3857
3910
|
})];
|
|
3858
|
-
case
|
|
3911
|
+
case 2:
|
|
3859
3912
|
selectedKey_1 = _a.sent();
|
|
3860
3913
|
found = keysWithDefaults.find(function (kwd) { return kwd.key === selectedKey_1; });
|
|
3861
3914
|
if (found) {
|
|
3862
3915
|
return [2 /*return*/, found];
|
|
3863
3916
|
}
|
|
3864
|
-
_a.label =
|
|
3865
|
-
case
|
|
3917
|
+
_a.label = 3;
|
|
3918
|
+
case 3:
|
|
3866
3919
|
if (keySet.size === 1) {
|
|
3867
3920
|
return [2 /*return*/, keysWithDefaults[0]];
|
|
3868
3921
|
}
|
|
@@ -3901,10 +3954,12 @@ var ElementRegistrar = /** @class */ (function () {
|
|
|
3901
3954
|
try {
|
|
3902
3955
|
for (var _b = __values(this.registeredElements), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
3903
3956
|
var element = _c.value;
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3957
|
+
if (!element._tolgee.preventClean) {
|
|
3958
|
+
this.cleanElementInactiveNodes(element);
|
|
3959
|
+
if (element._tolgee.nodes.size === 0 &&
|
|
3960
|
+
!element._tolgee.wrappedWithElementOnlyKey) {
|
|
3961
|
+
this.cleanElement(element);
|
|
3962
|
+
}
|
|
3908
3963
|
}
|
|
3909
3964
|
}
|
|
3910
3965
|
}
|
|
@@ -3976,12 +4031,14 @@ var ElementRegistrar = /** @class */ (function () {
|
|
|
3976
4031
|
}
|
|
3977
4032
|
};
|
|
3978
4033
|
ElementRegistrar.prototype.cleanElement = function (element) {
|
|
3979
|
-
if (
|
|
3980
|
-
element._tolgee.removeAllEventListeners
|
|
4034
|
+
if (!element._tolgee.preventClean) {
|
|
4035
|
+
if (typeof element._tolgee.removeAllEventListeners === 'function') {
|
|
4036
|
+
element._tolgee.removeAllEventListeners();
|
|
4037
|
+
}
|
|
4038
|
+
element.removeAttribute(TOLGEE_ATTRIBUTE_NAME);
|
|
4039
|
+
delete element._tolgee;
|
|
4040
|
+
this.registeredElements.delete(element);
|
|
3981
4041
|
}
|
|
3982
|
-
element.removeAttribute(TOLGEE_ATTRIBUTE_NAME);
|
|
3983
|
-
delete element._tolgee;
|
|
3984
|
-
this.registeredElements.delete(element);
|
|
3985
4042
|
};
|
|
3986
4043
|
ElementRegistrar.prototype.getActiveNodes = function (element) {
|
|
3987
4044
|
var _a, _b, node, e_5_1;
|
|
@@ -4045,7 +4102,7 @@ var AbstractHandler = /** @class */ (function () {
|
|
|
4045
4102
|
return nodes.filter(function (n) {
|
|
4046
4103
|
var e = NodeHelper.closestElement(n);
|
|
4047
4104
|
return (restrictedElements.indexOf(e.tagName.toLowerCase()) === -1 &&
|
|
4048
|
-
e.closest("["
|
|
4105
|
+
e.closest("[".concat(RESTRICTED_ASCENDANT_ATTRIBUTE, "=\"true\"]")) === null);
|
|
4049
4106
|
});
|
|
4050
4107
|
};
|
|
4051
4108
|
AbstractHandler.prototype.handleNodes = function (nodes) {
|
|
@@ -4171,7 +4228,7 @@ var TextHandler = /** @class */ (function (_super) {
|
|
|
4171
4228
|
case 0:
|
|
4172
4229
|
inputPrefix = this.properties.config.inputPrefix;
|
|
4173
4230
|
inputSuffix = this.properties.config.inputSuffix;
|
|
4174
|
-
xPath = "./descendant-or-self::text()[contains(., '"
|
|
4231
|
+
xPath = "./descendant-or-self::text()[contains(., '".concat(inputPrefix, "') and contains(., '").concat(inputSuffix, "')]");
|
|
4175
4232
|
nodes = NodeHelper.evaluate(xPath, node);
|
|
4176
4233
|
filtered = this.filterRestricted(nodes);
|
|
4177
4234
|
return [4 /*yield*/, this.handleNodes(filtered)];
|
|
@@ -4220,7 +4277,7 @@ var AttributeHandler = /** @class */ (function (_super) {
|
|
|
4220
4277
|
case 4:
|
|
4221
4278
|
if (!!attributes_1_1.done) return [3 /*break*/, 7];
|
|
4222
4279
|
attribute = attributes_1_1.value;
|
|
4223
|
-
expression = "descendant-or-self::"
|
|
4280
|
+
expression = "descendant-or-self::".concat(tag, "/@").concat(attribute, "[contains(., '").concat(inputPrefix, "') and contains(., '").concat(inputSuffix, "')]");
|
|
4224
4281
|
nodes = NodeHelper.evaluate(expression, node);
|
|
4225
4282
|
return [4 /*yield*/, this.handleNodes(nodes)];
|
|
4226
4283
|
case 5:
|
|
@@ -4490,7 +4547,7 @@ var CoreService = /** @class */ (function () {
|
|
|
4490
4547
|
});
|
|
4491
4548
|
});
|
|
4492
4549
|
};
|
|
4493
|
-
CoreService.prototype.
|
|
4550
|
+
CoreService.prototype.getApiKeyDetails = function () {
|
|
4494
4551
|
return __awaiter(this, void 0, void 0, function () {
|
|
4495
4552
|
var e_1;
|
|
4496
4553
|
return __generator(this, function (_a) {
|
|
@@ -4498,8 +4555,7 @@ var CoreService = /** @class */ (function () {
|
|
|
4498
4555
|
case 0:
|
|
4499
4556
|
_a.trys.push([0, 2, , 3]);
|
|
4500
4557
|
return [4 /*yield*/, this.apiHttpService.fetchJson("v2/api-keys/current")];
|
|
4501
|
-
case 1: return [2 /*return*/,
|
|
4502
|
-
.scopes];
|
|
4558
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
4503
4559
|
case 2:
|
|
4504
4560
|
e_1 = _a.sent();
|
|
4505
4561
|
// eslint-disable-next-line no-console
|
|
@@ -4539,7 +4595,7 @@ var WrappedHandler = /** @class */ (function (_super) {
|
|
|
4539
4595
|
var xPath, nodes, filtered;
|
|
4540
4596
|
var _this = this;
|
|
4541
4597
|
return __generator(this, function (_a) {
|
|
4542
|
-
xPath = "./descendant-or-self::*[@"
|
|
4598
|
+
xPath = "./descendant-or-self::*[@".concat(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE, "]");
|
|
4543
4599
|
nodes = NodeHelper.evaluate(xPath, node);
|
|
4544
4600
|
filtered = this.filterRestricted(nodes);
|
|
4545
4601
|
filtered.forEach(function (element) {
|
|
@@ -4753,7 +4809,7 @@ var ScreenshotService = /** @class */ (function () {
|
|
|
4753
4809
|
ScreenshotService.prototype.deleteImages = function (ids) {
|
|
4754
4810
|
return __awaiter(this, void 0, void 0, function () {
|
|
4755
4811
|
return __generator(this, function (_a) {
|
|
4756
|
-
return [2 /*return*/, this.apiHttpService.post("v2/image-upload/"
|
|
4812
|
+
return [2 /*return*/, this.apiHttpService.post("v2/image-upload/".concat(ids.join(',')), undefined, {
|
|
4757
4813
|
method: 'delete',
|
|
4758
4814
|
})];
|
|
4759
4815
|
});
|
|
@@ -4892,7 +4948,7 @@ var Tolgee = /** @class */ (function () {
|
|
|
4892
4948
|
switch (_a.label) {
|
|
4893
4949
|
case 0:
|
|
4894
4950
|
if (!(this.properties.config.mode === 'development')) return [3 /*break*/, 2];
|
|
4895
|
-
return [4 /*yield*/, this.
|
|
4951
|
+
return [4 /*yield*/, this.loadApiKeyDetails()];
|
|
4896
4952
|
case 1:
|
|
4897
4953
|
_a.sent();
|
|
4898
4954
|
_a.label = 2;
|
|
@@ -4947,7 +5003,7 @@ var Tolgee = /** @class */ (function () {
|
|
|
4947
5003
|
orEmpty = props.orEmpty;
|
|
4948
5004
|
}
|
|
4949
5005
|
if (!(this.properties.config.mode === 'development' && !noWrap)) return [3 /*break*/, 3];
|
|
4950
|
-
return [4 /*yield*/, this.
|
|
5006
|
+
return [4 /*yield*/, this.loadApiKeyDetails()];
|
|
4951
5007
|
case 1:
|
|
4952
5008
|
_a.sent();
|
|
4953
5009
|
return [4 /*yield*/, this.translationService.loadTranslations()];
|
|
@@ -4978,19 +5034,19 @@ var Tolgee = /** @class */ (function () {
|
|
|
4978
5034
|
}
|
|
4979
5035
|
return this.dependencyStore.textService.instant(key, params, undefined, orEmpty, defaultValue);
|
|
4980
5036
|
};
|
|
4981
|
-
Tolgee.prototype.
|
|
5037
|
+
Tolgee.prototype.loadApiKeyDetails = function () {
|
|
4982
5038
|
return __awaiter(this, void 0, void 0, function () {
|
|
4983
|
-
var
|
|
4984
|
-
return __generator(this, function (
|
|
4985
|
-
switch (
|
|
5039
|
+
var details;
|
|
5040
|
+
return __generator(this, function (_a) {
|
|
5041
|
+
switch (_a.label) {
|
|
4986
5042
|
case 0:
|
|
4987
5043
|
if (!(this.properties.scopes === undefined)) return [3 /*break*/, 2];
|
|
4988
|
-
|
|
4989
|
-
return [4 /*yield*/, this.dependencyStore.coreService.getScopes()];
|
|
5044
|
+
return [4 /*yield*/, this.dependencyStore.coreService.getApiKeyDetails()];
|
|
4990
5045
|
case 1:
|
|
4991
|
-
_a.
|
|
4992
|
-
|
|
4993
|
-
|
|
5046
|
+
details = _a.sent();
|
|
5047
|
+
this.properties.scopes = details.scopes;
|
|
5048
|
+
this.properties.projectId = details.projectId;
|
|
5049
|
+
_a.label = 2;
|
|
4994
5050
|
case 2: return [2 /*return*/];
|
|
4995
5051
|
}
|
|
4996
5052
|
});
|