@tilde-nlp/ngx-translate 7.0.19 → 7.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/assets/icons/icons.d.ts +2 -0
  2. package/assets/icons/index.d.ts +1 -0
  3. package/esm2022/assets/icons/icons.mjs +11 -0
  4. package/esm2022/assets/icons/index.mjs +2 -0
  5. package/esm2022/lib/i18n/de.mjs +1 -45
  6. package/esm2022/lib/i18n/en.mjs +10 -48
  7. package/esm2022/lib/i18n/et.mjs +1 -45
  8. package/esm2022/lib/i18n/fi.mjs +1 -45
  9. package/esm2022/lib/i18n/lt.mjs +1 -45
  10. package/esm2022/lib/i18n/lv.mjs +11 -49
  11. package/esm2022/lib/i18n/pl.mjs +1 -45
  12. package/esm2022/lib/modules/tld-common/models/configs/tld-llm-config.model.mjs +1 -1
  13. package/esm2022/lib/modules/tld-common/services/tld-translate-config.service.mjs +1 -3
  14. package/esm2022/lib/modules/tld-document/download-button/download-button.component.mjs +6 -4
  15. package/esm2022/lib/modules/tld-document/tld-document.module.mjs +12 -4
  16. package/esm2022/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +3 -3
  17. package/esm2022/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +62 -22
  18. package/esm2022/lib/modules/tld-text/tld-text.module.mjs +8 -4
  19. package/esm2022/lib/modules/tld-tooltip/tld-tooltip.module.mjs +3 -7
  20. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.mjs +4 -11
  21. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.mjs +3 -3
  22. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.mjs +7 -15
  23. package/esm2022/lib/tld-translate.component.mjs +8 -4
  24. package/esm2022/lib/tld-translate.module.mjs +2 -8
  25. package/fesm2022/tilde-nlp-ngx-translate.mjs +123 -387
  26. package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
  27. package/lib/i18n/de.d.ts +0 -44
  28. package/lib/i18n/en.d.ts +6 -44
  29. package/lib/i18n/et.d.ts +0 -44
  30. package/lib/i18n/fi.d.ts +0 -44
  31. package/lib/i18n/lt.d.ts +0 -44
  32. package/lib/i18n/lv.d.ts +6 -44
  33. package/lib/i18n/pl.d.ts +0 -44
  34. package/lib/modules/tld-common/models/configs/tld-llm-config.model.d.ts +0 -4
  35. package/lib/modules/tld-document/tld-document.module.d.ts +3 -1
  36. package/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.d.ts +11 -1
  37. package/lib/modules/tld-text/tld-text.module.d.ts +2 -1
  38. package/lib/modules/tld-tooltip/tld-tooltip.module.d.ts +1 -1
  39. package/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.d.ts +0 -1
  40. package/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.d.ts +2 -5
  41. package/lib/tld-translate.component.d.ts +3 -2
  42. package/package.json +1 -1
  43. package/src/assets/webcomponent/styles.css +1 -1
  44. package/src/assets/webcomponent/tilde-translate-box.js +2 -2
  45. package/src/styles/styles.scss +2 -6
  46. package/esm2022/lib/factories/llm-service-configuration.factory.mjs +0 -9
  47. package/lib/factories/llm-service-configuration.factory.d.ts +0 -3
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Optional, Inject, Pipe, Component, EventEmitter, ViewChild, Input, Output, NgModule, HostListener } from '@angular/core';
3
3
  import * as i5 from '@tilde-nlp/ngx-common';
4
- import { LAST_USED_SYSTEM_LOCAL_STORAGE_KEY, SortHelper, OpenCloseButtonComponent, CloseButtonModule, SortTranslationsModule, OpenCloseButtonModule, LanguageTranslateModule, InlineMessageType, InlineMessageIconPosition, InlineMessageModule, AuthHeadersHelper, ConversionHelper, FileExtensionHelper, FileExtensions, NotificationMessageType, FileUploadModule, HtmlHelper, ExtensionDialogModule, FilterWithHighlightPipe, FilterWithHighlightModule, ClickOutsideModule, TerminologyModule, LLMModule, NotificationMessageModule, CompanyProductModule, StatusDisplayModule, ALERT_CONFIGURATION_TOKEN, LLM_CONFIGURATION_TOKEN } from '@tilde-nlp/ngx-common';
4
+ import { LAST_USED_SYSTEM_LOCAL_STORAGE_KEY, SortHelper, OpenCloseButtonComponent, CloseButtonModule, SortTranslationsModule, OpenCloseButtonModule, LanguageTranslateModule, InlineMessageType, InlineMessageIconPosition, InlineMessageModule, AuthHeadersHelper, ConversionHelper, FileExtensionHelper, FileExtensions, NotificationMessageType, FileUploadModule, HtmlHelper, ExtensionDialogModule, FilterWithHighlightPipe, FilterWithHighlightModule, ClickOutsideModule, TerminologyModule, NotificationMessageModule, CompanyProductModule, StatusDisplayModule, ALERT_CONFIGURATION_TOKEN } from '@tilde-nlp/ngx-common';
5
5
  import { ReplaySubject, Subject, BehaviorSubject, of, timer, throwError, forkJoin } from 'rxjs';
6
6
  import * as i1 from '@ngx-translate/core';
7
7
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
8
8
  import * as i3 from '@ngbracket/ngx-layout/flex';
9
9
  import * as i4 from '@angular/material/menu';
10
10
  import { MatMenu, MatMenuModule } from '@angular/material/menu';
11
- import { takeUntil, map, catchError, retryWhen, mergeMap, take, distinctUntilChanged, debounce, tap } from 'rxjs/operators';
11
+ import { takeUntil, map, catchError, retryWhen, mergeMap, take, distinctUntilChanged, debounce, tap, finalize } from 'rxjs/operators';
12
12
  import * as i2 from '@angular/common';
13
13
  import { CommonModule, TitleCasePipe } from '@angular/common';
14
14
  import * as i5$1 from '@ngbracket/ngx-layout/extended';
@@ -20,14 +20,14 @@ import { MatTooltipModule } from '@angular/material/tooltip';
20
20
  import * as i6 from '@angular/cdk/scrolling';
21
21
  import * as i4$1 from '@angular/forms';
22
22
  import { FormsModule } from '@angular/forms';
23
- import * as i3$2 from '@angular/material/icon';
23
+ import * as i6$1 from '@angular/material/icon';
24
24
  import { MatIconModule } from '@angular/material/icon';
25
25
  import { FlexLayoutModule } from '@ngbracket/ngx-layout';
26
26
  import * as i2$2 from '@angular/material/dialog';
