@tilde-nlp/ngx-translate 9.1.36 → 9.1.38
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.
|
@@ -90,12 +90,7 @@ const i18n_de = {
|
|
|
90
90
|
"TITLE": "Zusammenfassung",
|
|
91
91
|
"CREATING": "Zusammenfassung wird erstellt",
|
|
92
92
|
"DISABLED": "Stellen Sie mindestens 300 Zeichen bereit, um die Funktion Zusammenfassung zu nutzen",
|
|
93
|
-
"COPIED": "Zusammenfassung kopiert"
|
|
94
|
-
"NEW_FEATURE": {
|
|
95
|
-
"TITLE": "Zusammenfassung erstellen",
|
|
96
|
-
"DESCRIPTION": "Fasse längere Texte in einem kurzen Überblick der zentralen Punkte zusammen.",
|
|
97
|
-
"CLOSE": "Schließen"
|
|
98
|
-
}
|
|
93
|
+
"COPIED": "Zusammenfassung kopiert"
|
|
99
94
|
},
|
|
100
95
|
"REPHRASE": {
|
|
101
96
|
"TITLE": "Umformulieren",
|
|
@@ -104,11 +99,6 @@ const i18n_de = {
|
|
|
104
99
|
"LOADING": "Wird umformuliert",
|
|
105
100
|
"COPIED": "Umformulierung kopiert",
|
|
106
101
|
"HINT": "Formuliere den Text um, um die Wortwahl zu ändern oder den richtigen Ton zu treffen. Wähle zwischen drei Stilen: Allgemein, Professionell, Akademisch.",
|
|
107
|
-
"NEW_FEATURE": {
|
|
108
|
-
"TITLE": "Umformulieren",
|
|
109
|
-
"DESCRIPTION": "Formuliere den Text in einem bestimmten Schreibstil um und passe Sprache und Ton an den gewünschten Stil oder die Zielstimme an.",
|
|
110
|
-
"CLOSE": "Schließen"
|
|
111
|
-
},
|
|
112
102
|
"STYLES": {
|
|
113
103
|
"GENERAL": "Allgemein",
|
|
114
104
|
"PROFESSIONAL": "Professionell",
|
|
@@ -655,12 +645,7 @@ const i18n_en = {
|
|
|
655
645
|
"TITLE": "Summary",
|
|
656
646
|
"CREATING": "Creating summary",
|
|
657
647
|
"DISABLED": "Provide a minimum of 300 characters to use the summarization feature",
|
|
658
|
-
"COPIED": "Summary copied"
|
|
659
|
-
"NEW_FEATURE": {
|
|
660
|
-
"TITLE": "Create summary",
|
|
661
|
-
"DESCRIPTION": "Summarise lengthy texts into a brief overview of key points.",
|
|
662
|
-
"CLOSE": "Close"
|
|
663
|
-
}
|
|
648
|
+
"COPIED": "Summary copied"
|
|
664
649
|
},
|
|
665
650
|
"REPHRASE": {
|
|
666
651
|
"TITLE": "Rephrase",
|
|
@@ -669,11 +654,6 @@ const i18n_en = {
|
|
|
669
654
|
"LOADING": "Rephrasing",
|
|
670
655
|
"COPIED": "Rephrase copied",
|
|
671
656
|
"HINT": "Rephrase text translations to change the wording or capture the right tone. Select from 3 writing styles: General, Professional, Academic.",
|
|
672
|
-
"NEW_FEATURE": {
|
|
673
|
-
"TITLE": "Rephrase",
|
|
674
|
-
"DESCRIPTION": "Rephrase text into a specified writing style, adapting the language and tone to match a given target style or voice.",
|
|
675
|
-
"CLOSE": "Close"
|
|
676
|
-
},
|
|
677
657
|
"STYLES": {
|
|
678
658
|
"GENERAL": "General",
|
|
679
659
|
"PROFESSIONAL": "Professional",
|
|
@@ -753,6 +733,7 @@ const i18n_en = {
|
|
|
753
733
|
"E_413102_TITLE": "Uploading file error",
|
|
754
734
|
"E_413102": "Uploaded file is too large",
|
|
755
735
|
"E_400103": "Translation filtered due to content",
|
|
736
|
+
"E_429": "Too many requests. Please try again later.",
|
|
756
737
|
"TRANSLATION_FAILED_TITLE": "Translation failed",
|
|
757
738
|
"TRANSLATION_FAILED": "An unexpected error occurred.",
|
|
758
739
|
"TRANSLATION_FAILED_SUPPORT": " If the problem continues, contact <a href=\"mailto:{{email}}\"><strong>support</strong></a>.",
|
|
@@ -1216,12 +1197,7 @@ const i18n_et = {
|
|
|
1216
1197
|
"TITLE": "Kokkuvõte",
|
|
1217
1198
|
"CREATING": "Kokkuvõtte koostamine",
|
|
1218
1199
|
"DISABLED": "Kokkuvõtte koostamise funktsiooni kasutamiseks sisestage vähemalt 300 kirjamärki",
|
|
1219
|
-
"COPIED": "Kokkuvõte kopeeritud"
|
|
1220
|
-
"NEW_FEATURE": {
|
|
1221
|
-
"TITLE": "Koosta kokkuvõte",
|
|
1222
|
-
"DESCRIPTION": "Pikkadest tekstidest saab nüüd koostada kokkuvõtteid, mis annavad lühiülevaate põhipunktidest.",
|
|
1223
|
-
"CLOSE": "Sule"
|
|
1224
|
-
}
|
|
1200
|
+
"COPIED": "Kokkuvõte kopeeritud"
|
|
1225
1201
|
},
|
|
1226
1202
|
"REPHRASE": {
|
|
1227
1203
|
"TITLE": "Ümber sõnasta",
|
|
@@ -1230,11 +1206,6 @@ const i18n_et = {
|
|
|
1230
1206
|
"LOADING": "Ümber sõnastamine",
|
|
1231
1207
|
"COPIED": "Ümber sõnastatud tekst kopeeritud",
|
|
1232
1208
|
"HINT": "Muuda sõnastust või tabavat tooni ümber sõnastades. Vali kolme stiili vahel: Üldine, Professionaalne, Akadeemiline.",
|
|
1233
|
-
"NEW_FEATURE": {
|
|
1234
|
-
"TITLE": "Ümber sõnasta",
|
|
1235
|
-
"DESCRIPTION": "Sõnasta tekst ümber kindlas kirjutamisstiilis, kohandades keelt ja tooni soovitud stiilile või häälele.",
|
|
1236
|
-
"CLOSE": "Sulge"
|
|
1237
|
-
},
|
|
1238
1209
|
"STYLES": {
|
|
1239
1210
|
"GENERAL": "Üldine",
|
|
1240
1211
|
"PROFESSIONAL": "Professionaalne",
|
|
@@ -1780,12 +1751,7 @@ const i18n_fi = {
|
|
|
1780
1751
|
"TITLE": "Tiivistelmä",
|
|
1781
1752
|
"CREATING": "Luodaan tiivistelmä",
|
|
1782
1753
|
"DISABLED": "Syötä vähintään 300 merkkiä käyttääksesi tiivistelmäominaisuutta",
|
|
1783
|
-
"COPIED": "Tiivistelmä kopioitu"
|
|
1784
|
-
"NEW_FEATURE": {
|
|
1785
|
-
"TITLE": "Luo yhteenveto",
|
|
1786
|
-
"DESCRIPTION": "Tiivistä pitkiä tekstejä keskeiset asiat sisältäväksi lyhyeksi tiivistelmäksi.",
|
|
1787
|
-
"CLOSE": "Sulje"
|
|
1788
|
-
}
|
|
1754
|
+
"COPIED": "Tiivistelmä kopioitu"
|
|
1789
1755
|
},
|
|
1790
1756
|
"REPHRASE": {
|
|
1791
1757
|
"TITLE": "Muotoile uudelleen",
|
|
@@ -1794,11 +1760,6 @@ const i18n_fi = {
|
|
|
1794
1760
|
"LOADING": "Muotoillaan uudelleen",
|
|
1795
1761
|
"COPIED": "Muotoiltu teksti kopioitu",
|
|
1796
1762
|
"HINT": "Muotoile teksti uudelleen sanamuotojen tai sävyn tarkentamiseksi. Valitse kolmesta tyylistä: Yleinen, Ammattimainen, Akateeminen.",
|
|
1797
|
-
"NEW_FEATURE": {
|
|
1798
|
-
"TITLE": "Muotoile uudelleen",
|
|
1799
|
-
"DESCRIPTION": "Muotoile teksti uudelleen valitussa kirjoitustyylissä, mukauttaen kielen ja sävyn kohdeäänelle sopivaksi.",
|
|
1800
|
-
"CLOSE": "Sulje"
|
|
1801
|
-
},
|
|
1802
1763
|
"STYLES": {
|
|
1803
1764
|
"GENERAL": "Yleinen",
|
|
1804
1765
|
"PROFESSIONAL": "Ammattimainen",
|
|
@@ -2345,12 +2306,7 @@ const i18n_lt = {
|
|
|
2345
2306
|
"TITLE": "Santrauka",
|
|
2346
2307
|
"CREATING": "Kuriama santrauka",
|
|
2347
2308
|
"DISABLED": "Jei norite naudoti apibendrinimo funkciją, pateikite ne mažiau kaip 300 simbolių",
|
|
2348
|
-
"COPIED": "Santrauka nukopijuota"
|
|
2349
|
-
"NEW_FEATURE": {
|
|
2350
|
-
"TITLE": "Sukurti santrauką",
|
|
2351
|
-
"DESCRIPTION": "Apibendrinkite ilgus tekstus, paversdami juos trumpa pagrindinių dalykų apžvalga.",
|
|
2352
|
-
"CLOSE": "Uždaryti"
|
|
2353
|
-
}
|
|
2309
|
+
"COPIED": "Santrauka nukopijuota"
|
|
2354
2310
|
},
|
|
2355
2311
|
"REPHRASE": {
|
|
2356
2312
|
"TITLE": "Pakeisti formuluotę",
|
|
@@ -2359,11 +2315,6 @@ const i18n_lt = {
|
|
|
2359
2315
|
"LOADING": "Keičiama formuluotė",
|
|
2360
2316
|
"COPIED": "Pakeista formuluotė nukopijuota",
|
|
2361
2317
|
"HINT": "Pakeiskite teksto formuluotę, kad pakeistumėte žodžius arba perteiktumėte tinkamą toną. Galite pasirinkti iš 3 rašymo stilių: Bendras, Profesinis, Akademinis.",
|
|
2362
|
-
"NEW_FEATURE": {
|
|
2363
|
-
"TITLE": "Pakeisti formuluotę",
|
|
2364
|
-
"DESCRIPTION": "Pakeiskite teksto formuluotę pasirinktu rašymo stiliumi, pritaikydami kalbą ir toną pagal norimą stilių ar balsą.",
|
|
2365
|
-
"CLOSE": "Uždaryti"
|
|
2366
|
-
},
|
|
2367
2318
|
"STYLES": {
|
|
2368
2319
|
"GENERAL": "Bendras",
|
|
2369
2320
|
"PROFESSIONAL": "Profesinis",
|
|
@@ -2912,12 +2863,7 @@ const i18n_lv = {
|
|
|
2912
2863
|
"TITLE": "Kopsavilkums",
|
|
2913
2864
|
"CREATING": "Kopsavilkuma izveide",
|
|
2914
2865
|
"DISABLED": "Lai varētu lietot kopsavilkuma funkciju, tekstam ir jābūt vismaz 300 rakstzīmju garam",
|
|
2915
|
-
"COPIED": "Kopsavilkums nokopēts"
|
|
2916
|
-
"NEW_FEATURE": {
|
|
2917
|
-
"TITLE": "Izveido kopsavilkumu",
|
|
2918
|
-
"DESCRIPTION": "Apkopojiet garu tekstu saturu īsā pārskatā ar svarīgāko punktu uzskaitījumu.",
|
|
2919
|
-
"CLOSE": "Aizvērt"
|
|
2920
|
-
}
|
|
2866
|
+
"COPIED": "Kopsavilkums nokopēts"
|
|
2921
2867
|
},
|
|
2922
2868
|
"REPHRASE": {
|
|
2923
2869
|
"TITLE": "Pārfrāzēt",
|
|
@@ -2926,11 +2872,6 @@ const i18n_lv = {
|
|
|
2926
2872
|
"LOADING": "Pārfrāzēšana",
|
|
2927
2873
|
"COPIED": "Pārfrāze kopēta",
|
|
2928
2874
|
"HINT": "Pārfrāzē tekstu, lai mainītu formulējumu vai precīzāk atspoguļotu toni. Izvēlies kādu no 3 stiliem: Vispārīgs, Profesionāls, Akadēmisks.",
|
|
2929
|
-
"NEW_FEATURE": {
|
|
2930
|
-
"TITLE": "Pārfrāzēt",
|
|
2931
|
-
"DESCRIPTION": "Pārfrāzē tekstu norādītajā rakstīšanas stilā, pielāgojot valodu un toni mērķa stilam vai balsij.",
|
|
2932
|
-
"CLOSE": "Aizvērt"
|
|
2933
|
-
},
|
|
2934
2875
|
"STYLES": {
|
|
2935
2876
|
"GENERAL": "Vispārīgs",
|
|
2936
2877
|
"PROFESSIONAL": "Profesionāls",
|
|
@@ -3475,12 +3416,7 @@ const i18n_pl = {
|
|
|
3475
3416
|
"TITLE": "Podsumowanie",
|
|
3476
3417
|
"CREATING": "Tworzenie podsumowania",
|
|
3477
3418
|
"DISABLED": "Wprowadź minimum 300 znaków, aby użyć funkcji tworzenia podsumowania",
|
|
3478
|
-
"COPIED": "Podsumowanie skopiowane"
|
|
3479
|
-
"NEW_FEATURE": {
|
|
3480
|
-
"TITLE": "Utwórz podsumowanie",
|
|
3481
|
-
"DESCRIPTION": "Umożliwia tworzenie podsumowań długich tekstów składających się z najważniejszych punktów.",
|
|
3482
|
-
"CLOSE": "Zamknij"
|
|
3483
|
-
}
|
|
3419
|
+
"COPIED": "Podsumowanie skopiowane"
|
|
3484
3420
|
},
|
|
3485
3421
|
"REPHRASE": {
|
|
3486
3422
|
"TITLE": "Przekształć tekst",
|
|
@@ -3489,11 +3425,6 @@ const i18n_pl = {
|
|
|
3489
3425
|
"LOADING": "Przekształcanie",
|
|
3490
3426
|
"COPIED": "Tekst przekształcony i skopiowany",
|
|
3491
3427
|
"HINT": "Przekształć tekst, aby zmienić sformułowanie lub oddać odpowiedni ton. Wybierz spośród 3 stylów: Ogólny, Profesjonalny, Akademicki.",
|
|
3492
|
-
"NEW_FEATURE": {
|
|
3493
|
-
"TITLE": "Przekształć tekst",
|
|
3494
|
-
"DESCRIPTION": "Przekształć tekst, dopasowując język i ton do określonego stylu lub głosu.",
|
|
3495
|
-
"CLOSE": "Zamknij"
|
|
3496
|
-
},
|
|
3497
3428
|
"STYLES": {
|
|
3498
3429
|
"GENERAL": "Ogólny",
|
|
3499
3430
|
"PROFESSIONAL": "Profesjonalny",
|
|
@@ -4236,12 +4167,7 @@ const i18n_hr = {
|
|
|
4236
4167
|
"TITLE": "Sažetak",
|
|
4237
4168
|
"CREATING": "Izrada sažetka",
|
|
4238
4169
|
"DISABLED": "Pružite najmanje 300 znakova za korištenje značajke sažimanja.",
|
|
4239
|
-
"COPIED": "Sažetak teksta kopiran"
|
|
4240
|
-
"NEW_FEATURE": {
|
|
4241
|
-
"TITLE": "Nova značajka",
|
|
4242
|
-
"DESCRIPTION": "Sažmi duge tekstove u kratak pregled ključnih točaka.",
|
|
4243
|
-
"CLOSE": "Zatvori"
|
|
4244
|
-
}
|
|
4170
|
+
"COPIED": "Sažetak teksta kopiran"
|
|
4245
4171
|
},
|
|
4246
4172
|
"REPHRASE": {
|
|
4247
4173
|
"TITLE": "Preoblikuj",
|
|
@@ -4250,11 +4176,6 @@ const i18n_hr = {
|
|
|
4250
4176
|
"LOADING": "Preoblikovanje",
|
|
4251
4177
|
"COPIED": "Preoblikovani tekst kopiran",
|
|
4252
4178
|
"HINT": "Preoblikuj tekstove kako bi promijenio formulaciju ili uhvatio pravi ton. Odaberi jedan od 3 stila pisanja: Opći, Profesionalni, Akademski.",
|
|
4253
|
-
"NEW_FEATURE": {
|
|
4254
|
-
"TITLE": "Preoblikuj",
|
|
4255
|
-
"DESCRIPTION": "Preoblikuj tekst u odabrani stil pisanja, prilagođavajući jezik i ton kako bi odgovarao odabranom stilu ili glasu.",
|
|
4256
|
-
"CLOSE": "Zatvori"
|
|
4257
|
-
},
|
|
4258
4179
|
"STYLES": {
|
|
4259
4180
|
"GENERAL": "Opći",
|
|
4260
4181
|
"PROFESSIONAL": "Profesionalni",
|
|
@@ -4795,12 +4716,7 @@ const i18n_mt = {
|
|
|
4795
4716
|
SUMMARY: {
|
|
4796
4717
|
TITLE: 'Sommarju',
|
|
4797
4718
|
CREATING: 'Is-sommarju qed jiġi ġġenerat',
|
|
4798
|
-
DISABLED: 'Daħħal minimu ta’ 300 karattru biex tuża l-karatteristika tas-sommarju'
|
|
4799
|
-
NEW_FEATURE: {
|
|
4800
|
-
TITLE: 'Karatteristika ġdida',
|
|
4801
|
-
DESCRIPTION: 'Agħmel sommarju tat-testi twal billi tiġbor il-punti ewlenin.',
|
|
4802
|
-
CLOSE: 'Agħlaq',
|
|
4803
|
-
},
|
|
4719
|
+
DISABLED: 'Daħħal minimu ta’ 300 karattru biex tuża l-karatteristika tas-sommarju'
|
|
4804
4720
|
},
|
|
4805
4721
|
REPHRASE: {
|
|
4806
4722
|
TITLE: 'Irreformula',
|
|
@@ -4809,11 +4725,6 @@ const i18n_mt = {
|
|
|
4809
4725
|
LOADING: 'Irreformulazzjoni',
|
|
4810
4726
|
COPIED: 'Irreformulazzjoni kkopjata',
|
|
4811
4727
|
HINT: "Irreformula t-traduzzjonijiet tat-test biex tbiddel il-lingwa jew tikseb it-ton it-tajjeb. Agħżel minn 3 stili ta' kitba: Ġenerali, Professjonali, Akkademiku.",
|
|
4812
|
-
NEW_FEATURE: {
|
|
4813
|
-
TITLE: 'Irreformula',
|
|
4814
|
-
DESCRIPTION: "Irreformula t-test f’stil ta' kitba speċifikat, adattan il-lingwa u t-ton biex jaqbel mal-istil jew il-vuċi target.",
|
|
4815
|
-
CLOSE: 'Agħlaq',
|
|
4816
|
-
},
|
|
4817
4728
|
STYLES: {
|
|
4818
4729
|
GENERAL: 'Ġenerali',
|
|
4819
4730
|
PROFESSIONAL: 'Professjonali',
|
|
@@ -8623,6 +8534,7 @@ class TldTranslateTextService {
|
|
|
8623
8534
|
standbyEngineNotificationErrorKey = '21';
|
|
8624
8535
|
standbySystemRetranslationTimeout = 3000;
|
|
8625
8536
|
engineTermCollectionNotFoundErrorKey = '404201';
|
|
8537
|
+
tooManyRequestsErrorKey = '429';
|
|
8626
8538
|
/** Whether progress indicator should be shown. This value must be set to true only if configured time has passed. */
|
|
8627
8539
|
_shouldShowProgressIndicator = false;
|
|
8628
8540
|
get shouldShowProgressIndicator() { return this._shouldShowProgressIndicator; }
|
|
@@ -8834,6 +8746,9 @@ class TldTranslateTextService {
|
|
|
8834
8746
|
}, this.standbySystemRetranslationTimeout);
|
|
8835
8747
|
throw err;
|
|
8836
8748
|
}
|
|
8749
|
+
else if (error?.error?.code === this.tooManyRequestsErrorKey) {
|
|
8750
|
+
this.alertsService.error('ERRORS.E_429', err);
|
|
8751
|
+
}
|
|
8837
8752
|
else if (error?.error?.code == this.engineTermCollectionNotFoundErrorKey) {
|
|
8838
8753
|
this.alertsService.error('ERRORS.E_404201', err);
|
|
8839
8754
|
}
|
|
@@ -8967,6 +8882,7 @@ class TldTranslateTextService {
|
|
|
8967
8882
|
...item,
|
|
8968
8883
|
dictionaryDomainUrl: urls[i],
|
|
8969
8884
|
sourceLabel: isTermPortalCollection ? this.translate.instant('TERM_PORTAL_NAME') : null,
|
|
8885
|
+
isTermPortalCollection
|
|
8970
8886
|
};
|
|
8971
8887
|
const termSummary = termWithSource.languageSummaries?.find((summary) => summary.lang === this.activeData.targetLanguage);
|
|
8972
8888
|
if (termSummary) {
|
|
@@ -9188,13 +9104,13 @@ class TldDictionaryComponent {
|
|
|
9188
9104
|
set dictionary(data) {
|
|
9189
9105
|
this.groupDictionariesByDomain(data);
|
|
9190
9106
|
}
|
|
9191
|
-
dictionaryGroups =
|
|
9107
|
+
dictionaryGroups = [];
|
|
9192
9108
|
groupDictionariesByDomain(data) {
|
|
9193
9109
|
if (!data?.length) {
|
|
9194
9110
|
this.dictionaryGroups = null;
|
|
9195
9111
|
return;
|
|
9196
9112
|
}
|
|
9197
|
-
|
|
9113
|
+
const groups = data.reduce((acc, dictionary) => {
|
|
9198
9114
|
const domain = dictionary.sourceLabel ?? dictionary.dictionaryDomainUrl;
|
|
9199
9115
|
if (!acc[domain]) {
|
|
9200
9116
|
acc[domain] = [];
|
|
@@ -9202,13 +9118,23 @@ class TldDictionaryComponent {
|
|
|
9202
9118
|
acc[domain].push(dictionary);
|
|
9203
9119
|
return acc;
|
|
9204
9120
|
}, {});
|
|
9121
|
+
this.dictionaryGroups = Object.keys(groups)
|
|
9122
|
+
.map((key) => ({
|
|
9123
|
+
key: key,
|
|
9124
|
+
value: groups[key],
|
|
9125
|
+
}))
|
|
9126
|
+
.sort((a, b) => {
|
|
9127
|
+
const aIsTermPortal = a.value.some((d) => d.isTermPortalCollection);
|
|
9128
|
+
const bIsTermPortal = b.value.some((d) => d.isTermPortalCollection);
|
|
9129
|
+
return Number(bIsTermPortal) - Number(aIsTermPortal);
|
|
9130
|
+
});
|
|
9205
9131
|
}
|
|
9206
9132
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldDictionaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9207
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TldDictionaryComponent, isStandalone: false, selector: "tld-dictionary", inputs: { dictionary: "dictionary" }, ngImport: i0, template: "<div *ngFor=\"let domain of dictionaryGroups
|
|
9133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TldDictionaryComponent, isStandalone: false, selector: "tld-dictionary", inputs: { dictionary: "dictionary" }, ngImport: i0, template: "<div *ngFor=\"let domain of dictionaryGroups\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">\r\n\t\t\t\t{{ \"DICTIONARY.SOURCE\" | translate: { src: domain.key | titlecase } }}\r\n\t\t\t</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">\r\n\t\t\t\t\t{{ dictionary.targetWord }}\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.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: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i3$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
9208
9134
|
}
|
|
9209
9135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldDictionaryComponent, decorators: [{
|
|
9210
9136
|
type: Component,
|
|
9211
|
-
args: [{ selector: 'tld-dictionary', standalone: false, template: "<div *ngFor=\"let domain of dictionaryGroups
|
|
9137
|
+
args: [{ selector: 'tld-dictionary', standalone: false, template: "<div *ngFor=\"let domain of dictionaryGroups\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">\r\n\t\t\t\t{{ \"DICTIONARY.SOURCE\" | translate: { src: domain.key | titlecase } }}\r\n\t\t\t</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">\r\n\t\t\t\t\t{{ dictionary.targetWord }}\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"] }]
|
|
9212
9138
|
}], propDecorators: { dictionary: [{
|
|
9213
9139
|
type: Input
|
|
9214
9140
|
}] } });
|
|
@@ -9665,11 +9591,11 @@ class TldTranslateTextComponent {
|
|
|
9665
9591
|
this.markedSummarizedText = null;
|
|
9666
9592
|
}
|
|
9667
9593
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldTranslateTextComponent, deps: [{ token: TldTranslateTextService }, { token: i2$2.Clipboard }, { token: i4.AlertService }, { token: TldTranslateConfigService }, { token: TldScrollService }, { token: TldTranslateSystemManagementService }, { token: AudioRecordService }, { token: TldVoiceInputService }, { token: TldTranslateFileService }, { token: i5$1.LLMService }, { token: i9.KeycloakService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9668
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TldTranslateTextComponent, isStandalone: false, selector: "tld-translate-text", inputs: { filePreviewProgress: "filePreviewProgress" }, outputs: { onFileChange: "onFileChange" }, viewQueries: [{ propertyName: "sourceComponent", first: true, predicate: ["sourceComponent"], descendants: true }, { propertyName: "dictateComponent", first: true, predicate: ["dictate"], descendants: true }], ngImport: i0, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper\r\n\t[textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n\t[clearSourceVisible]=\"source?.length > 0\"\r\n\t(onSourceClear)=\"clearSource()\"\r\n\t[clearDisabled]=\"textareaDisabled\"\r\n\t[clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n\t[ngClass]=\"{ 'highlight-active': highlight, 'empty-target': isEmptyTarget }\"\r\n>\r\n\t<div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n\t\t<tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n\t</div>\r\n\t<ng-container dictation *ngIf=\"audioInputVisible()\">\r\n\t\t<tld-dictate\r\n\t\t\t#dictate\r\n\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t[systemId]=\"onlineAsrSystemId()\"\r\n\t\t>\r\n\t\t</tld-dictate>\r\n\t</ng-container>\r\n\r\n\t<button compactUpload mat-icon-button [matTooltip]=\"'TOOLTIPS.UPLOAD' | translate\" [attr.aria-label]=\"'TOOLTIPS.UPLOAD' | translate\" [disabled]=\"fileUploadDisabled\" (click)=\"openFileUpload()\">\r\n\t\t<mat-icon [svgIcon]=\"'upload'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<ng-container sourceActions>\r\n\t\t<div fxLayoutAlign=\"start center\" [class.basic-padding]=\"fileUpload\" fxLayoutGap=\"1em\">\r\n\t\t\t<div [class.hidden]=\"!fileUpload\" class=\"file-upload-wrapper\">\r\n\t\t\t\t<lib-file-upload\r\n\t\t\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t\t\t[uploadIconName]=\"uploadIconName\"\r\n\t\t\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t\t\t[filePreviewProgress]=\"filePreviewProgress\"\r\n\t\t\t\t\t[disabled]=\"fileUploadDisabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"upload-file-text\">\r\n\t\t\t\t\t\t<span class=\"info\">\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t<span> </span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.' + (multipleFiles ? 'FILES' : 'FILE') | translate\" [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t(<span>{{ visibleExtensions }}.</span>;\r\n\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" class=\"file-upload-max-size\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>)\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</lib-file-upload>\r\n\t\t\t\t<lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\"> </lib-open-extension-dialog>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n\r\n\t<div targetMain class=\"target-main\">\r\n\t\t<ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n\t\t\t<p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\" [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\"></p>\r\n\t\t</ng-container>\r\n\t</div>\r\n\r\n\t<ng-container targetActions>\r\n\t\t<div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showProgressIndicator\">\r\n\t\t\t<progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n\t\t</div>\r\n\t</ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n\t<div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\">\r\n\t\t<ng-container *ngIf=\"!urlToTranslate\">\r\n\t\t\t<div class=\"target-wrapper-action-buttons\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated\"\r\n\t\t\t\t\tclass=\"tld-copy-translation\"\r\n\t\t\t\t\t(click)=\"copy()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t\t[attr.aria-describedby]=\"copyMessageId\"\r\n\t\t\t\t\t[attr.Id]=\"copyButtonId\"\r\n\t\t\t\t\t(keydown.Tab)=\"switchFocusFromCopy($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated || translationError\"\r\n\t\t\t\t\tclass=\"tld-refresh-translation\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.REFRESH' | translate\"\r\n\t\t\t\t\t(click)=\"refresh()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\"> refresh </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<div [matTooltip]=\"'TLD_TRANSLATE.REPHRASE.TOOLTIP' | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<lib-new-feature-dialog-wrapper\r\n\t\t\t\t\t\t#rephraseFeature\r\n\t\t\t\t\t\t[titleLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.TITLE'\"\r\n\t\t\t\t\t\t[descriptionLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.DESCRIPTION'\"\r\n\t\t\t\t\t\t[closeLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.CLOSE'\"\r\n\t\t\t\t\t\t[featureClassName]=\"'tld-rephrase'\"\r\n\t\t\t\t\t\t[featureLocalStorageKey]=\"rephraseFeatureLocalStorageKey\"\r\n\t\t\t\t\t\t[timeout]=\"1000\"\r\n\t\t\t\t\t\t[maxWidth]=\"400\"\r\n\t\t\t\t\t\t[mobileScreenCustomPosition]=\"{autoScroll: true, left: '10px', top: '30%'}\"\r\n\t\t\t\t\t></lib-new-feature-dialog-wrapper>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\t\tclass=\"tld-rephrase\"\r\n\t\t\t\t\t\t\t[class.rephrase-feature-active]=\"rephraseFeature?.featureActive()\"\r\n\t\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing\"\r\n\t\t\t\t\t\t\t(click)=\"showRephraseOptions()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-icon [svgIcon]=\"'rephrase'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REPHRASE' | translate\"></mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div [matTooltip]=\"(isTextSummarizable ? 'TOOLTIPS.CREATE_SUMMARY' : 'TLD_TRANSLATE.SUMMARY.DISABLED') | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<lib-new-feature-dialog-wrapper\r\n\t\t\t\t\t\t#summarizeFeature\r\n\t\t\t\t\t\t[titleLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.TITLE'\"\r\n\t\t\t\t\t\t[descriptionLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.DESCRIPTION'\"\r\n\t\t\t\t\t\t[closeLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.CLOSE'\"\r\n\t\t\t\t\t\t[featureClassName]=\"'tld-create-summary'\"\r\n\t\t\t\t\t\t[featureLocalStorageKey]=\"summarizeFeatureLocalStorageKey\"\r\n\t\t\t\t\t\t[mobileScreenCustomPosition]=\"{autoScroll: true, left: '10px', top: '30%'}\"\r\n\t\t\t\t\t\t[timeout]=\"1000\"\r\n\t\t\t\t\t></lib-new-feature-dialog-wrapper>\r\n\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t\t[class.summarize-feature-active]=\"summarizeFeature?.featureActive()\"\r\n\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || !isTextSummarizable\"\r\n\t\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-icon [svgIcon]=\"'summarize'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.CREATE_SUMMARY' | translate\"></mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\"> </tld-text-to-speech>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"highlight-tree-wrapper\">\r\n\t\t\t\t<tld-highlight-tree *ngFor=\"let paragraph of targetParagraphs\" [highlight]=\"highlight\" [tree]=\"paragraph\"> </tld-highlight-tree>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isSummarazing || summarizedText\" class=\"summary-wrapper\">\r\n\t\t\t\t<p class=\"summary-title\">{{ \"TLD_TRANSLATE.SUMMARY.TITLE\" | translate }}</p>\r\n\r\n\t\t\t\t<p *ngIf=\"isSummarazing\" class=\"creating-progress\">{{ \"TLD_TRANSLATE.SUMMARY.CREATING\" | translate }}<span class=\"dot-loading\">...</span></p>\r\n\r\n\t\t\t\t<p [innerHTML]=\"markedSummarizedText\"></p>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"summarizedText\"\r\n\t\t\t\t\t[ngClass.lt-sm]=\"'summary-mobile'\"\r\n\t\t\t\t\tclass=\"summary-copy-btn\"\r\n\t\t\t\t\t(click)=\"copySummarizedText()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isRephraseActive\" class=\"rephrase-wrapper\">\r\n\t\t\t\t<tld-rephrase [text]=\"translatedText\" [disabled]=\"isTranslating\" [language]=\"targetLanguage\"></tld-rephrase>\r\n\t\t\t</div>\t\r\n\r\n\t\t\t<div *ngIf=\"firstParagraphTranslated && dictionaryEntry\" class=\"dictionary-wrapper\">\r\n\t\t\t\t<tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n\t\t\t<a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n\t\t\t\t{{ urlToTranslate }}\r\n\t\t\t\t<span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\"> open_in_new </span>\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n", styles: [".hidden{display:none}.go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:18px}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source,.highlight-tree-wrapper{min-height:210px}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:18px 48px 18px 18px!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:18px}.target-wrapper-action-buttons{position:absolute;top:3px;right:3px}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{color:var(--base-40);font-size:.875rem;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.file-upload-max-size{white-space:nowrap}.dictionary-wrapper{margin-top:2rem;border-top:1px solid var(--base-70)}.rephrase-wrapper,.summary-wrapper{position:relative;margin-top:8px;padding-top:12px;border-top:1px solid var(--base-70)}.summary-title{font-size:1rem;margin-bottom:.5rem;font-weight:600}.creating-progress{color:var(--base-40)}:host ::ng-deep .dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-45px;top:20px}.summary-mobile{right:-46px}::ng-deep .summarize-feature-active,::ng-deep .rephrase-feature-active{z-index:1001;background-color:#fff}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: ["clearSourceVisible", "clearSourceTooltip", "clearDisabled", "textToSpeechSourceSettings"], outputs: ["onSourceClear"] }, { kind: "component", type: TldDictateComponent, selector: "tld-dictate", inputs: ["configuration", "systemId"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i4.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i4.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "hideDefaultLimitsLabel", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i3.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: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i6.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.NewFeatureDialogWrapperComponent, selector: "lib-new-feature-dialog-wrapper", inputs: ["titleLocalizationKey", "descriptionLocalizationKey", "closeLocalizationKey", "featureClassName", "featureLocalStorageKey", "timeout", "maxWidth", "mobileScreenCustomPosition"] }, { kind: "component", type: RephraseComponent, selector: "tld-rephrase", inputs: ["text", "language", "disabled"] }, { kind: "component", type: TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "highlight"] }, { kind: "component", type: ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
9594
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TldTranslateTextComponent, isStandalone: false, selector: "tld-translate-text", inputs: { filePreviewProgress: "filePreviewProgress" }, outputs: { onFileChange: "onFileChange" }, viewQueries: [{ propertyName: "sourceComponent", first: true, predicate: ["sourceComponent"], descendants: true }, { propertyName: "dictateComponent", first: true, predicate: ["dictate"], descendants: true }], ngImport: i0, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper\r\n\t[textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n\t[clearSourceVisible]=\"source?.length > 0\"\r\n\t(onSourceClear)=\"clearSource()\"\r\n\t[clearDisabled]=\"textareaDisabled\"\r\n\t[clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n\t[ngClass]=\"{ 'highlight-active': highlight, 'empty-target': isEmptyTarget }\"\r\n>\r\n\t<div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n\t\t<tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n\t</div>\r\n\t<ng-container dictation *ngIf=\"audioInputVisible()\">\r\n\t\t<tld-dictate\r\n\t\t\t#dictate\r\n\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t[systemId]=\"onlineAsrSystemId()\"\r\n\t\t>\r\n\t\t</tld-dictate>\r\n\t</ng-container>\r\n\r\n\t<button compactUpload mat-icon-button [matTooltip]=\"'TOOLTIPS.UPLOAD' | translate\" [attr.aria-label]=\"'TOOLTIPS.UPLOAD' | translate\" [disabled]=\"fileUploadDisabled\" (click)=\"openFileUpload()\">\r\n\t\t<mat-icon [svgIcon]=\"'upload'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<ng-container sourceActions>\r\n\t\t<div fxLayoutAlign=\"start center\" [class.basic-padding]=\"fileUpload\" fxLayoutGap=\"1em\">\r\n\t\t\t<div [class.hidden]=\"!fileUpload\" class=\"file-upload-wrapper\">\r\n\t\t\t\t<lib-file-upload\r\n\t\t\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t\t\t[uploadIconName]=\"uploadIconName\"\r\n\t\t\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t\t\t[filePreviewProgress]=\"filePreviewProgress\"\r\n\t\t\t\t\t[disabled]=\"fileUploadDisabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"upload-file-text\">\r\n\t\t\t\t\t\t<span class=\"info\">\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t<span> </span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.' + (multipleFiles ? 'FILES' : 'FILE') | translate\" [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t(<span>{{ visibleExtensions }}.</span>;\r\n\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" class=\"file-upload-max-size\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>)\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</lib-file-upload>\r\n\t\t\t\t<lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\"> </lib-open-extension-dialog>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n\r\n\t<div targetMain class=\"target-main\">\r\n\t\t<ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n\t\t\t<p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\" [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\"></p>\r\n\t\t</ng-container>\r\n\t</div>\r\n\r\n\t<ng-container targetActions>\r\n\t\t<div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showProgressIndicator\">\r\n\t\t\t<progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n\t\t</div>\r\n\t</ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n\t<div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\">\r\n\t\t<ng-container *ngIf=\"!urlToTranslate\">\r\n\t\t\t<div class=\"target-wrapper-action-buttons\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated\"\r\n\t\t\t\t\tclass=\"tld-copy-translation\"\r\n\t\t\t\t\t(click)=\"copy()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t\t[attr.aria-describedby]=\"copyMessageId\"\r\n\t\t\t\t\t[attr.Id]=\"copyButtonId\"\r\n\t\t\t\t\t(keydown.Tab)=\"switchFocusFromCopy($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated || translationError\"\r\n\t\t\t\t\tclass=\"tld-refresh-translation\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.REFRESH' | translate\"\r\n\t\t\t\t\t(click)=\"refresh()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\"> refresh </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<div [matTooltip]=\"'TLD_TRANSLATE.REPHRASE.TOOLTIP' | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\t\tclass=\"tld-rephrase\"\r\n\t\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing\"\r\n\t\t\t\t\t\t\t(click)=\"showRephraseOptions()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-icon [svgIcon]=\"'rephrase'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REPHRASE' | translate\"></mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div [matTooltip]=\"(isTextSummarizable ? 'TOOLTIPS.CREATE_SUMMARY' : 'TLD_TRANSLATE.SUMMARY.DISABLED') | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || !isTextSummarizable\"\r\n\t\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-icon [svgIcon]=\"'summarize'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.CREATE_SUMMARY' | translate\"></mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\"> </tld-text-to-speech>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"highlight-tree-wrapper\">\r\n\t\t\t\t<tld-highlight-tree *ngFor=\"let paragraph of targetParagraphs\" [highlight]=\"highlight\" [tree]=\"paragraph\"> </tld-highlight-tree>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isSummarazing || summarizedText\" class=\"summary-wrapper\">\r\n\t\t\t\t<p class=\"summary-title\">{{ \"TLD_TRANSLATE.SUMMARY.TITLE\" | translate }}</p>\r\n\r\n\t\t\t\t<p *ngIf=\"isSummarazing\" class=\"creating-progress\">{{ \"TLD_TRANSLATE.SUMMARY.CREATING\" | translate }}<span class=\"dot-loading\">...</span></p>\r\n\r\n\t\t\t\t<p [innerHTML]=\"markedSummarizedText\"></p>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"summarizedText\"\r\n\t\t\t\t\t[ngClass.lt-sm]=\"'summary-mobile'\"\r\n\t\t\t\t\tclass=\"summary-copy-btn\"\r\n\t\t\t\t\t(click)=\"copySummarizedText()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isRephraseActive\" class=\"rephrase-wrapper\">\r\n\t\t\t\t<tld-rephrase [text]=\"translatedText\" [disabled]=\"isTranslating\" [language]=\"targetLanguage\"></tld-rephrase>\r\n\t\t\t</div>\t\r\n\r\n\t\t\t<div *ngIf=\"firstParagraphTranslated && dictionaryEntry\" class=\"dictionary-wrapper\">\r\n\t\t\t\t<tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n\t\t\t<a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n\t\t\t\t{{ urlToTranslate }}\r\n\t\t\t\t<span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\"> open_in_new </span>\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n", styles: [".hidden{display:none}.go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:18px}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source,.highlight-tree-wrapper{min-height:210px}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:18px 48px 18px 18px!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:18px}.target-wrapper-action-buttons{position:absolute;top:3px;right:3px}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{color:var(--base-40);font-size:.875rem;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.file-upload-max-size{white-space:nowrap}.dictionary-wrapper{margin-top:2rem;border-top:1px solid var(--base-70)}.rephrase-wrapper,.summary-wrapper{position:relative;margin-top:8px;padding-top:12px;border-top:1px solid var(--base-70)}.summary-title{font-size:1rem;margin-bottom:.5rem;font-weight:600}.creating-progress{color:var(--base-40)}:host ::ng-deep .dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-45px;top:20px}.summary-mobile{right:-46px}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: ["clearSourceVisible", "clearSourceTooltip", "clearDisabled", "textToSpeechSourceSettings"], outputs: ["onSourceClear"] }, { kind: "component", type: TldDictateComponent, selector: "tld-dictate", inputs: ["configuration", "systemId"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i4.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i4.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "hideDefaultLimitsLabel", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i3.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: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i6.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: RephraseComponent, selector: "tld-rephrase", inputs: ["text", "language", "disabled"] }, { kind: "component", type: TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "highlight"] }, { kind: "component", type: ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
9669
9595
|
}
|
|
9670
9596
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldTranslateTextComponent, decorators: [{
|
|
9671
9597
|
type: Component,
|
|
9672
|
-
args: [{ selector: 'tld-translate-text', standalone: false, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper\r\n\t[textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n\t[clearSourceVisible]=\"source?.length > 0\"\r\n\t(onSourceClear)=\"clearSource()\"\r\n\t[clearDisabled]=\"textareaDisabled\"\r\n\t[clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n\t[ngClass]=\"{ 'highlight-active': highlight, 'empty-target': isEmptyTarget }\"\r\n>\r\n\t<div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n\t\t<tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n\t</div>\r\n\t<ng-container dictation *ngIf=\"audioInputVisible()\">\r\n\t\t<tld-dictate\r\n\t\t\t#dictate\r\n\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t[systemId]=\"onlineAsrSystemId()\"\r\n\t\t>\r\n\t\t</tld-dictate>\r\n\t</ng-container>\r\n\r\n\t<button compactUpload mat-icon-button [matTooltip]=\"'TOOLTIPS.UPLOAD' | translate\" [attr.aria-label]=\"'TOOLTIPS.UPLOAD' | translate\" [disabled]=\"fileUploadDisabled\" (click)=\"openFileUpload()\">\r\n\t\t<mat-icon [svgIcon]=\"'upload'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<ng-container sourceActions>\r\n\t\t<div fxLayoutAlign=\"start center\" [class.basic-padding]=\"fileUpload\" fxLayoutGap=\"1em\">\r\n\t\t\t<div [class.hidden]=\"!fileUpload\" class=\"file-upload-wrapper\">\r\n\t\t\t\t<lib-file-upload\r\n\t\t\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t\t\t[uploadIconName]=\"uploadIconName\"\r\n\t\t\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t\t\t[filePreviewProgress]=\"filePreviewProgress\"\r\n\t\t\t\t\t[disabled]=\"fileUploadDisabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"upload-file-text\">\r\n\t\t\t\t\t\t<span class=\"info\">\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t<span> </span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.' + (multipleFiles ? 'FILES' : 'FILE') | translate\" [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t(<span>{{ visibleExtensions }}.</span>;\r\n\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" class=\"file-upload-max-size\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>)\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</lib-file-upload>\r\n\t\t\t\t<lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\"> </lib-open-extension-dialog>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n\r\n\t<div targetMain class=\"target-main\">\r\n\t\t<ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n\t\t\t<p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\" [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\"></p>\r\n\t\t</ng-container>\r\n\t</div>\r\n\r\n\t<ng-container targetActions>\r\n\t\t<div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showProgressIndicator\">\r\n\t\t\t<progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n\t\t</div>\r\n\t</ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n\t<div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\">\r\n\t\t<ng-container *ngIf=\"!urlToTranslate\">\r\n\t\t\t<div class=\"target-wrapper-action-buttons\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated\"\r\n\t\t\t\t\tclass=\"tld-copy-translation\"\r\n\t\t\t\t\t(click)=\"copy()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t\t[attr.aria-describedby]=\"copyMessageId\"\r\n\t\t\t\t\t[attr.Id]=\"copyButtonId\"\r\n\t\t\t\t\t(keydown.Tab)=\"switchFocusFromCopy($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated || translationError\"\r\n\t\t\t\t\tclass=\"tld-refresh-translation\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.REFRESH' | translate\"\r\n\t\t\t\t\t(click)=\"refresh()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\"> refresh </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<div [matTooltip]=\"'TLD_TRANSLATE.REPHRASE.TOOLTIP' | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<lib-new-feature-dialog-wrapper\r\n\t\t\t\t\t\t#rephraseFeature\r\n\t\t\t\t\t\t[titleLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.TITLE'\"\r\n\t\t\t\t\t\t[descriptionLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.DESCRIPTION'\"\r\n\t\t\t\t\t\t[closeLocalizationKey]=\"'TLD_TRANSLATE.REPHRASE.NEW_FEATURE.CLOSE'\"\r\n\t\t\t\t\t\t[featureClassName]=\"'tld-rephrase'\"\r\n\t\t\t\t\t\t[featureLocalStorageKey]=\"rephraseFeatureLocalStorageKey\"\r\n\t\t\t\t\t\t[timeout]=\"1000\"\r\n\t\t\t\t\t\t[maxWidth]=\"400\"\r\n\t\t\t\t\t\t[mobileScreenCustomPosition]=\"{autoScroll: true, left: '10px', top: '30%'}\"\r\n\t\t\t\t\t></lib-new-feature-dialog-wrapper>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\t\tclass=\"tld-rephrase\"\r\n\t\t\t\t\t\t\t[class.rephrase-feature-active]=\"rephraseFeature?.featureActive()\"\r\n\t\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing\"\r\n\t\t\t\t\t\t\t(click)=\"showRephraseOptions()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-icon [svgIcon]=\"'rephrase'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REPHRASE' | translate\"></mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div [matTooltip]=\"(isTextSummarizable ? 'TOOLTIPS.CREATE_SUMMARY' : 'TLD_TRANSLATE.SUMMARY.DISABLED') | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<lib-new-feature-dialog-wrapper\r\n\t\t\t\t\t\t#summarizeFeature\r\n\t\t\t\t\t\t[titleLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.TITLE'\"\r\n\t\t\t\t\t\t[descriptionLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.DESCRIPTION'\"\r\n\t\t\t\t\t\t[closeLocalizationKey]=\"'TLD_TRANSLATE.SUMMARY.NEW_FEATURE.CLOSE'\"\r\n\t\t\t\t\t\t[featureClassName]=\"'tld-create-summary'\"\r\n\t\t\t\t\t\t[featureLocalStorageKey]=\"summarizeFeatureLocalStorageKey\"\r\n\t\t\t\t\t\t[mobileScreenCustomPosition]=\"{autoScroll: true, left: '10px', top: '30%'}\"\r\n\t\t\t\t\t\t[timeout]=\"1000\"\r\n\t\t\t\t\t></lib-new-feature-dialog-wrapper>\r\n\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t\t[class.summarize-feature-active]=\"summarizeFeature?.featureActive()\"\r\n\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || !isTextSummarizable\"\r\n\t\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-icon [svgIcon]=\"'summarize'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.CREATE_SUMMARY' | translate\"></mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\"> </tld-text-to-speech>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"highlight-tree-wrapper\">\r\n\t\t\t\t<tld-highlight-tree *ngFor=\"let paragraph of targetParagraphs\" [highlight]=\"highlight\" [tree]=\"paragraph\"> </tld-highlight-tree>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isSummarazing || summarizedText\" class=\"summary-wrapper\">\r\n\t\t\t\t<p class=\"summary-title\">{{ \"TLD_TRANSLATE.SUMMARY.TITLE\" | translate }}</p>\r\n\r\n\t\t\t\t<p *ngIf=\"isSummarazing\" class=\"creating-progress\">{{ \"TLD_TRANSLATE.SUMMARY.CREATING\" | translate }}<span class=\"dot-loading\">...</span></p>\r\n\r\n\t\t\t\t<p [innerHTML]=\"markedSummarizedText\"></p>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"summarizedText\"\r\n\t\t\t\t\t[ngClass.lt-sm]=\"'summary-mobile'\"\r\n\t\t\t\t\tclass=\"summary-copy-btn\"\r\n\t\t\t\t\t(click)=\"copySummarizedText()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isRephraseActive\" class=\"rephrase-wrapper\">\r\n\t\t\t\t<tld-rephrase [text]=\"translatedText\" [disabled]=\"isTranslating\" [language]=\"targetLanguage\"></tld-rephrase>\r\n\t\t\t</div>\t\r\n\r\n\t\t\t<div *ngIf=\"firstParagraphTranslated && dictionaryEntry\" class=\"dictionary-wrapper\">\r\n\t\t\t\t<tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n\t\t\t<a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n\t\t\t\t{{ urlToTranslate }}\r\n\t\t\t\t<span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\"> open_in_new </span>\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n", styles: [".hidden{display:none}.go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:18px}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source,.highlight-tree-wrapper{min-height:210px}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:18px 48px 18px 18px!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:18px}.target-wrapper-action-buttons{position:absolute;top:3px;right:3px}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{color:var(--base-40);font-size:.875rem;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.file-upload-max-size{white-space:nowrap}.dictionary-wrapper{margin-top:2rem;border-top:1px solid var(--base-70)}.rephrase-wrapper,.summary-wrapper{position:relative;margin-top:8px;padding-top:12px;border-top:1px solid var(--base-70)}.summary-title{font-size:1rem;margin-bottom:.5rem;font-weight:600}.creating-progress{color:var(--base-40)}:host ::ng-deep .dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-45px;top:20px}.summary-mobile{right:-46px}::ng-deep .summarize-feature-active,::ng-deep .rephrase-feature-active{z-index:1001;background-color:#fff}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"] }]
|
|
9598
|
+
args: [{ selector: 'tld-translate-text', standalone: false, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper\r\n\t[textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n\t[clearSourceVisible]=\"source?.length > 0\"\r\n\t(onSourceClear)=\"clearSource()\"\r\n\t[clearDisabled]=\"textareaDisabled\"\r\n\t[clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n\t[ngClass]=\"{ 'highlight-active': highlight, 'empty-target': isEmptyTarget }\"\r\n>\r\n\t<div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n\t\t<tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n\t</div>\r\n\t<ng-container dictation *ngIf=\"audioInputVisible()\">\r\n\t\t<tld-dictate\r\n\t\t\t#dictate\r\n\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t[systemId]=\"onlineAsrSystemId()\"\r\n\t\t>\r\n\t\t</tld-dictate>\r\n\t</ng-container>\r\n\r\n\t<button compactUpload mat-icon-button [matTooltip]=\"'TOOLTIPS.UPLOAD' | translate\" [attr.aria-label]=\"'TOOLTIPS.UPLOAD' | translate\" [disabled]=\"fileUploadDisabled\" (click)=\"openFileUpload()\">\r\n\t\t<mat-icon [svgIcon]=\"'upload'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<ng-container sourceActions>\r\n\t\t<div fxLayoutAlign=\"start center\" [class.basic-padding]=\"fileUpload\" fxLayoutGap=\"1em\">\r\n\t\t\t<div [class.hidden]=\"!fileUpload\" class=\"file-upload-wrapper\">\r\n\t\t\t\t<lib-file-upload\r\n\t\t\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t\t\t[uploadIconName]=\"uploadIconName\"\r\n\t\t\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t\t\t[filePreviewProgress]=\"filePreviewProgress\"\r\n\t\t\t\t\t[disabled]=\"fileUploadDisabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"upload-file-text\">\r\n\t\t\t\t\t\t<span class=\"info\">\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t<span> </span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.TRANSLATE_TEXT_DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.' + (multipleFiles ? 'FILES' : 'FILE') | translate\" [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t(<span>{{ visibleExtensions }}.</span>;\r\n\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" class=\"file-upload-max-size\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>)\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</lib-file-upload>\r\n\t\t\t\t<lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\"> </lib-open-extension-dialog>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n\r\n\t<div targetMain class=\"target-main\">\r\n\t\t<ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n\t\t\t<p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\" [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\"></p>\r\n\t\t</ng-container>\r\n\t</div>\r\n\r\n\t<ng-container targetActions>\r\n\t\t<div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showProgressIndicator\">\r\n\t\t\t<progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n\t\t</div>\r\n\t</ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n\t<div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\">\r\n\t\t<ng-container *ngIf=\"!urlToTranslate\">\r\n\t\t\t<div class=\"target-wrapper-action-buttons\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated\"\r\n\t\t\t\t\tclass=\"tld-copy-translation\"\r\n\t\t\t\t\t(click)=\"copy()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t\t[attr.aria-describedby]=\"copyMessageId\"\r\n\t\t\t\t\t[attr.Id]=\"copyButtonId\"\r\n\t\t\t\t\t(keydown.Tab)=\"switchFocusFromCopy($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated || translationError\"\r\n\t\t\t\t\tclass=\"tld-refresh-translation\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.REFRESH' | translate\"\r\n\t\t\t\t\t(click)=\"refresh()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\"> refresh </span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<div [matTooltip]=\"'TLD_TRANSLATE.REPHRASE.TOOLTIP' | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\t\tclass=\"tld-rephrase\"\r\n\t\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing\"\r\n\t\t\t\t\t\t\t(click)=\"showRephraseOptions()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-icon [svgIcon]=\"'rephrase'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REPHRASE' | translate\"></mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div [matTooltip]=\"(isTextSummarizable ? 'TOOLTIPS.CREATE_SUMMARY' : 'TLD_TRANSLATE.SUMMARY.DISABLED') | translate\">\r\n\t\t\t\t\t@if (isLlmEnabled && firstParagraphTranslated) {\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || !isTextSummarizable\"\r\n\t\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-icon [svgIcon]=\"'summarize'\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.CREATE_SUMMARY' | translate\"></mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\"> </tld-text-to-speech>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"highlight-tree-wrapper\">\r\n\t\t\t\t<tld-highlight-tree *ngFor=\"let paragraph of targetParagraphs\" [highlight]=\"highlight\" [tree]=\"paragraph\"> </tld-highlight-tree>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isSummarazing || summarizedText\" class=\"summary-wrapper\">\r\n\t\t\t\t<p class=\"summary-title\">{{ \"TLD_TRANSLATE.SUMMARY.TITLE\" | translate }}</p>\r\n\r\n\t\t\t\t<p *ngIf=\"isSummarazing\" class=\"creating-progress\">{{ \"TLD_TRANSLATE.SUMMARY.CREATING\" | translate }}<span class=\"dot-loading\">...</span></p>\r\n\r\n\t\t\t\t<p [innerHTML]=\"markedSummarizedText\"></p>\r\n\r\n\t\t\t\t<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"summarizedText\"\r\n\t\t\t\t\t[ngClass.lt-sm]=\"'summary-mobile'\"\r\n\t\t\t\t\tclass=\"summary-copy-btn\"\r\n\t\t\t\t\t(click)=\"copySummarizedText()\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div *ngIf=\"isRephraseActive\" class=\"rephrase-wrapper\">\r\n\t\t\t\t<tld-rephrase [text]=\"translatedText\" [disabled]=\"isTranslating\" [language]=\"targetLanguage\"></tld-rephrase>\r\n\t\t\t</div>\t\r\n\r\n\t\t\t<div *ngIf=\"firstParagraphTranslated && dictionaryEntry\" class=\"dictionary-wrapper\">\r\n\t\t\t\t<tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n\t\t\t<a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n\t\t\t\t{{ urlToTranslate }}\r\n\t\t\t\t<span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\"> open_in_new </span>\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n", styles: [".hidden{display:none}.go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:18px}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source,.highlight-tree-wrapper{min-height:210px}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:18px 48px 18px 18px!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:18px}.target-wrapper-action-buttons{position:absolute;top:3px;right:3px}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{color:var(--base-40);font-size:.875rem;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.file-upload-max-size{white-space:nowrap}.dictionary-wrapper{margin-top:2rem;border-top:1px solid var(--base-70)}.rephrase-wrapper,.summary-wrapper{position:relative;margin-top:8px;padding-top:12px;border-top:1px solid var(--base-70)}.summary-title{font-size:1rem;margin-bottom:.5rem;font-weight:600}.creating-progress{color:var(--base-40)}:host ::ng-deep .dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-45px;top:20px}.summary-mobile{right:-46px}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"] }]
|
|
9673
9599
|
}], ctorParameters: () => [{ type: TldTranslateTextService }, { type: i2$2.Clipboard }, { type: i4.AlertService }, { type: TldTranslateConfigService }, { type: TldScrollService }, { type: TldTranslateSystemManagementService }, { type: AudioRecordService }, { type: TldVoiceInputService }, { type: TldTranslateFileService }, { type: i5$1.LLMService }, { type: i9.KeycloakService }], propDecorators: { sourceComponent: [{
|
|
9674
9600
|
type: ViewChild,
|
|
9675
9601
|
args: ["sourceComponent"]
|