@tilde-nlp/ngx-translate 2.0.2 → 2.1.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.
- package/esm2020/lib/factories/file-api-service.factory.mjs +1 -1
- package/esm2020/lib/factories/mt-term-term-api.factory.mjs +12 -0
- package/esm2020/lib/factories/text-api-service.factory.mjs +3 -3
- package/esm2020/lib/i18n/de.mjs +2 -7
- package/esm2020/lib/i18n/en.mjs +2 -6
- package/esm2020/lib/i18n/et.mjs +1 -6
- package/esm2020/lib/i18n/fi.mjs +1 -6
- package/esm2020/lib/i18n/lt.mjs +1 -6
- package/esm2020/lib/i18n/lv.mjs +2 -7
- package/esm2020/lib/i18n/pl.mjs +1 -6
- package/esm2020/lib/i18n/sv.mjs +1 -4
- package/esm2020/lib/injection-tokens/index.mjs +2 -1
- package/esm2020/lib/injection-tokens/mt-term-api.token.mjs +2 -0
- package/esm2020/lib/modules/tld-common/models/configs/tld-term-config.model.mjs +1 -1
- package/esm2020/lib/modules/tld-common/services/tld-translate-config.service.mjs +2 -1
- package/esm2020/lib/modules/tld-document/services/api/file-api.service.mjs +7 -7
- package/esm2020/lib/modules/tld-document/services/tld-translate-file.service.mjs +6 -2
- package/esm2020/lib/modules/tld-term/create-collection/create-collection.component.mjs +51 -0
- package/esm2020/lib/modules/tld-term/index.mjs +2 -1
- package/esm2020/lib/modules/tld-term/services/api-v1/models/mt-term-collection-v1-status.enum.mjs +7 -0
- package/esm2020/lib/modules/tld-term/services/api-v1/models/mt-term-collection-v1.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/api-v1/mt-term-v1.service.mjs +53 -0
- package/esm2020/lib/modules/tld-term/services/api-v2/mt-term-v2.service.mjs +67 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/eninge-term-api.service.mjs +32 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/add-engine-terms-request-params.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/engine-term-collection-list.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/engine-term-collection-scope.enum.mjs +6 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/engine-term-collection-source.enum.mjs +6 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/engine-term-collection-status.enum.mjs +11 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/engine-term-collection.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/index.mjs +8 -0
- package/esm2020/lib/modules/tld-term/services/engine-term/models/update-engine-terms-request-params.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/index.mjs +4 -4
- package/esm2020/lib/modules/tld-term/services/models/combined-collection-tooltip-key.enum.mjs +6 -0
- package/esm2020/lib/modules/tld-term/services/models/combined-collection.model.mjs +190 -0
- package/esm2020/lib/modules/tld-term/services/models/index.mjs +6 -0
- package/esm2020/lib/modules/tld-term/services/models/mt-collection-status.enum.mjs +14 -0
- package/esm2020/lib/modules/tld-term/services/models/mt-collection.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/models/mt-term-service.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/term-api/index.mjs +3 -0
- package/esm2020/lib/modules/tld-term/services/term-api/models/index.mjs +3 -0
- package/esm2020/lib/modules/tld-term/services/term-api/models/tld-term-collection-languages.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/term-api/models/tld-term-collection.model.mjs +2 -0
- package/esm2020/lib/modules/tld-term/services/term-api/term-api.service.mjs +58 -0
- package/esm2020/lib/modules/tld-term/services/terminology.service.mjs +292 -0
- package/esm2020/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.mjs +27 -12
- package/esm2020/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.mjs +24 -51
- package/esm2020/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.mjs +19 -12
- package/esm2020/lib/modules/tld-term/tld-term.module.mjs +6 -5
- package/esm2020/lib/modules/tld-text/services/api/tld-translate-text-api.service.mjs +7 -7
- package/esm2020/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.mjs +4 -2
- package/esm2020/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.mjs +8 -8
- package/esm2020/lib/tld-translate.module.mjs +17 -4
- package/esm2020/public-api.mjs +4 -2
- package/fesm2015/tilde-nlp-ngx-translate.mjs +834 -517
- package/fesm2015/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/fesm2020/tilde-nlp-ngx-translate.mjs +797 -501
- package/fesm2020/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/lib/factories/file-api-service.factory.d.ts +2 -2
- package/lib/factories/mt-term-term-api.factory.d.ts +7 -0
- package/lib/factories/text-api-service.factory.d.ts +3 -3
- package/lib/i18n/de.d.ts +0 -5
- package/lib/i18n/en.d.ts +1 -5
- package/lib/i18n/et.d.ts +0 -5
- package/lib/i18n/fi.d.ts +0 -5
- package/lib/i18n/lt.d.ts +0 -5
- package/lib/i18n/lv.d.ts +0 -5
- package/lib/i18n/pl.d.ts +0 -5
- package/lib/i18n/sv.d.ts +0 -3
- package/lib/injection-tokens/index.d.ts +1 -0
- package/lib/injection-tokens/mt-term-api.token.d.ts +1 -0
- package/lib/modules/tld-common/models/configs/tld-term-config.model.d.ts +1 -0
- package/lib/modules/tld-document/services/api/file-api.service.d.ts +3 -3
- package/lib/modules/tld-term/create-collection/create-collection.component.d.ts +17 -0
- package/lib/modules/tld-term/index.d.ts +1 -0
- package/lib/modules/tld-term/{models/mt-collection-status.model.d.ts → services/api-v1/models/mt-term-collection-v1-status.enum.d.ts} +1 -1
- package/lib/modules/tld-term/services/api-v1/models/mt-term-collection-v1.model.d.ts +12 -0
- package/lib/modules/tld-term/services/api-v1/mt-term-v1.service.d.ts +17 -0
- package/lib/modules/tld-term/services/api-v2/mt-term-v2.service.d.ts +18 -0
- package/lib/modules/tld-term/services/engine-term/eninge-term-api.service.d.ts +17 -0
- package/lib/modules/tld-term/services/engine-term/models/add-engine-terms-request-params.model.d.ts +8 -0
- package/lib/modules/tld-term/services/engine-term/models/engine-term-collection-list.model.d.ts +4 -0
- package/lib/modules/tld-term/services/engine-term/models/engine-term-collection-scope.enum.d.ts +4 -0
- package/lib/modules/tld-term/services/engine-term/models/engine-term-collection-source.enum.d.ts +4 -0
- package/lib/modules/tld-term/services/engine-term/models/engine-term-collection-status.enum.d.ts +9 -0
- package/lib/modules/tld-term/services/engine-term/models/engine-term-collection.model.d.ts +14 -0
- package/lib/modules/tld-term/services/engine-term/models/index.d.ts +7 -0
- package/lib/modules/tld-term/services/engine-term/models/update-engine-terms-request-params.model.d.ts +5 -0
- package/lib/modules/tld-term/services/index.d.ts +3 -3
- package/lib/modules/tld-term/services/models/combined-collection-tooltip-key.enum.d.ts +4 -0
- package/lib/modules/tld-term/services/models/combined-collection.model.d.ts +87 -0
- package/lib/modules/tld-term/services/models/index.d.ts +5 -0
- package/lib/modules/tld-term/services/models/mt-collection-status.enum.d.ts +11 -0
- package/lib/modules/tld-term/services/models/mt-collection.model.d.ts +14 -0
- package/lib/modules/tld-term/services/models/mt-term-service.model.d.ts +7 -0
- package/lib/modules/tld-term/services/term-api/index.d.ts +2 -0
- package/lib/modules/tld-term/services/term-api/models/index.d.ts +2 -0
- package/lib/modules/tld-term/{models/term-api → services/term-api/models}/tld-term-collection.model.d.ts +2 -2
- package/lib/modules/tld-term/services/term-api/term-api.service.d.ts +17 -0
- package/lib/modules/tld-term/services/terminology.service.d.ts +63 -0
- package/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.d.ts +13 -4
- package/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.d.ts +13 -17
- package/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.d.ts +11 -7
- package/lib/modules/tld-term/tld-term.module.d.ts +13 -12
- package/lib/modules/tld-text/services/api/tld-translate-text-api.service.d.ts +3 -3
- package/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.d.ts +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +3 -1
- package/src/assets/webcomponent/tld-translate.js +1 -1
- package/tilde-nlp-ngx-translate-2.1.0.tgz +0 -0
- package/esm2020/lib/modules/tld-term/models/converted-collection-tooltip-key.model.mjs +0 -7
- package/esm2020/lib/modules/tld-term/models/converted-collection-type.model.mjs +0 -9
- package/esm2020/lib/modules/tld-term/models/index.mjs +0 -7
- package/esm2020/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.mjs +0 -2
- package/esm2020/lib/modules/tld-term/models/mt-collection-status.model.mjs +0 -7
- package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.mjs +0 -2
- package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection.model.mjs +0 -2
- package/esm2020/lib/modules/tld-term/models/tld-converted-collection.model.mjs +0 -114
- package/esm2020/lib/modules/tld-term/services/mt-collections-api.service.mjs +0 -33
- package/esm2020/lib/modules/tld-term/services/term-api.service.mjs +0 -34
- package/esm2020/lib/modules/tld-term/services/tld-term-collections.service.mjs +0 -253
- package/lib/modules/tld-term/models/converted-collection-tooltip-key.model.d.ts +0 -5
- package/lib/modules/tld-term/models/converted-collection-type.model.d.ts +0 -7
- package/lib/modules/tld-term/models/index.d.ts +0 -6
- package/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.d.ts +0 -15
- package/lib/modules/tld-term/models/tld-converted-collection.model.d.ts +0 -43
- package/lib/modules/tld-term/services/mt-collections-api.service.d.ts +0 -13
- package/lib/modules/tld-term/services/term-api.service.d.ts +0 -15
- package/lib/modules/tld-term/services/tld-term-collections.service.d.ts +0 -57
- package/tilde-nlp-ngx-translate-2.0.2.tgz +0 -0
- /package/lib/modules/tld-term/{models/term-api → services/term-api/models}/tld-term-collection-languages.model.d.ts +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXQtY29sbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL21vZGVscy9tdC1jb2xsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmdpbmVUZXJtQ29sbGVjdGlvblNjb3BlIH0gZnJvbSBcIi4uL2VuZ2luZS10ZXJtL21vZGVscy9lbmdpbmUtdGVybS1jb2xsZWN0aW9uLXNjb3BlLmVudW1cIjtcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSBcIi4vbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdENvbGxlY3Rpb24ge1xyXG4gIC8vI3JlZ2lvbiBDb21tb24gdjEgYW5kIHYyIHByb3BlcnRpZXNcclxuICBpZDogc3RyaW5nO1xyXG4gIGxhc3RVcGRhdGVkOiBEYXRlO1xyXG4gIHN0YXR1czogTXRDb2xsZWN0aW9uU3RhdHVzO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0ZXJtSWQ/OiBzdHJpbmc7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgLy8jcmVnaW9uIE9OTFkgQXBpIHYyIHByb3BlcnRpZXNcclxuICAvKipcclxuICAgKiBBcGkgdjIgZGV0ZXJtaW5lcyBpZiBjb2xsZWN0aW9uIGlzIGRlZmF1bHQuXHJcbiAgICovXHJcbiAgZGVmYXVsdD86IGJvb2xlYW47XHJcbiAgc2NvcGU/OiBFbmdpbmVUZXJtQ29sbGVjdGlvblNjb3BlO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXQtdGVybS1zZXJ2aWNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRlcm0vc2VydmljZXMvbW9kZWxzL210LXRlcm0tc2VydmljZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbWJpbmVkQ29sbGVjdGlvbiB9IGZyb20gXCIuL2NvbWJpbmVkLWNvbGxlY3Rpb24ubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU10VGVybVNlcnZpY2Uge1xyXG5cclxuICBhZGQoZW5naW5lSWQ6IHN0cmluZywgY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uKTogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb24+O1xyXG4gIGdldExpc3QoZW5naW5lSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uW10+O1xyXG4gIHJlbW92ZShlbmdpbmVJZDogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pOiBPYnNlcnZhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj47XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './term-api.service';
|
|
2
|
+
export * from './models';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGVybS9zZXJ2aWNlcy90ZXJtLWFwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXJtLWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './tld-term-collection.model';
|
|
2
|
+
export * from './tld-term-collection-languages.model';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGVybS9zZXJ2aWNlcy90ZXJtLWFwaS9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90bGQtdGVybS1jb2xsZWN0aW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi90bGQtdGVybS1jb2xsZWN0aW9uLWxhbmd1YWdlcy5tb2RlbCc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRlcm0tY29sbGVjdGlvbi1sYW5ndWFnZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGVybS9zZXJ2aWNlcy90ZXJtLWFwaS9tb2RlbHMvdGxkLXRlcm0tY29sbGVjdGlvbi1sYW5ndWFnZXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUZXJtIGNvbGxlY3Rpb24gZnJvbSB0ZXJtIHBvcnRhbCBsYW5ndWFnZXMgcHJvcGVydHkgaW50ZXJmYWNlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJVGxkVGVybUNvbGxlY3Rpb25MYW5ndWFnZXN7XHJcbiAgICAvKipcclxuICAgICAqIExhbmd1YWdlIGNvZGVcclxuICAgICAqL1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGNvdW50OiBudW1iZXI7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRlcm0tY29sbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL3Rlcm0tYXBpL21vZGVscy90bGQtdGVybS1jb2xsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGxkVGVybUNvbGxlY3Rpb25MYW5ndWFnZXMgfSBmcm9tIFwiLi90bGQtdGVybS1jb2xsZWN0aW9uLWxhbmd1YWdlcy5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGxkVGVybUNvbGxlY3Rpb24ge1xyXG4gICAgYWxsb3dzVXNlc0Jlc2lkZXNER1Q6IGJvb2xlYW47XHJcbiAgICBhcHByb3ByaWF0bmVzc0ZvckRTSTogYm9vbGVhbjtcclxuICAgIGF0dHJpYnV0aW9uVGV4dDogc3RyaW5nO1xyXG4gICAgYmVsb25naW5nOiBhbnk7XHJcbiAgICBjYW5Eb3dubG9hZFB1YmxpYzogYm9vbGVhbjtcclxuICAgIGNsb3NlZDogYm9vbGVhbjtcclxuICAgIGNvbGxlY3Rpb25HdWlkOiBzdHJpbmc7XHJcbiAgICBjb2xsZWN0aW9uVGFnczogYW55W107XHJcbiAgICBjcEVtYWlsOiBzdHJpbmc7XHJcbiAgICBjcE5hbWU6IHN0cmluZztcclxuICAgIGNwT3JnYW5pemF0aW9uOiBzdHJpbmc7XHJcbiAgICBjcFN1cm5hbWU6IHN0cmluZztcclxuICAgIGNyZWF0ZURhdGU6IERhdGU7XHJcbiAgICBkZWZhdWx0RG9tYWluOiBhbnk7XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2VzOiBhbnk7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgZG9tYWluSUQ6IGFueTtcclxuICAgIGRvbWFpbnM6IGFueTtcclxuICAgIGVscmNTaGFyZUlkOiBhbnk7XHJcbiAgICBlbnRyeUNvdW50OiBudW1iZXI7XHJcbiAgICBldXJvdm9jRG9tYWluSWQ6IGFueTtcclxuICAgIGV4dGVybmFsVXJpOiBzdHJpbmc7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgaXByRW1haWw6IHN0cmluZztcclxuICAgIGlwck5hbWU6IHN0cmluZztcclxuICAgIGlwck9yZ2FuaXphdGlvbjogc3RyaW5nO1xyXG4gICAgaXByU3VybmFtZTogc3RyaW5nO1xyXG4gICAgaXNJbXBvcnRpbmc6IGJvb2xlYW47XHJcbiAgICBpc1BTSTogYm9vbGVhbjtcclxuICAgIGxhbmd1YWdlczogSVRsZFRlcm1Db2xsZWN0aW9uTGFuZ3VhZ2VzW107XHJcbiAgICBsaWNlbmNlOiBhbnk7XHJcbiAgICBtZXRhTm9yZElkOiBhbnk7XHJcbiAgICBtb2RpZnlEYXRlOiBEYXRlO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgb3JpZ2luYWxOYW1lOiBzdHJpbmc7XHJcbiAgICBvcmlnaW5hbE5hbWVMYW5nOiBzdHJpbmc7XHJcbiAgICBvd25lckdyb3VwR3VpZDogc3RyaW5nO1xyXG4gICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljOiBib29sZWFuO1xyXG4gICAgcmVzdHJpY3Rpb25zT2ZVc2U6IGFueTtcclxuICAgIHNvdXJjZVVSTDogc3RyaW5nO1xyXG4gICAgdGFyZ2V0Q29sbGVjdGlvbklkOiBhbnk7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import { CombinedCollection } from '../models/combined-collection.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../tld-common/services/tld-translate-config.service";
|
|
6
|
+
import * as i2 from "@angular/common/http";
|
|
7
|
+
export class TermApiService {
|
|
8
|
+
constructor(config, http) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
get url() {
|
|
13
|
+
return `${this.config.termConfig.apiUrl}/api/termservice/collection`;
|
|
14
|
+
}
|
|
15
|
+
createCollection(defaultLanguages, collectionName) {
|
|
16
|
+
const params = {
|
|
17
|
+
name: collectionName,
|
|
18
|
+
defaultLanguages
|
|
19
|
+
};
|
|
20
|
+
return this.http.post(this.url, params)
|
|
21
|
+
.pipe(map((collection) => {
|
|
22
|
+
return this.convertToCombinedCollection(collection);
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
getCollectionList(languages) {
|
|
26
|
+
return this.http.get(this.url)
|
|
27
|
+
.pipe(map((collections) => {
|
|
28
|
+
const converted = [];
|
|
29
|
+
collections.forEach((collection) => {
|
|
30
|
+
converted.push(this.convertToCombinedCollection(collection));
|
|
31
|
+
});
|
|
32
|
+
return converted;
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
getEditLink(termId, sourceLanguage, targetLanguage) {
|
|
36
|
+
let link = `${this.config.termConfig.apiUrl}/collections/${termId}/mt`;
|
|
37
|
+
if (sourceLanguage) {
|
|
38
|
+
link = `${link}/${sourceLanguage}`;
|
|
39
|
+
}
|
|
40
|
+
if (targetLanguage) {
|
|
41
|
+
link = `${link}/${targetLanguage}`;
|
|
42
|
+
}
|
|
43
|
+
return link;
|
|
44
|
+
}
|
|
45
|
+
convertToCombinedCollection(collection) {
|
|
46
|
+
collection.modifyDate = new Date(collection.modifyDate);
|
|
47
|
+
return new CombinedCollection(collection, null);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
TermApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TermApiService, deps: [{ token: i1.TldTranslateConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
TermApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TermApiService, providedIn: 'root' });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TermApiService, decorators: [{
|
|
53
|
+
type: Injectable,
|
|
54
|
+
args: [{
|
|
55
|
+
providedIn: 'root'
|
|
56
|
+
}]
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.TldTranslateConfigService }, { type: i2.HttpClient }]; } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybS1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL3Rlcm0tYXBpL3Rlcm0tYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0FBS3pFLE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQTZCLE1BQWlDLEVBQW1CLElBQWdCO1FBQXBFLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQW1CLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDO0lBSnRHLElBQUksR0FBRztRQUNMLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLDZCQUE2QixDQUFDO0lBQ3ZFLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxnQkFBMEIsRUFBRSxjQUFzQjtRQUNqRSxNQUFNLE1BQU0sR0FBRztZQUNiLElBQUksRUFBRSxjQUFjO1lBQ3BCLGdCQUFnQjtTQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7YUFDeEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBb0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNqRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQXlCLEVBQUUsQ0FBQztZQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsY0FBdUIsRUFBRSxjQUF1QjtRQUMxRSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sZ0JBQWdCLE1BQU0sS0FBSyxDQUFDO1FBQ3ZFLElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQztTQUNwQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFVBQThCO1FBQ2hFLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7MkdBL0NVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVRsZFRlcm1Db2xsZWN0aW9uIH0gZnJvbSAnLi9tb2RlbHMvdGxkLXRlcm0tY29sbGVjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IENvbWJpbmVkQ29sbGVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlcm1BcGlTZXJ2aWNlIHtcclxuICBnZXQgdXJsKCkge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY29uZmlnLnRlcm1Db25maWcuYXBpVXJsfS9hcGkvdGVybXNlcnZpY2UvY29sbGVjdGlvbmA7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbihkZWZhdWx0TGFuZ3VhZ2VzOiBzdHJpbmdbXSwgY29sbGVjdGlvbk5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIG5hbWU6IGNvbGxlY3Rpb25OYW1lLFxyXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VzXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PElUbGRUZXJtQ29sbGVjdGlvbj4odGhpcy51cmwsIHBhcmFtcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChjb2xsZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Db21iaW5lZENvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENvbGxlY3Rpb25MaXN0KGxhbmd1YWdlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVRsZFRlcm1Db2xsZWN0aW9uW10+KHRoaXMudXJsKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGNvbGxlY3Rpb25zKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQ6IENvbWJpbmVkQ29sbGVjdGlvbltdID0gW107XHJcbiAgICAgICAgICBjb2xsZWN0aW9ucy5mb3JFYWNoKChjb2xsZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnZlcnRlZC5wdXNoKHRoaXMuY29udmVydFRvQ29tYmluZWRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICByZXR1cm4gY29udmVydGVkO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0TGluayh0ZXJtSWQ6IHN0cmluZywgc291cmNlTGFuZ3VhZ2U/OiBzdHJpbmcsIHRhcmdldExhbmd1YWdlPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgbGluayA9IGAke3RoaXMuY29uZmlnLnRlcm1Db25maWcuYXBpVXJsfS9jb2xsZWN0aW9ucy8ke3Rlcm1JZH0vbXRgO1xyXG4gICAgaWYgKHNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgIGxpbmsgPSBgJHtsaW5rfS8ke3NvdXJjZUxhbmd1YWdlfWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGFyZ2V0TGFuZ3VhZ2UpIHtcclxuICAgICAgbGluayA9IGAke2xpbmt9LyR7dGFyZ2V0TGFuZ3VhZ2V9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9Db21iaW5lZENvbGxlY3Rpb24oY29sbGVjdGlvbjogSVRsZFRlcm1Db2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLm1vZGlmeURhdGUgPSBuZXcgRGF0ZShjb2xsZWN0aW9uLm1vZGlmeURhdGUpO1xyXG4gICAgcmV0dXJuIG5ldyBDb21iaW5lZENvbGxlY3Rpb24oY29sbGVjdGlvbiwgbnVsbCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { forkJoin, Subject, tap } from 'rxjs';
|
|
3
|
+
import { MT_TERM_API_TOKEN } from '../../../injection-tokens';
|
|
4
|
+
import { EngineTermCollectionSource } from './engine-term/models';
|
|
5
|
+
import { CombinedCollection } from './models/combined-collection.model';
|
|
6
|
+
import { MtCollectionStatus } from './models/mt-collection-status.enum';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../tld-common/services";
|
|
9
|
+
import * as i2 from "./term-api/term-api.service";
|
|
10
|
+
export class TerminologyService {
|
|
11
|
+
constructor(config, termApi, mtApi) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.termApi = termApi;
|
|
14
|
+
this.mtApi = mtApi;
|
|
15
|
+
this._selected = null;
|
|
16
|
+
this.onDataUpdate = new Subject();
|
|
17
|
+
this.LOCAL_STORAGE_KEY = "systemLastCollections";
|
|
18
|
+
}
|
|
19
|
+
get selected() { return this._selected; }
|
|
20
|
+
set selected(val) {
|
|
21
|
+
this._selected = val;
|
|
22
|
+
this.storeSelectedInLocalStorage();
|
|
23
|
+
if (!this._selected) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!this._selected.mtCollection) {
|
|
27
|
+
this.addToEngine(this._selected);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
get hasAnyCollections() {
|
|
31
|
+
return this._hasAnyCollections;
|
|
32
|
+
}
|
|
33
|
+
get shouldShowPromotion() {
|
|
34
|
+
return !this.hasAnyCollections && !this.hasEditPermissions;
|
|
35
|
+
}
|
|
36
|
+
get canCreateCollections() {
|
|
37
|
+
return this.config.termConfig.canCreateCollection;
|
|
38
|
+
}
|
|
39
|
+
get hasEditPermissions() {
|
|
40
|
+
return this.config?.coreConfig.isAuth && this.canCreateCollections && this.config.termConfig.isTermPortalSupported;
|
|
41
|
+
}
|
|
42
|
+
get isRefreshingCollections() {
|
|
43
|
+
return this._isRefreshingCollections;
|
|
44
|
+
}
|
|
45
|
+
get collections() {
|
|
46
|
+
return this._collections;
|
|
47
|
+
}
|
|
48
|
+
setEngine(engineId, languages = null, setSelectedFromLocalStorage = false) {
|
|
49
|
+
// engine is already set with that ID and no need to refresh it.
|
|
50
|
+
if (engineId !== this.engineId || JSON.stringify(languages) !== JSON.stringify(this.engineLanguages)) {
|
|
51
|
+
this.engineLanguages = languages;
|
|
52
|
+
this.engineId = engineId;
|
|
53
|
+
this._collections = new Set();
|
|
54
|
+
this.emitDataUpdateEvent();
|
|
55
|
+
// avoiding setter, so the null value is not storeed in location since it is not by user action
|
|
56
|
+
this._selected = null;
|
|
57
|
+
}
|
|
58
|
+
if (this.engineId) {
|
|
59
|
+
this.refreshCollections(setSelectedFromLocalStorage, true);
|
|
60
|
+
}
|
|
61
|
+
return this.onDataUpdate.asObservable();
|
|
62
|
+
}
|
|
63
|
+
refreshCollections(setSelectedFromLocalStorage = false, initialRefresh = false) {
|
|
64
|
+
if (!this.engineId || !this.config.termConfig.isCollectionsActivated || this.isRefreshingCollections) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// clear timeout since this refresh replaces scheduled
|
|
68
|
+
this.clearTimeout();
|
|
69
|
+
this._isRefreshingCollections = true;
|
|
70
|
+
let termResponse;
|
|
71
|
+
let mtApiResponse;
|
|
72
|
+
const observables = [
|
|
73
|
+
this.termApi.getCollectionList(this.engineLanguages)
|
|
74
|
+
.pipe(tap((response) => termResponse = response)),
|
|
75
|
+
this.mtApi.getList(this.engineId)
|
|
76
|
+
.pipe(tap((response) => mtApiResponse = response)),
|
|
77
|
+
];
|
|
78
|
+
forkJoin(observables).subscribe({
|
|
79
|
+
// do not need response becaue responses are saved in pipe methods
|
|
80
|
+
next: () => {
|
|
81
|
+
this.isAnyImporting = false;
|
|
82
|
+
// note that termResponse and mtapiresponse gets changed during remove method
|
|
83
|
+
this.removeDeleted(termResponse, mtApiResponse, initialRefresh);
|
|
84
|
+
this.addCollections([...mtApiResponse, ...termResponse], initialRefresh);
|
|
85
|
+
if (setSelectedFromLocalStorage) {
|
|
86
|
+
this.setSelectedFromLocalStorage();
|
|
87
|
+
}
|
|
88
|
+
this._isRefreshingCollections = false;
|
|
89
|
+
this.scheduleRefresh();
|
|
90
|
+
},
|
|
91
|
+
error: (error) => {
|
|
92
|
+
this._isRefreshingCollections = false;
|
|
93
|
+
// it is enough to show error only in console. No special thing is necessary.
|
|
94
|
+
console.error(error);
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
addToEngine(collection) {
|
|
99
|
+
if (!collection || !collection.termCollection) {
|
|
100
|
+
console.error("Trying to attach collection that has no tilde term id.");
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// collection.mtStatus = MtCollectionStatus.PROCESSING;
|
|
104
|
+
// collection.isSynchronized = true;
|
|
105
|
+
this.mtApi.add(this.engineId, collection)
|
|
106
|
+
.subscribe({
|
|
107
|
+
error: () => {
|
|
108
|
+
// collection.mtStatus = MtCollectionStatus.ERROR;
|
|
109
|
+
// collection.errorKey = ErrorCode.COLLECTION_IMPORT;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
create(sourceLanguage, targetLanguage, collectionName, redirectToEdit = true) {
|
|
114
|
+
return this.termApi.createCollection([sourceLanguage, targetLanguage], collectionName).pipe(tap((collection) => {
|
|
115
|
+
if (redirectToEdit) {
|
|
116
|
+
window.open(this.termApi.getEditLink(collection.termCollection.id, sourceLanguage, targetLanguage), "_blank");
|
|
117
|
+
}
|
|
118
|
+
this._collections.add(collection);
|
|
119
|
+
this.emitDataUpdateEvent();
|
|
120
|
+
this._hasAnyCollections = true;
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
updateIfNecessary(collection) {
|
|
124
|
+
// collection is not imported and should be attached to engine
|
|
125
|
+
if (collection.isEdited()) {
|
|
126
|
+
this.mtApi.add(this.engineId, collection).subscribe((updatedCollection) => {
|
|
127
|
+
collection.update(updatedCollection);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @returns selected collection id if it is allowed to use collection for translations
|
|
134
|
+
*/
|
|
135
|
+
selectedIdForTranslation() {
|
|
136
|
+
if (this.selected?.mtCollection && (this.selected.mtCollection.lastUpdated || this.selected.mtCollection?.status === MtCollectionStatus.READY)) {
|
|
137
|
+
return this.selected.mtCollection?.id;
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
startAutoRefresh(engineId, languages = null, setSelectedFromLocalStorage = false) {
|
|
142
|
+
this.hardAutoRefresh = true;
|
|
143
|
+
return this.setEngine(engineId ?? this.engineId, languages ?? this.engineLanguages, setSelectedFromLocalStorage);
|
|
144
|
+
}
|
|
145
|
+
stopAutoRefresh() {
|
|
146
|
+
this.clearTimeout();
|
|
147
|
+
this.isSoftAutoRefreshOn = false;
|
|
148
|
+
this.hardAutoRefresh = false;
|
|
149
|
+
}
|
|
150
|
+
removeMtCollection(collection, engineId = this.engineId) {
|
|
151
|
+
return this.mtApi.remove(engineId, collection).pipe(tap((response) => {
|
|
152
|
+
collection.update(response);
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
scheduleRefresh(timeout) {
|
|
156
|
+
// if menu is closed and selected collection is not importing anymore - auto refreshing should be cancelled.
|
|
157
|
+
if (!this.hardAutoRefresh && !this.selected?.isImporting && this.isSoftAutoRefreshOn) {
|
|
158
|
+
this.stopAutoRefresh();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// if hard auto refresho on, auto refresh should be on. If hard autoreferesh is off , refresh needs to be done only if selected is importing.
|
|
162
|
+
if (this.hardAutoRefresh || (!this.refreshTimeout && (this.isSoftAutoRefreshOn || this.selected?.isImporting))) {
|
|
163
|
+
const timeoutMs = timeout ?? (this.isAnyImporting ? this.config.termConfig.refreshTimeoutMsWhenImporting : this.config.termConfig.refreshTimeoutMs);
|
|
164
|
+
this.refreshTimeout = setTimeout(() => {
|
|
165
|
+
this.refreshTimeout = null;
|
|
166
|
+
this.refreshCollections();
|
|
167
|
+
}, timeoutMs);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
*
|
|
172
|
+
* @param newCollections
|
|
173
|
+
* @param initialRefresh Whether also editable collection fields should be updated. If not initial refresh, editable fields will not be updated.
|
|
174
|
+
*/
|
|
175
|
+
addCollections(newCollections, initialRefresh) {
|
|
176
|
+
// sets collection list to this value at the end, so deleted collections are not in the list.
|
|
177
|
+
for (let collection of newCollections) {
|
|
178
|
+
// User shouldn't see failed collections if he can't retry to import them.
|
|
179
|
+
if (!this.hasEditPermissions
|
|
180
|
+
&& collection.mtStatus === MtCollectionStatus.ERROR) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (collection.isImporting) {
|
|
184
|
+
this.isAnyImporting = true;
|
|
185
|
+
}
|
|
186
|
+
let existing = CombinedCollection.findExistingCollectionFromList(this.collections, collection);
|
|
187
|
+
// If term api doesn't have engine languages, collection should not be shown (if it is not already imported somehow);
|
|
188
|
+
if (!existing && collection.source === EngineTermCollectionSource.TILDE_TERM) {
|
|
189
|
+
let hasLanguages = true;
|
|
190
|
+
for (let i = 0; i < this.engineLanguages?.length; i++) {
|
|
191
|
+
if (!collection.termCollection.languages?.find(lang => lang.id === this.engineLanguages[i])) {
|
|
192
|
+
hasLanguages = false;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!hasLanguages) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (!existing) {
|
|
201
|
+
this._collections.add(collection);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
existing.update(collection, initialRefresh);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// this._collections = updatedCollections;
|
|
208
|
+
this.emitDataUpdateEvent();
|
|
209
|
+
this._hasAnyCollections = this._collections.size > 0;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Should be called after refresh to check if there is any collections from api that are deleted.
|
|
213
|
+
*/
|
|
214
|
+
removeDeleted(termResponse, mtResponse, initialRefresh) {
|
|
215
|
+
for (const collection of this.collections) {
|
|
216
|
+
const termExistingIx = CombinedCollection.findExistingIndexFromList(termResponse, collection);
|
|
217
|
+
const mtExistingIx = CombinedCollection.findExistingIndexFromList(mtResponse, collection);
|
|
218
|
+
if (termExistingIx === null && mtExistingIx === null) {
|
|
219
|
+
this.collections.delete(collection);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
if (termExistingIx !== null) {
|
|
223
|
+
const existing = termResponse[termExistingIx];
|
|
224
|
+
collection.update(existing, initialRefresh);
|
|
225
|
+
termResponse.splice(termExistingIx, 1);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
collection.deleteTerms();
|
|
229
|
+
}
|
|
230
|
+
if (mtExistingIx !== null) {
|
|
231
|
+
const existing = mtResponse[mtExistingIx];
|
|
232
|
+
collection.update(existing, initialRefresh);
|
|
233
|
+
mtResponse.splice(mtExistingIx, 1);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
collection.deleteMT();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
clearTimeout() {
|
|
242
|
+
if (this.refreshTimeout) {
|
|
243
|
+
clearTimeout(this.refreshTimeout);
|
|
244
|
+
this.refreshTimeout = null;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
setSelectedFromLocalStorage() {
|
|
248
|
+
// If no collections or selected is already set, it should not be changed from localstorage value. (Usually, localstorage should have the same value).
|
|
249
|
+
if (this.collections?.size === 0 || this.selected) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const storedId = this.readLocalStorage()?.[this.engineId];
|
|
253
|
+
if (!storedId) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const existing = Array.from(this.collections).find(item => item.termCollection?.id === storedId || item.mtCollection?.id === storedId);
|
|
257
|
+
this.selected = existing;
|
|
258
|
+
}
|
|
259
|
+
storeSelectedInLocalStorage() {
|
|
260
|
+
let localStorageObject = this.readLocalStorage();
|
|
261
|
+
if (!localStorageObject) {
|
|
262
|
+
localStorageObject = {};
|
|
263
|
+
}
|
|
264
|
+
localStorageObject[this.engineId] = this.selected ? (this.selected.termCollection?.id ?? this.selected.mtCollection?.id) : null;
|
|
265
|
+
// store term id if it exists
|
|
266
|
+
localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));
|
|
267
|
+
}
|
|
268
|
+
readLocalStorage() {
|
|
269
|
+
const data = localStorage.getItem(this.LOCAL_STORAGE_KEY);
|
|
270
|
+
try {
|
|
271
|
+
return JSON.parse(data);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
emitDataUpdateEvent() {
|
|
278
|
+
this.onDataUpdate.next(this.collections);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
TerminologyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, deps: [{ token: i1.TldTranslateConfigService }, { token: i2.TermApiService }, { token: MT_TERM_API_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
282
|
+
TerminologyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, providedIn: 'root' });
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, decorators: [{
|
|
284
|
+
type: Injectable,
|
|
285
|
+
args: [{
|
|
286
|
+
providedIn: 'root'
|
|
287
|
+
}]
|
|
288
|
+
}], ctorParameters: function () { return [{ type: i1.TldTranslateConfigService }, { type: i2.TermApiService }, { type: undefined, decorators: [{
|
|
289
|
+
type: Inject,
|
|
290
|
+
args: [MT_TERM_API_TOKEN]
|
|
291
|
+
}] }]; } });
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWlub2xvZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL3Rlcm1pbm9sb2d5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBYyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBT3hFLE1BQU0sT0FBTyxrQkFBa0I7SUE0RDdCLFlBQTZCLE1BQWlDLEVBQzNDLE9BQXVCLEVBQ0wsS0FBcUI7UUFGN0IsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDM0MsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDTCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQTVEbEQsY0FBUyxHQUF1QixJQUFJLENBQUM7UUE4QzVCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUFFdEQsc0JBQWlCLEdBQUcsdUJBQXVCLENBQUM7SUFZQyxDQUFDO0lBM0QvRCxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksUUFBUSxDQUFDLEdBQXVCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNsQztJQUVILENBQUM7SUFNRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBR0QsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0lBQ3JILENBQUM7SUFHRCxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBR0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFrQkQsU0FBUyxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsSUFBSSxFQUFFLDJCQUEyQixHQUFHLEtBQUs7UUFDekYsZ0VBQWdFO1FBQ2hFLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNwRyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsK0ZBQStGO1lBQy9GLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM1RDtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxFQUFFLGNBQWMsR0FBRyxLQUFLO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ3BHLE9BQU87U0FDUjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUVyQyxJQUFJLFlBQWtDLENBQUM7UUFDdkMsSUFBSSxhQUFtQyxDQUFDO1FBRXhDLE1BQU0sV0FBVyxHQUF1QztZQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQ2pELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FDM0M7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2lCQUM5QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQzVDO1NBQ0osQ0FBQztRQUNGLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUIsa0VBQWtFO1lBQ2xFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzVCLDZFQUE2RTtnQkFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDekUsSUFBSSwyQkFBMkIsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7aUJBQ3BDO2dCQUNELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdEMsNkVBQTZFO2dCQUM3RSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQThCO1FBQ3hDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztZQUN4RSxPQUFPO1NBQ1I7UUFDRCx1REFBdUQ7UUFDdkQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO2FBQ3RDLFNBQVMsQ0FBQztZQUNULEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1Ysa0RBQWtEO2dCQUNsRCxxREFBcUQ7WUFDdkQsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUVOLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBc0IsRUFBRSxjQUFzQixFQUFFLGNBQXNCLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDbEcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FDekYsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDakIsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQy9HO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQThCO1FBQzlDLDhEQUE4RDtRQUM5RCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3hFLFVBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVEOzs7S0FHQztJQUNELHdCQUF3QjtRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5SSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWlCLEVBQUUsWUFBc0IsSUFBSSxFQUFFLDJCQUEyQixHQUFHLEtBQUs7UUFDakcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBOEIsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7UUFDekUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZ0I7UUFDdEMsNEdBQTRHO1FBQzVHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3BGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFFRCw2SUFBNkk7UUFDN0ksSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRTtZQUM5RyxNQUFNLFNBQVMsR0FBRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNwSixJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtZQUMzQixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLGNBQTRDLEVBQUUsY0FBdUI7UUFDMUYsNkZBQTZGO1FBQzdGLEtBQUssSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO1lBQ3JDLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjttQkFDdkIsVUFBVSxDQUFDLFFBQVEsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JELFNBQVM7YUFDVjtZQUVELElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDNUI7WUFDRCxJQUFJLFFBQVEsR0FBdUIsa0JBQWtCLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUVuSCxxSEFBcUg7WUFDckgsSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLDBCQUEwQixDQUFDLFVBQVUsRUFBRTtnQkFDNUUsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDM0YsWUFBWSxHQUFHLEtBQUssQ0FBQzt3QkFDckIsTUFBTTtxQkFDUDtpQkFDRjtnQkFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQixTQUFTO2lCQUNWO2FBQ0Y7WUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25DO2lCQUNJO2dCQUNILFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsWUFBa0MsRUFBRSxVQUFnQyxFQUFFLGNBQXVCO1FBRWpILEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN6QyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDOUYsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzFGLElBQUksY0FBYyxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO2dCQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyQztpQkFDSTtnQkFDSCxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUU7b0JBQzNCLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDOUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7b0JBQzVDLFlBQVksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN4QztxQkFDSTtvQkFDSCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQzFCO2dCQUVELElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtvQkFDekIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMxQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDNUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3BDO3FCQUNJO29CQUNILFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDdkI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLHNKQUFzSjtRQUN0SixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pELE9BQU07U0FDUDtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDdkksSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUdPLDJCQUEyQjtRQUNqQyxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN2QixrQkFBa0IsR0FBRyxFQUFFLENBQUM7U0FDekI7UUFFRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoSSw2QkFBNkI7UUFDN0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFELElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxNQUFNO1lBQ0osT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OytHQW5WVSxrQkFBa0IseUZBOERuQixpQkFBaUI7bUhBOURoQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkErREksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNVF9URVJNX0FQSV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uL2luamVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlIH0gZnJvbSAnLi9lbmdpbmUtdGVybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb21iaW5lZENvbGxlY3Rpb24gfSBmcm9tICcuL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSAnLi9tb2RlbHMvbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bSc7XHJcbmltcG9ydCB7IElNdFRlcm1TZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvbXQtdGVybS1zZXJ2aWNlLm1vZGVsJztcclxuaW1wb3J0IHsgVGVybUFwaVNlcnZpY2UgfSBmcm9tICcuL3Rlcm0tYXBpL3Rlcm0tYXBpLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVybWlub2xvZ3lTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IENvbWJpbmVkQ29sbGVjdGlvbiA9IG51bGw7XHJcbiAgZ2V0IHNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7IH1cclxuICBzZXQgc2VsZWN0ZWQodmFsOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsO1xyXG4gICAgdGhpcy5zdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIGlmICghdGhpcy5fc2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fc2VsZWN0ZWQubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9FbmdpbmUodGhpcy5fc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNBbnlJbXBvcnRpbmc6IGJvb2xlYW47XHJcblxyXG5cclxuICBwcml2YXRlIF9oYXNBbnlDb2xsZWN0aW9uczogYm9vbGVhbjtcclxuICBnZXQgaGFzQW55Q29sbGVjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGFzQW55Q29sbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IHNob3VsZFNob3dQcm9tb3Rpb24oKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuaGFzQW55Q29sbGVjdGlvbnMgJiYgIXRoaXMuaGFzRWRpdFBlcm1pc3Npb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkNyZWF0ZUNvbGxlY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRlcm1Db25maWcuY2FuQ3JlYXRlQ29sbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCBoYXNFZGl0UGVybWlzc2lvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmNvcmVDb25maWcuaXNBdXRoICYmIHRoaXMuY2FuQ3JlYXRlQ29sbGVjdGlvbnMgJiYgdGhpcy5jb25maWcudGVybUNvbmZpZy5pc1Rlcm1Qb3J0YWxTdXBwb3J0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1JlZnJlc2hpbmdDb2xsZWN0aW9uczogYm9vbGVhbjtcclxuICBnZXQgaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb2xsZWN0aW9uczogU2V0PENvbWJpbmVkQ29sbGVjdGlvbj47XHJcbiAgZ2V0IGNvbGxlY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBvbkRhdGFVcGRhdGUgPSBuZXcgU3ViamVjdDxTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPj4oKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBMT0NBTF9TVE9SQUdFX0tFWSA9IFwic3lzdGVtTGFzdENvbGxlY3Rpb25zXCI7XHJcbiAgcHJpdmF0ZSBlbmdpbmVJZDogc3RyaW5nO1xyXG4gIC8vIHN0b3JlcyBsYW5ndWFnZSBjb2RlcyB3aGljaCBhcmUgdXNlZCB0byBmaWx0ZXIgdmlzYmxlIGNvbGxlY3Rpb25zIGZyb20gdGVybSBhcGkuXHJcbiAgcHJpdmF0ZSBlbmdpbmVMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgcmVmcmVzaFRpbWVvdXQ6IGFueTtcclxuICAvLyBzb2Z0IHJlZnJlc2ggdGFrZXMgaW4gYWNjb3VudCBvdGhlciBwYXJhbXMgYXMgd2VsbC5cclxuICBwcml2YXRlIGlzU29mdEF1dG9SZWZyZXNoT246IGJvb2xlYW47XHJcbiAgLy8gc2hvdWxkIGRvIGF1dG9yZWZyZXNoIGJ5IGlnbm9yaW5nIGFueSBvdGhlciBwYXJhbXMuXHJcbiAgcHJpdmF0ZSBoYXJkQXV0b1JlZnJlc2g6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtQXBpOiBUZXJtQXBpU2VydmljZSxcclxuICAgIEBJbmplY3QoTVRfVEVSTV9BUElfVE9LRU4pIHByaXZhdGUgbXRBcGk6IElNdFRlcm1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgc2V0RW5naW5lKGVuZ2luZUlkOiBzdHJpbmcsIGxhbmd1YWdlczogc3RyaW5nW10gPSBudWxsLCBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZSk6IE9ic2VydmFibGU8U2V0PENvbWJpbmVkQ29sbGVjdGlvbj4+IHtcclxuICAgIC8vIGVuZ2luZSBpcyBhbHJlYWR5IHNldCB3aXRoIHRoYXQgSUQgYW5kIG5vIG5lZWQgdG8gcmVmcmVzaCBpdC5cclxuICAgIGlmIChlbmdpbmVJZCAhPT0gdGhpcy5lbmdpbmVJZCB8fCBKU09OLnN0cmluZ2lmeShsYW5ndWFnZXMpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLmVuZ2luZUxhbmd1YWdlcykpIHtcclxuICAgICAgdGhpcy5lbmdpbmVMYW5ndWFnZXMgPSBsYW5ndWFnZXM7XHJcbiAgICAgIHRoaXMuZW5naW5lSWQgPSBlbmdpbmVJZDtcclxuICAgICAgdGhpcy5fY29sbGVjdGlvbnMgPSBuZXcgU2V0KCk7XHJcbiAgICAgIHRoaXMuZW1pdERhdGFVcGRhdGVFdmVudCgpO1xyXG4gICAgICAvLyBhdm9pZGluZyBzZXR0ZXIsIHNvIHRoZSBudWxsIHZhbHVlIGlzIG5vdCBzdG9yZWVkIGluIGxvY2F0aW9uIHNpbmNlIGl0IGlzIG5vdCBieSB1c2VyIGFjdGlvblxyXG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZW5naW5lSWQpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoQ29sbGVjdGlvbnMoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5vbkRhdGFVcGRhdGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQ29sbGVjdGlvbnMoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2UsIGluaXRpYWxSZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5lbmdpbmVJZCB8fCAhdGhpcy5jb25maWcudGVybUNvbmZpZy5pc0NvbGxlY3Rpb25zQWN0aXZhdGVkIHx8IHRoaXMuaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNsZWFyIHRpbWVvdXQgc2luY2UgdGhpcyByZWZyZXNoIHJlcGxhY2VzIHNjaGVkdWxlZFxyXG4gICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcclxuXHJcbiAgICB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgbGV0IHRlcm1SZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW107XHJcbiAgICBsZXQgbXRBcGlSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW107XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uW10+W10gPSBbXHJcbiAgICAgIHRoaXMudGVybUFwaS5nZXRDb2xsZWN0aW9uTGlzdCh0aGlzLmVuZ2luZUxhbmd1YWdlcylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHRlcm1SZXNwb25zZSA9IHJlc3BvbnNlKVxyXG4gICAgICAgICksXHJcbiAgICAgIHRoaXMubXRBcGkuZ2V0TGlzdCh0aGlzLmVuZ2luZUlkKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4gbXRBcGlSZXNwb25zZSA9IHJlc3BvbnNlKVxyXG4gICAgICAgICksXHJcbiAgICBdO1xyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIC8vIGRvIG5vdCBuZWVkIHJlc3BvbnNlIGJlY2F1ZSByZXNwb25zZXMgYXJlIHNhdmVkIGluIHBpcGUgbWV0aG9kc1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FueUltcG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIG5vdGUgdGhhdCB0ZXJtUmVzcG9uc2UgYW5kIG10YXBpcmVzcG9uc2UgZ2V0cyBjaGFuZ2VkIGR1cmluZyByZW1vdmUgbWV0aG9kXHJcbiAgICAgICAgdGhpcy5yZW1vdmVEZWxldGVkKHRlcm1SZXNwb25zZSwgbXRBcGlSZXNwb25zZSwgaW5pdGlhbFJlZnJlc2gpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29sbGVjdGlvbnMoWy4uLm10QXBpUmVzcG9uc2UsIC4uLnRlcm1SZXNwb25zZV0sIGluaXRpYWxSZWZyZXNoKTtcclxuICAgICAgICBpZiAoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIGl0IGlzIGVub3VnaCB0byBzaG93IGVycm9yIG9ubHkgaW4gY29uc29sZS4gTm8gc3BlY2lhbCB0aGluZyBpcyBuZWNlc3NhcnkuXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZFRvRW5naW5lKGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbikge1xyXG4gICAgaWYgKCFjb2xsZWN0aW9uIHx8ICFjb2xsZWN0aW9uLnRlcm1Db2xsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcnlpbmcgdG8gYXR0YWNoIGNvbGxlY3Rpb24gdGhhdCBoYXMgbm8gdGlsZGUgdGVybSBpZC5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGNvbGxlY3Rpb24ubXRTdGF0dXMgPSBNdENvbGxlY3Rpb25TdGF0dXMuUFJPQ0VTU0lORztcclxuICAgIC8vIGNvbGxlY3Rpb24uaXNTeW5jaHJvbml6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5tdEFwaS5hZGQodGhpcy5lbmdpbmVJZCwgY29sbGVjdGlvbilcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIC8vIGNvbGxlY3Rpb24ubXRTdGF0dXMgPSBNdENvbGxlY3Rpb25TdGF0dXMuRVJST1I7XHJcbiAgICAgICAgICAvLyBjb2xsZWN0aW9uLmVycm9yS2V5ID0gRXJyb3JDb2RlLkNPTExFQ1RJT05fSU1QT1JUO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBjcmVhdGUoc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZywgY29sbGVjdGlvbk5hbWU6IHN0cmluZywgcmVkaXJlY3RUb0VkaXQgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtQXBpLmNyZWF0ZUNvbGxlY3Rpb24oW3NvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZV0sIGNvbGxlY3Rpb25OYW1lKS5waXBlKFxyXG4gICAgICB0YXAoKGNvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICBpZiAocmVkaXJlY3RUb0VkaXQpIHtcclxuICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMudGVybUFwaS5nZXRFZGl0TGluayhjb2xsZWN0aW9uLnRlcm1Db2xsZWN0aW9uLmlkLCBzb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2UpLCBcIl9ibGFua1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbnMuYWRkKGNvbGxlY3Rpb24pO1xyXG4gICAgICAgIHRoaXMuZW1pdERhdGFVcGRhdGVFdmVudCgpO1xyXG4gICAgICAgIHRoaXMuX2hhc0FueUNvbGxlY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJZk5lY2Vzc2FyeShjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIC8vIGNvbGxlY3Rpb24gaXMgbm90IGltcG9ydGVkIGFuZCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gZW5naW5lXHJcbiAgICBpZiAoY29sbGVjdGlvbi5pc0VkaXRlZCgpKSB7XHJcbiAgICAgIHRoaXMubXRBcGkuYWRkKHRoaXMuZW5naW5lSWQsIGNvbGxlY3Rpb24pLnN1YnNjcmliZSgodXBkYXRlZENvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZSh1cGRhdGVkQ29sbGVjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqXHJcbiAqIEByZXR1cm5zIHNlbGVjdGVkIGNvbGxlY3Rpb24gaWQgaWYgaXQgaXMgYWxsb3dlZCB0byB1c2UgY29sbGVjdGlvbiBmb3IgdHJhbnNsYXRpb25zXHJcbiAqL1xyXG4gIHNlbGVjdGVkSWRGb3JUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQ/Lm10Q29sbGVjdGlvbiAmJiAodGhpcy5zZWxlY3RlZC5tdENvbGxlY3Rpb24ubGFzdFVwZGF0ZWQgfHwgdGhpcy5zZWxlY3RlZC5tdENvbGxlY3Rpb24/LnN0YXR1cyA9PT0gTXRDb2xsZWN0aW9uU3RhdHVzLlJFQURZKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZC5tdENvbGxlY3Rpb24/LmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGFydEF1dG9SZWZyZXNoKGVuZ2luZUlkPzogc3RyaW5nLCBsYW5ndWFnZXM6IHN0cmluZ1tdID0gbnVsbCwgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaGFyZEF1dG9SZWZyZXNoID0gdHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLnNldEVuZ2luZShlbmdpbmVJZCA/PyB0aGlzLmVuZ2luZUlkLCBsYW5ndWFnZXMgPz8gdGhpcy5lbmdpbmVMYW5ndWFnZXMsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSk7XHJcbiAgfVxyXG5cclxuICBzdG9wQXV0b1JlZnJlc2goKSB7XHJcbiAgICB0aGlzLmNsZWFyVGltZW91dCgpO1xyXG5cclxuICAgIHRoaXMuaXNTb2Z0QXV0b1JlZnJlc2hPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXJkQXV0b1JlZnJlc2ggPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU10Q29sbGVjdGlvbihjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24sIGVuZ2luZUlkID0gdGhpcy5lbmdpbmVJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXRBcGkucmVtb3ZlKGVuZ2luZUlkLCBjb2xsZWN0aW9uKS5waXBlKFxyXG4gICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29sbGVjdGlvbi51cGRhdGUocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NoZWR1bGVSZWZyZXNoKHRpbWVvdXQ/OiBudW1iZXIpIHtcclxuICAgIC8vIGlmIG1lbnUgaXMgY2xvc2VkIGFuZCBzZWxlY3RlZCBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRpbmcgYW55bW9yZSAtIGF1dG8gcmVmcmVzaGluZyBzaG91bGQgYmUgY2FuY2VsbGVkLlxyXG4gICAgaWYgKCF0aGlzLmhhcmRBdXRvUmVmcmVzaCAmJiAhdGhpcy5zZWxlY3RlZD8uaXNJbXBvcnRpbmcgJiYgdGhpcy5pc1NvZnRBdXRvUmVmcmVzaE9uKSB7XHJcbiAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiBoYXJkIGF1dG8gcmVmcmVzaG8gb24sIGF1dG8gcmVmcmVzaCBzaG91bGQgYmUgb24uIElmIGhhcmQgYXV0b3JlZmVyZXNoIGlzIG9mZiAsIHJlZnJlc2ggbmVlZHMgdG8gYmUgZG9uZSBvbmx5IGlmIHNlbGVjdGVkIGlzIGltcG9ydGluZy5cclxuICAgIGlmICh0aGlzLmhhcmRBdXRvUmVmcmVzaCB8fCAoIXRoaXMucmVmcmVzaFRpbWVvdXQgJiYgKHRoaXMuaXNTb2Z0QXV0b1JlZnJlc2hPbiB8fCB0aGlzLnNlbGVjdGVkPy5pc0ltcG9ydGluZykpKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRpbWVvdXQgPz8gKHRoaXMuaXNBbnlJbXBvcnRpbmcgPyB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLnJlZnJlc2hUaW1lb3V0TXNXaGVuSW1wb3J0aW5nIDogdGhpcy5jb25maWcudGVybUNvbmZpZy5yZWZyZXNoVGltZW91dE1zKTtcclxuICAgICAgdGhpcy5yZWZyZXNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaENvbGxlY3Rpb25zKClcclxuICAgICAgfSwgdGltZW91dE1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5ld0NvbGxlY3Rpb25zXHJcbiAgICogQHBhcmFtIGluaXRpYWxSZWZyZXNoIFdoZXRoZXIgYWxzbyBlZGl0YWJsZSBjb2xsZWN0aW9uIGZpZWxkcyBzaG91bGQgYmUgdXBkYXRlZC4gSWYgbm90IGluaXRpYWwgcmVmcmVzaCwgZWRpdGFibGUgZmllbGRzIHdpbGwgbm90IGJlIHVwZGF0ZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRDb2xsZWN0aW9ucyhuZXdDb2xsZWN0aW9uczogSXRlcmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiwgaW5pdGlhbFJlZnJlc2g6IGJvb2xlYW4pIHtcclxuICAgIC8vIHNldHMgY29sbGVjdGlvbiBsaXN0IHRvIHRoaXMgdmFsdWUgYXQgdGhlIGVuZCwgc28gZGVsZXRlZCBjb2xsZWN0aW9ucyBhcmUgbm90IGluIHRoZSBsaXN0LlxyXG4gICAgZm9yIChsZXQgY29sbGVjdGlvbiBvZiBuZXdDb2xsZWN0aW9ucykge1xyXG4gICAgICAvLyBVc2VyIHNob3VsZG4ndCBzZWUgZmFpbGVkIGNvbGxlY3Rpb25zIGlmIGhlIGNhbid0IHJldHJ5IHRvIGltcG9ydCB0aGVtLlxyXG4gICAgICBpZiAoIXRoaXMuaGFzRWRpdFBlcm1pc3Npb25zXHJcbiAgICAgICAgJiYgY29sbGVjdGlvbi5tdFN0YXR1cyA9PT0gTXRDb2xsZWN0aW9uU3RhdHVzLkVSUk9SKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb2xsZWN0aW9uLmlzSW1wb3J0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5pc0FueUltcG9ydGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGV4aXN0aW5nOiBDb21iaW5lZENvbGxlY3Rpb24gPSBDb21iaW5lZENvbGxlY3Rpb24uZmluZEV4aXN0aW5nQ29sbGVjdGlvbkZyb21MaXN0KHRoaXMuY29sbGVjdGlvbnMsIGNvbGxlY3Rpb24pO1xyXG5cclxuICAgICAgLy8gSWYgdGVybSBhcGkgZG9lc24ndCBoYXZlIGVuZ2luZSBsYW5ndWFnZXMsIGNvbGxlY3Rpb24gc2hvdWxkIG5vdCBiZSBzaG93biAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW1wb3J0ZWQgc29tZWhvdyk7XHJcbiAgICAgIGlmICghZXhpc3RpbmcgJiYgY29sbGVjdGlvbi5zb3VyY2UgPT09IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLlRJTERFX1RFUk0pIHtcclxuICAgICAgICBsZXQgaGFzTGFuZ3VhZ2VzID0gdHJ1ZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW5naW5lTGFuZ3VhZ2VzPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKCFjb2xsZWN0aW9uLnRlcm1Db2xsZWN0aW9uLmxhbmd1YWdlcz8uZmluZChsYW5nID0+IGxhbmcuaWQgPT09IHRoaXMuZW5naW5lTGFuZ3VhZ2VzW2ldKSkge1xyXG4gICAgICAgICAgICBoYXNMYW5ndWFnZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWhhc0xhbmd1YWdlcykge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWV4aXN0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbnMuYWRkKGNvbGxlY3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGV4aXN0aW5nLnVwZGF0ZShjb2xsZWN0aW9uLCBpbml0aWFsUmVmcmVzaCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLl9jb2xsZWN0aW9ucyA9IHVwZGF0ZWRDb2xsZWN0aW9ucztcclxuICAgIHRoaXMuZW1pdERhdGFVcGRhdGVFdmVudCgpO1xyXG4gICAgdGhpcy5faGFzQW55Q29sbGVjdGlvbnMgPSB0aGlzLl9jb2xsZWN0aW9ucy5zaXplID4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgcmVmcmVzaCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgY29sbGVjdGlvbnMgZnJvbSBhcGkgdGhhdCBhcmUgZGVsZXRlZC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURlbGV0ZWQodGVybVJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXSwgbXRSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW10sIGluaXRpYWxSZWZyZXNoOiBib29sZWFuKSB7XHJcblxyXG4gICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIHRoaXMuY29sbGVjdGlvbnMpIHtcclxuICAgICAgY29uc3QgdGVybUV4aXN0aW5nSXggPSBDb21iaW5lZENvbGxlY3Rpb24uZmluZEV4aXN0aW5nSW5kZXhGcm9tTGlzdCh0ZXJtUmVzcG9uc2UsIGNvbGxlY3Rpb24pO1xyXG4gICAgICBjb25zdCBtdEV4aXN0aW5nSXggPSBDb21iaW5lZENvbGxlY3Rpb24uZmluZEV4aXN0aW5nSW5kZXhGcm9tTGlzdChtdFJlc3BvbnNlLCBjb2xsZWN0aW9uKTtcclxuICAgICAgaWYgKHRlcm1FeGlzdGluZ0l4ID09PSBudWxsICYmIG10RXhpc3RpbmdJeCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbnMuZGVsZXRlKGNvbGxlY3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0ZXJtRXhpc3RpbmdJeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0ZXJtUmVzcG9uc2VbdGVybUV4aXN0aW5nSXhdO1xyXG4gICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUoZXhpc3RpbmcsIGluaXRpYWxSZWZyZXNoKTtcclxuICAgICAgICAgIHRlcm1SZXNwb25zZS5zcGxpY2UodGVybUV4aXN0aW5nSXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24uZGVsZXRlVGVybXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChtdEV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbXRSZXNwb25zZVttdEV4aXN0aW5nSXhdO1xyXG4gICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUoZXhpc3RpbmcsIGluaXRpYWxSZWZyZXNoKTtcclxuICAgICAgICAgIG10UmVzcG9uc2Uuc3BsaWNlKG10RXhpc3RpbmdJeCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29sbGVjdGlvbi5kZWxldGVNVCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclRpbWVvdXQoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZW91dCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICAvLyBJZiBubyBjb2xsZWN0aW9ucyBvciBzZWxlY3RlZCBpcyBhbHJlYWR5IHNldCwgaXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGZyb20gbG9jYWxzdG9yYWdlIHZhbHVlLiAoVXN1YWxseSwgbG9jYWxzdG9yYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlKS5cclxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb25zPy5zaXplID09PSAwIHx8IHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RvcmVkSWQgPSB0aGlzLnJlYWRMb2NhbFN0b3JhZ2UoKT8uW3RoaXMuZW5naW5lSWRdO1xyXG4gICAgaWYgKCFzdG9yZWRJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBBcnJheS5mcm9tKHRoaXMuY29sbGVjdGlvbnMpLmZpbmQoaXRlbSA9PiBpdGVtLnRlcm1Db2xsZWN0aW9uPy5pZCA9PT0gc3RvcmVkSWQgfHwgaXRlbS5tdENvbGxlY3Rpb24/LmlkID09PSBzdG9yZWRJZCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gZXhpc3Rpbmc7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBzdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBsZXQgbG9jYWxTdG9yYWdlT2JqZWN0ID0gdGhpcy5yZWFkTG9jYWxTdG9yYWdlKCk7XHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZU9iamVjdCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2VPYmplY3QgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBsb2NhbFN0b3JhZ2VPYmplY3RbdGhpcy5lbmdpbmVJZF0gPSB0aGlzLnNlbGVjdGVkID8gKHRoaXMuc2VsZWN0ZWQudGVybUNvbGxlY3Rpb24/LmlkID8/IHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZCkgOiBudWxsO1xyXG4gICAgLy8gc3RvcmUgdGVybSBpZCBpZiBpdCBleGlzdHNcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTE9DQUxfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGxvY2FsU3RvcmFnZU9iamVjdCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkTG9jYWxTdG9yYWdlKCk6IGFueSB7XHJcbiAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTF9TVE9SQUdFX0tFWSk7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIH1cclxuICAgIGNhdGNoIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXREYXRhVXBkYXRlRXZlbnQoKSB7XHJcbiAgICB0aGlzLm9uRGF0YVVwZGF0ZS5uZXh0KHRoaXMuY29sbGVjdGlvbnMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../services/
|
|
4
|
-
import * as i2 from "
|
|
5
|
-
import * as i3 from "
|
|
6
|
-
import * as i4 from "
|
|
3
|
+
import * as i1 from "../services/terminology.service";
|
|
4
|
+
import * as i2 from "../../tld-tooltip/services/tld-system.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@angular/flex-layout/flex";
|
|
7
|
+
import * as i5 from "../tld-term-collection-list/tld-term-collection-list.component";
|
|
8
|
+
import * as i6 from "../tld-term-promotion/tld-term-promotion.component";
|
|
9
|
+
import * as i7 from "../create-collection/create-collection.component";
|
|
7
10
|
export class TldTermCollectionComponent {
|
|
8
|
-
constructor(
|
|
9
|
-
this.
|
|
11
|
+
constructor(terminologyService, systemService) {
|
|
12
|
+
this.terminologyService = terminologyService;
|
|
13
|
+
this.systemService = systemService;
|
|
14
|
+
}
|
|
15
|
+
get promotion() { return this.terminologyService.shouldShowPromotion; }
|
|
16
|
+
get hasEditPermissions() { return this.terminologyService.hasEditPermissions; }
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.subscription = this.systemService.getActiveData().subscribe((data) => {
|
|
19
|
+
this.sourceLanguageCode = data.sourceLang.lang;
|
|
20
|
+
this.targetLanguageCode = data.targetLang.lang;
|
|
21
|
+
this.terminologyService.setEngine(data.systemId, [this.sourceLanguageCode, this.targetLanguageCode]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
ngOnDestroy() {
|
|
25
|
+
this.subscription.unsubscribe();
|
|
10
26
|
}
|
|
11
|
-
get promotion() { return this.terms.shouldShowPromotion; }
|
|
12
27
|
}
|
|
13
|
-
TldTermCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTermCollectionComponent, deps: [{ token: i1.
|
|
14
|
-
TldTermCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TldTermCollectionComponent, selector: "tld-term-collection", ngImport: i0, template: "<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"!promotion\">\r\n <tld-term-collection-list></tld-term-collection-list>\r\n </ng-container>\r\n <ng-container *ngIf=\"promotion\">\r\n <tld-term-promotion></tld-term-promotion>\r\n </ng-container>\r\n</section
|
|
28
|
+
TldTermCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTermCollectionComponent, deps: [{ token: i1.TerminologyService }, { token: i2.TldSystemService }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
+
TldTermCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TldTermCollectionComponent, selector: "tld-term-collection", ngImport: i0, template: "<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"!promotion\">\r\n <tld-term-collection-list></tld-term-collection-list>\r\n <footer class=\"tld-collection-list-footer\" fxLayout=\"row\" *ngIf=\"hasEditPermissions\">\r\n <tld-create-collection [sourceLanguageCode]=\"sourceLanguageCode\" [targetLanguageCode]=\"targetLanguageCode\">\r\n </tld-create-collection>\r\n </footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"promotion\">\r\n <tld-term-promotion></tld-term-promotion>\r\n </ng-container>\r\n</section>\r\n", styles: [".tld-collection-list-footer{padding:1em .75em}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i5.TldTermCollectionListComponent, selector: "tld-term-collection-list" }, { kind: "component", type: i6.TldTermPromotionComponent, selector: "tld-term-promotion" }, { kind: "component", type: i7.CreateCollectionComponent, selector: "tld-create-collection", inputs: ["sourceLanguageCode", "targetLanguageCode"] }] });
|
|
15
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTermCollectionComponent, decorators: [{
|
|
16
31
|
type: Component,
|
|
17
|
-
args: [{ selector: 'tld-term-collection', template: "<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"!promotion\">\r\n <tld-term-collection-list></tld-term-collection-list>\r\n </ng-container>\r\n <ng-container *ngIf=\"promotion\">\r\n <tld-term-promotion></tld-term-promotion>\r\n </ng-container>\r\n</section
|
|
18
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
args: [{ selector: 'tld-term-collection', template: "<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"!promotion\">\r\n <tld-term-collection-list></tld-term-collection-list>\r\n <footer class=\"tld-collection-list-footer\" fxLayout=\"row\" *ngIf=\"hasEditPermissions\">\r\n <tld-create-collection [sourceLanguageCode]=\"sourceLanguageCode\" [targetLanguageCode]=\"targetLanguageCode\">\r\n </tld-create-collection>\r\n </footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"promotion\">\r\n <tld-term-promotion></tld-term-promotion>\r\n </ng-container>\r\n</section>\r\n", styles: [".tld-collection-list-footer{padding:1em .75em}\n"] }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.TerminologyService }, { type: i2.TldSystemService }]; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRlcm0tY29sbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGVybS90bGQtdGVybS1jb2xsZWN0aW9uL3RsZC10ZXJtLWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRlcm0vdGxkLXRlcm0tY29sbGVjdGlvbi90bGQtdGVybS1jb2xsZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLDBCQUEwQjtJQVFyQyxZQUE2QixrQkFBc0MsRUFDaEQsYUFBK0I7UUFEckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFBSSxDQUFDO0lBUnZELElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLGtCQUFrQixLQUFLLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQVMvRSxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7dUhBckJVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDJEQ1Z2QywyakJBWUE7MkZERmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRsZFN5c3RlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtdG9vbHRpcC9zZXJ2aWNlcy90bGQtc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90ZXJtaW5vbG9neS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGxkLXRlcm0tY29sbGVjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RsZC10ZXJtLWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RsZC10ZXJtLWNvbGxlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVGVybUNvbGxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZ2V0IHByb21vdGlvbigpIHsgcmV0dXJuIHRoaXMudGVybWlub2xvZ3lTZXJ2aWNlLnNob3VsZFNob3dQcm9tb3Rpb247IH1cclxuICBnZXQgaGFzRWRpdFBlcm1pc3Npb25zKCkgeyByZXR1cm4gdGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuaGFzRWRpdFBlcm1pc3Npb25zOyB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XHJcbiAgdGFyZ2V0TGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVNlcnZpY2U6IFRsZFN5c3RlbVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEFjdGl2ZURhdGEoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5zb3VyY2VMYW5ndWFnZUNvZGUgPSBkYXRhLnNvdXJjZUxhbmcubGFuZztcclxuICAgICAgdGhpcy50YXJnZXRMYW5ndWFnZUNvZGUgPSBkYXRhLnRhcmdldExhbmcubGFuZztcclxuICAgICAgdGhpcy50ZXJtaW5vbG9neVNlcnZpY2Uuc2V0RW5naW5lKGRhdGEuc3lzdGVtSWQsIFt0aGlzLnNvdXJjZUxhbmd1YWdlQ29kZSwgdGhpcy50YXJnZXRMYW5ndWFnZUNvZGVdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwidGxkLWNvbGxlY3Rpb24tbGlzdC13cmFwcGVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcm9tb3Rpb25cIj5cclxuICAgIDx0bGQtdGVybS1jb2xsZWN0aW9uLWxpc3Q+PC90bGQtdGVybS1jb2xsZWN0aW9uLWxpc3Q+XHJcbiAgICA8Zm9vdGVyIGNsYXNzPVwidGxkLWNvbGxlY3Rpb24tbGlzdC1mb290ZXJcIiBmeExheW91dD1cInJvd1wiICpuZ0lmPVwiaGFzRWRpdFBlcm1pc3Npb25zXCI+XHJcbiAgICAgIDx0bGQtY3JlYXRlLWNvbGxlY3Rpb24gW3NvdXJjZUxhbmd1YWdlQ29kZV09XCJzb3VyY2VMYW5ndWFnZUNvZGVcIiBbdGFyZ2V0TGFuZ3VhZ2VDb2RlXT1cInRhcmdldExhbmd1YWdlQ29kZVwiPlxyXG4gICAgICA8L3RsZC1jcmVhdGUtY29sbGVjdGlvbj5cclxuICAgIDwvZm9vdGVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9tb3Rpb25cIj5cclxuICAgIDx0bGQtdGVybS1wcm9tb3Rpb24+PC90bGQtdGVybS1wcm9tb3Rpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvc2VjdGlvbj5cclxuIl19
|