27
27
  import { MatDialogConfig, MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
28
28
  import { saveAs } from 'file-saver';
29
29
  import * as i5$2 from '@tilde-nlp/ngx-services';
30
- import { QuotaType } from '@tilde-nlp/ngx-services';
30
+ import { QuotaType, LLMUseCase } from '@tilde-nlp/ngx-services';
31
31
  import * as i1$1 from '@angular/common/http';
32
32
  import * as i3$1 from '@angular/platform-browser';
33
33
  import * as i11 from '@angular/material/progress-bar';
@@ -43,6 +43,7 @@ import { MatInputModule } from '@angular/material/input';
43
43
  import * as i4$2 from '@angular/material/form-field';
44
44
  import { MatFormFieldModule } from '@angular/material/form-field';
45
45
  import * as i10 from '@angular/cdk/text-field';
46
+ import { marked } from 'marked';
46
47
  import * as $ from 'jquery';
47
48
  import * as i5$3 from '@angular/router';
48
49
 
@@ -536,50 +537,6 @@ const i18n_de = {
536
537
  "PLAY": "Anhören",
537
538
  "PAUSE": "Pause"
538
539
  },
539
- "LLM": {
540
- "SUMMARY": "Zusammenfassung erstellen",
541
- "REPHRASE": "Übersetzung umformulieren",
542
- "MENU_TOOLTIP": "Übersetzung umformulieren oder zusammenfassen",
543
- "MENU_DISABLED_TOOLTIP": "Auf Übersetzung warten, um Funktionen zur Umformulierung oder Zusammenfassung zu nutzen",
544
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Mindestens 100 Symbole zur Nutzung der Zusammenfassungsfunktion bereitstellen",
545
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Funktion ist nur für Textübersetzung verfügbar",
546
- "EU_DATA_TOOLTIP": "Wir nutzen den Azure OpenAI Service, die eingegebenen Daten werden sicher auf Servern innerhalb der EU verarbeitet",
547
- "REPHRASE_MODAL": {
548
- "TITLE": "Übersetzung umformulieren",
549
- "DESCRIPTION": "Text in einem bestimmten Schreibstil umformulieren und Sprache und Tonfall an einen bestimmten Zielstil oder Zieltonfall anpassen.",
550
- "CLOSE": "Schließen",
551
- "CANCEL": "Abbrechen",
552
- "ACTION": "Umformulieren",
553
- "REPHRASING": "Umformulierung...",
554
- "LIMIT": "Heute verbleibende Umformulierungen: <span class='text-m-semi-bold'>{{limit}}</span>. Sie benötigen mehr? <a href='{{subscriptionUrl}}' target='_blank'>Ein Abonnement erhalten</a>",
555
- "WRITING_STYLES": {
556
- "TITLE": "Schreibstil",
557
- "TOOLTIP_GENERAL": "Förmlichkeit: Ein geringes bis mittleres Maß an Förmlichkeit verwenden. \nVokabular: Optimale für einfache und klare Sprache, vermeidet technischen Jargon. \nSatzbau: Einfache bis moderate Komplexität der Sätze wahren. \nTonfall: Einen freundlichen und ansprechenden Tonfall wahren.",
558
- "TOOLTIP_PROFESSIONAL": "Förmlichkeit: Ein mittleres bis hohes Maß an Förmlichkeit verwenden. \nVokabular: Branchenspezifische Terminologie und branchenspezifischen Jargon verwenden, wo zutreffend. \nSatzbau: Sicherstellen, dass Sätze klar und prägnant sind und eine gewisse Komplexität aufweisen. \nTonfall: Einen professionellen, respektvollen und direkten Tonfall wahren.",
559
- "TOOLTIP_ACADEMIC": "Förmlichkeit: Ein hohes Maß an Förmlichkeit verwenden. \nVokabular: Technische und themenspezifische Technologie aufnehmen. \nSatzbau: Komplexen Satzbau mit einem Fokus auf Klarheit und Prägnanz verwenden. \nTonfall: Einen objektiven, analytischen und eher unpersönlichen Tonfall wahren.",
560
- "SPECIFIC_STYLE": "{{style}}-Schreibstil",
561
- "GENERAL": "Allgemein",
562
- "PROFESSIONAL": "Professionell",
563
- "ACADEMIC": "Akademisch"
564
- }
565
- },
566
- "SUMMARY_MODAL": {
567
- "TITLE": "Übersetzungszusammenfassung",
568
- "DESCRIPTION": "Lange Texte mit unserer fortschrittlichen LLM-Funktion schnell verständlich zusammenfassen.",
569
- "CANCEL": "Abbrechen",
570
- "CLOSE": "Schließen",
571
- "ACTION": "Zusammenfassung erstellen",
572
- "REGENERATE": "Erneut generieren",
573
- "LIMIT": "Heute verbleibende Zusammenfassungen: <span class='text-m-semi-bold'>{{limit}}</span>. Sie benötigen mehr? <a href='{{subscriptionUrl}}' target='_blank'>Ein Abonnement erhalten</a>"
574
- },
575
- "ERRORS": {
576
- "QUOTA_LIMIT": "Sie haben die Grenze Ihres Kontingents erreicht. Sie benötigen mehr? <a href='{{subscriptionUrl}}' target='_blank'>Ein Abonnement erhalten</a>",
577
- "QUOTA_LIMIT_REACHED": "Sie haben die Grenze Ihres Kontingents erreicht. Sie benötigen mehr? <a href='{{subscriptionUrl}}' target='_blank'>Ein Abonnement erhalten</a>",
578
- "DEFAULT": "Scheinbar gab es ein Problem, bitte <bold>wiederholen</bold> Sie den Vorgang. Wenden Sie sich an unser <a href='mailto:{{supportEmail}}' target='_blank'>Supportteam</a>, falls es nicht funktioniert.",
579
- "REPHRASE_REQUEST_TIMEOUT": "Das Umformulieren hat zu viel Zeit in Anspruch genommen. Versuchen Sie es erneut oder kontaktieren Sie unser <a href='mailto:{{supportEmail}}' target='_blank'>Support-Team</a>.",
580
- "SUMMARY_REQUEST_TIMEOUT": "Das Zusammenfassen hat zu viel Zeit in Anspruch genommen. Versuchen Sie es erneut oder kontaktieren Sie unser <a href='mailto:{{supportEmail}}' target='_blank'>Support-Team</a>."
581
- }
582
- },
583
540
  "DICTIONARY": {
584
541
  "SOURCE": "Ergebnisse von {{src}}"
585
542
  }
@@ -644,11 +601,14 @@ const i18n_en = {
644
601
  "PDF_PAGE_LIMIT_MSG_TITLE": "Translation limit",
645
602
  "PDF_PAGE_LIMIT_MSG": "Only the first page will be translated.",
646
603
  "PDF_PAGE_LIMIT_MSG_SUBSCRIPTION": " You need a Tilde MT subscription to translate full PDF files. <a href=\"{{pricingUrl}}\" target='_blank'>start with a free trial</a>",
647
- "CLEAR_SOURCE_TOOLTIP": "Clear text"
604
+ "CLEAR_SOURCE_TOOLTIP": "Clear text",
605
+ "SUMMARY": {
606
+ "TITLE": "Summary",
607
+ "CREATING": "Creating summary"
608
+ },
648
609
  },
649
610
  "MULTIPLE_FILES": {
650
- "APPEND": "Add files",
651
- "CLEAR_ALL": "Cancel",
611
+ "CLEAR_ALL": "Close",
652
612
  "DOWNLOAD": "Download",
653
613
  "STATUSS_INITIALIZING": "Initializing",
654
614
  "STATUSS_EXTRACTING": "Extracting",
@@ -843,6 +803,7 @@ const i18n_en = {
843
803
  "SHOW_EXTENSIONS": "Show other download options",
844
804
  "COPY": "Copy to clipboard",
845
805
  "REFRESH": "Refresh translation",
806
+ "CREATE_SUMMARY": "Create summary",
846
807
  "OPEN_IN_NEW": "Open in new tab",
847
808
  "SWAP_LANGUAGES": "Swap languages",
848
809
  "OTHER_LANGUAGES_TRIGGER": "Show other languages"
@@ -851,7 +812,8 @@ const i18n_en = {
851
812
  "COPY": "Copy to clipboard",
852
813
  "REFRESH": "Refresh translation",
853
814
  "SWAP_LANGUAGES": "Swap languages",
854
- "DISLIKE": "Dislike"
815
+ "DISLIKE": "Dislike",
816
+ "CREATE_SUMMARY": "Create summary"
855
817
  },
856
818
  "PDF_CONVERSION": {
857
819
  "TITLE_1": "PDF translation",
@@ -1074,49 +1036,6 @@ const i18n_en = {
1074
1036
  "PLAY": "Listen",
1075
1037
  "PAUSE": "Pause"
1076
1038
  },
1077
- "LLM": {
1078
- "SUMMARY": "Create summary",
1079
- "REPHRASE": "Rephrase translation",
1080
- "MENU_TOOLTIP": "Rephrase or summarize translation",
1081
- "MENU_DISABLED_TOOLTIP": "Wait for translation to use rephrasing or summarizing features",
1082
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Provide atleast 100 symbols to use summary feature",
1083
- "MENU_REPHRASE_DISABLED_TOOLTIP": "Rephrase is not available for selected language",
1084
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Feature is available for text translation only",
1085
- "EU_DATA_TOOLTIP": "We utilise the Azure OpenAI Service, the entered data is securely processed on servers located within the EU",
1086
- "REPHRASE_MODAL": {
1087
- "TITLE": "Rephrase translation",
1088
- "DESCRIPTION": "Rephrase text into a specified writing style, adapting the language and tone to match a given target style or voice.",
1089
- "CLOSE": "Close",
1090
- "CANCEL": "Cancel",
1091
- "ACTION": "Rephrase",
1092
- "LIMIT": "Rephrases left today: <span class='text-m-semi-bold'>{{limit}}</span>. Need more? <a href='{{subscriptionUrl}}' target='_blank'>Get a subscription</a>",
1093
- "WRITING_STYLES": {
1094
- "TITLE": "Writing style",
1095
- "TOOLTIP_GENERAL": "Formality: Use a low to medium level of formality. \nVocabulary: Optimal for simple and clear language, avoiding technical jargon. \nSentence Structure: Keep sentences simple to moderately complex. \nTone: Maintain a friendly and engaging tone.",
1096
- "TOOLTIP_PROFESSIONAL": "Formality: Use a medium to high level of formality. \nVocabulary: Utilize industry-specific terminology and jargon where appropriate. \nSentence Structure: Ensure sentences are clear and concise, with some complexity. \nTone: Maintain a professional, respectful, and straightforward tone.",
1097
- "TOOLTIP_ACADEMIC": "Formality: Use a high level of formality. \nVocabulary: Incorporate technical and subject-specific terminology. \nSentence Structure: Utilize complex sentence structures with a focus on clarity and precision. \nTone: Maintain an objective, analytical, and sometimes impersonal tone.",
1098
- "SPECIFIC_STYLE": "{{style}} writing style",
1099
- "GENERAL": "General",
1100
- "PROFESSIONAL": "Professional",
1101
- "ACADEMIC": "Academic"
1102
- },
1103
- },
1104
- "SUMMARY_MODAL": {
1105
- "TITLE": "Translation summary",
1106
- "DESCRIPTION": "Quickly condense lengthy texts into clear summaries using our advanced LLM feature.",
1107
- "CANCEL": "Cancel",
1108
- "CLOSE": "Close",
1109
- "ACTION": "Create summary",
1110
- "REGENERATE": "Re-generate",
1111
- "LIMIT": "Summaries left today: <span class='text-m-semi-bold'>{{limit}}</span>. Need more? <a href='{{subscriptionUrl}}' target='_blank'>Get a subscription</a>",
1112
- },
1113
- "ERRORS": {
1114
- "QUOTA_LIMIT_REACHED": "You have reached your quota limit. Need more? <a href='{{subscriptionUrl}}' target='_blank'>Get a subscription</a>",
1115
- "DEFAULT": "It seems like we had problem, please <bold>repeat</bold> action, if it doesn't work, contact our <a href='mailto:{{supportEmail}}' target='_blank'>support team</a>.",
1116
- "REPHRASE_REQUEST_TIMEOUT": "Rephrasing took too much time. Try again, or contact our <a href='mailto:{{supportEmail}}' target='_blank'>support team</a>.",
1117
- "SUMMARY_REQUEST_TIMEOUT": "Summarizing took too much time. Try again, or contact our <a href='mailto:{{supportEmail}}' target='_blank'>support team</a>."
1118
- },
1119
- },
1120
1039
  "DICTIONARY": {
1121
1040
  "SOURCE": "Results from {{src}}"
1122
1041
  }
@@ -1611,50 +1530,6 @@ const i18n_et = {
1611
1530
  "PLAY": "Kuulake",
1612
1531
  "PAUSE": "Peata"
1613
1532
  },
1614
- "LLM": {
1615
- "SUMMARY": "Kokkuvõtte loomine",
1616
- "REPHRASE": "Tõlke ümbersõnastamine",
1617
- "MENU_TOOLTIP": "Tõlke ümbersõnastamine või kokkuvõte",
1618
- "MENU_DISABLED_TOOLTIP": "Ümbersõnastamise või kokkuvõtte funktsioonide kasutamiseks oodake tõlget.",
1619
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Esitage kokkuvõttefunktsiooni kasutamiseks vähemalt 100 sümbolit.",
1620
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Funktsioon on saadaval ainult teksti tõlkimiseks.",
1621
- "EU_DATA_TOOLTIP": "Kasutame Azure OpenAI teenust, sisestatud andmeid töödeldakse turvaliselt EL-is asuvates serverites",
1622
- "REPHRASE_MODAL": {
1623
- "TITLE": "Tõlke ümbersõnastamine",
1624
- "DESCRIPTION": "Sõnastage tekst ümber kindlaksmääratud kirjastiili, kohandades keelt ja tooni vastavalt sihtstiilile või -häälele.",
1625
- "CLOSE": "Sulge",
1626
- "CANCEL": "Loobu",
1627
- "ACTION": "Ümbersõnastamine",
1628
- "REPHRASING": "Ümbersõnastamine...",
1629
- "LIMIT": "Täna jäetud ümbersõnastused: <span class='text-m-semi-bold'>{{limit}}</span>. Lisateave <a href='{{subscriptionUrl}}' target='_blank'>Hankige tellimus</a>",
1630
- "WRITING_STYLES": {
1631
- "TITLE": "Kirjutamisstiil",
1632
- "TOOLTIP_GENERAL": "Formaalsus: Kasutage madalat kuni keskmist formaalsust. \nSõnastik: Optimaalne on lihtne ja selge keel, vältides tehnilist oskuskeelt. \nLauseehitus: Hoidke laused lihtsad kuni mõõdukalt keerulised. \nToon: säilitage sõbralik ja kaasav toon.",
1633
- "TOOLTIP_PROFESSIONAL": "Formaalsus: Kasutage keskmist kuni suurt formaalsust. \nSõnastik: Vajaduse korral kasutada valdkonnapõhist terminoloogiat ja oskuskeelt. \nLauseehitus: Veenduge, et laused on selged ja lühikesed, kuid mingil määral keerulised. \nToon: Säilitage professionaalne, lugupidav ja otsekohene toon.",
1634
- "TOOLTIP_ACADEMIC": "Formaalsus: Kasutage suurt formaalsust. \nSõnastik: Tehnilise ja erialase terminoloogia kaasamine. \nLauseehitus: Kasutage keerulisi lauseehitusi, keskendudes selgusele ja täpsusele. \nToon: Säilitage objektiivne, analüütiline ja mõnikord neutraalne toon.",
1635
- "SPECIFIC_STYLE": "{{style}} kirjutamisstiil",
1636
- "GENERAL": "Üldine",
1637
- "PROFESSIONAL": "Professionaalne",
1638
- "ACADEMIC": "Akadeemiline"
1639
- }
1640
- },
1641
- "SUMMARY_MODAL": {
1642
- "TITLE": "Tõlke kokkuvõte",
1643
- "DESCRIPTION": "Tehke pikad tekstid kiiresti selgeteks kokkuvõteteks, kasutades meie täiustatud LLM-funktsiooni.",
1644
- "CANCEL": "Loobu",
1645
- "CLOSE": "Sulge",
1646
- "ACTION": "Kokkuvõtte loomine",
1647
- "REGENERATE": "Uuesti loomine",
1648
- "LIMIT": "Täna jäetud ümbersõnastused <span class='text-m-semi-bold'>{{limit}}</span>. Lisateave <a href='{{subscriptionUrl}}' target='_blank'>Uuendage tellimust</a>"
1649
- },
1650
- "ERRORS": {
1651
- "QUOTA_LIMIT": "Olete saavutanud oma limiidi. Lisateave <a href='{{subscriptionUrl}}' target='_blank'>Uuendage tellimust</a>",
1652
- "QUOTA_LIMIT_REACHED": "Olete saavutanud oma limiidi. Lisateave <a href='{{subscriptionUrl}}' target='_blank'>Uuendage tellimust</a>",
1653
- "DEFAULT": "Näib, et meil on probleem, palun <bold>korrake</bold> tegevust. Kui see ei õnnestu, võtke ühendust meie<a href='mailto:{{supportEmail}}' target='_blank'>tugimeeskonnaga</a>.",
1654
- "REPHRASE_REQUEST_TIMEOUT": "Ümberfraaside tegemine võttis liiga kaua aega. Proovige uuesti või võtke ühendust meie <a href='mailto:{{supportEmail}}' target='_blank'>tugitiimiga</a>.",
1655
- "SUMMARY_REQUEST_TIMEOUT": "Kokkuvõtte koostamine võttis liiga kaua aega. Proovige uuesti või võtke ühendust meie <a href='mailto:{{supportEmail}}' target='_blank'>tugitiimiga</a>."
1656
- }
1657
- },
1658
1533
  "DICTIONARY": {
1659
1534
  "SOURCE": "Tulemused {{src}}-st"
1660
1535
  }
@@ -2154,50 +2029,6 @@ const i18n_fi = {
2154
2029
  "PLAY": "Kuuntele",
2155
2030
  "PAUSE": "Pysäytys"
2156
2031
  },
2157
- "LLM": {
2158
- "SUMMARY": "Luo tiivistelmä",
2159
- "REPHRASE": "Muotoile käännös uudelleen",
2160
- "MENU_TOOLTIP": "Muotoile käännös uudelleen tai luo siitä tiivistelmä",
2161
- "MENU_DISABLED_TOOLTIP": "Odota käännöstä voidaksesi käyttää uudelleenmuotoilu- tai tiivistelmäominaisuuksia",
2162
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Anna vähintään 100 merkkiä voidaksesi käyttää tiivistelmäominaisuutta",
2163
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Ominaisuutta voidaan käyttää ainoastaan tekstikäännöksiin",
2164
- "EU_DATA_TOOLTIP": "Käytämme Azure OpenAI -palvelua, syötetyt tiedot käsitellään turvallisesti EU:n alueella sijaitsevilla palvelimilla",
2165
- "REPHRASE_MODAL": {
2166
- "TITLE": "Muotoile käännös uudelleen",
2167
- "DESCRIPTION": "Muotoile teksti uudelleen määritetyn kirjoitustyylin mukaisesti mukauttamalla kieltä ja sävyä vastaamaan annettua kohdekieltä tai -ääntä.",
2168
- "CLOSE": "Sulje",
2169
- "CANCEL": "Peruuta",
2170
- "ACTION": "Muotoile uudelleen",
2171
- "REPHRASING": "Muotoillaan uudelleen...",
2172
- "LIMIT": "Uudelleenmuotoiluja jäljellä tänään: <span class='text-m-semi-bold'>{{limit}}</span> Tarvitsetko lisää? <a href='{{subscriptionUrl}}' target='_blank'>Hanki tilaus</a>",
2173
- "WRITING_STYLES": {
2174
- "TITLE": "Kirjoitustyyli",
2175
- "TOOLTIP_GENERAL": "Muodollisuus: Valitse muodollisuusasteeksi matala tai keskitaso. \nSanasto: Ihanteellinen ratkaisu, kun kieli on yksinkertaista ja selkeää eikä sisällä teknistä sanastoa. \nLauserakenne: Pidä lauserakenteiden vaativuustaso yksinkertaisena tai kohtuullisena. \nSävy: Pidä sävy ystävällisenä ja osallistavana.",
2176
- "TOOLTIP_PROFESSIONAL": "Muodollisuus: Valitse muodollisuusasteeksi keskitaso tai korkea. \nSanasto: Käytä asianmukaisissa tilanteissa alakohtaista termistöä ja sanastoa. \nLauserakenne: Varmista, että lauseet ovat selkeitä ja ytimekkäitä, mutta jonkin verran monimuotoisia. \nSävy: Pidä sävy ammattimaisena, kunnioittavana ja suorana.",
2177
- "TOOLTIP_ACADEMIC": "Muodollisuus: Valitse muodollisuusasteeksi korkea. \nSanasto: Sisällytä tekstiin teknistä ja aihekohtaista termistöä. \nLauserakenne: Käytä monimuotoisia lauserakenteita, joissa keskitytään selkeyteen ja tarkkuuteen. \nSävy: Pidä sävy objektiivisena, analyyttisena ja toisinaan persoonattomana.",
2178
- "SPECIFIC_STYLE": "{{style}} kirjoitustyyli",
2179
- "GENERAL": "Yleinen",
2180
- "PROFESSIONAL": "Ammattimainen",
2181
- "ACADEMIC": "Akateeminen"
2182
- }
2183
- },
2184
- "SUMMARY_MODAL": {
2185
- "TITLE": "Käännöksen tiivistelmä",
2186
- "DESCRIPTION": "Luo pitkistä teksteistä nopeasti selkeitä tiivistelmiä edistyneellä LLM-ominaisuudellamme.",
2187
- "CANCEL": "Peruuta",
2188
- "CLOSE": "Sulje",
2189
- "ACTION": "Luo tiivistelmä",
2190
- "REGENERATE": "Luo uudelleen",
2191
- "LIMIT": "Tiivistelmiä käytettävissä vielä tänään: <span class='text-m-semi-bold'>{{limit}}</span>. Tarvitsetko lisää? <a href='{{subscriptionUrl}}' target='_blank'>Hanki tilaus</a>"
2192
- },
2193
- "ERRORS": {
2194
- "QUOTA_LIMIT": "Kiintiösi on täynnä. Tarvitsetko lisää? <a href='{{subscriptionUrl}}' target='_blank'>Hanki tilaus</a>",
2195
- "QUOTA_LIMIT_REACHED": "Kiintiösi on täynnä. Tarvitsetko lisää? <a href='{{subscriptionUrl}}' target='_blank'>Hanki tilaus</a>",
2196
- "DEFAULT": "Törmäsimme ongelmaan. Ole hyvä ja <bold>suorita toiminto uudelleen</bold>. Jos ongelma ei ratkea, ota yhteyttä <a href='mailto:{{supportEmail}}' target='_blank'>tukitiimiimme</a>.",
2197
- "REPHRASE_REQUEST_TIMEOUT": "Uudelleenmuotoilu kesti liian kauan. Yritä uudelleen tai ota yhteyttä <a href='mailto:{{supportEmail}}' target='_blank'>tukitiimiimme</a>.",
2198
- "SUMMARY_REQUEST_TIMEOUT": "Yhteenveto kesti liian kauan. Yritä uudelleen tai ota yhteyttä <a href='mailto:{{supportEmail}}' target='_blank'>tukitiimiimme</a>."
2199
- }
2200
- },
2201
2032
  "DICTIONARY": {
2202
2033
  "SOURCE": "Tulokset lähteestä {{src}}"
2203
2034
  }
@@ -2693,50 +2524,6 @@ const i18n_lt = {
2693
2524
  "PLAY": "Klausyti",
2694
2525
  "PAUSE": "Pristabdyti"
2695
2526
  },
2696
- "LLM": {
2697
- "SUMMARY": "Kurti santrauką",
2698
- "REPHRASE": "Perfrazuoti vertimą",
2699
- "MENU_TOOLTIP": "Perfrazuoti vertimą ar kurti jo santrauką",
2700
- "MENU_DISABLED_TOOLTIP": "Palaukite, kol bus išversta, kad galėtumėte naudoti perfrazavimo ar santraukos kūrimo funkcijas",
2701
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Pateikite bent 100 simbolių, kad galėtumėte naudoti santraukos kūrimo funkciją",
2702
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Funkcija pasiekiama tik teksto vertimui",
2703
- "EU_DATA_TOOLTIP": "Naudojame Azure OpenAI paslaugą, įvesti duomenys saugiai apdorojami ES esančiuose serveriuose",
2704
- "REPHRASE_MODAL": {
2705
- "TITLE": "Perfrazuoti vertimą",
2706
- "DESCRIPTION": "Perfrazuoti tekstą nurodytu rašymo stiliumi pritaikant kalbą ir toną prie tikslinio stiliaus ar tipo.",
2707
- "CLOSE": "Uždaryti",
2708
- "CANCEL": "Atšaukti",
2709
- "ACTION": "Perfrazuoti",
2710
- "REPHRASING": "Perfrazuojama...",
2711
- "LIMIT": "Šiandien likę perfrazavimai: <span class='text-m-semi-bold'>{{limit}}</span>. Reikia daugiau? <a href='{{subscriptionUrl}}' target='_blank'>Gaukite prenumeratą</a>",
2712
- "WRITING_STYLES": {
2713
- "TITLE": "Rašymo stilius",
2714
- "TOOLTIP_GENERAL": "Formalumas: taikyti mažą ar vidutinį formalumo lygį. \nŽodynas: optimalus paprastam ir aiškiam stiliui, vengti techninio žargono. \nSakinių struktūra: sakiniai turi būti paprasti arba vidutinio sudėtingumo. \nTonas: išlaikyti draugišką ir patrauklų toną.",
2715
- "TOOLTIP_PROFESSIONAL": "Formalumas: taikyti vidutinį ar aukštą formalumo lygį. \nŽodynas: prireikus naudoti konkrečios srities terminologiją ir žargoną. \nSakinių struktūra: užtikrinkite, kad sakiniai būtų aiškūs ir glausti, šiek tiek sudėtingesni. \nTonas: išlaikykite profesionalų, pagarbų ir paprastą toną.",
2716
- "TOOLTIP_ACADEMIC": "Formalumas: taikyti aukštą formalumo lygį. \nŽodynas: įtraukti techninę ir konkrečios srities terminologiją. \nSakinių struktūra: naudoti sudėtingas sakinių struktūras daugiausia dėmesio skiriant aiškumui ir tikslumui. \nTonas: išlaikyti objektyvų, analitinį ir kartais nuasmenintą toną.",
2717
- "SPECIFIC_STYLE": "{{style}} rašymo stilius",
2718
- "GENERAL": "Bendrasis",
2719
- "PROFESSIONAL": "Profesionalus",
2720
- "ACADEMIC": "Akademinis"
2721
- }
2722
- },
2723
- "SUMMARY_MODAL": {
2724
- "TITLE": "vertimo santrauka",
2725
- "DESCRIPTION": "Greitai sutrumpinti ilgus tekstus į aiškias santraukas naudojant LLM funkciją.",
2726
- "CANCEL": "Atšaukti",
2727
- "CLOSE": "Uždaryti",
2728
- "ACTION": "Kurti santrauką",
2729
- "REGENERATE": "Generuoti iš naujo",
2730
- "LIMIT": "Šiandien likusios santraukos: <span class='text-m-semi-bold'>{{limit}}</span>. Reikia daugiau? <a href='{{subscriptionUrl}}' target='_blank'>Gaukite prenumeratą</a>"
2731
- },
2732
- "ERRORS": {
2733
- "QUOTA_LIMIT": "Pasiekėte savo kiekio limitą. Reikia daugiau? <a href='{{subscriptionUrl}}' target='_blank'>Gaukite prenumeratą</a>",
2734
- "QUOTA_LIMIT_REACHED": "Pasiekėte savo kiekio limitą. Reikia daugiau? <a href='{{subscriptionUrl}}' target='_blank'>Gaukite prenumeratą</a>",
2735
- "DEFAULT": "Atrodo, kilo problema. <bold>Pakartokite</bold> veiksmą, o jei tai nepadeda, susisiekite su mūsų <a href='mailto:{{supportEmail}}' target='_blank'>palaikymo komanda</a>.",
2736
- "REPHRASE_REQUEST_TIMEOUT": "Pareiškimas užtruko per ilgai. Bandykite dar kartą arba susisiekite su mūsų <a href='mailto:{{supportEmail}}' target='_blank'>pagalbos komanda</a>.",
2737
- "SUMMARY_REQUEST_TIMEOUT": "Santrauka užtruko per ilgai. Bandykite dar kartą arba susisiekite su mūsų <a href='mailto:{{supportEmail}}' target='_blank'>pagalbos komanda</a>."
2738
- }
2739
- },
2740
2527
  "DICTIONARY": {
2741
2528
  "SOURCE": "Rezultatai iš {{src}}"
2742
2529
  }
@@ -2803,7 +2590,11 @@ const i18n_lv = {
2803
2590
  "WORD_TYPE_ADVERB": "apstākļa vārds",
2804
2591
  "WORD_TYPE_CONJUNCTION": "saiklis",
2805
2592
  "WORD_TYPE_INTERJECTION": "izsauksmes vārds",
2806
- "WORD_TYPE_PRONOUN": "vietniekvārds"
2593
+ "WORD_TYPE_PRONOUN": "vietniekvārds",
2594
+ "SUMMARY": {
2595
+ "TITLE": "Kopsavilkums",
2596
+ "CREATING": "Veidojam kopsavilkumu"
2597
+ },
2807
2598
  },
2808
2599
  "LANGUAGES": {
2809
2600
  "AUTO": "Noteikt valodu",
@@ -2877,7 +2668,7 @@ const i18n_lv = {
2877
2668
  "IMAGE_DISCLAIMER_LINK": "Lasiet par attēla pārveidošanu.",
2878
2669
  "SCREEN_READER_ANNOUNCEMENT": "Iztulkoti {{translated}} faili no {{total}}.",
2879
2670
  "REMOVE_FILE_TOOLTIP": "Notīrīt failu",
2880
- "CLEAR_ALL": "Atcelt",
2671
+ "CLEAR_ALL": "Aizvērt",
2881
2672
  "DOWNLOAD": "Lejupielādēt",
2882
2673
  "STATUSS_INITIALIZING": "Notiek inicializēšana",
2883
2674
  "STATUSS_EXTRACTING": "Notiek izvilkšana",
@@ -3004,13 +2795,15 @@ const i18n_lv = {
3004
2795
  "CLOSE_DIALOG": "Aizvērt dialoglodziņu",
3005
2796
  "CLEAR_FILES": "Notīrīt augšupielādētos failus",
3006
2797
  "SHOW_EXTENSIONS": "Rādīt citas lejupielādes iespējas",
3007
- "REFRESH": "Atsvaidzināt tulkojumu"
2798
+ "REFRESH": "Atsvaidzināt tulkojumu",
2799
+ "CREATE_SUMMARY": "Uztaisīt kopsavilkumu"
3008
2800
  },
3009
2801
  "TOOLTIPS": {
3010
2802
  "COPY": "Kopēt starpliktuvē",
3011
2803
  "SWAP_LANGUAGES": "Pārslēgt valodas",
3012
2804
  "REFRESH": "Atsvaidzināt tulkojumu",
3013
- "DISLIKE": "Nepatīk"
2805
+ "DISLIKE": "Nepatīk",
2806
+ "CREATE_SUMMARY": "Uztaisīt kopsavilkumu"
3014
2807
  },
3015
2808
  "PDF_CONVERSION": {
3016
2809
  "TITLE_1": "PDF failu tulkošana",
@@ -3233,50 +3026,6 @@ const i18n_lv = {
3233
3026
  "PLAY": "Klausīties",
3234
3027
  "PAUSE": "Pauze"
3235
3028
  },
3236
- "LLM": {
3237
- "SUMMARY": "Izveidot kopsavilkumu",
3238
- "REPHRASE": "Pārfrāzēt tulkojumu",
3239
- "MENU_TOOLTIP": "Pārfrāzējiet tulkojumu vai izveidojiet tā kopsavilkumu",
3240
- "MENU_DISABLED_TOOLTIP": "Uzgaidiet, līdz tulkošana ir pabeigta, lai izmantotu pārfrāzēšanas vai kopsavilkuma veidošanas funkcijas",
3241
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Lai izmantotu kopsavilkuma funkciju, nodrošiniet vismaz 100 simbolus",
3242
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Funkcija ir pieejama tikai teksta tulkošanai",
3243
- "EU_DATA_TOOLTIP": "Mēs izmantojam Azure OpenAI pakalpojumu, ievadītie dati tiek droši apstrādāti serveros, kas atrodas ES",
3244
- "REPHRASE_MODAL": {
3245
- "TITLE": "Tulkojuma pārfrāzēšana",
3246
- "DESCRIPTION": "Pārfrāzējiet tekstu norādītajā rakstības stilā, pielāgojot valodu un toni, lai tas atbilstu norādītajam mērķa stilam vai vēstījumam.",
3247
- "CLOSE": "Aizvērt",
3248
- "CANCEL": "Atcelt",
3249
- "ACTION": "Pārfrāzēt",
3250
- "REPHRASING": "Pārfrāzēšana...",
3251
- "LIMIT": "Šodien atlikušās pārfrāzēšanas darbības: <span class='text-m-semi-bold'>{{limit}}</span>. Vai nepieciešams vairāk? <a href='{{subscriptionUrl}}' target='_blank'>Iegūstiet abonementu</a>",
3252
- "WRITING_STYLES": {
3253
- "TITLE": "Rakstības stils",
3254
- "TOOLTIP_GENERAL": "Formālisms: izmantojiet zema līdz vidēja līmeņa formālismu. \nLeksika: optimāls vienkāršai un skaidrai valodai, izvairoties no tehniskā žargona. \nTeikumu struktūra: izmantojiet vienkāršus līdz vidēji sarežģītus teikumus. \nTonis: uzturiet draudzīgu un iesaistošu toni.",
3255
- "TOOLTIP_PROFESSIONAL": "Formālisms: izmantojiet vidēja līdz augsta līmeņa formālismu. \nLeksika: pēc nepieciešamības izmantojiet nozarei raksturīgu terminoloģiju un žargonu. \nTeikumu struktūra: nodrošiniet, ka teikumi ir skaidri un kodolīgi, bet ne pārāk sarežģīti. \nTonis: uzturiet profesionālu, cieņpilnu un vienkāršu toni.",
3256
- "TOOLTIP_ACADEMIC": "Formālisms: izmantojiet augsta līmeņa formālismu. \nLeksika: iekļaujiet tehnisku un tēmai raksturīgu terminoloģiju. \nTeikumu struktūra: izmantojiet sarežģītu teikumu struktūru, koncentrējoties uz skaidrību un precizitāti. \nTonis: uzturiet objektīvu, analītisku un dažkārt bezpersonisku toni.",
3257
- "SPECIFIC_STYLE": "{{style}} rakstības stils",
3258
- "GENERAL": "Vispārīgs",
3259
- "PROFESSIONAL": "Profesionāls",
3260
- "ACADEMIC": "Akadēmisks"
3261
- }
3262
- },
3263
- "SUMMARY_MODAL": {
3264
- "TITLE": "Tulkojuma kopsavilkums",
3265
- "DESCRIPTION": "Ātri apkopojiet garus tekstus skaidros kopsavilkumos, izmantojot mūsu moderno LLM funkciju.",
3266
- "CANCEL": "Atcelt",
3267
- "CLOSE": "Aizvērt",
3268
- "ACTION": "Izveidot kopsavilkumu",
3269
- "REGENERATE": "Ģenerēt atkārtoti",
3270
- "LIMIT": "Šodien atlikušās kopsavilkuma darbības: <span class='text-m-semi-bold'>{{limit}}</span>. Vai nepieciešams vairāk? <a href='{{subscriptionUrl}}' target='_blank'>Iegūstiet abonementu</a>"
3271
- },
3272
- "ERRORS": {
3273
- "QUOTA_LIMIT": "Esat sasniedzis jūsu kvotas ierobežojumu. Vai nepieciešams vairāk? <a href='{{subscriptionUrl}}' target='_blank'>Iegūstiet abonementu</a>",
3274
- "QUOTA_LIMIT_REACHED": "Esat sasniedzis jūsu kvotas ierobežojumu. Vai nepieciešams vairāk? <a href='{{subscriptionUrl}}' target='_blank'>Iegūstiet abonementu</a>",
3275
- "DEFAULT": "Šķiet, mums radās problēma. Lūdzu, <bold>atkārtojiet</bold> darbību. Ja tas nepalīdz, sazinieties ar mūsu <a href='mailto:{{supportEmail}}' target='_blank'>atbalsta komandu</a>.",
3276
- "REPHRASE_REQUEST_TIMEOUT": "Pārfrāzēšana aizņēma pārāk daudz laika. Mēģiniet vēlreiz vai sazinieties ar mūsu <a href='mailto:{{supportEmail}}' target='_blank'>atbalsta komandu</a>.",
3277
- "SUMMARY_REQUEST_TIMEOUT": "Kopsavilkums aizņēma pārāk daudz laika. Mēģiniet vēlreiz vai sazinieties ar mūsu <a href='mailto:{{supportEmail}}' target='_blank'>atbalsta komandu</a>."
3278
- }
3279
- },
3280
3029
  "DICTIONARY": {
3281
3030
  "SOURCE": "Rezultāti no {{src}}"
3282
3031
  }
@@ -3772,50 +3521,6 @@ const i18n_pl = {
3772
3521
  "PLAY": "Słuchaj",
3773
3522
  "PAUSE": "Wstrzymaj"
3774
3523
  },
3775
- "LLM": {
3776
- "SUMMARY": "Utwórz podsumowanie",
3777
- "REPHRASE": "Sparafrazuj tłumaczenie",
3778
- "MENU_TOOLTIP": "Sparafrazuj lub podsumuj tłumaczenie",
3779
- "MENU_DISABLED_TOOLTIP": "Poczekaj na zakończenie tłumaczenia, aby użyć funkcji przeformułowania lub podsumowania",
3780
- "MENU_SUMMARY_DISABLED_TOOLTIP": "Podaj co najmniej 100 symboli, aby skorzystać z funkcji podsumowania",
3781
- "UNSUPPORTED_MENU_DISABLED_TOOLTIP": "Funkcja dostępna tylko w przypadku tłumaczenia tekstu",
3782
- "EU_DATA_TOOLTIP": "Korzystamy z usługi Azure OpenAI, wprowadzone dane są bezpiecznie przetwarzane na serwerach znajdujących się na terenie UE",
3783
- "REPHRASE_MODAL": {
3784
- "TITLE": "Sparafrazuj tłumaczenie",
3785
- "DESCRIPTION": "Sparafrazuj tekst zgodnie z określonym stylem pisania, dostosowując język i ton do danego docelowego stylu lub głosu.",
3786
- "CLOSE": "Zamknij",
3787
- "CANCEL": "Anuluj",
3788
- "ACTION": "Zredaguj",
3789
- "REPHRASING": "Redagowanie...",
3790
- "LIMIT": "Pozostała dzisiaj liczba zmian: <span class='text-m-semi-bold'>{{limit}}</span>. Nie wystarczy? <a href='{{subscriptionUrl}}' target='_blank'>Zdobądź subskrypcję</a>",
3791
- "WRITING_STYLES": {
3792
- "TITLE": "Styl pisania",
3793
- "TOOLTIP_GENERAL": "Poziom formalności: Niski lub średni. \nSłownictwo: Proste i jasne, bez żargonu technicznego. \nStruktura zdań: Proste lub średnio złożone. \nTon: Przyjazny i wciągający.",
3794
- "TOOLTIP_PROFESSIONAL": "Poziom formalności: Średni lub wysoki. \nSłownictwo: Terminologia i żargon specyficzny dla danej branży (w stosownych przypadkach). \nStruktura zdań: Jasne i zwięzłe, charakteryzujące się pewną złożonością. \nTon: Profesjonalny, bezpośredni i pełen szacunku.",
3795
- "TOOLTIP_ACADEMIC": "Poziom formalności: Wysoki. \nSłownictwo: Specyficzna terminologia i techniczny język. \nStruktura zdań: Złożona konstrukcja z naciskiem na jasność i precyzję. \nTon: Obiektywny, analityczny, a czasem bezosobowy.",
3796
- "SPECIFIC_STYLE": "{{style}} styl pisania",
3797
- "GENERAL": "Ogólny",
3798
- "PROFESSIONAL": "Profesjonalny",
3799
- "ACADEMIC": "Naukowy"
3800
- }
3801
- },
3802
- "SUMMARY_MODAL": {
3803
- "TITLE": "Podsumowanie tłumaczenia",
3804
- "DESCRIPTION": "Kondensuj długie teksty w przejrzyste podsumowania, korzystając z zaawansowanej funkcji LLM.",
3805
- "CANCEL": "Anuluj",
3806
- "CLOSE": "Zamknij",
3807
- "ACTION": "Utwórz podsumowanie",
3808
- "REGENERATE": "Wygeneruj ponownie",
3809
- "LIMIT": "Pozostała dzisiaj liczba podsumowań:: <span class='text-m-semi-bold'>{{limit}}</span>. Nie wystarczy? <a href='{{subscriptionUrl}}' target='_blank'>Zdobądź subskrypcję</a>"
3810
- },
3811
- "ERRORS": {
3812
- "QUOTA_LIMIT": "Osiągnięto limit. Nie wystarczy? <a href='{{subscriptionUrl}}' target='_blank'>Zdobądź subskrypcję</a>",
3813
- "QUOTA_LIMIT_REACHED": "Osiągnięto limit. Nie wystarczy? <a href='{{subscriptionUrl}}' target='_blank'>Zdobądź subskrypcję</a>",
3814
- "DEFAULT": "Wystąpił problem. Spróbuj <bold>ponownie</bold>. Jeśli to nie pomoże, skontaktuj się z <a href='mailto:{{supportEmail}}' target='_blank'>działem wsparcia</a>.",
3815
- "REPHRASE_REQUEST_TIMEOUT": "Przekształcenie zajęło zbyt dużo czasu. Spróbuj ponownie lub skontaktuj się z naszym <a href='mailto:{{supportEmail}}' target='_blank'>zespołem wsparcia</a>.",
3816
- "SUMMARY_REQUEST_TIMEOUT": "Podsumowanie zajęło zbyt dużo czasu. Spróbuj ponownie lub skontaktuj się z naszym <a href='mailto:{{supportEmail}}' target='_blank'>zespołem wsparcia</a>."
3817
- }
3818
- },
3819
3524
  "DICTIONARY": {
3820
3525
  "SOURCE": "Wyniki z {{src}}"
3821
3526
  }
@@ -4231,8 +3936,6 @@ class TldTranslateConfigService {
4231
3936
  this._textConfig.showWordLimitWarning = text?.showWordLimitWarning ?? true;
4232
3937
  this._llmConfig.isEnabled = llm?.isEnabled ?? false;
4233
3938
  this._llmConfig.apiUrl = llm?.apiUrl ?? 'https://translate.tilde.ai/api/language';
4234
- this._llmConfig.maxCharLength = llm?.maxCharLength ?? 5000;
4235
- this._llmConfig.useLocalQuota = llm?.useLocalQuota ?? false;
4236
3939
  this._audioConfig.audioTextInput = audio?.audioTextInput ?? false;
4237
3940
  // Not setting default url because there is no service provided by Tilde and this is not used by default in website project.
4238
3941
  this._audioConfig.audioApiUrl = audio?.audioApiUrl;
@@ -6100,11 +5803,11 @@ class TldTranslateFileDownloadButtonComponent {
6100
5803
  panel.setAttribute("data-test-id", 'tld-download-file-list');
6101
5804
  }
6102
5805
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateFileDownloadButtonComponent, deps: [{ token: TldTranslateConfigService }], target: i0.ɵɵFactoryTarget.Component });
6103
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: { file: "file", disabled: "disabled", sourceDownload: "sourceDownload" }, outputs: { tldClick: "tldClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: MatMenu, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\">\r\n\r\n <button mat-stroked-button color=\"accent\" (click)=\"onClick()\" class=\"action-button border-accent download-button\"\r\n [disabled]=\"disabled\">\r\n <span class=\"material-icons\">\r\n file_download\r\n </span>\r\n <span class=\"download-btn-text text-m-semi-bold\">\r\n {{'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate}}\r\n </span>\r\n </button>\r\n <button mat-stroked-button color=\"accent\" class=\"extension-button border-accent\" #menuTrigger=\"matMenuTrigger\"\r\n data-test-id=\"download-other-formats-button\" (menuOpened)=\"onMenuOpen()\" *ngIf=\"extensions?.length\"\r\n [matMenuTriggerFor]=\"extensionMenu\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SHOW_EXTENSIONS' | translate\" fxLayoutAlign=\"center center\">\r\n <span class=\"material-icons\">\r\n arrow_drop_down\r\n </span>\r\n </button>\r\n</div>\r\n<mat-menu #extensionMenu=\"matMenu\">\r\n <div fxLayout=\"column\">\r\n <ng-container *ngFor=\"let extension of extensions\">\r\n <button mat-menu-item fxLayoutAlign=\"start center\" class=\"language-title\" *ngIf=\"extension.category === translatedCategory\"\r\n (click)=\"onClick(extension)\">\r\n {{extension.extension}}\r\n </button>\r\n </ng-container>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadPdf\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE'|translate}}\r\n </button>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadImage\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE'|translate}}\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".action-button{width:100%;padding:5px}.download-button .material-icons{margin-right:.5625rem;width:.8125rem}.extension-button{padding:0;min-width:38px;margin-left:2px}.action-button.mat-mdc-outlined-button.mat-accent,.extension-button.mat-mdc-outlined-button.mat-accent{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.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: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
5806
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: { file: "file", disabled: "disabled", sourceDownload: "sourceDownload" }, outputs: { tldClick: "tldClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: MatMenu, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\">\r\n\t<button\r\n\t\t*ngIf=\"!showSourceDownloadPdf && !showSourceDownloadImage\"\r\n\t\tmat-icon-button\r\n\t\tclass=\"action-button border-accent download-button\"\r\n\t\t[matTooltip]=\"'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t(click)=\"onClick()\"\r\n\t>\r\n\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<button\r\n\t\t#menuTrigger=\"matMenuTrigger\"\r\n\t\t*ngIf=\"extensions?.length && (showSourceDownloadPdf || showSourceDownloadImage)\"\r\n\t\tmat-icon-button\r\n\t\tcolor=\"accent\"\r\n\t\tfxLayoutAlign=\"center center\"\r\n\t\tdata-test-id=\"download-other-formats-button\"\r\n\t\t[matMenuTriggerFor]=\"extensionMenu\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[attr.aria-label]=\"'ARIA_LABELS.SHOW_EXTENSIONS' | translate\"\r\n\t\t[matTooltip]=\"'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate\"\r\n\t\t(menuOpened)=\"onMenuOpen()\"\r\n\t>\r\n\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>\r\n\t</button>\r\n</div>\r\n<mat-menu #extensionMenu=\"matMenu\">\r\n\t<div fxLayout=\"column\">\r\n\t\t<ng-container *ngFor=\"let extension of extensions\">\r\n\t\t\t<button mat-menu-item fxLayoutAlign=\"start center\" class=\"language-title\" *ngIf=\"extension.category === translatedCategory\" (click)=\"onClick(extension)\">\r\n\t\t\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>{{ 'TLD_TRANSLATE.SUGGEST_TRANSLATION_LABEL' | translate }} ({{ extension.extension }})\r\n\t\t\t</button>\r\n\t\t</ng-container>\r\n\t\t<button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadPdf\" class=\"language-title\" (click)=\"onSourceClick()\">\r\n\t\t\t{{ \"TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE\" | translate }}\r\n\t\t</button>\r\n\t\t<button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadImage\" class=\"language-title\" (click)=\"onSourceClick()\">\r\n\t\t\t{{ \"TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE\" | translate }}\r\n\t\t</button>\r\n\t</div>\r\n</mat-menu>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.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: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
6104
5807
  }
6105
5808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateFileDownloadButtonComponent, decorators: [{
6106
5809
  type: Component,
6107
- args: [{ selector: 'tld-translate-file-download-button', template: "<div fxLayout=\"row\">\r\n\r\n <button mat-stroked-button color=\"accent\" (click)=\"onClick()\" class=\"action-button border-accent download-button\"\r\n [disabled]=\"disabled\">\r\n <span class=\"material-icons\">\r\n file_download\r\n </span>\r\n <span class=\"download-btn-text text-m-semi-bold\">\r\n {{'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate}}\r\n </span>\r\n </button>\r\n <button mat-stroked-button color=\"accent\" class=\"extension-button border-accent\" #menuTrigger=\"matMenuTrigger\"\r\n data-test-id=\"download-other-formats-button\" (menuOpened)=\"onMenuOpen()\" *ngIf=\"extensions?.length\"\r\n [matMenuTriggerFor]=\"extensionMenu\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SHOW_EXTENSIONS' | translate\" fxLayoutAlign=\"center center\">\r\n <span class=\"material-icons\">\r\n arrow_drop_down\r\n </span>\r\n </button>\r\n</div>\r\n<mat-menu #extensionMenu=\"matMenu\">\r\n <div fxLayout=\"column\">\r\n <ng-container *ngFor=\"let extension of extensions\">\r\n <button mat-menu-item fxLayoutAlign=\"start center\" class=\"language-title\" *ngIf=\"extension.category === translatedCategory\"\r\n (click)=\"onClick(extension)\">\r\n {{extension.extension}}\r\n </button>\r\n </ng-container>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadPdf\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE'|translate}}\r\n </button>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadImage\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE'|translate}}\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".action-button{width:100%;padding:5px}.download-button .material-icons{margin-right:.5625rem;width:.8125rem}.extension-button{padding:0;min-width:38px;margin-left:2px}.action-button.mat-mdc-outlined-button.mat-accent,.extension-button.mat-mdc-outlined-button.mat-accent{background-color:#fff}\n"] }]
5810
+ args: [{ selector: 'tld-translate-file-download-button', template: "<div fxLayout=\"row\">\r\n\t<button\r\n\t\t*ngIf=\"!showSourceDownloadPdf && !showSourceDownloadImage\"\r\n\t\tmat-icon-button\r\n\t\tclass=\"action-button border-accent download-button\"\r\n\t\t[matTooltip]=\"'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t(click)=\"onClick()\"\r\n\t>\r\n\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>\r\n\t</button>\r\n\r\n\t<button\r\n\t\t#menuTrigger=\"matMenuTrigger\"\r\n\t\t*ngIf=\"extensions?.length && (showSourceDownloadPdf || showSourceDownloadImage)\"\r\n\t\tmat-icon-button\r\n\t\tcolor=\"accent\"\r\n\t\tfxLayoutAlign=\"center center\"\r\n\t\tdata-test-id=\"download-other-formats-button\"\r\n\t\t[matMenuTriggerFor]=\"extensionMenu\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[attr.aria-label]=\"'ARIA_LABELS.SHOW_EXTENSIONS' | translate\"\r\n\t\t[matTooltip]=\"'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate\"\r\n\t\t(menuOpened)=\"onMenuOpen()\"\r\n\t>\r\n\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>\r\n\t</button>\r\n</div>\r\n<mat-menu #extensionMenu=\"matMenu\">\r\n\t<div fxLayout=\"column\">\r\n\t\t<ng-container *ngFor=\"let extension of extensions\">\r\n\t\t\t<button mat-menu-item fxLayoutAlign=\"start center\" class=\"language-title\" *ngIf=\"extension.category === translatedCategory\" (click)=\"onClick(extension)\">\r\n\t\t\t\t<mat-icon [svgIcon]=\"'download'\"></mat-icon>{{ 'TLD_TRANSLATE.SUGGEST_TRANSLATION_LABEL' | translate }} ({{ extension.extension }})\r\n\t\t\t</button>\r\n\t\t</ng-container>\r\n\t\t<button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadPdf\" class=\"language-title\" (click)=\"onSourceClick()\">\r\n\t\t\t{{ \"TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE\" | translate }}\r\n\t\t</button>\r\n\t\t<button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadImage\" class=\"language-title\" (click)=\"onSourceClick()\">\r\n\t\t\t{{ \"TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE\" | translate }}\r\n\t\t</button>\r\n\t</div>\r\n</mat-menu>\r\n" }]
6108
5811
  }], ctorParameters: () => [{ type: TldTranslateConfigService }], propDecorators: { menu: [{
6109
5812
  type: ViewChild,
6110
5813
  args: [MatMenu]
@@ -6268,11 +5971,11 @@ class TldTranslateFileMultipleComponent extends TldFileTranslateBaseComponent {
6268
5971
  this.showVendorNotification = this.config.fileConfig.progressIndicatorTitleVisibleForVendors.includes(vendor);
6269
5972
  }
6270
5973
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateFileMultipleComponent, deps: [{ token: TldTranslateFileService }, { token: TldTranslateConfigService }, { token: i2$2.MatDialog }, { token: TldTranslateButtonService }, { token: TldTranslateSystemManagementService }, { token: i5.AlertService }], target: i0.ɵɵFactoryTarget.Component });
6271
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateFileMultipleComponent, selector: "tld-translate-file-multiple", inputs: { translationFiles: "translationFiles" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <lib-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (errorEvent)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </lib-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { 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: i5$1.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: "component", type: i5.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i5.InlineMessageComponent, selector: "lib-inline-message", inputs: ["iconName", "message"] }, { kind: "component", type: VendorDisclaimerComponent, selector: "vendor-disclaimer" }, { kind: "component", type: i5.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: ["file", "disabled", "sourceDownload"], outputs: ["tldClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
5974
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateFileMultipleComponent, selector: "tld-translate-file-multiple", inputs: { translationFiles: "translationFiles" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex fxLayoutAlign=\"start center\">\r\n\t<div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n\t\t{{ \"MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT\" | translate : { translated: translatedFilesCount, total: fileCount } }}\r\n\t</div>\r\n\t<div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n\t\t<div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n\t\t\t<div fxLayout=\"column\" fxFlex>\r\n\t\t\t\t<div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n\t\t\t\t\t<div class=\"file-name\">\r\n\t\t\t\t\t\t{{ file.originalFileName }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div fxLayout=\"row\" class=\"file-actions\">\r\n\t\t\t\t\t\t<tld-translate-file-download-button\r\n\t\t\t\t\t\t\t(tldClick)=\"download(file, $event)\"\r\n\t\t\t\t\t\t\t*ngIf=\"file.downloadAvailable\"\r\n\t\t\t\t\t\t\t[sourceDownload]=\"true\"\r\n\t\t\t\t\t\t\t[disabled]=\"file.isDownloading\"\r\n\t\t\t\t\t\t\t[file]=\"file\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</tld-translate-file-download-button>\r\n\t\t\t\t\t\t<tld-close-button *ngIf=\"!file.downloadAvailable\" [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<mat-progress-bar *ngIf=\"file.translationStatuss === translatingStatuss\" color=\"accent\" mode=\"determinate\" [value]=\"file.progress\"></mat-progress-bar>\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"progress-message text-s\"\r\n\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\tfile.translationStatuss !== errorTranslatingStatuss && file.translationStatuss !== completedTranslatingStatuss && file.translationStatuss !== uploadedTranslatingStatuss\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ \"MULTIPLE_FILES.STATUSS_\" + file.translationStatuss | translate : { percent: file.progress } }}\r\n\t\t\t\t</div>\r\n\t\t\t\t<ng-container *ngIf=\"file.messages.length > 0\">\r\n\t\t\t\t\t<lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<lib-file-upload\r\n\t\t\t*ngIf=\"!translationStarted\"\r\n\t\t\tfxFlex\r\n\t\t\tclass=\"tld-append-files\"\r\n\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t[disabled]=\"disableAppendFiles\"\r\n\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t>\r\n\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t<span>&nbsp;</span>\r\n\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span> ({{ fileCount }}/{{ maxFileCount }})\r\n\t\t</lib-file-upload>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\" *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\" class=\"cancel-button border-accent\">{{ \"MULTIPLE_FILES.CLEAR_ALL\" | translate }}</button>\r\n </div>\r\n\t</div>\r\n\t<ng-container *ngIf=\"sourceDownloadPDF\">\r\n\t\t<ng-container\r\n\t\t\t*ngTemplateOutlet=\"conversionMessage; context: { messageKey: 'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK' }\"\r\n\t\t>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"sourceDownloadImage\">\r\n\t\t<ng-container\r\n\t\t\t*ngTemplateOutlet=\"\r\n\t\t\t\tconversionMessage;\r\n\t\t\t\tcontext: { messageKey: 'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK' }\r\n\t\t\t\"\r\n\t\t>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"showVendorNotification\">\r\n\t\t<vendor-disclaimer></vendor-disclaimer>\r\n\t</ng-container>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\t<p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n\t\t<span class=\"material-icons\"> info </span>\r\n\t\t<span>\r\n\t\t\t{{ messageKey | translate }}\r\n\t\t</span>\r\n\t\t<button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{ buttonText | translate }}</button>\r\n\t</p></ng-template\r\n>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important;color:var(--base-40)}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { 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: i5$1.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: i5$1.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: "component", type: i5.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i5.InlineMessageComponent, selector: "lib-inline-message", inputs: ["iconName", "message"] }, { kind: "component", type: VendorDisclaimerComponent, selector: "vendor-disclaimer" }, { kind: "component", type: i5.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: ["file", "disabled", "sourceDownload"], outputs: ["tldClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
6272
5975
  }
6273
5976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateFileMultipleComponent, decorators: [{
6274
5977
  type: Component,
6275
- args: [{ selector: 'tld-translate-file-multiple', template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <lib-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (errorEvent)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </lib-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"] }]
5978
+ args: [{ selector: 'tld-translate-file-multiple', template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex fxLayoutAlign=\"start center\">\r\n\t<div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n\t\t{{ \"MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT\" | translate : { translated: translatedFilesCount, total: fileCount } }}\r\n\t</div>\r\n\t<div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n\t\t<div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n\t\t\t<div fxLayout=\"column\" fxFlex>\r\n\t\t\t\t<div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n\t\t\t\t\t<div class=\"file-name\">\r\n\t\t\t\t\t\t{{ file.originalFileName }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div fxLayout=\"row\" class=\"file-actions\">\r\n\t\t\t\t\t\t<tld-translate-file-download-button\r\n\t\t\t\t\t\t\t(tldClick)=\"download(file, $event)\"\r\n\t\t\t\t\t\t\t*ngIf=\"file.downloadAvailable\"\r\n\t\t\t\t\t\t\t[sourceDownload]=\"true\"\r\n\t\t\t\t\t\t\t[disabled]=\"file.isDownloading\"\r\n\t\t\t\t\t\t\t[file]=\"file\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</tld-translate-file-download-button>\r\n\t\t\t\t\t\t<tld-close-button *ngIf=\"!file.downloadAvailable\" [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<mat-progress-bar *ngIf=\"file.translationStatuss === translatingStatuss\" color=\"accent\" mode=\"determinate\" [value]=\"file.progress\"></mat-progress-bar>\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"progress-message text-s\"\r\n\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\tfile.translationStatuss !== errorTranslatingStatuss && file.translationStatuss !== completedTranslatingStatuss && file.translationStatuss !== uploadedTranslatingStatuss\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ \"MULTIPLE_FILES.STATUSS_\" + file.translationStatuss | translate : { percent: file.progress } }}\r\n\t\t\t\t</div>\r\n\t\t\t\t<ng-container *ngIf=\"file.messages.length > 0\">\r\n\t\t\t\t\t<lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<lib-file-upload\r\n\t\t\t*ngIf=\"!translationStarted\"\r\n\t\t\tfxFlex\r\n\t\t\tclass=\"tld-append-files\"\r\n\t\t\t(fileChange)=\"fileChange($event)\"\r\n\t\t\t[accept]=\"allowedFileTypes\"\r\n\t\t\t[maxSize]=\"maxFileUploadSize\"\r\n\t\t\t[multiple]=\"multipleFiles\"\r\n\t\t\t[disabled]=\"disableAppendFiles\"\r\n\t\t\t(errorEvent)=\"fileUploadError($event)\"\r\n\t\t\t[extendedAcceptList]=\"extendedFileTypes\"\r\n\t\t>\r\n\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t<span>&nbsp;</span>\r\n\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span> ({{ fileCount }}/{{ maxFileCount }})\r\n\t\t</lib-file-upload>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\" *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\" class=\"cancel-button border-accent\">{{ \"MULTIPLE_FILES.CLEAR_ALL\" | translate }}</button>\r\n </div>\r\n\t</div>\r\n\t<ng-container *ngIf=\"sourceDownloadPDF\">\r\n\t\t<ng-container\r\n\t\t\t*ngTemplateOutlet=\"conversionMessage; context: { messageKey: 'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK' }\"\r\n\t\t>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"sourceDownloadImage\">\r\n\t\t<ng-container\r\n\t\t\t*ngTemplateOutlet=\"\r\n\t\t\t\tconversionMessage;\r\n\t\t\t\tcontext: { messageKey: 'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK' }\r\n\t\t\t\"\r\n\t\t>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"showVendorNotification\">\r\n\t\t<vendor-disclaimer></vendor-disclaimer>\r\n\t</ng-container>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\t<p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n\t\t<span class=\"material-icons\"> info </span>\r\n\t\t<span>\r\n\t\t\t{{ messageKey | translate }}\r\n\t\t</span>\r\n\t\t<button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{ buttonText | translate }}</button>\r\n\t</p></ng-template\r\n>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important;color:var(--base-40)}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"] }]
6276
5979
  }], ctorParameters: () => [{ type: TldTranslateFileService }, { type: TldTranslateConfigService }, { type: i2$2.MatDialog }, { type: TldTranslateButtonService }, { type: TldTranslateSystemManagementService }, { type: i5.AlertService }], propDecorators: { translationFiles: [{
6277
5980
  type: Input
6278
5981
  }] } });
@@ -6295,7 +5998,9 @@ class TldDocumentModule {
6295
5998
  MatProgressBarModule,
6296
5999
  MatButtonModule,
6297
6000
  MatDialogModule,
6298
- MatMenuModule], exports: [TldTranslateFileComponent,
6001
+ MatMenuModule,
6002
+ MatIconModule,
6003
+ MatTooltipModule], exports: [TldTranslateFileComponent,
6299
6004
  TldTranslateFileMultipleComponent,
6300
6005
  TldTranslateFileDownloadButtonComponent] });
6301
6006
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldDocumentModule, imports: [CommonModule,
@@ -6309,7 +6014,9 @@ class TldDocumentModule {
6309
6014
  MatProgressBarModule,
6310
6015
  MatButtonModule,
6311
6016
  MatDialogModule,
6312
- MatMenuModule] });
6017
+ MatMenuModule,
6018
+ MatIconModule,
6019
+ MatTooltipModule] });
6313
6020
  }
6314
6021
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldDocumentModule, decorators: [{
6315
6022
  type: NgModule,
@@ -6334,7 +6041,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
6334
6041
  MatProgressBarModule,
6335
6042
  MatButtonModule,
6336
6043
  MatDialogModule,
6337
- MatMenuModule
6044
+ MatMenuModule,
6045
+ MatIconModule,
6046
+ MatTooltipModule
6338
6047
  ],
6339
6048
  exports: [
6340
6049
  TldTranslateFileComponent,
@@ -8220,6 +7929,7 @@ class TldTranslateTextComponent {
8220
7929
  voiceInputService;
8221
7930
  fileService;
8222
7931
  breakpointObserver;
7932
+ llmService;
8223
7933
  sourceComponent;
8224
7934
  dictateComponent;
8225
7935
  filePreviewProgress;
@@ -8266,6 +7976,7 @@ class TldTranslateTextComponent {
8266
7976
  ;
8267
7977
  get maxDictateLength() { return this.config.audioConfig.maximumRecordTime; }
8268
7978
  get sourceLanguage() { return this.activeData?.sourceLang.lang; }
7979
+ get targetLanguage() { return this.activeData?.targetLang.lang; }
8269
7980
  get hasTranslatedParagraphs() { return this.targetParagraphs?.length > 0; }
8270
7981
  get isEmptyTarget() { return !this.hasTranslatedParagraphs && !this.urlToTranslate && !this.hasDictionary; }
8271
7982
  get showTargetPlaceholder() { return this.config.textConfig.showTargetPlaceholder; }
@@ -8278,6 +7989,8 @@ class TldTranslateTextComponent {
8278
7989
  ;
8279
7990
  get uploadIconName() { return this.config.coreConfig.uploadIconName; }
8280
7991
  ;
7992
+ get isLlmEnabled() { return this.config.llmConfig.isEnabled; }
7993
+ ;
8281
7994
  audioInputVisible;
8282
7995
  targetSentenceSelect = true;
8283
7996
  get urlToTranslate() { return this.translateTextService.urlToTranslate; }
@@ -8292,8 +8005,11 @@ class TldTranslateTextComponent {
8292
8005
  get firstParagraphTranslated() {
8293
8006
  return this.translateTextService.firstParagraphTranslated;
8294
8007
  }
8008
+ get isTranslating() {
8009
+ return this.translateTextService.isTranslating;
8010
+ }
8295
8011
  get translationError() {
8296
- return this.source && !this.translateTextService.isTranslating;
8012
+ return this.source && !this.isTranslating;
8297
8013
  }
8298
8014
  get hasDictionary() { return this.translateTextService.hasDictionary; }
8299
8015
  get dictionaryEntry() { return this.translateTextService.dictionaryEntry; }
@@ -8315,10 +8031,12 @@ class TldTranslateTextComponent {
8315
8031
  dictateConfig;
8316
8032
  visibleExtensions;
8317
8033
  maxSizeMB;
8034
+ isSummarazing;
8035
+ summarizedText;
8318
8036
  isMobile;
8319
8037
  destroy$ = new Subject();
8320
8038
  mobileBreakpoints = [Breakpoints.XSmall];
8321
- constructor(translateTextService, clipboard, alerts, config, tldScrollService, tldSystem, audioService, voiceInputService, fileService, breakpointObserver) {
8039
+ constructor(translateTextService, clipboard, alerts, config, tldScrollService, tldSystem, audioService, voiceInputService, fileService, breakpointObserver, llmService) {
8322
8040
  this.translateTextService = translateTextService;
8323
8041
  this.clipboard = clipboard;
8324
8042
  this.alerts = alerts;
@@ -8329,9 +8047,13 @@ class TldTranslateTextComponent {
8329
8047
  this.voiceInputService = voiceInputService;
8330
8048
  this.fileService = fileService;
8331
8049
  this.breakpointObserver = breakpointObserver;
8050
+ this.llmService = llmService;
8332
8051
  }
8333
8052
  ngOnInit() {
8334
8053
  this.translateTextService.listenOnChanges();
8054
+ this.translateTextService.sourceChange.subscribe(() => {
8055
+ this.clearSummarization();
8056
+ });
8335
8057
  this.dictateConfig = {
8336
8058
  appId: this.config.audioConfig.appId,
8337
8059
  appSecret: this.config.audioConfig.appSecret,
@@ -8350,6 +8072,7 @@ class TldTranslateTextComponent {
8350
8072
  this.activeData = syst;
8351
8073
  this.audioInputVisible = this.config.audioConfig.audioTextInput && this.config.audioConfig.sourceLanguages?.includes(this.activeData?.sourceLang.lang);
8352
8074
  if (this.activeData.retranslate) {
8075
+ this.clearSummarization();
8353
8076
  this.translateTextService.retranslate({ systemChanged: true });
8354
8077
  }
8355
8078
  });
@@ -8372,8 +8095,26 @@ class TldTranslateTextComponent {
8372
8095
  this.clipboard.copy(this.translatedText);
8373
8096
  this.alerts.success("TLD_TRANSLATE.TEXT_COPIED", { id: this.copyMessageId, closeButtonId: this.copyMessageCloseButtonId, parentId: this.copyButtonId });
8374
8097
  }
8098
+ copySummarizedText() {
8099
+ this.clipboard.copy(this.summarizedText);
8100
+ }
8375
8101
  refresh() {
8376
8102
  this.translateTextService.onTranslateButtonClick();
8103
+ this.clearSummarization();
8104
+ }
8105
+ createSummary() {
8106
+ this.isSummarazing = true;
8107
+ setTimeout(() => {
8108
+ document.querySelector('.summary-wrapper').scrollIntoView({ behavior: 'smooth' });
8109
+ }, 100);
8110
+ this.llmService
8111
+ .summarize({ language: this.targetLanguage, text: this.translatedText, useCase: LLMUseCase.General })
8112
+ .pipe(finalize(() => (this.isSummarazing = false)))
8113
+ .subscribe({
8114
+ next: (response) => {
8115
+ this.summarizedText = marked.parse(response);
8116
+ },
8117
+ });
8377
8118
  }
8378
8119
  switchFocusFromCopy(event) {
8379
8120
  const copyMessageCloseButton = document.getElementById(this.copyMessageCloseButtonId)?.getElementsByTagName("button")?.item(0);
@@ -8439,6 +8180,7 @@ class TldTranslateTextComponent {
8439
8180
  }
8440
8181
  clearSource() {
8441
8182
  this.translateTextService.clearSource();
8183
+ this.clearSummarization();
8442
8184
  }
8443
8185
  ngOnDestroy() {
8444
8186
  this.translateTextService.stopListeningToChanges();
@@ -8458,13 +8200,16 @@ class TldTranslateTextComponent {
8458
8200
  this.isMobile = state.matches;
8459
8201
  });
8460
8202
  }
8461
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateTextComponent, deps: [{ token: TldTranslateTextService }, { token: i2$3.Clipboard }, { token: i5.AlertService }, { token: TldTranslateConfigService }, { token: TldScrollService }, { token: TldTranslateSystemManagementService }, { token: AudioRecordService }, { token: TldVoiceInputService }, { token: TldTranslateFileService }, { token: i8$1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
8462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateTextComponent, 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 [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <lib-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span>&nbsp;</span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\">\r\n (\r\n <span>{{visibleExtensions}}. </span>\r\n <span *ngIf=\"maxSizeMB\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: {maxSizeMB: maxSizeMB}\"></span>\r\n )\r\n </span>\r\n </div>\r\n </span>\r\n </lib-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n\r\n <div *ngIf=\"firstParagraphTranslated\" class=\"dictionary-wrapper\">\r\n <tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 3.5em 1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:.2em;right:.2em}.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{display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.dictionary-wrapper{margin-top:2rem}@media (max-width: 768px){.translated-source{padding:1em 3em 1em 1em!important}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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", "language"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i5.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i5.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { 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: i5$1.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: i5$1.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$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: TldTranslateSuggestComponent, selector: "tld-translate-suggest", inputs: ["target", "source", "dictionary", "systemId", "options", "selectedSentence"] }, { kind: "component", type: TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "correctionsEnabled", "highlight", "gramCheck", "selectSentence"], outputs: ["onReplace"] }, { kind: "component", type: ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
8203
+ clearSummarization() {
8204
+ this.summarizedText = null;
8205
+ }
8206
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateTextComponent, deps: [{ token: TldTranslateTextService }, { token: i2$3.Clipboard }, { token: i5.AlertService }, { token: TldTranslateConfigService }, { token: TldScrollService }, { token: TldTranslateSystemManagementService }, { token: AudioRecordService }, { token: TldVoiceInputService }, { token: TldTranslateFileService }, { token: i8$1.BreakpointObserver }, { token: i5$2.LLMService }], target: i0.ɵɵFactoryTarget.Component });
8207
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateTextComponent, 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, 'gramcheck-active': gramCheck, '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 sourceActions *ngIf=\"!hideSourceActions\">\r\n\t\t<div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n\t\t\t<ng-container *ngIf=\"audioInputVisible\">\r\n\t\t\t\t<tld-dictate\r\n\t\t\t\t\t#dictate\r\n\t\t\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t\t\t[language]=\"sourceLanguage\"\r\n\t\t\t\t>\r\n\t\t\t\t</tld-dictate>\r\n\t\t\t</ng-container>\r\n\t\t\t<div *ngIf=\"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\t<span class=\"info\">\r\n\t\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t\t<span>&nbsp;</span>\r\n\t\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\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\t</span>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t<span>{{ visibleExtensions }}. </span>\r\n\t\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>\r\n\t\t\t\t\t\t\t\t)\r\n\t\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=\"showSuggestions || showProgressIndicator\">\r\n\t\t\t<tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\" [source]=\"sourceParagraphs\"> </tld-translate-suggest>\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\" [class.selectable-sentence]=\"showSuggestions\">\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<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated && isLlmEnabled\"\r\n\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.CREATE_SUMMARY' | translate\"\r\n\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || summarizedText\"\r\n\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t>\r\n\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</button>\r\n\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 *ngFor=\"let paragraph of targetParagraphs\">\r\n\t\t\t\t<tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\"> </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>{{ \"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]=\"summarizedText\"></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=\"firstParagraphTranslated\" 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: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 3.5em 1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:0;right:0}.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:14px;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.dictionary-wrapper{margin-top:2rem}.summary-wrapper{position:relative;padding-top:12px;border-top:1px solid var(--base-70)}.summary-wrapper p{margin-bottom:.5rem;font-weight:500}.creating-progress{color:var(--base-40)}.dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-53px;top:20px}.summary-mobile{right:-46px}@media (max-width: 768px){.translated-source{padding:1em 3em 1em 1em!important}}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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", "language"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i5.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i5.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "minSupportedFormatCount", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { 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: i5$1.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: i5$1.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$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: TldTranslateSuggestComponent, selector: "tld-translate-suggest", inputs: ["target", "source", "dictionary", "systemId", "options", "selectedSentence"] }, { kind: "component", type: TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "correctionsEnabled", "highlight", "gramCheck", "selectSentence"], outputs: ["onReplace"] }, { kind: "component", type: ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
8463
8208
  }
8464
8209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateTextComponent, decorators: [{
8465
8210
  type: Component,
8466
- args: [{ selector: 'tld-translate-text', 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 [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <lib-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span>&nbsp;</span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\">\r\n (\r\n <span>{{visibleExtensions}}. </span>\r\n <span *ngIf=\"maxSizeMB\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: {maxSizeMB: maxSizeMB}\"></span>\r\n )\r\n </span>\r\n </div>\r\n </span>\r\n </lib-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div [class.translated-source-overflow]=\"targetWrapperOverflow\" class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n\r\n <div *ngIf=\"firstParagraphTranslated\" class=\"dictionary-wrapper\">\r\n <tld-dictionary [dictionary]=\"dictionaryEntry\"></tld-dictionary>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 3.5em 1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:.2em;right:.2em}.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{display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.dictionary-wrapper{margin-top:2rem}@media (max-width: 768px){.translated-source{padding:1em 3em 1em 1em!important}}\n"] }]
8467
- }], ctorParameters: () => [{ type: TldTranslateTextService }, { type: i2$3.Clipboard }, { type: i5.AlertService }, { type: TldTranslateConfigService }, { type: TldScrollService }, { type: TldTranslateSystemManagementService }, { type: AudioRecordService }, { type: TldVoiceInputService }, { type: TldTranslateFileService }, { type: i8$1.BreakpointObserver }], propDecorators: { sourceComponent: [{
8211
+ args: [{ selector: 'tld-translate-text', 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, 'gramcheck-active': gramCheck, '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 sourceActions *ngIf=\"!hideSourceActions\">\r\n\t\t<div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n\t\t\t<ng-container *ngIf=\"audioInputVisible\">\r\n\t\t\t\t<tld-dictate\r\n\t\t\t\t\t#dictate\r\n\t\t\t\t\t[configuration]=\"dictateConfig\"\r\n\t\t\t\t\t[ngClass]=\"{ 'full-width': !fileUpload }\"\r\n\t\t\t\t\t(isDictating)=\"dictateStartStop($event)\"\r\n\t\t\t\t\t(result)=\"dictateResult($event)\"\r\n\t\t\t\t\t(partialResult)=\"dictatePartialResult($event)\"\r\n\t\t\t\t\t(onError)=\"dictateError($event)\"\r\n\t\t\t\t\t[language]=\"sourceLanguage\"\r\n\t\t\t\t>\r\n\t\t\t\t</tld-dictate>\r\n\t\t\t</ng-container>\r\n\t\t\t<div *ngIf=\"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\t<span class=\"info\">\r\n\t\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n\t\t\t\t\t\t\t\t<span>&nbsp;</span>\r\n\t\t\t\t\t\t\t\t<span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n\t\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\t</span>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t<span class=\"file-upload-extensions text-m\">\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t<span>{{ visibleExtensions }}. </span>\r\n\t\t\t\t\t\t\t\t<span *ngIf=\"maxSizeMB\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate : { maxSizeMB: maxSizeMB }\"></span>\r\n\t\t\t\t\t\t\t\t)\r\n\t\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=\"showSuggestions || showProgressIndicator\">\r\n\t\t\t<tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\" [source]=\"sourceParagraphs\"> </tld-translate-suggest>\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\" [class.selectable-sentence]=\"showSuggestions\">\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<button\r\n\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t*ngIf=\"firstParagraphTranslated && isLlmEnabled\"\r\n\t\t\t\t\tclass=\"tld-create-summary\"\r\n\t\t\t\t\t[matTooltip]=\"'TOOLTIPS.CREATE_SUMMARY' | translate\"\r\n\t\t\t\t\t[disabled]=\"isTranslating || isSummarazing || summarizedText\"\r\n\t\t\t\t\t(click)=\"createSummary()\"\r\n\t\t\t\t>\r\n\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</button>\r\n\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 *ngFor=\"let paragraph of targetParagraphs\">\r\n\t\t\t\t<tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\"> </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>{{ \"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]=\"summarizedText\"></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=\"firstParagraphTranslated\" 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: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.translated-source{position:relative;overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 3.5em 1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:0;right:0}.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:14px;display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}.dictionary-wrapper{margin-top:2rem}.summary-wrapper{position:relative;padding-top:12px;border-top:1px solid var(--base-70)}.summary-wrapper p{margin-bottom:.5rem;font-weight:500}.creating-progress{color:var(--base-40)}.dot-loading{clip-path:inset(0 100% 0 0);animation:loading 1.5s steps(4) infinite}.summary-copy-btn{position:absolute;right:-53px;top:20px}.summary-mobile{right:-46px}@media (max-width: 768px){.translated-source{padding:1em 3em 1em 1em!important}}@keyframes loading{to{clip-path:inset(0 -34% 0 0)}}\n"] }]
8212
+ }], ctorParameters: () => [{ type: TldTranslateTextService }, { type: i2$3.Clipboard }, { type: i5.AlertService }, { type: TldTranslateConfigService }, { type: TldScrollService }, { type: TldTranslateSystemManagementService }, { type: AudioRecordService }, { type: TldVoiceInputService }, { type: TldTranslateFileService }, { type: i8$1.BreakpointObserver }, { type: i5$2.LLMService }], propDecorators: { sourceComponent: [{
8468
8213
  type: ViewChild,
8469
8214
  args: ["sourceComponent"]
8470
8215
  }], dictateComponent: [{
@@ -8504,7 +8249,8 @@ class TldTextModule {
8504
8249
  MatInputModule,
8505
8250
  MatFormFieldModule,
8506
8251
  MatDialogModule,
8507
- MatTooltipModule], exports: [TldTranslateSourceComponent,
8252
+ MatTooltipModule,
8253
+ MatIconModule], exports: [TldTranslateSourceComponent,
8508
8254
  TldTranslateSuggestComponent,
8509
8255
  TldTranslateTextComponent] });
8510
8256
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTextModule, imports: [CommonModule,
@@ -8526,7 +8272,8 @@ class TldTextModule {
8526
8272
  MatInputModule,
8527
8273
  MatFormFieldModule,
8528
8274
  MatDialogModule,
8529
- MatTooltipModule] });
8275
+ MatTooltipModule,
8276
+ MatIconModule] });
8530
8277
  }
8531
8278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTextModule, decorators: [{
8532
8279
  type: NgModule,
@@ -8559,7 +8306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
8559
8306
  MatInputModule,
8560
8307
  MatFormFieldModule,
8561
8308
  MatDialogModule,
8562
- MatTooltipModule
8309
+ MatTooltipModule,
8310
+ MatIconModule
8563
8311
  ],
8564
8312
  exports: [
8565
8313
  TldTranslateSourceComponent,
@@ -8904,7 +8652,6 @@ class TranslationSystemPickerComponent {
8904
8652
  tldSystem;
8905
8653
  file;
8906
8654
  text;
8907
- config;
8908
8655
  isCollectionsActivated;
8909
8656
  get isSourceOpened() { return this.systemPickerService.isSourceOpened; }
8910
8657
  get isTargetOpened() { return this.systemPickerService.isTargetOpened; }
@@ -8930,18 +8677,12 @@ class TranslationSystemPickerComponent {
8930
8677
  get translatedText() {
8931
8678
  return this.text.translatedText;
8932
8679
  }
8933
- get isLLMEnabled() {
8934
- return this.config.llmConfig.isEnabled;
8935
- }
8936
8680
  get isTranslating() {
8937
8681
  return this.text.isTranslating;
8938
8682
  }
8939
8683
  get isFileView() {
8940
8684
  return this.file.fileNames.length > 0;
8941
8685
  }
8942
- get disabledLLMMenuText() {
8943
- return this.isFileView ? 'LLM.UNSUPPORTED_MENU_DISABLED_TOOLTIP' : ((this.isTranslating || !this.translatedText) ? 'LLM.MENU_DISABLED_TOOLTIP' : '');
8944
- }
8945
8686
  sourceAriaLabel = "SYSTEM_PICKER.OPEN_SOURCE_ARIA_LABEL";
8946
8687
  targetAriaLabel = "SYSTEM_PICKER.OPEN_TARGET_ARIA_LABEL";
8947
8688
  domainLength = 0;
@@ -8952,12 +8693,11 @@ class TranslationSystemPickerComponent {
8952
8693
  subscription;
8953
8694
  activeData;
8954
8695
  system;
8955
- constructor(systemPickerService, tldSystem, file, text, config) {
8696
+ constructor(systemPickerService, tldSystem, file, text) {
8956
8697
  this.systemPickerService = systemPickerService;
8957
8698
  this.tldSystem = tldSystem;
8958
8699
  this.file = file;
8959
8700
  this.text = text;
8960
- this.config = config;
8961
8701
  }
8962
8702
  ngOnInit() {
8963
8703
  this.subscribeToActiveData();
@@ -9003,18 +8743,18 @@ class TranslationSystemPickerComponent {
9003
8743
  this.system = { systemId: activeData.systemId, sourceLanguageCode: activeData?.system?.detectedLanguage ?? activeData.sourceLang.lang, targetLanguageCode: activeData.targetLang.lang, detectedLanguage: activeData.system.detectedLanguage };
9004
8744
  this.activeData = activeData;
9005
8745
  this.activeDomainKey = this.activeData.domains?.active?.title;
9006
- this.activeDomainLocalizationKey = HtmlHelper.getLocalizationKey(this.activeData.domains?.active?.title);
8746
+ this.activeDomainLocalizationKey = HtmlHelper.getLocalizationKey(this.activeDomainKey);
9007
8747
  this.domainLength = this.activeData.domains?.domains?.length ?? 0;
9008
8748
  this.isTerminologySupported = this.tldSystem.isTerminologySupported(this.activeData.system);
9009
8749
  });
9010
8750
  }
9011
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerComponent, deps: [{ token: TranslationSystemPickerService }, { token: TldTranslateSystemManagementService }, { token: TldTranslateFileService }, { token: TldTranslateTextService }, { token: TldTranslateConfigService }], target: i0.ɵɵFactoryTarget.Component });
9012
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerComponent, selector: "tld-translation-system-picker", inputs: { isCollectionsActivated: "isCollectionsActivated" }, ngImport: i0, template: "<div fxFlex fxLayout=\"row\">\r\n <ng-container *ngIf=\"isDataLoaded\">\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: sourceLanguage, localizationKey: 'SYSTEM_PICKER.SOURCE', isOpened: isSourceOpened, isSource: true, ariaLabelCode: sourceAriaLabel }\">\r\n </ng-container>\r\n <button [disabled]=\"!canSwap\" class=\"swap-languages-button\" mat-icon-button (click)=\"swap()\"\r\n aria-label=\"swap languages\" color=\"primary\" matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: targetLanguage, localizationKey: 'SYSTEM_PICKER.TARGET', isOpened: isTargetOpened, isSource: false, ariaLabelCode: targetAriaLabel}\">\r\n </ng-container>\r\n\r\n <div fxFlex fxLayoutAlign=\"end center\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper class=\"terminology-wrapper\">\r\n <lib-terminology [system]=\"system\"></lib-terminology>\r\n </div>\r\n \r\n <div [matTooltip]=\"disabledLLMMenuText | translate\">\r\n <lib-llm *ngIf=\"isLLMEnabled\" [text]=\"translatedText\" [language]=\"targetLanguage.lang\" [isMenuDisabled]=\"isTranslating || !translatedText || isFileView\"></lib-llm>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #languageName let-language=\"language\" let-showDomain=\"showDomain\" let-detectedLanguage=\"detectedLanguage\">\r\n <span>{{ (detectedLanguage && !showDomain ? detectedLanguage : language.lang) | languageTranslate }}</span>\r\n <span fxHide.lt-md *ngIf=\"detectedLanguage && !showDomain\"> - {{'SYSTEM_PICKER.DETECTED' | translate}}</span>\r\n <ng-container *ngIf=\"showDomain && domainLength>1\">\r\n <span>(</span>\r\n <span class=\"domain\">{{('DOMAINS.'+(activeDomainLocalizationKey | uppercase)) | translate: {default: activeDomainKey | titlecase} }}</span>\r\n <span>)</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #openedDropdown let-localizationKey=\"localizationKey\">\r\n {{localizationKey | translate}}\r\n</ng-template>\r\n\r\n<!--Template for language dropdown trigger. Same as for target and source with different params-->\r\n<ng-template #languageDropdownTrigger let-language=\"language\" let-isOpened=\"isOpened\" let-placeholder=\"localizationKey\"\r\n let-isSource=\"isSource\" let-ariaLabelCode=\"ariaLabelCode\">\r\n <lib-open-close-button [disabled]=\"isFileTranslating\" class=\"system-picker-button\" [ngClass]=\"isSource? 'source': 'target'\"\r\n [ngClass.lt-sm]=\"'mobile'\" (click)=\"isSource ? sourceClick($event) : targetClick($event)\"\r\n [disableFocusOnAction]=\"true\" [isOpened]=\"isOpened\" [class.opened]=\"isOpened\" [ariaLabelCode]=\"ariaLabelCode\">\r\n <span [ngClass.lt-md]=\"'text-l-semi-bold'\" [ngClass.lt-sm]=\"'text-m-semi-bold mobile-domain-container'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"isOpened && isSource || isOpened && !isSource && !isTargetReselected ? openedDropdown : languageName; context: { language: language, localizationKey: placeholder, showDomain: !isSource, detectedLanguage: system.detectedLanguage }\">\r\n </ng-container>\r\n </span>\r\n </lib-open-close-button>\r\n</ng-template>\r\n", styles: [":host{display:flex}.swap-languages-button{color:var(--base-40)!important}.source{margin-left:.3em}.system-picker-button.mobile{margin-left:.2em}.target{margin-left:1.5em}.mobile-domain-container{display:flex}.mobile-domain-container .domain{text-overflow:ellipsis;overflow:hidden;max-width:3.5rem;white-space:nowrap;display:inline-block}.domain{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.terminology-wrapper{margin-right:.3rem}:host ::ng-deep .opened button{color:var(--accent)}:host ::ng-deep .open-close-button-content{white-space:nowrap;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.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: i5$1.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: i5$1.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: "component", type: i5.OpenCloseButtonComponent, selector: "lib-open-close-button", inputs: ["disableFocusOnAction", "disabled", "isIcon", "ariaLabelCode", "isOpened"] }, { kind: "component", type: i5.TerminologyComponent, selector: "lib-terminology", inputs: ["selectedCollectionId", "system", "disabled", "storeSelectedInLocalStorage", "setSelectedFromLocalStorage", "showMenuIconOnMobile"], outputs: ["glossarySelectEvent", "menuToggleEvent"] }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.LLMComponent, selector: "lib-llm", inputs: ["text", "language", "isMenuDisabled", "rephrasableLanguagesCodeList", "showUseCaseSummary", "showUseCaseRephrase"] }, { kind: "pipe", type: i2.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i5.LanguageTranslatePipe, name: "languageTranslate" }] });
8751
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerComponent, deps: [{ token: TranslationSystemPickerService }, { token: TldTranslateSystemManagementService }, { token: TldTranslateFileService }, { token: TldTranslateTextService }], target: i0.ɵɵFactoryTarget.Component });
8752
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerComponent, selector: "tld-translation-system-picker", inputs: { isCollectionsActivated: "isCollectionsActivated" }, ngImport: i0, template: "<div fxFlex fxLayout=\"row\">\r\n <ng-container *ngIf=\"isDataLoaded\">\r\n <div fxFlex fxLayoutAlign=\"space-between center\" fxLayoutAlign.lt-sm=\"space-evenly center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: sourceLanguage, localizationKey: 'SYSTEM_PICKER.SOURCE', isOpened: isSourceOpened, isSource: true, ariaLabelCode: sourceAriaLabel }\">\r\n </ng-container>\r\n <button [disabled]=\"!canSwap\" class=\"swap-languages-button\" mat-icon-button (click)=\"swap()\"\r\n aria-label=\"swap languages\" color=\"primary\" matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"space-between center\" fxLayoutAlign.lt-sm=\"space-evenly center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: targetLanguage, localizationKey: 'SYSTEM_PICKER.TARGET', isOpened: isTargetOpened, isSource: false, ariaLabelCode: targetAriaLabel}\">\r\n </ng-container>\r\n\r\n <div fxFlex fxLayoutAlign=\"end center\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper class=\"terminology-wrapper\">\r\n <lib-terminology [system]=\"system\"></lib-terminology>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #languageName let-language=\"language\" let-showDomain=\"showDomain\" let-detectedLanguage=\"detectedLanguage\">\r\n <span>{{ (detectedLanguage && !showDomain ? detectedLanguage : language.lang) | languageTranslate }}</span>\r\n <span fxHide.lt-md *ngIf=\"detectedLanguage && !showDomain\"> - {{'SYSTEM_PICKER.DETECTED' | translate}}</span>\r\n <ng-container *ngIf=\"showDomain && domainLength>1\">\r\n <span class=\"domain\">({{('DOMAINS.'+(activeDomainLocalizationKey | uppercase)) | translate: {default: activeDomainKey | titlecase} }})</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #openedDropdown let-localizationKey=\"localizationKey\">\r\n {{localizationKey | translate}}\r\n</ng-template>\r\n\r\n<!--Template for language dropdown trigger. Same as for target and source with different params-->\r\n<ng-template #languageDropdownTrigger let-language=\"language\" let-isOpened=\"isOpened\" let-placeholder=\"localizationKey\"\r\n let-isSource=\"isSource\" let-ariaLabelCode=\"ariaLabelCode\">\r\n <lib-open-close-button [disabled]=\"isFileTranslating\" class=\"system-picker-button\" [ngClass]=\"isSource? 'source': 'target'\"\r\n [ngClass.lt-sm]=\"'system-picker-button-mobile'\" (click)=\"isSource ? sourceClick($event) : targetClick($event)\"\r\n [disableFocusOnAction]=\"true\" [isOpened]=\"isOpened\" [class.opened]=\"isOpened\" [ariaLabelCode]=\"ariaLabelCode\">\r\n <span [ngClass.lt-sm]=\"'mobile-domain-container'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"isOpened && isSource || isOpened && !isSource && !isTargetReselected ? openedDropdown : languageName; context: { language: language, localizationKey: placeholder, showDomain: !isSource, detectedLanguage: system.detectedLanguage }\">\r\n </ng-container>\r\n </span>\r\n </lib-open-close-button>\r\n</ng-template>\r\n", styles: [":host{display:flex}.swap-languages-button{color:var(--base-30)!important}.source{margin-left:.3em}.system-picker-button.system-picker-button-mobile{margin-left:.2em}.target{margin-left:1.5em}:host ::ng-deep .open-close-button-content{color:var(--base-30)}.mobile-domain-container{display:flex}.mobile-domain-container .domain{display:none}.domain{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.terminology-wrapper{margin-right:.3rem}:host ::ng-deep .system-picker-button-mobile{display:flex;align-items:center;max-height:46px;height:100%;max-width:120px;width:100%;background-color:var(--base-95)!important;border-radius:8px}:host ::ng-deep .system-picker-button-mobile span{font-size:12px;text-align:center;line-height:16px}:host ::ng-deep .system-picker-button-mobile .material-icons{display:none!important}:host ::ng-deep .opened .open-close-button-content,.opened button{color:var(--accent)!important}:host ::ng-deep .open-close-button-content{white-space:nowrap;overflow:hidden}:host ::ng-deep .system-picker-button-mobile span{white-space:wrap;overflow:hidden;text-align:center;max-height:46px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.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: i5$1.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: i5$1.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: "component", type: i5.OpenCloseButtonComponent, selector: "lib-open-close-button", inputs: ["disableFocusOnAction", "disabled", "isIcon", "ariaLabelCode", "isOpened"] }, { kind: "component", type: i5.TerminologyComponent, selector: "lib-terminology", inputs: ["selectedCollectionId", "system", "disabled", "storeSelectedInLocalStorage", "setSelectedFromLocalStorage", "showMenuIconOnMobile"], outputs: ["glossarySelectEvent", "menuToggleEvent"] }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i2.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i5.LanguageTranslatePipe, name: "languageTranslate" }] });
9013
8753
  }
9014
8754
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerComponent, decorators: [{
9015
8755
  type: Component,
9016
- args: [{ selector: 'tld-translation-system-picker', template: "<div fxFlex fxLayout=\"row\">\r\n <ng-container *ngIf=\"isDataLoaded\">\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: sourceLanguage, localizationKey: 'SYSTEM_PICKER.SOURCE', isOpened: isSourceOpened, isSource: true, ariaLabelCode: sourceAriaLabel }\">\r\n </ng-container>\r\n <button [disabled]=\"!canSwap\" class=\"swap-languages-button\" mat-icon-button (click)=\"swap()\"\r\n aria-label=\"swap languages\" color=\"primary\" matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: targetLanguage, localizationKey: 'SYSTEM_PICKER.TARGET', isOpened: isTargetOpened, isSource: false, ariaLabelCode: targetAriaLabel}\">\r\n </ng-container>\r\n\r\n <div fxFlex fxLayoutAlign=\"end center\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper class=\"terminology-wrapper\">\r\n <lib-terminology [system]=\"system\"></lib-terminology>\r\n </div>\r\n \r\n <div [matTooltip]=\"disabledLLMMenuText | translate\">\r\n <lib-llm *ngIf=\"isLLMEnabled\" [text]=\"translatedText\" [language]=\"targetLanguage.lang\" [isMenuDisabled]=\"isTranslating || !translatedText || isFileView\"></lib-llm>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #languageName let-language=\"language\" let-showDomain=\"showDomain\" let-detectedLanguage=\"detectedLanguage\">\r\n <span>{{ (detectedLanguage && !showDomain ? detectedLanguage : language.lang) | languageTranslate }}</span>\r\n <span fxHide.lt-md *ngIf=\"detectedLanguage && !showDomain\"> - {{'SYSTEM_PICKER.DETECTED' | translate}}</span>\r\n <ng-container *ngIf=\"showDomain && domainLength>1\">\r\n <span>(</span>\r\n <span class=\"domain\">{{('DOMAINS.'+(activeDomainLocalizationKey | uppercase)) | translate: {default: activeDomainKey | titlecase} }}</span>\r\n <span>)</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #openedDropdown let-localizationKey=\"localizationKey\">\r\n {{localizationKey | translate}}\r\n</ng-template>\r\n\r\n<!--Template for language dropdown trigger. Same as for target and source with different params-->\r\n<ng-template #languageDropdownTrigger let-language=\"language\" let-isOpened=\"isOpened\" let-placeholder=\"localizationKey\"\r\n let-isSource=\"isSource\" let-ariaLabelCode=\"ariaLabelCode\">\r\n <lib-open-close-button [disabled]=\"isFileTranslating\" class=\"system-picker-button\" [ngClass]=\"isSource? 'source': 'target'\"\r\n [ngClass.lt-sm]=\"'mobile'\" (click)=\"isSource ? sourceClick($event) : targetClick($event)\"\r\n [disableFocusOnAction]=\"true\" [isOpened]=\"isOpened\" [class.opened]=\"isOpened\" [ariaLabelCode]=\"ariaLabelCode\">\r\n <span [ngClass.lt-md]=\"'text-l-semi-bold'\" [ngClass.lt-sm]=\"'text-m-semi-bold mobile-domain-container'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"isOpened && isSource || isOpened && !isSource && !isTargetReselected ? openedDropdown : languageName; context: { language: language, localizationKey: placeholder, showDomain: !isSource, detectedLanguage: system.detectedLanguage }\">\r\n </ng-container>\r\n </span>\r\n </lib-open-close-button>\r\n</ng-template>\r\n", styles: [":host{display:flex}.swap-languages-button{color:var(--base-40)!important}.source{margin-left:.3em}.system-picker-button.mobile{margin-left:.2em}.target{margin-left:1.5em}.mobile-domain-container{display:flex}.mobile-domain-container .domain{text-overflow:ellipsis;overflow:hidden;max-width:3.5rem;white-space:nowrap;display:inline-block}.domain{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.terminology-wrapper{margin-right:.3rem}:host ::ng-deep .opened button{color:var(--accent)}:host ::ng-deep .open-close-button-content{white-space:nowrap;overflow:hidden}\n"] }]
9017
- }], ctorParameters: () => [{ type: TranslationSystemPickerService }, { type: TldTranslateSystemManagementService }, { type: TldTranslateFileService }, { type: TldTranslateTextService }, { type: TldTranslateConfigService }], propDecorators: { isCollectionsActivated: [{
8756
+ args: [{ selector: 'tld-translation-system-picker', template: "<div fxFlex fxLayout=\"row\">\r\n <ng-container *ngIf=\"isDataLoaded\">\r\n <div fxFlex fxLayoutAlign=\"space-between center\" fxLayoutAlign.lt-sm=\"space-evenly center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: sourceLanguage, localizationKey: 'SYSTEM_PICKER.SOURCE', isOpened: isSourceOpened, isSource: true, ariaLabelCode: sourceAriaLabel }\">\r\n </ng-container>\r\n <button [disabled]=\"!canSwap\" class=\"swap-languages-button\" mat-icon-button (click)=\"swap()\"\r\n aria-label=\"swap languages\" color=\"primary\" matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"space-between center\" fxLayoutAlign.lt-sm=\"space-evenly center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: targetLanguage, localizationKey: 'SYSTEM_PICKER.TARGET', isOpened: isTargetOpened, isSource: false, ariaLabelCode: targetAriaLabel}\">\r\n </ng-container>\r\n\r\n <div fxFlex fxLayoutAlign=\"end center\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper class=\"terminology-wrapper\">\r\n <lib-terminology [system]=\"system\"></lib-terminology>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #languageName let-language=\"language\" let-showDomain=\"showDomain\" let-detectedLanguage=\"detectedLanguage\">\r\n <span>{{ (detectedLanguage && !showDomain ? detectedLanguage : language.lang) | languageTranslate }}</span>\r\n <span fxHide.lt-md *ngIf=\"detectedLanguage && !showDomain\"> - {{'SYSTEM_PICKER.DETECTED' | translate}}</span>\r\n <ng-container *ngIf=\"showDomain && domainLength>1\">\r\n <span class=\"domain\">({{('DOMAINS.'+(activeDomainLocalizationKey | uppercase)) | translate: {default: activeDomainKey | titlecase} }})</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #openedDropdown let-localizationKey=\"localizationKey\">\r\n {{localizationKey | translate}}\r\n</ng-template>\r\n\r\n<!--Template for language dropdown trigger. Same as for target and source with different params-->\r\n<ng-template #languageDropdownTrigger let-language=\"language\" let-isOpened=\"isOpened\" let-placeholder=\"localizationKey\"\r\n let-isSource=\"isSource\" let-ariaLabelCode=\"ariaLabelCode\">\r\n <lib-open-close-button [disabled]=\"isFileTranslating\" class=\"system-picker-button\" [ngClass]=\"isSource? 'source': 'target'\"\r\n [ngClass.lt-sm]=\"'system-picker-button-mobile'\" (click)=\"isSource ? sourceClick($event) : targetClick($event)\"\r\n [disableFocusOnAction]=\"true\" [isOpened]=\"isOpened\" [class.opened]=\"isOpened\" [ariaLabelCode]=\"ariaLabelCode\">\r\n <span [ngClass.lt-sm]=\"'mobile-domain-container'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"isOpened && isSource || isOpened && !isSource && !isTargetReselected ? openedDropdown : languageName; context: { language: language, localizationKey: placeholder, showDomain: !isSource, detectedLanguage: system.detectedLanguage }\">\r\n </ng-container>\r\n </span>\r\n </lib-open-close-button>\r\n</ng-template>\r\n", styles: [":host{display:flex}.swap-languages-button{color:var(--base-30)!important}.source{margin-left:.3em}.system-picker-button.system-picker-button-mobile{margin-left:.2em}.target{margin-left:1.5em}:host ::ng-deep .open-close-button-content{color:var(--base-30)}.mobile-domain-container{display:flex}.mobile-domain-container .domain{display:none}.domain{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.terminology-wrapper{margin-right:.3rem}:host ::ng-deep .system-picker-button-mobile{display:flex;align-items:center;max-height:46px;height:100%;max-width:120px;width:100%;background-color:var(--base-95)!important;border-radius:8px}:host ::ng-deep .system-picker-button-mobile span{font-size:12px;text-align:center;line-height:16px}:host ::ng-deep .system-picker-button-mobile .material-icons{display:none!important}:host ::ng-deep .opened .open-close-button-content,.opened button{color:var(--accent)!important}:host ::ng-deep .open-close-button-content{white-space:nowrap;overflow:hidden}:host ::ng-deep .system-picker-button-mobile span{white-space:wrap;overflow:hidden;text-align:center;max-height:46px}\n"] }]
8757
+ }], ctorParameters: () => [{ type: TranslationSystemPickerService }, { type: TldTranslateSystemManagementService }, { type: TldTranslateFileService }, { type: TldTranslateTextService }], propDecorators: { isCollectionsActivated: [{
9018
8758
  type: Input
9019
8759
  }] } });
9020
8760
 
@@ -9110,7 +8850,7 @@ class TranslationSystemPickerSystemListComponent {
9110
8850
  this.clicked.emit(system);
9111
8851
  }
9112
8852
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerSystemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerSystemListComponent, selector: "tld-translation-system-picker-system-list", inputs: { systems: "systems", titleKey: "titleKey", activeId: "activeId", showTitle: "showTitle", icon: "icon", isRecentSystemList: "isRecentSystemList", isDomainList: "isDomainList" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div [ngClass.lt-sm]=\"'mobile'\">\r\n <div class=\"span-container\" *ngIf=\"showTitle\">\r\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\r\n <span class=\"text-l-semi-bold\" [ngClass.lt-sm]=\"'text-m-semi-bold'\">{{titleKey | translate}}</span>\r\n </div>\r\n <translation-system-picker-button [active]=\"activeId === system.languageId\" [isDomainList]=\"isDomainList\" [isRecentSystemList]=\"isRecentSystemList\" (onClick)=\"changeSystem(system)\"\r\n *ngFor=\"let system of systems\">\r\n {{system.displayName}}\r\n </translation-system-picker-button>\r\n</div>\r\n", styles: [":host{display:inline-block}:host .span-container{display:flex;align-items:center;margin:1rem 0 1.25rem}:host .system-picker-button{width:100%;text-align:left}:host .system-picker-button:not(.active){color:var(--base-10)}:host .mobile .span-container{margin:0 0 .75rem}:host ::ng-deep .system-picker-button{white-space:nowrap}mat-icon{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.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: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TranslationSystemPickerButtonComponent, selector: "translation-system-picker-button", inputs: ["active", "isRecentSystemList", "isDomainList", "tooltip"], outputs: ["onClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
8853
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerSystemListComponent, selector: "tld-translation-system-picker-system-list", inputs: { systems: "systems", titleKey: "titleKey", activeId: "activeId", showTitle: "showTitle", icon: "icon", isRecentSystemList: "isRecentSystemList", isDomainList: "isDomainList" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div [ngClass.lt-sm]=\"'mobile'\">\r\n <div class=\"span-container\" *ngIf=\"showTitle\">\r\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\r\n <span class=\"text-l-semi-bold\" [ngClass.lt-sm]=\"'text-m-semi-bold'\">{{titleKey | translate}}</span>\r\n </div>\r\n <translation-system-picker-button [active]=\"activeId === system.languageId\" [isDomainList]=\"isDomainList\" [isRecentSystemList]=\"isRecentSystemList\" (onClick)=\"changeSystem(system)\"\r\n *ngFor=\"let system of systems\">\r\n {{system.displayName}}\r\n </translation-system-picker-button>\r\n</div>\r\n", styles: [":host{display:inline-block}:host .span-container{display:flex;align-items:center;margin:1rem 0 1.25rem}:host .system-picker-button{width:100%;text-align:left}:host .system-picker-button:not(.active){color:var(--base-10)}:host .mobile .span-container{margin:0 0 .75rem}:host ::ng-deep .system-picker-button{white-space:nowrap}mat-icon{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.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: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TranslationSystemPickerButtonComponent, selector: "translation-system-picker-button", inputs: ["active", "isRecentSystemList", "isDomainList", "tooltip"], outputs: ["onClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9114
8854
  }
9115
8855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerSystemListComponent, decorators: [{
9116
8856
  type: Component,
@@ -9388,11 +9128,11 @@ class TranslationSystemPickerFilterComponent {
9388
9128
  this.filterInput.nativeElement.focus();
9389
9129
  }
9390
9130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9391
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerFilterComponent, selector: "tld-translation-system-picker-filter", outputs: { filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: "<mat-form-field [ngClass.lt-sm]=\"'mobile'\" color=\"accent\" appearance=\"outline\" floatLabel=\"auto\" class=\"search-input-field\">\r\n\t<mat-icon matPrefix fxHide.xs>search</mat-icon>\r\n\t<input #filterInput matInput [(ngModel)]=\"filter\" [placeholder]=\"'SYSTEM_PICKER.SEARCH_PLACEHOLDER' | translate\" />\r\n\t<button *ngIf=\"filter.length\" mat-icon-button class=\"clear-filter\" mat-icon-button matSuffix [matTooltip]=\"'SYSTEM_PICKER.CLEAR_SEARCH' | translate\" (click)=\"clear($event)\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n</mat-form-field>\r\n", styles: [":host{display:inline-block;width:100%}:host ::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:10px!important}:host ::ng-deep .mat-mdc-form-field-infix{margin-top:.125rem}:host ::ng-deep .mobile .mat-mdc-form-field-infix{margin-top:0}:host ::ng-deep .mobile .mat-mdc-form-field-subscript-wrapper{display:none}:host .search-input-field{width:100%}.clear-filter{margin-right:.5rem}\n"], dependencies: [{ kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.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: i5$1.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: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerFilterComponent, selector: "tld-translation-system-picker-filter", outputs: { filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: "<mat-form-field [ngClass.lt-sm]=\"'mobile'\" color=\"accent\" appearance=\"outline\" floatLabel=\"auto\" class=\"search-input-field\">\r\n\t<mat-icon class=\"search-icon\" matPrefix>search</mat-icon>\r\n\t<input #filterInput matInput [(ngModel)]=\"filter\" [placeholder]=\"'SYSTEM_PICKER.SEARCH_PLACEHOLDER' | translate\" />\r\n\t<button *ngIf=\"filter.length > 0\" mat-icon-button class=\"clear-filter\" mat-icon-button matSuffix [matTooltip]=\"'SYSTEM_PICKER.CLEAR_SEARCH' | translate\" (click)=\"clear($event)\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n</mat-form-field>\r\n", styles: [":host{display:inline-block;width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{max-height:42px}:host ::ng-deep .search-icon{color:var(--base-40)}:host ::ng-deep .search-icon,:host ::ng-deep button{margin-top:-15px}:host ::ng-deep .mdc-text-field--outlined .mat-mdc-form-field-infix,:host ::ng-deep .mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}:host ::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:10px!important}:host ::ng-deep .mat-mdc-form-field-infix{margin-top:.125rem}:host ::ng-deep .mobile .mat-mdc-form-field-infix{margin-top:0}:host ::ng-deep .mobile .mat-mdc-form-field-subscript-wrapper{display:none}:host .search-input-field{width:100%}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 8px !important}.clear-filter{margin-right:.5rem}\n"], dependencies: [{ kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.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: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9392
9132
  }
9393
9133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerFilterComponent, decorators: [{
9394
9134
  type: Component,
9395
- args: [{ selector: 'tld-translation-system-picker-filter', template: "<mat-form-field [ngClass.lt-sm]=\"'mobile'\" color=\"accent\" appearance=\"outline\" floatLabel=\"auto\" class=\"search-input-field\">\r\n\t<mat-icon matPrefix fxHide.xs>search</mat-icon>\r\n\t<input #filterInput matInput [(ngModel)]=\"filter\" [placeholder]=\"'SYSTEM_PICKER.SEARCH_PLACEHOLDER' | translate\" />\r\n\t<button *ngIf=\"filter.length\" mat-icon-button class=\"clear-filter\" mat-icon-button matSuffix [matTooltip]=\"'SYSTEM_PICKER.CLEAR_SEARCH' | translate\" (click)=\"clear($event)\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n</mat-form-field>\r\n", styles: [":host{display:inline-block;width:100%}:host ::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:10px!important}:host ::ng-deep .mat-mdc-form-field-infix{margin-top:.125rem}:host ::ng-deep .mobile .mat-mdc-form-field-infix{margin-top:0}:host ::ng-deep .mobile .mat-mdc-form-field-subscript-wrapper{display:none}:host .search-input-field{width:100%}.clear-filter{margin-right:.5rem}\n"] }]
9135
+ args: [{ selector: 'tld-translation-system-picker-filter', template: "<mat-form-field [ngClass.lt-sm]=\"'mobile'\" color=\"accent\" appearance=\"outline\" floatLabel=\"auto\" class=\"search-input-field\">\r\n\t<mat-icon class=\"search-icon\" matPrefix>search</mat-icon>\r\n\t<input #filterInput matInput [(ngModel)]=\"filter\" [placeholder]=\"'SYSTEM_PICKER.SEARCH_PLACEHOLDER' | translate\" />\r\n\t<button *ngIf=\"filter.length > 0\" mat-icon-button class=\"clear-filter\" mat-icon-button matSuffix [matTooltip]=\"'SYSTEM_PICKER.CLEAR_SEARCH' | translate\" (click)=\"clear($event)\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n</mat-form-field>\r\n", styles: [":host{display:inline-block;width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{max-height:42px}:host ::ng-deep .search-icon{color:var(--base-40)}:host ::ng-deep .search-icon,:host ::ng-deep button{margin-top:-15px}:host ::ng-deep .mdc-text-field--outlined .mat-mdc-form-field-infix,:host ::ng-deep .mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}:host ::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:10px!important}:host ::ng-deep .mat-mdc-form-field-infix{margin-top:.125rem}:host ::ng-deep .mobile .mat-mdc-form-field-infix{margin-top:0}:host ::ng-deep .mobile .mat-mdc-form-field-subscript-wrapper{display:none}:host .search-input-field{width:100%}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 8px !important}.clear-filter{margin-right:.5rem}\n"] }]
9396
9136
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { filterInput: [{
9397
9137
  type: ViewChild,
9398
9138
  args: ["filterInput"]
@@ -9489,19 +9229,12 @@ class TranslationSystemPickerDropdownComponent {
9489
9229
  this.breakpointSubscription.unsubscribe();
9490
9230
  this.menuToggleSubscription.unsubscribe();
9491
9231
  }
9492
- toggleFilter() {
9493
- this.showMobFilter = !this.showMobFilter;
9494
- this.clearFilter();
9495
- }
9496
9232
  clearFilter() {
9497
9233
  this.filterText = "";
9498
9234
  }
9499
9235
  back() {
9500
9236
  if (this.isMobile) {
9501
- if (this.showMobFilter) {
9502
- this.toggleFilter();
9503
- }
9504
- else if (this.currentStep) {
9237
+ if (this.currentStep) {
9505
9238
  // if step bigger than zero, then go one step back.
9506
9239
  this.currentStep += -1;
9507
9240
  }
@@ -9566,11 +9299,11 @@ class TranslationSystemPickerDropdownComponent {
9566
9299
  });
9567
9300
  }
9568
9301
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerDropdownComponent, deps: [{ token: TranslationSystemPickerService }, { token: i8$1.BreakpointObserver }, { token: TldTranslateSystemManagementService }], target: i0.ɵɵFactoryTarget.Component });
9569
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerDropdownComponent, selector: "tld-translation-system-picker-dropdown", host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "dropdownBody", first: true, predicate: TranslationSystemPickerDropdownBodyComponent, descendants: true }, { propertyName: "filter", first: true, predicate: TranslationSystemPickerFilterComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"isMobile\" class=\"dropdown-content-wrapper mobile\" (clickOutside)=\"clickOutside()\">\r\n\t<div class=\"system-picker-header\">\r\n\t\t<button mat-icon-button (click)=\"back()\">\r\n\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t</button>\r\n <ng-container *ngIf=\"!showMobFilter; else filter\">\r\n <h1 class=\" text-l-semi-bold\">{{currentConfig?.headerTitle | translate}}</h1>\r\n <button mat-icon-button (click)=\"toggleFilter()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"system-picker-dropdown-content mobile\">\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"currentConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t>\r\n\t\t</tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"!isMobile\" class=\"dropdown-content-wrapper\" (clickOutside)=\"clickOutside()\">\r\n\t<div fxLayout=\"row\" class=\"system-picker-dropdown-content\">\r\n\t\t<div fxLayout=\"column\" class=\"system-picker-dropdown-col\">\r\n <ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t\t[config]=\"currentConfig\"\r\n\t\t\t\t[filterText]=\"filterText\"\r\n\t\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t\t>\r\n\t\t\t</tld-translation-system-picker-dropdown-body>\r\n\t\t</div>\r\n\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"recentSystemPickerConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t></tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template #filter>\r\n <tld-translation-system-picker-filter (filterChanged)=\"filterChange($event)\">\r\n </tld-translation-system-picker-filter>\r\n</ng-template>", styles: [":host{background-color:var(--base-100);overflow-y:auto!important;height:100%!important;box-sizing:border-box}:host .system-picker-dropdown-content{padding:1rem;height:100%}:host .system-picker-dropdown-content.mobile{padding:1rem 1.5rem}:host .system-picker-header{background-color:var(--base-95);padding:.5rem 1rem .5rem .75rem;display:flex;flex-direction:row;align-items:center;border-bottom:1px solid var(--base-70)}:host .system-picker-header h1{margin:0;flex:1 1 100%}:host .dropdown-content-wrapper:not(.mobile) tld-translation-system-picker-filter{margin-bottom:.5rem}.mobile tld-translation-system-picker-dropdown-body{width:100%}.dropdown-content-wrapper{height:100%}.system-picker-dropdown-col:not(.mobile){width:63%;height:100%;padding-right:1.5rem;border-right:1px solid var(--base-70)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i5.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: TranslationSystemPickerFilterComponent, selector: "tld-translation-system-picker-filter", outputs: ["filterChanged"] }, { kind: "component", type: TranslationSystemPickerDropdownBodyComponent, selector: "tld-translation-system-picker-dropdown-body", inputs: ["filterText", "config"], outputs: ["onSystemClick", "onLanguageClick", "onFilteredLanguageClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9302
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TranslationSystemPickerDropdownComponent, selector: "tld-translation-system-picker-dropdown", host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "dropdownBody", first: true, predicate: TranslationSystemPickerDropdownBodyComponent, descendants: true }, { propertyName: "filter", first: true, predicate: TranslationSystemPickerFilterComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"isMobile\" class=\"dropdown-content-wrapper mobile\" (clickOutside)=\"clickOutside()\">\r\n\t<div class=\"system-picker-header\">\r\n\t\t<button mat-icon-button (click)=\"back()\">\r\n\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t</button>\r\n\t\t<h1 class=\" text-l-semi-bold\">{{currentConfig?.headerTitle | translate}}</h1>\r\n\t</div>\r\n\r\n\t<ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t<div class=\"system-picker-dropdown-content mobile\">\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"currentConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t>\r\n\t\t</tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"!isMobile\" class=\"dropdown-content-wrapper\" (clickOutside)=\"clickOutside()\">\r\n\t<div fxLayout=\"row\" class=\"system-picker-dropdown-content\">\r\n\t\t<div fxLayout=\"column\" class=\"system-picker-dropdown-col\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t\t[config]=\"currentConfig\"\r\n\t\t\t\t[filterText]=\"filterText\"\r\n\t\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t\t>\r\n\t\t\t</tld-translation-system-picker-dropdown-body>\r\n\t\t</div>\r\n\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"recentSystemPickerConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t></tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template #filter>\r\n\t<div [class.filter-mobile]=\"isMobile\">\r\n\t\t<tld-translation-system-picker-filter (filterChanged)=\"filterChange($event)\"> </tld-translation-system-picker-filter>\r\n\t</div>\r\n</ng-template>\r\n", styles: [":host{background-color:var(--base-100);overflow-y:auto!important;height:100%!important;box-sizing:border-box}:host .system-picker-dropdown-content{padding:1rem;height:100%}:host .system-picker-dropdown-content.mobile{padding:1rem 1.5rem}:host .system-picker-header{background-color:var(--base-95);padding:.5rem 1rem .5rem .75rem;display:flex;flex-direction:row;align-items:center;border-bottom:1px solid var(--base-70)}:host .system-picker-header h1{margin:0;flex:1 1 100%}:host .dropdown-content-wrapper:not(.mobile) tld-translation-system-picker-filter{margin-bottom:.5rem}.mobile tld-translation-system-picker-dropdown-body{width:100%}.dropdown-content-wrapper{height:100%}.system-picker-dropdown-col:not(.mobile){width:63%;height:100%;padding-right:1.5rem;border-right:1px solid var(--base-70)}.filter-mobile{padding:24px 24px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i5.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: TranslationSystemPickerFilterComponent, selector: "tld-translation-system-picker-filter", outputs: ["filterChanged"] }, { kind: "component", type: TranslationSystemPickerDropdownBodyComponent, selector: "tld-translation-system-picker-dropdown-body", inputs: ["filterText", "config"], outputs: ["onSystemClick", "onLanguageClick", "onFilteredLanguageClick"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9570
9303
  }
9571
9304
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationSystemPickerDropdownComponent, decorators: [{
9572
9305
  type: Component,
9573
- args: [{ selector: 'tld-translation-system-picker-dropdown', template: "<div *ngIf=\"isMobile\" class=\"dropdown-content-wrapper mobile\" (clickOutside)=\"clickOutside()\">\r\n\t<div class=\"system-picker-header\">\r\n\t\t<button mat-icon-button (click)=\"back()\">\r\n\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t</button>\r\n <ng-container *ngIf=\"!showMobFilter; else filter\">\r\n <h1 class=\" text-l-semi-bold\">{{currentConfig?.headerTitle | translate}}</h1>\r\n <button mat-icon-button (click)=\"toggleFilter()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"system-picker-dropdown-content mobile\">\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"currentConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t>\r\n\t\t</tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"!isMobile\" class=\"dropdown-content-wrapper\" (clickOutside)=\"clickOutside()\">\r\n\t<div fxLayout=\"row\" class=\"system-picker-dropdown-content\">\r\n\t\t<div fxLayout=\"column\" class=\"system-picker-dropdown-col\">\r\n <ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t\t[config]=\"currentConfig\"\r\n\t\t\t\t[filterText]=\"filterText\"\r\n\t\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t\t>\r\n\t\t\t</tld-translation-system-picker-dropdown-body>\r\n\t\t</div>\r\n\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"recentSystemPickerConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t></tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template #filter>\r\n <tld-translation-system-picker-filter (filterChanged)=\"filterChange($event)\">\r\n </tld-translation-system-picker-filter>\r\n</ng-template>", styles: [":host{background-color:var(--base-100);overflow-y:auto!important;height:100%!important;box-sizing:border-box}:host .system-picker-dropdown-content{padding:1rem;height:100%}:host .system-picker-dropdown-content.mobile{padding:1rem 1.5rem}:host .system-picker-header{background-color:var(--base-95);padding:.5rem 1rem .5rem .75rem;display:flex;flex-direction:row;align-items:center;border-bottom:1px solid var(--base-70)}:host .system-picker-header h1{margin:0;flex:1 1 100%}:host .dropdown-content-wrapper:not(.mobile) tld-translation-system-picker-filter{margin-bottom:.5rem}.mobile tld-translation-system-picker-dropdown-body{width:100%}.dropdown-content-wrapper{height:100%}.system-picker-dropdown-col:not(.mobile){width:63%;height:100%;padding-right:1.5rem;border-right:1px solid var(--base-70)}\n"] }]
9306
+ args: [{ selector: 'tld-translation-system-picker-dropdown', template: "<div *ngIf=\"isMobile\" class=\"dropdown-content-wrapper mobile\" (clickOutside)=\"clickOutside()\">\r\n\t<div class=\"system-picker-header\">\r\n\t\t<button mat-icon-button (click)=\"back()\">\r\n\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t</button>\r\n\t\t<h1 class=\" text-l-semi-bold\">{{currentConfig?.headerTitle | translate}}</h1>\r\n\t</div>\r\n\r\n\t<ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t<div class=\"system-picker-dropdown-content mobile\">\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"currentConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t>\r\n\t\t</tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<div *ngIf=\"!isMobile\" class=\"dropdown-content-wrapper\" (clickOutside)=\"clickOutside()\">\r\n\t<div fxLayout=\"row\" class=\"system-picker-dropdown-content\">\r\n\t\t<div fxLayout=\"column\" class=\"system-picker-dropdown-col\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n\r\n\t\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t\t[config]=\"currentConfig\"\r\n\t\t\t\t[filterText]=\"filterText\"\r\n\t\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t\t>\r\n\t\t\t</tld-translation-system-picker-dropdown-body>\r\n\t\t</div>\r\n\r\n\t\t<tld-translation-system-picker-dropdown-body\r\n\t\t\t[config]=\"recentSystemPickerConfig\"\r\n\t\t\t[filterText]=\"filterText\"\r\n\t\t\t(onSystemClick)=\"onSystemClick()\"\r\n\t\t\t(onLanguageClick)=\"onLanguageClick()\"\r\n\t\t\t(onFilteredLanguageClick)=\"onFilteredLanguageClick()\"\r\n\t\t></tld-translation-system-picker-dropdown-body>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template #filter>\r\n\t<div [class.filter-mobile]=\"isMobile\">\r\n\t\t<tld-translation-system-picker-filter (filterChanged)=\"filterChange($event)\"> </tld-translation-system-picker-filter>\r\n\t</div>\r\n</ng-template>\r\n", styles: [":host{background-color:var(--base-100);overflow-y:auto!important;height:100%!important;box-sizing:border-box}:host .system-picker-dropdown-content{padding:1rem;height:100%}:host .system-picker-dropdown-content.mobile{padding:1rem 1.5rem}:host .system-picker-header{background-color:var(--base-95);padding:.5rem 1rem .5rem .75rem;display:flex;flex-direction:row;align-items:center;border-bottom:1px solid var(--base-70)}:host .system-picker-header h1{margin:0;flex:1 1 100%}:host .dropdown-content-wrapper:not(.mobile) tld-translation-system-picker-filter{margin-bottom:.5rem}.mobile tld-translation-system-picker-dropdown-body{width:100%}.dropdown-content-wrapper{height:100%}.system-picker-dropdown-col:not(.mobile){width:63%;height:100%;padding-right:1.5rem;border-right:1px solid var(--base-70)}.filter-mobile{padding:24px 24px 0}\n"] }]
9574
9307
  }], ctorParameters: () => [{ type: TranslationSystemPickerService }, { type: i8$1.BreakpointObserver }, { type: TldTranslateSystemManagementService }], propDecorators: { onKeydownHandler: [{
9575
9308
  type: HostListener,
9576
9309
  args: ['document:keydown.escape', ['$event']]
@@ -9607,8 +9340,7 @@ class TldTooltipModule {
9607
9340
  MatIconModule,
9608
9341
  MatTooltipModule,
9609
9342
  MatButtonModule,
9610
- LanguageTranslateModule,
9611
- LLMModule], exports: [TldTranslateSwitcherComponent,
9343
+ LanguageTranslateModule], exports: [TldTranslateSwitcherComponent,
9612
9344
  TldDomainListComponent,
9613
9345
  TranslationSystemPickerComponent,
9614
9346
  TranslationSystemPickerDropdownComponent] });
@@ -9627,8 +9359,7 @@ class TldTooltipModule {
9627
9359
  MatIconModule,
9628
9360
  MatTooltipModule,
9629
9361
  MatButtonModule,
9630
- LanguageTranslateModule,
9631
- LLMModule] });
9362
+ LanguageTranslateModule] });
9632
9363
  }
9633
9364
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTooltipModule, decorators: [{
9634
9365
  type: NgModule,
@@ -9661,7 +9392,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
9661
9392
  MatTooltipModule,
9662
9393
  MatButtonModule,
9663
9394
  LanguageTranslateModule,
9664
- LLMModule
9665
9395
  ],
9666
9396
  exports: [
9667
9397
  TldTranslateSwitcherComponent,
@@ -10161,7 +9891,7 @@ class TldTranslateWebsiteComponent {
10161
9891
  };
10162
9892
  }
10163
9893
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateWebsiteComponent, deps: [{ token: i1.TranslateService }, { token: TldTranslateConfigService }, { token: TldTranslateButtonService }, { token: i5.AlertService }, { token: i5$3.Router }, { token: i5$3.ActivatedRoute }, { token: TldTranslateSystemManagementService }, { token: i5.TerminologyService }, { token: TldTranslateWebService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
10164
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateWebsiteComponent, selector: "tld-translate-website", inputs: { product: "product", company: "company" }, outputs: { onError: "onError" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "urlInputField", first: true, predicate: ["url"], descendants: true }], ngImport: i0, template: "<div id=\"widget\" class=\"tld-translate-web\">\r\n <div class=\"translate-container-header\">\r\n <a href=\"/\" id=\"home-link\" [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <img [src]=\"logoLocation\" alt=\"logo\">\r\n <lib-company-product *ngIf=\"company && product\" [company]=\"company\" [product]=\"product\"></lib-company-product>\r\n </a>\r\n <div [ngClass.lt-sm]=\"'tld-translate-mobile'\">\r\n <div fxLayout=\"row\" class=\"address-wrapper\">\r\n <a (click)=\"goToHome()\" [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </a>\r\n <mat-form-field fxFlex=\"100%\" class=\"address-input\" appearance=\"outline\" color=\"accent\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <input matInput [placeholder]=\"'WEBTRANSLATE.SEARCH' | translate\" type=\"url\" #url class=\"url\" autofocus=\"autofocus\" [(ngModel)]=\"urlToTranslate\"\r\n (keyup.enter)=\"loadButtonClicked()\" />\r\n\r\n <mat-icon *ngIf=\"urlToTranslate\" [inline]=\"true\" (click)=\"clearUrlToTranslate()\">close</mat-icon>\r\n </div>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\" class=\"tld-translate-switcher-wrapper\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxFlex>\r\n <tld-translate-switcher\r\n *ngIf=\"switcherOptions\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"\r\n [useParentWidth]=\"useParentWidth\"\r\n [disabled]=\"actionButtonDisabled\"\r\n [settings]=\"switcherOptions\"\r\n [showTranslateButton]=\"false\"\r\n [hideOnSmallScreens]=\"false\"\r\n [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n (onDomainChange)=\"systemChange($event)\"\r\n (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\"\r\n (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\">\r\n </tld-translate-switcher>\r\n <div fxFlexAlign=\"center\" class=\"action-btn-wrapper\">\r\n <tld-translate-button\r\n *ngIf=\"showTranslateBtn\"\r\n class=\"switcher-translate-button\"\r\n [disabled]=\"actionButtonDisabled || !urlToTranslate\">\r\n </tld-translate-button>\r\n <button *ngIf=\"showCancel\" mat-flat-button color=\"accent\" (click)=\"cancel()\"\r\n class=\"cancel-button\">{{'WEBTRANSLATE.CANCEL' | translate}}</button>\r\n <button *ngIf=\"showRestore\" mat-flat-button color=\"accent\" (click)=\"restore()\"\r\n class=\"restore-button\">{{'WEBTRANSLATE.RESTORE' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [class.h-full]=\"!showEmptyView\" id=\"website-frame-container\">\r\n <mat-progress-bar *ngIf=\"showProgress\" color=\"accent\" [mode]=\"mode\" [value]=\"progressValue\">\r\n </mat-progress-bar>\r\n <lib-tld-notification-message [@openCloseAnimation] *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\"></lib-tld-notification-message>\r\n \r\n <iframe *ngIf=\"!showEmptyView; else emptyView\" #iframe id=\"letsmt-translate-page-iframe\" name=\"letsmtTranslatePageIframe\" src=\"about:blank\"></iframe>\r\n </div>\r\n\r\n <ng-template #emptyView>\r\n <lib-status-display [config]=\"emptyViewConfig\"></lib-status-display>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{display:block;height:100%;overflow-y:hidden}.tld-translate-web{height:100%}.tld-translate-switcher-wrapper{padding:0 .5em;margin-left:auto;margin-right:auto;padding-bottom:.5rem}.translate-container-header{padding:.6em 1em 0;box-sizing:border-box;background-color:var(--base-95)}#widget .translate-container-header{width:100%;margin-left:auto;margin-right:auto}#letsmt-translate-page-iframe{width:100%;height:100%;border:0}.h-full{height:100%}#website-frame-container{border-top:solid 1px var(--base-70)}#home-link{position:absolute;left:.75em;top:.2em;display:flex;flex-direction:row;text-decoration:none}#home-link img{margin-right:.75em;max-height:5.5em}@media screen and (max-width: 73em){#home-link{display:none}}.address-wrapper{max-width:60em;margin-left:auto;margin-right:auto}.address-wrapper mat-icon{margin-right:0!important}.address-wrapper a{margin-top:8px}.cancel-button,.restore-button{min-width:100px;height:36px;align-self:center}.address-input{padding-left:.9em;padding-right:.65em;width:100%}.switcher-translate-button{margin-left:.25rem}:host ::ng-deep .mat-mdc-text-field-wrapper{background-color:var(--base-100)}:host ::ng-deep .status-display-wrapper{margin:8rem 0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TldTranslateSwitcherComponent, selector: "tld-translate-switcher", inputs: ["buttonDisabled", "showTranslateButton", "hideOnSmallScreens", "disabled", "hideLangMenuLabels", "maxDisplayedLanguages", "collections", "showDomainsWithLanguageName", "isCollectionsActivated", "useParentWidth", "loader", "settings"], outputs: ["onDomainChange", "onActionClick", "onSourceLanguageChange", "onTargetLanguageChange", "onLanguageSwap", "onVendorChange"] }, { kind: "component", type: TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NotificationMessageComponent, selector: "lib-tld-notification-message", inputs: ["message", "inline"], outputs: ["buttonClicked", "closeClicked", "linkClicked"] }, { kind: "component", type: i5.CompanyProductComponent, selector: "lib-company-product", inputs: ["company", "product"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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.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.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.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: i5$1.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: "component", type: i5.StatusDisplayComponent, selector: "lib-status-display", inputs: ["config"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], animations: [
9894
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateWebsiteComponent, selector: "tld-translate-website", inputs: { product: "product", company: "company" }, outputs: { onError: "onError" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "urlInputField", first: true, predicate: ["url"], descendants: true }], ngImport: i0, template: "<div id=\"widget\" class=\"tld-translate-web\">\r\n <div class=\"translate-container-header\">\r\n <a href=\"/\" id=\"home-link\" [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <img [src]=\"logoLocation\" alt=\"logo\">\r\n <lib-company-product *ngIf=\"company && product\" [company]=\"company\" [product]=\"product\"></lib-company-product>\r\n </a>\r\n <div [ngClass.lt-sm]=\"'tld-translate-mobile'\">\r\n <div fxLayout=\"row\" class=\"address-wrapper\">\r\n <a (click)=\"goToHome()\" [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </a>\r\n <mat-form-field fxFlex=\"100%\" class=\"address-input\" appearance=\"outline\" color=\"accent\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <input matInput [placeholder]=\"'WEBTRANSLATE.SEARCH' | translate\" type=\"url\" #url class=\"url\" autofocus=\"autofocus\" [(ngModel)]=\"urlToTranslate\"\r\n (keyup.enter)=\"loadButtonClicked()\" />\r\n\r\n <mat-icon *ngIf=\"urlToTranslate\" [inline]=\"true\" (click)=\"clearUrlToTranslate()\">close</mat-icon>\r\n </div>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\" class=\"tld-translate-switcher-wrapper\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxFlex>\r\n <tld-translate-switcher\r\n *ngIf=\"switcherOptions\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"\r\n [useParentWidth]=\"useParentWidth\"\r\n [disabled]=\"actionButtonDisabled\"\r\n [settings]=\"switcherOptions\"\r\n [showTranslateButton]=\"false\"\r\n [hideOnSmallScreens]=\"false\"\r\n [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n (onDomainChange)=\"systemChange($event)\"\r\n (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\"\r\n (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\">\r\n </tld-translate-switcher>\r\n <div fxFlexAlign=\"center\" class=\"action-btn-wrapper\">\r\n <tld-translate-button\r\n *ngIf=\"showTranslateBtn\"\r\n class=\"switcher-translate-button\"\r\n [disabled]=\"actionButtonDisabled || !urlToTranslate\">\r\n </tld-translate-button>\r\n <button *ngIf=\"showCancel\" mat-flat-button color=\"accent\" (click)=\"cancel()\"\r\n class=\"cancel-button\">{{'WEBTRANSLATE.CANCEL' | translate}}</button>\r\n <button *ngIf=\"showRestore\" mat-flat-button color=\"accent\" (click)=\"restore()\"\r\n class=\"restore-button\">{{'WEBTRANSLATE.RESTORE' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [class.h-full]=\"!showEmptyView\" id=\"website-frame-container\">\r\n <mat-progress-bar *ngIf=\"showProgress\" color=\"accent\" [mode]=\"mode\" [value]=\"progressValue\">\r\n </mat-progress-bar>\r\n <lib-tld-notification-message [@openCloseAnimation] *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\"></lib-tld-notification-message>\r\n \r\n <iframe *ngIf=\"!showEmptyView; else emptyView\" #iframe id=\"letsmt-translate-page-iframe\" name=\"letsmtTranslatePageIframe\" src=\"about:blank\"></iframe>\r\n </div>\r\n\r\n <ng-template #emptyView>\r\n <lib-status-display [config]=\"emptyViewConfig\"></lib-status-display>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{display:block;height:100%;overflow-y:hidden}.tld-translate-web{height:100%}.tld-translate-switcher-wrapper{padding:0 .5em;margin-left:auto;margin-right:auto;padding-bottom:.5rem}.translate-container-header{padding:.6em 1em 0;box-sizing:border-box;background-color:var(--base-95)}#widget .translate-container-header{width:100%;margin-left:auto;margin-right:auto}#letsmt-translate-page-iframe{width:100%;height:100%;border:0}.h-full{height:100%}#website-frame-container{border-top:solid 1px var(--base-70)}#home-link{position:absolute;left:.75em;top:.2em;display:flex;flex-direction:row;text-decoration:none}#home-link img{margin-right:.75em;max-height:5.5em}@media screen and (max-width: 73em){#home-link{display:none}}.address-wrapper{max-width:60em;margin-left:auto;margin-right:auto}.address-wrapper mat-icon{margin-right:0!important}.address-wrapper a{margin-top:8px}.cancel-button,.restore-button{min-width:100px;height:36px;align-self:center}.address-input{padding-left:.9em;padding-right:.65em;width:100%}.switcher-translate-button{margin-left:.25rem}:host ::ng-deep .mat-mdc-text-field-wrapper{background-color:var(--base-100)}:host ::ng-deep .status-display-wrapper{margin:8rem 0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TldTranslateSwitcherComponent, selector: "tld-translate-switcher", inputs: ["buttonDisabled", "showTranslateButton", "hideOnSmallScreens", "disabled", "hideLangMenuLabels", "maxDisplayedLanguages", "collections", "showDomainsWithLanguageName", "isCollectionsActivated", "useParentWidth", "loader", "settings"], outputs: ["onDomainChange", "onActionClick", "onSourceLanguageChange", "onTargetLanguageChange", "onLanguageSwap", "onVendorChange"] }, { kind: "component", type: TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NotificationMessageComponent, selector: "lib-tld-notification-message", inputs: ["message", "inline"], outputs: ["buttonClicked", "closeClicked", "linkClicked"] }, { kind: "component", type: i5.CompanyProductComponent, selector: "lib-company-product", inputs: ["company", "product"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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.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.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.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: i5$1.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: "component", type: i5.StatusDisplayComponent, selector: "lib-status-display", inputs: ["config"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], animations: [
10165
9895
  trigger('openCloseAnimation', [
10166
9896
  transition(':enter', [
10167
9897
  style({ height: 0 }),
@@ -10315,6 +10045,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
10315
10045
  args: [{ selector: 'tld-translate-body', template: "<ng-container *ngIf=\"!multipleFilesUploaded\">\r\n <tld-translate-text *ngIf=\"!isFilePreviewLoaded\" (onFileChange)=\"fileUpload($event)\" [filePreviewProgress]=\"filePreviewProgress\"></tld-translate-text>\r\n <tld-translate-file *ngIf=\"isFilePreviewLoaded\" [translationFile]=\"file\"></tld-translate-file>\r\n</ng-container>\r\n<tld-translate-file-multiple [translationFiles]=\"files\" *ngIf=\"multipleFilesUploaded\"></tld-translate-file-multiple>\r\n", styles: ["tld-translate-text,tld-translate-file{flex:1 1 100%}tld-translate-file-multiple{height:100%;max-height:100%;width:100%}\n"] }]
10316
10046
  }], ctorParameters: () => [{ type: TldTranslateFileService }, { type: TldTranslateConfigService }] });
10317
10047
 
10048
+ const SUMMARIZE = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
10049
+ <path d="M4 5H18.6286V6.82857H4V5ZM4 10.4857H18.6286V8.65714H4V10.4857ZM4 14.1429H10.4V12.3143H4V14.1429ZM4 17.8H10.4V15.9714H4V17.8Z" fill="currentColor"/>
10050
+ <path d="M17.4005 13.3093C17.0801 12.5922 16.0622 12.5922 15.7418 13.3093L15.1052 14.7341L13.6804 15.3707C12.9633 15.6911 12.9633 16.709 13.6804 17.0294L15.1052 17.666L15.7418 19.0908C16.0622 19.8079 17.0801 19.8079 17.4005 19.0908L18.0371 17.666L19.4619 17.0294C20.179 16.709 20.179 15.6911 19.4619 15.3707L18.0371 14.7341L17.4005 13.3093Z" fill="currentColor"/>
10051
+ <path d="M13.5612 12.0546C13.4438 11.7917 13.0705 11.7917 12.953 12.0546L12.7196 12.577L12.1972 12.8105C11.9343 12.9279 11.9343 13.3012 12.1972 13.4187L12.7196 13.6521L12.953 14.1745C13.0705 14.4374 13.4438 14.4374 13.5612 14.1745L13.7947 13.6521L14.3171 13.4187C14.58 13.3012 14.58 12.9279 14.3171 12.8105L13.7947 12.577L13.5612 12.0546Z" fill="currentColor"/>
10052
+ </svg>
10053
+ `;
10054
+ const DOWNLOAD = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
10055
+ <path d="M17.9999 15V18H5.99988V15H3.99988V18C3.99988 19.1 4.89988 20 5.99988 20H17.9999C19.0999 20 19.9999 19.1 19.9999 18V15H17.9999ZM16.9999 11L15.5899 9.59L12.9999 12.17V4H10.9999V12.17L8.40988 9.59L6.99988 11L11.9999 16L16.9999 11Z" fill="currentColor"/>
10056
+ </svg>
10057
+ `;
10058
+
10059
+ var icons = /*#__PURE__*/Object.freeze({
10060
+ __proto__: null,
10061
+ DOWNLOAD: DOWNLOAD,
10062
+ SUMMARIZE: SUMMARIZE
10063
+ });
10064
+
10318
10065
  class WtwLinkParamsService {
10319
10066
  translate;
10320
10067
  defaultQueryParams = {
@@ -10359,6 +10106,7 @@ class TldTranslateComponent {
10359
10106
  wtwQueryService;
10360
10107
  systemPickerService;
10361
10108
  terminologyService;
10109
+ iconService;
10362
10110
  onError = new EventEmitter();
10363
10111
  onSystemChange = new EventEmitter();
10364
10112
  tldTranslateBody;
@@ -10407,7 +10155,7 @@ class TldTranslateComponent {
10407
10155
  languageMenuV1 = languageMenuVersion.V1;
10408
10156
  languageMenuV2 = languageMenuVersion.V2;
10409
10157
  destroy$ = new Subject();
10410
- constructor(translate, translateFileService, translateTextService, configService, alerts, translateButtonService, tldSystem, audioService, voiceProcessingService, wtwQueryService, systemPickerService, terminologyService) {
10158
+ constructor(translate, translateFileService, translateTextService, configService, alerts, translateButtonService, tldSystem, audioService, voiceProcessingService, wtwQueryService, systemPickerService, terminologyService, iconService) {
10411
10159
  this.translate = translate;
10412
10160
  this.translateFileService = translateFileService;
10413
10161
  this.translateTextService = translateTextService;
@@ -10420,6 +10168,7 @@ class TldTranslateComponent {
10420
10168
  this.wtwQueryService = wtwQueryService;
10421
10169
  this.systemPickerService = systemPickerService;
10422
10170
  this.terminologyService = terminologyService;
10171
+ this.iconService = iconService;
10423
10172
  }
10424
10173
  changeAuth(authOptions) {
10425
10174
  this.configService.coreConfig.isAuth = authOptions.isAuth;
@@ -10431,6 +10180,7 @@ class TldTranslateComponent {
10431
10180
  this.tldSystem.init(this.tldSystem.getLastUsedSystem() ?? this.configService.coreConfig.defaultSystemId);
10432
10181
  }
10433
10182
  ngOnInit() {
10183
+ this.iconService.registerIcons(icons);
10434
10184
  this.removeMessagesOnClear();
10435
10185
  this.tldSystem.getLoadedSystems().pipe(takeUntil(this.destroy$)).subscribe((res) => {
10436
10186
  if (!res.length) {
@@ -10562,7 +10312,7 @@ class TldTranslateComponent {
10562
10312
  this.messages.push(message);
10563
10313
  }
10564
10314
  }
10565
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateComponent, deps: [{ token: i1.TranslateService }, { token: TldTranslateFileService }, { token: TldTranslateTextService }, { token: TldTranslateConfigService }, { token: i5.AlertService }, { token: TldTranslateButtonService }, { token: TldTranslateSystemManagementService }, { token: AudioRecordService }, { token: TldVoiceInputService }, { token: WtwLinkParamsService }, { token: TranslationSystemPickerService }, { token: i5.TerminologyService }], target: i0.ɵɵFactoryTarget.Component });
10315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateComponent, deps: [{ token: i1.TranslateService }, { token: TldTranslateFileService }, { token: TldTranslateTextService }, { token: TldTranslateConfigService }, { token: i5.AlertService }, { token: TldTranslateButtonService }, { token: TldTranslateSystemManagementService }, { token: AudioRecordService }, { token: TldVoiceInputService }, { token: WtwLinkParamsService }, { token: TranslationSystemPickerService }, { token: i5.TerminologyService }, { token: i5.IconService }], target: i0.ɵɵFactoryTarget.Component });
10566
10316
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateComponent, selector: "tld-translate", outputs: { onError: "onError", onSystemChange: "onSystemChange" }, viewQueries: [{ propertyName: "tldTranslateBody", first: true, predicate: TldTranslateBodyComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" class=\"h-100 tld-translate\"\r\n [ngClass.lt-md]=\"'tld-translate-tablet tld-default-border-bottom'\"\r\n [ngClass.lt-sm]=\"'tld-translate-mobile tld-default-border-bottom'\"\r\n [class.tld-translate-multiple-files-active]=\"isMultipleFilesActive\">\r\n <div class=\"tld-translate-wrapper tld-default-border\" fxLayout=\"column\" fxFlex>\r\n <div class=\"tld-translate-switcher-wrapper tld-default-border-bottom\">\r\n <tld-translate-switcher *ngIf=\"switcherOptions && languageMenuVersion === languageMenuV1\"\r\n [disabled]=\"actionButtonDisabled\" [isCollectionsActivated]=\"isCollectionsActivated\" [settings]=\"switcherOptions\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\" [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n [buttonDisabled]=\"actionButtonDisabled\" [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n (onDomainChange)=\"systemChange($event)\" (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\" (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\" [loader]=\"actionButtonLoader\" [showTranslateButton]=\"showTranslateButton\">\r\n </tld-translate-switcher>\r\n <tld-translation-system-picker *ngIf=\"languageMenuVersion===languageMenuV2\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"></tld-translation-system-picker>\r\n </div>\r\n <div *ngIf=\"messages.length\" class=\"message-wrapper\">\r\n <lib-tld-notification-message [inline]=\"true\" *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\">\r\n </lib-tld-notification-message>\r\n </div>\r\n <div fxFlex style=\"position: relative;\">\r\n <tld-translate-body fxFlex fxLayoutAlign=\"column\" [attr.source-language]=\"sourceLanguage\"\r\n [attr.target-language]=\"targetLanguage\"></tld-translate-body>\r\n <tld-translation-system-picker-dropdown [ngClass.xs]=\"'mobile'\" *ngIf=\"systemPickerDropdownVisible\">\r\n </tld-translation-system-picker-dropdown>\r\n </div>\r\n </div>\r\n</div>", styles: [".tld-translate-wrapper{overflow:hidden;background:#fff;box-shadow:0 3.2px 7.2px #00000021}.tld-translate-switcher-wrapper{padding:.5em .2em}.h-100{height:100%}tld-translation-system-picker-dropdown{z-index:2}tld-translation-system-picker-dropdown:not(.mobile){position:absolute;width:100%;height:100%}tld-translation-system-picker-dropdown.mobile{position:fixed;top:0;left:0;width:100vw;height:100vh}.tld-translate-tablet .message-wrapper,.tld-translate-mobile .message-wrapper{padding:0}.message-wrapper{padding:16px 16px 0}lib-tld-notification-message:not(:first-child){margin-top:4px}:host ::ng-deep .notification-message{margin-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TldTranslateSwitcherComponent, selector: "tld-translate-switcher", inputs: ["buttonDisabled", "showTranslateButton", "hideOnSmallScreens", "disabled", "hideLangMenuLabels", "maxDisplayedLanguages", "collections", "showDomainsWithLanguageName", "isCollectionsActivated", "useParentWidth", "loader", "settings"], outputs: ["onDomainChange", "onActionClick", "onSourceLanguageChange", "onTargetLanguageChange", "onLanguageSwap", "onVendorChange"] }, { kind: "component", type: TranslationSystemPickerComponent, selector: "tld-translation-system-picker", inputs: ["isCollectionsActivated"] }, { kind: "component", type: TranslationSystemPickerDropdownComponent, selector: "tld-translation-system-picker-dropdown" }, { kind: "component", type: i5.NotificationMessageComponent, selector: "lib-tld-notification-message", inputs: ["message", "inline"], outputs: ["buttonClicked", "closeClicked", "linkClicked"] }, { 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.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: i5$1.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: "component", type: TldTranslateBodyComponent, selector: "tld-translate-body" }], animations: [
10567
10317
  trigger('openCloseAnimation', [
10568
10318
  transition(':enter', [
@@ -10584,7 +10334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
10584
10334
  transition(':leave', animate(500, style({ height: 0 })))
10585
10335
  ])
10586
10336
  ], template: "<div fxLayout=\"column\" class=\"h-100 tld-translate\"\r\n [ngClass.lt-md]=\"'tld-translate-tablet tld-default-border-bottom'\"\r\n [ngClass.lt-sm]=\"'tld-translate-mobile tld-default-border-bottom'\"\r\n [class.tld-translate-multiple-files-active]=\"isMultipleFilesActive\">\r\n <div class=\"tld-translate-wrapper tld-default-border\" fxLayout=\"column\" fxFlex>\r\n <div class=\"tld-translate-switcher-wrapper tld-default-border-bottom\">\r\n <tld-translate-switcher *ngIf=\"switcherOptions && languageMenuVersion === languageMenuV1\"\r\n [disabled]=\"actionButtonDisabled\" [isCollectionsActivated]=\"isCollectionsActivated\" [settings]=\"switcherOptions\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\" [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n [buttonDisabled]=\"actionButtonDisabled\" [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n (onDomainChange)=\"systemChange($event)\" (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\" (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\" [loader]=\"actionButtonLoader\" [showTranslateButton]=\"showTranslateButton\">\r\n </tld-translate-switcher>\r\n <tld-translation-system-picker *ngIf=\"languageMenuVersion===languageMenuV2\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"></tld-translation-system-picker>\r\n </div>\r\n <div *ngIf=\"messages.length\" class=\"message-wrapper\">\r\n <lib-tld-notification-message [inline]=\"true\" *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\">\r\n </lib-tld-notification-message>\r\n </div>\r\n <div fxFlex style=\"position: relative;\">\r\n <tld-translate-body fxFlex fxLayoutAlign=\"column\" [attr.source-language]=\"sourceLanguage\"\r\n [attr.target-language]=\"targetLanguage\"></tld-translate-body>\r\n <tld-translation-system-picker-dropdown [ngClass.xs]=\"'mobile'\" *ngIf=\"systemPickerDropdownVisible\">\r\n </tld-translation-system-picker-dropdown>\r\n </div>\r\n </div>\r\n</div>", styles: [".tld-translate-wrapper{overflow:hidden;background:#fff;box-shadow:0 3.2px 7.2px #00000021}.tld-translate-switcher-wrapper{padding:.5em .2em}.h-100{height:100%}tld-translation-system-picker-dropdown{z-index:2}tld-translation-system-picker-dropdown:not(.mobile){position:absolute;width:100%;height:100%}tld-translation-system-picker-dropdown.mobile{position:fixed;top:0;left:0;width:100vw;height:100vh}.tld-translate-tablet .message-wrapper,.tld-translate-mobile .message-wrapper{padding:0}.message-wrapper{padding:16px 16px 0}lib-tld-notification-message:not(:first-child){margin-top:4px}:host ::ng-deep .notification-message{margin-bottom:0!important}\n"] }]
10587
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: TldTranslateFileService }, { type: TldTranslateTextService }, { type: TldTranslateConfigService }, { type: i5.AlertService }, { type: TldTranslateButtonService }, { type: TldTranslateSystemManagementService }, { type: AudioRecordService }, { type: TldVoiceInputService }, { type: WtwLinkParamsService }, { type: TranslationSystemPickerService }, { type: i5.TerminologyService }], propDecorators: { onError: [{
10337
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: TldTranslateFileService }, { type: TldTranslateTextService }, { type: TldTranslateConfigService }, { type: i5.AlertService }, { type: TldTranslateButtonService }, { type: TldTranslateSystemManagementService }, { type: AudioRecordService }, { type: TldVoiceInputService }, { type: WtwLinkParamsService }, { type: TranslationSystemPickerService }, { type: i5.TerminologyService }, { type: i5.IconService }], propDecorators: { onError: [{
10588
10338
  type: Output
10589
10339
  }], onSystemChange: [{
10590
10340
  type: Output
@@ -10607,15 +10357,6 @@ function alertServiceConfigurationFactory(config) {
10607
10357
 
10608
10358
  const MT_TERM_API_TOKEN = "MtTermApiToken";
10609
10359
 
10610
- function llmServiceConfiguration(config) {
10611
- return {
10612
- subscriptionUrl: config.supscriptionConfig.pricingUrl,
10613
- supportEmail: config.coreConfig.supportEmail,
10614
- maxCharLength: config.llmConfig.maxCharLength,
10615
- useLocalQuota: config.llmConfig.useLocalQuota
10616
- };
10617
- }
10618
-
10619
10360
  class TldTranslateModule {
10620
10361
  static forRoot(configuration) {
10621
10362
  const providers = [
@@ -10624,11 +10365,6 @@ class TldTranslateModule {
10624
10365
  useFactory: alertServiceConfigurationFactory,
10625
10366
  deps: [TldTranslateConfigService],
10626
10367
  },
10627
- {
10628
- provide: LLM_CONFIGURATION_TOKEN,
10629
- useFactory: llmServiceConfiguration,
10630
- deps: [TldTranslateConfigService],
10631
- }
10632
10368
  ];
10633
10369
  if (configuration) {
10634
10370
  providers.push({