@tilde-nlp/ngx-translate 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +2 -0
  2. package/esm2020/lib/components/shared/extension-dialog/components/index.mjs +2 -0
  3. package/esm2020/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.mjs +24 -0
  4. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.component.mjs +133 -0
  5. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.module.mjs +51 -0
  6. package/esm2020/lib/components/shared/extension-dialog/index.mjs +6 -0
  7. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-categories.enum.mjs +9 -0
  8. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.mjs +35 -0
  9. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.mjs +13 -0
  10. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-types.enum.mjs +13 -0
  11. package/esm2020/lib/components/shared/extension-dialog/models/enums/index.mjs +5 -0
  12. package/esm2020/lib/components/shared/extension-dialog/models/index.mjs +3 -0
  13. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/config.mjs +2 -0
  14. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.mjs +2 -0
  15. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/index.mjs +3 -0
  16. package/esm2020/lib/components/shared/extension-dialog/services/extension-dialog.service.mjs +22 -0
  17. package/esm2020/lib/components/shared/extension-dialog/services/index.mjs +2 -0
  18. package/esm2020/lib/components/shared/text-to-speech/index.mjs +3 -0
  19. package/esm2020/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.mjs +2 -0
  20. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.component.mjs +62 -0
  21. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.module.mjs +36 -0
  22. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.mjs +39 -0
  23. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.mjs +28 -0
  24. package/esm2020/lib/factories/file-api-service.factory.mjs +12 -0
  25. package/esm2020/lib/factories/system-service.factory.mjs +12 -0
  26. package/esm2020/lib/factories/text-api-service.factory.mjs +12 -0
  27. package/esm2020/lib/i18n/available-languages.mjs +19 -0
  28. package/esm2020/lib/i18n/de.mjs +378 -0
  29. package/esm2020/lib/i18n/en.mjs +426 -0
  30. package/esm2020/lib/i18n/et.mjs +378 -0
  31. package/esm2020/lib/i18n/fi.mjs +383 -0
  32. package/esm2020/lib/i18n/lt.mjs +378 -0
  33. package/esm2020/lib/i18n/lv.mjs +391 -0
  34. package/esm2020/lib/i18n/models/available-languages.model.mjs +2 -0
  35. package/esm2020/lib/i18n/pl.mjs +378 -0
  36. package/esm2020/lib/i18n/sv.mjs +242 -0
  37. package/esm2020/lib/injection-tokens/file-api-service.token.mjs +2 -0
  38. package/esm2020/lib/injection-tokens/index.mjs +6 -0
  39. package/esm2020/lib/injection-tokens/system-service.token.mjs +2 -0
  40. package/esm2020/lib/injection-tokens/text-api-service.token.mjs +2 -0
  41. package/esm2020/lib/injection-tokens/tld-translate-config.token.mjs +2 -0
  42. package/esm2020/lib/injection-tokens/translation-api-version.token.mjs +2 -0
  43. package/esm2020/lib/modules/material.module.mjs +97 -0
  44. package/esm2020/lib/modules/tld-audio/index.mjs +4 -0
  45. package/esm2020/lib/modules/tld-audio/models/audio-error-case.model.mjs +13 -0
  46. package/esm2020/lib/modules/tld-audio/models/dictate-configurationi.model.mjs +2 -0
  47. package/esm2020/lib/modules/tld-audio/models/index.mjs +3 -0
  48. package/esm2020/lib/modules/tld-audio/models/transcription-update.model.mjs +2 -0
  49. package/esm2020/lib/modules/tld-audio/services/audio-record.service.mjs +116 -0
  50. package/esm2020/lib/modules/tld-audio/services/index.mjs +4 -0
  51. package/esm2020/lib/modules/tld-audio/services/tld-voice-input-api.service.mjs +48 -0
  52. package/esm2020/lib/modules/tld-audio/services/tld-voice-input.service.mjs +60 -0
  53. package/esm2020/lib/modules/tld-audio/tld-audio.module.mjs +41 -0
  54. package/esm2020/lib/modules/tld-audio/tld-dictate/tld-dictate.component.mjs +151 -0
  55. package/esm2020/lib/modules/tld-audio/tld-record/tld-record.component.mjs +87 -0
  56. package/esm2020/lib/modules/tld-common/animations/pulse.animation.mjs +11 -0
  57. package/esm2020/lib/modules/tld-common/components/index.mjs +10 -0
  58. package/esm2020/lib/modules/tld-common/components/open-close-button/open-close-button.component.mjs +41 -0
  59. package/esm2020/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.mjs +44 -0
  60. package/esm2020/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.mjs +103 -0
  61. package/esm2020/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.mjs +193 -0
  62. package/esm2020/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.mjs +60 -0
  63. package/esm2020/lib/modules/tld-common/components/tld-loader/tld-loader.component.mjs +12 -0
  64. package/esm2020/lib/modules/tld-common/components/tld-message/tld-message.component.mjs +49 -0
  65. package/esm2020/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.mjs +17 -0
  66. package/esm2020/lib/modules/tld-common/components/translate-button/tld-translate-button.service.mjs +30 -0
  67. package/esm2020/lib/modules/tld-common/components/translate-button/translate-button.component.mjs +59 -0
  68. package/esm2020/lib/modules/tld-common/directives/drag-and-drop.directive.mjs +57 -0
  69. package/esm2020/lib/modules/tld-common/directives/index.mjs +2 -0
  70. package/esm2020/lib/modules/tld-common/index.mjs +2 -0
  71. package/esm2020/lib/modules/tld-common/models/auth-options.model.mjs +2 -0
  72. package/esm2020/lib/modules/tld-common/models/common.mjs +107 -0
  73. package/esm2020/lib/modules/tld-common/models/configs/tld-audio-config.model.mjs +2 -0
  74. package/esm2020/lib/modules/tld-common/models/configs/tld-term-config.model.mjs +2 -0
  75. package/esm2020/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.mjs +2 -0
  76. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.mjs +2 -0
  77. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-config.model.mjs +2 -0
  78. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-core-config.model.mjs +2 -0
  79. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-file-config.model.mjs +2 -0
  80. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-text-config.model.mjs +2 -0
  81. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-web-config.model.mjs +2 -0
  82. package/esm2020/lib/modules/tld-common/models/core/index.mjs +3 -0
  83. package/esm2020/lib/modules/tld-common/models/core/language-menu-version.enum.mjs +6 -0
  84. package/esm2020/lib/modules/tld-common/models/core/translation-api-version.model.mjs +6 -0
  85. package/esm2020/lib/modules/tld-common/models/errors/error-codes.enum.mjs +27 -0
  86. package/esm2020/lib/modules/tld-common/models/errors/error-codes.type.mjs +2 -0
  87. package/esm2020/lib/modules/tld-common/models/errors/error.model.mjs +2 -0
  88. package/esm2020/lib/modules/tld-common/models/file-upload.model.mjs +10 -0
  89. package/esm2020/lib/modules/tld-common/models/index.mjs +22 -0
  90. package/esm2020/lib/modules/tld-common/models/lang-list-item.model.mjs +2 -0
  91. package/esm2020/lib/modules/tld-common/models/language-with-translation.model.mjs +2 -0
  92. package/esm2020/lib/modules/tld-common/models/message.model.mjs +7 -0
  93. package/esm2020/lib/modules/tld-common/models/selected-language.model.mjs +2 -0
  94. package/esm2020/lib/modules/tld-common/models/services/file-api/download-file-params.model.mjs +2 -0
  95. package/esm2020/lib/modules/tld-common/models/services/file-api/file-api-service.model.mjs +2 -0
  96. package/esm2020/lib/modules/tld-common/models/services/file-api/file-meta.model.mjs +2 -0
  97. package/esm2020/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.mjs +9 -0
  98. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.mjs +2 -0
  99. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.mjs +2 -0
  100. package/esm2020/lib/modules/tld-common/models/services/file-api/remove-file-params.model.mjs +2 -0
  101. package/esm2020/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.mjs +2 -0
  102. package/esm2020/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.mjs +2 -0
  103. package/esm2020/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.mjs +2 -0
  104. package/esm2020/lib/modules/tld-common/models/services/index.mjs +19 -0
  105. package/esm2020/lib/modules/tld-common/models/services/system/system.model.mjs +2 -0
  106. package/esm2020/lib/modules/tld-common/models/services/system/tld-system-api-service.model.mjs +2 -0
  107. package/esm2020/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.mjs +2 -0
  108. package/esm2020/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.mjs +2 -0
  109. package/esm2020/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.mjs +2 -0
  110. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.mjs +7 -0
  111. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.mjs +2 -0
  112. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.mjs +2 -0
  113. package/esm2020/lib/modules/tld-common/pipes/index.mjs +2 -0
  114. package/esm2020/lib/modules/tld-common/pipes/translate-domain.pipe.mjs +27 -0
  115. package/esm2020/lib/modules/tld-common/services/icon-service/icon.service.mjs +30 -0
  116. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.mjs +22 -0
  117. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/index.mjs +10 -0
  118. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.mjs +6 -0
  119. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.mjs +6 -0
  120. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.mjs +6 -0
  121. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.mjs +12 -0
  122. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.mjs +10 -0
  123. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.mjs +6 -0
  124. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.mjs +6 -0
  125. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.mjs +11 -0
  126. package/esm2020/lib/modules/tld-common/services/icon-service/icons.mjs +52 -0
  127. package/esm2020/lib/modules/tld-common/services/index.mjs +5 -0
  128. package/esm2020/lib/modules/tld-common/services/scroll/tld-scroll.service.mjs +43 -0
  129. package/esm2020/lib/modules/tld-common/services/tld-alert.service.mjs +139 -0
  130. package/esm2020/lib/modules/tld-common/services/tld-highlight.service.mjs +25 -0
  131. package/esm2020/lib/modules/tld-common/services/tld-translate-config.service.mjs +226 -0
  132. package/esm2020/lib/modules/tld-common/services/wtw-link-params.service.mjs +33 -0
  133. package/esm2020/lib/modules/tld-common/tld-common.module.mjs +97 -0
  134. package/esm2020/lib/modules/tld-document/download-button/download-button.component.mjs +78 -0
  135. package/esm2020/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.mjs +32 -0
  136. package/esm2020/lib/modules/tld-document/index.mjs +8 -0
  137. package/esm2020/lib/modules/tld-document/models/file-conversion-types.model.mjs +6 -0
  138. package/esm2020/lib/modules/tld-document/models/index.mjs +6 -0
  139. package/esm2020/lib/modules/tld-document/models/start-translation.model.mjs +2 -0
  140. package/esm2020/lib/modules/tld-document/models/translate-file.model.mjs +2 -0
  141. package/esm2020/lib/modules/tld-document/models/translation-statuss.model.mjs +15 -0
  142. package/esm2020/lib/modules/tld-document/models/upload-response.model.mjs +2 -0
  143. package/esm2020/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.mjs +32 -0
  144. package/esm2020/lib/modules/tld-document/services/api/file-api.service.mjs +166 -0
  145. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.mjs +2 -0
  146. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.mjs +2 -0
  147. package/esm2020/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.mjs +2 -0
  148. package/esm2020/lib/modules/tld-document/services/api-v2/file-api-v2.service.mjs +87 -0
  149. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.mjs +6 -0
  150. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.mjs +2 -0
  151. package/esm2020/lib/modules/tld-document/services/index.mjs +3 -0
  152. package/esm2020/lib/modules/tld-document/services/tld-translate-file.service.mjs +398 -0
  153. package/esm2020/lib/modules/tld-document/tld-document.module.mjs +70 -0
  154. package/esm2020/lib/modules/tld-document/tld-file-translate-base.component.mjs +76 -0
  155. package/esm2020/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +94 -0
  156. package/esm2020/lib/modules/tld-term/index.mjs +7 -0
  157. package/esm2020/lib/modules/tld-term/models/converted-collection-tooltip-key.model.mjs +7 -0
  158. package/esm2020/lib/modules/tld-term/models/converted-collection-type.model.mjs +9 -0
  159. package/esm2020/lib/modules/tld-term/models/index.mjs +7 -0
  160. package/esm2020/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.mjs +2 -0
  161. package/esm2020/lib/modules/tld-term/models/mt-collection-status.model.mjs +7 -0
  162. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.mjs +2 -0
  163. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection.model.mjs +2 -0
  164. package/esm2020/lib/modules/tld-term/models/tld-converted-collection.model.mjs +114 -0
  165. package/esm2020/lib/modules/tld-term/services/index.mjs +4 -0
  166. package/esm2020/lib/modules/tld-term/services/mt-collections-api.service.mjs +33 -0
  167. package/esm2020/lib/modules/tld-term/services/term-api.service.mjs +34 -0
  168. package/esm2020/lib/modules/tld-term/services/tld-term-collections.service.mjs +253 -0
  169. package/esm2020/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.mjs +19 -0
  170. package/esm2020/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.mjs +99 -0
  171. package/esm2020/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.mjs +47 -0
  172. package/esm2020/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.mjs +36 -0
  173. package/esm2020/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.mjs +35 -0
  174. package/esm2020/lib/modules/tld-term/tld-term.module.mjs +67 -0
  175. package/esm2020/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.mjs +109 -0
  176. package/esm2020/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.mjs +35 -0
  177. package/esm2020/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.mjs +153 -0
  178. package/esm2020/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.mjs +56 -0
  179. package/esm2020/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.mjs +60 -0
  180. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.mjs +2 -0
  181. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.mjs +92 -0
  182. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.mjs +60 -0
  183. package/esm2020/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +272 -0
  184. package/esm2020/lib/modules/tld-text/index.mjs +9 -0
  185. package/esm2020/lib/modules/tld-text/models/check-grammar-response-v2.model.mjs +2 -0
  186. package/esm2020/lib/modules/tld-text/models/dictionary.model.mjs +2 -0
  187. package/esm2020/lib/modules/tld-text/models/get-sentence-v1-response.model.mjs +2 -0
  188. package/esm2020/lib/modules/tld-text/models/grammar-check-base.model.mjs +2 -0
  189. package/esm2020/lib/modules/tld-text/models/grammar-check-meta.model.mjs +2 -0
  190. package/esm2020/lib/modules/tld-text/models/grammar-check-replacement.model.mjs +2 -0
  191. package/esm2020/lib/modules/tld-text/models/grammar-correction-v2.model.mjs +2 -0
  192. package/esm2020/lib/modules/tld-text/models/highlight-params.model.mjs +11 -0
  193. package/esm2020/lib/modules/tld-text/models/highlight-tree-type.model.mjs +12 -0
  194. package/esm2020/lib/modules/tld-text/models/highlight-tree.model.mjs +2 -0
  195. package/esm2020/lib/modules/tld-text/models/highlight.model.mjs +2 -0
  196. package/esm2020/lib/modules/tld-text/models/index.mjs +11 -0
  197. package/esm2020/lib/modules/tld-text/models/retranslate-params.model.mjs +2 -0
  198. package/esm2020/lib/modules/tld-text/models/source-text-changed.model.mjs +2 -0
  199. package/esm2020/lib/modules/tld-text/models/translate-paragraph-params.model.mjs +2 -0
  200. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v1.model.mjs +2 -0
  201. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v2.model.mjs +2 -0
  202. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response.model.mjs +2 -0
  203. package/esm2020/lib/modules/tld-text/models/untranslated-paragraph.model.mjs +2 -0
  204. package/esm2020/lib/modules/tld-text/services/api/tld-translate-text-api.service.mjs +187 -0
  205. package/esm2020/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.mjs +110 -0
  206. package/esm2020/lib/modules/tld-text/services/index.mjs +2 -0
  207. package/esm2020/lib/modules/tld-text/services/tld-translate-text.service.mjs +380 -0
  208. package/esm2020/lib/modules/tld-text/tld-text.module.mjs +95 -0
  209. package/esm2020/lib/modules/tld-text/utils/index.mjs +2 -0
  210. package/esm2020/lib/modules/tld-text/utils/models/existing-paragraph-info.model.mjs +2 -0
  211. package/esm2020/lib/modules/tld-text/utils/models/index.mjs +2 -0
  212. package/esm2020/lib/modules/tld-text/utils/tld-translate-text.utils.mjs +56 -0
  213. package/esm2020/lib/modules/tld-tooltip/index.mjs +5 -0
  214. package/esm2020/lib/modules/tld-tooltip/models/active-data.model.mjs +2 -0
  215. package/esm2020/lib/modules/tld-tooltip/models/domain.model.mjs +2 -0
  216. package/esm2020/lib/modules/tld-tooltip/models/index.mjs +5 -0
  217. package/esm2020/lib/modules/tld-tooltip/models/switcher-options.model.mjs +2 -0
  218. package/esm2020/lib/modules/tld-tooltip/models/system-metadata-keys.model.mjs +7 -0
  219. package/esm2020/lib/modules/tld-tooltip/models/vendor.model.mjs +2 -0
  220. package/esm2020/lib/modules/tld-tooltip/services/api/models/description.model.mjs +2 -0
  221. package/esm2020/lib/modules/tld-tooltip/services/api/models/language.model.mjs +2 -0
  222. package/esm2020/lib/modules/tld-tooltip/services/api/models/metadata.model.mjs +2 -0
  223. package/esm2020/lib/modules/tld-tooltip/services/api/models/name.model.mjs +2 -0
  224. package/esm2020/lib/modules/tld-tooltip/services/api/models/system.model.mjs +2 -0
  225. package/esm2020/lib/modules/tld-tooltip/services/api/tld-system-api.service.mjs +57 -0
  226. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/error.model.mjs +2 -0
  227. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.mjs +2 -0
  228. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.mjs +2 -0
  229. package/esm2020/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.mjs +60 -0
  230. package/esm2020/lib/modules/tld-tooltip/services/index.mjs +2 -0
  231. package/esm2020/lib/modules/tld-tooltip/services/tld-system.service.mjs +302 -0
  232. package/esm2020/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.mjs +69 -0
  233. package/esm2020/lib/modules/tld-tooltip/tld-tooltip.module.mjs +95 -0
  234. package/esm2020/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.mjs +188 -0
  235. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.mjs +179 -0
  236. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.mjs +209 -0
  237. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.mjs +48 -0
  238. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/index.mjs +8 -0
  239. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.mjs +31 -0
  240. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.mjs +2 -0
  241. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.mjs +3 -0
  242. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/index.mjs +6 -0
  243. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.mjs +7 -0
  244. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.mjs +2 -0
  245. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.mjs +2 -0
  246. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/index.mjs +2 -0
  247. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.mjs +58 -0
  248. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.mjs +31 -0
  249. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.mjs +27 -0
  250. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.mjs +79 -0
  251. package/esm2020/lib/modules/tld-translate-file/tld-translate-file.component.mjs +65 -0
  252. package/esm2020/lib/modules/tld-web/index.mjs +3 -0
  253. package/esm2020/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.mjs +499 -0
  254. package/esm2020/lib/modules/tld-web/tld-translate-web.service.mjs +16 -0
  255. package/esm2020/lib/modules/tld-web/tld-web.module.mjs +52 -0
  256. package/esm2020/lib/tld-translate-body/tld-translate-body.component.mjs +60 -0
  257. package/esm2020/lib/tld-translate.component.mjs +229 -0
  258. package/esm2020/lib/tld-translate.module.mjs +118 -0
  259. package/esm2020/public-api.mjs +43 -0
  260. package/esm2020/tilde-nlp-ngx-translate.mjs +5 -0
  261. package/fesm2015/tilde-nlp-ngx-translate.mjs +11019 -0
  262. package/fesm2015/tilde-nlp-ngx-translate.mjs.map +1 -0
  263. package/fesm2020/tilde-nlp-ngx-translate.mjs +10912 -0
  264. package/fesm2020/tilde-nlp-ngx-translate.mjs.map +1 -0
  265. package/index.d.ts +5 -0
  266. package/lib/components/shared/extension-dialog/components/index.d.ts +1 -0
  267. package/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.d.ts +12 -0
  268. package/lib/components/shared/extension-dialog/extension-dialog.component.d.ts +15 -0
  269. package/lib/components/shared/extension-dialog/extension-dialog.module.d.ts +15 -0
  270. package/lib/components/shared/extension-dialog/index.d.ts +5 -0
  271. package/lib/components/shared/extension-dialog/models/enums/file-categories.enum.d.ts +7 -0
  272. package/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.d.ts +33 -0
  273. package/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.d.ts +11 -0
  274. package/lib/components/shared/extension-dialog/models/enums/file-types.enum.d.ts +11 -0
  275. package/lib/components/shared/extension-dialog/models/enums/index.d.ts +4 -0
  276. package/lib/components/shared/extension-dialog/models/index.d.ts +2 -0
  277. package/lib/components/shared/extension-dialog/models/interfaces/config.d.ts +18 -0
  278. package/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.d.ts +3 -0
  279. package/lib/components/shared/extension-dialog/models/interfaces/index.d.ts +2 -0
  280. package/lib/components/shared/extension-dialog/services/extension-dialog.service.d.ts +9 -0
  281. package/lib/components/shared/extension-dialog/services/index.d.ts +1 -0
  282. package/lib/components/shared/text-to-speech/index.d.ts +2 -0
  283. package/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.d.ts +23 -0
  284. package/lib/components/shared/text-to-speech/text-to-speech.component.d.ts +18 -0
  285. package/lib/components/shared/text-to-speech/text-to-speech.module.d.ts +11 -0
  286. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.d.ts +17 -0
  287. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.d.ts +9 -0
  288. package/lib/factories/file-api-service.factory.d.ts +7 -0
  289. package/lib/factories/system-service.factory.d.ts +6 -0
  290. package/lib/factories/text-api-service.factory.d.ts +6 -0
  291. package/lib/i18n/available-languages.d.ts +2 -0
  292. package/lib/i18n/de.d.ts +377 -0
  293. package/lib/i18n/en.d.ts +425 -0
  294. package/lib/i18n/et.d.ts +377 -0
  295. package/lib/i18n/fi.d.ts +382 -0
  296. package/lib/i18n/lt.d.ts +377 -0
  297. package/lib/i18n/lv.d.ts +390 -0
  298. package/lib/i18n/models/available-languages.model.d.ts +10 -0
  299. package/lib/i18n/pl.d.ts +377 -0
  300. package/lib/i18n/sv.d.ts +241 -0
  301. package/lib/injection-tokens/file-api-service.token.d.ts +1 -0
  302. package/lib/injection-tokens/index.d.ts +5 -0
  303. package/lib/injection-tokens/system-service.token.d.ts +1 -0
  304. package/lib/injection-tokens/text-api-service.token.d.ts +1 -0
  305. package/lib/injection-tokens/tld-translate-config.token.d.ts +1 -0
  306. package/lib/injection-tokens/translation-api-version.token.d.ts +1 -0
  307. package/lib/modules/material.module.d.ts +27 -0
  308. package/lib/modules/tld-audio/index.d.ts +3 -0
  309. package/lib/modules/tld-audio/models/audio-error-case.model.d.ts +11 -0
  310. package/lib/modules/tld-audio/models/dictate-configurationi.model.d.ts +6 -0
  311. package/lib/modules/tld-audio/models/index.d.ts +2 -0
  312. package/lib/modules/tld-audio/models/transcription-update.model.d.ts +4 -0
  313. package/lib/modules/tld-audio/services/audio-record.service.d.ts +35 -0
  314. package/lib/modules/tld-audio/services/index.d.ts +3 -0
  315. package/lib/modules/tld-audio/services/tld-voice-input-api.service.d.ts +16 -0
  316. package/lib/modules/tld-audio/services/tld-voice-input.service.d.ts +20 -0
  317. package/lib/modules/tld-audio/tld-audio.module.d.ts +14 -0
  318. package/lib/modules/tld-audio/tld-dictate/tld-dictate.component.d.ts +43 -0
  319. package/lib/modules/tld-audio/tld-record/tld-record.component.d.ts +32 -0
  320. package/lib/modules/tld-common/animations/pulse.animation.d.ts +1 -0
  321. package/lib/modules/tld-common/components/index.d.ts +9 -0
  322. package/lib/modules/tld-common/components/open-close-button/open-close-button.component.d.ts +15 -0
  323. package/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.d.ts +19 -0
  324. package/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.d.ts +28 -0
  325. package/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.d.ts +52 -0
  326. package/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.d.ts +24 -0
  327. package/lib/modules/tld-common/components/tld-loader/tld-loader.component.d.ts +5 -0
  328. package/lib/modules/tld-common/components/tld-message/tld-message.component.d.ts +18 -0
  329. package/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.d.ts +6 -0
  330. package/lib/modules/tld-common/components/translate-button/tld-translate-button.service.d.ts +12 -0
  331. package/lib/modules/tld-common/components/translate-button/translate-button.component.d.ts +22 -0
  332. package/lib/modules/tld-common/directives/drag-and-drop.directive.d.ts +14 -0
  333. package/lib/modules/tld-common/directives/index.d.ts +1 -0
  334. package/lib/modules/tld-common/index.d.ts +1 -0
  335. package/lib/modules/tld-common/models/auth-options.model.d.ts +4 -0
  336. package/lib/modules/tld-common/models/common.d.ts +28 -0
  337. package/lib/modules/tld-common/models/configs/tld-audio-config.model.d.ts +22 -0
  338. package/lib/modules/tld-common/models/configs/tld-term-config.model.d.ts +27 -0
  339. package/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.d.ts +11 -0
  340. package/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.d.ts +11 -0
  341. package/lib/modules/tld-common/models/configs/tld-translate-config.model.d.ts +18 -0
  342. package/lib/modules/tld-common/models/configs/tld-translate-core-config.model.d.ts +42 -0
  343. package/lib/modules/tld-common/models/configs/tld-translate-file-config.model.d.ts +25 -0
  344. package/lib/modules/tld-common/models/configs/tld-translate-text-config.model.d.ts +39 -0
  345. package/lib/modules/tld-common/models/configs/tld-translate-web-config.model.d.ts +10 -0
  346. package/lib/modules/tld-common/models/core/index.d.ts +2 -0
  347. package/lib/modules/tld-common/models/core/language-menu-version.enum.d.ts +4 -0
  348. package/lib/modules/tld-common/models/core/translation-api-version.model.d.ts +4 -0
  349. package/lib/modules/tld-common/models/errors/error-codes.enum.d.ts +21 -0
  350. package/lib/modules/tld-common/models/errors/error-codes.type.d.ts +4 -0
  351. package/lib/modules/tld-common/models/errors/error.model.d.ts +3 -0
  352. package/lib/modules/tld-common/models/file-upload.model.d.ts +13 -0
  353. package/lib/modules/tld-common/models/index.d.ts +21 -0
  354. package/lib/modules/tld-common/models/lang-list-item.model.d.ts +6 -0
  355. package/lib/modules/tld-common/models/language-with-translation.model.d.ts +6 -0
  356. package/lib/modules/tld-common/models/message.model.d.ts +11 -0
  357. package/lib/modules/tld-common/models/selected-language.model.d.ts +4 -0
  358. package/lib/modules/tld-common/models/services/file-api/download-file-params.model.d.ts +5 -0
  359. package/lib/modules/tld-common/models/services/file-api/file-api-service.model.d.ts +17 -0
  360. package/lib/modules/tld-common/models/services/file-api/file-meta.model.d.ts +8 -0
  361. package/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.d.ts +7 -0
  362. package/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.d.ts +6 -0
  363. package/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.d.ts +13 -0
  364. package/lib/modules/tld-common/models/services/file-api/remove-file-params.model.d.ts +4 -0
  365. package/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.d.ts +8 -0
  366. package/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.d.ts +6 -0
  367. package/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.d.ts +4 -0
  368. package/lib/modules/tld-common/models/services/index.d.ts +18 -0
  369. package/lib/modules/tld-common/models/services/system/system.model.d.ts +17 -0
  370. package/lib/modules/tld-common/models/services/system/tld-system-api-service.model.d.ts +5 -0
  371. package/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.d.ts +6 -0
  372. package/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.d.ts +26 -0
  373. package/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.d.ts +6 -0
  374. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.d.ts +5 -0
  375. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.d.ts +21 -0
  376. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.d.ts +7 -0
  377. package/lib/modules/tld-common/pipes/index.d.ts +1 -0
  378. package/lib/modules/tld-common/pipes/translate-domain.pipe.d.ts +13 -0
  379. package/lib/modules/tld-common/services/icon-service/icon.service.d.ts +12 -0
  380. package/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.d.ts +1 -0
  381. package/lib/modules/tld-common/services/icon-service/icons/file-types/index.d.ts +9 -0
  382. package/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.d.ts +1 -0
  383. package/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.d.ts +1 -0
  384. package/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.d.ts +1 -0
  385. package/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.d.ts +1 -0
  386. package/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.d.ts +1 -0
  387. package/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.d.ts +1 -0
  388. package/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.d.ts +1 -0
  389. package/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.d.ts +1 -0
  390. package/lib/modules/tld-common/services/icon-service/icons.d.ts +3 -0
  391. package/lib/modules/tld-common/services/index.d.ts +4 -0
  392. package/lib/modules/tld-common/services/scroll/tld-scroll.service.d.ts +12 -0
  393. package/lib/modules/tld-common/services/tld-alert.service.d.ts +33 -0
  394. package/lib/modules/tld-common/services/tld-highlight.service.d.ts +14 -0
  395. package/lib/modules/tld-common/services/tld-translate-config.service.d.ts +39 -0
  396. package/lib/modules/tld-common/services/wtw-link-params.service.d.ts +13 -0
  397. package/lib/modules/tld-common/tld-common.module.d.ts +23 -0
  398. package/lib/modules/tld-document/download-button/download-button.component.d.ts +30 -0
  399. package/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.d.ts +21 -0
  400. package/lib/modules/tld-document/index.d.ts +7 -0
  401. package/lib/modules/tld-document/models/file-conversion-types.model.d.ts +4 -0
  402. package/lib/modules/tld-document/models/index.d.ts +5 -0
  403. package/lib/modules/tld-document/models/start-translation.model.d.ts +16 -0
  404. package/lib/modules/tld-document/models/translate-file.model.d.ts +33 -0
  405. package/lib/modules/tld-document/models/translation-statuss.model.d.ts +12 -0
  406. package/lib/modules/tld-document/models/upload-response.model.d.ts +8 -0
  407. package/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.d.ts +21 -0
  408. package/lib/modules/tld-document/services/api/file-api.service.d.ts +26 -0
  409. package/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.d.ts +6 -0
  410. package/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.d.ts +8 -0
  411. package/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.d.ts +11 -0
  412. package/lib/modules/tld-document/services/api-v2/file-api-v2.service.d.ts +22 -0
  413. package/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.d.ts +4 -0
  414. package/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.d.ts +20 -0
  415. package/lib/modules/tld-document/services/index.d.ts +2 -0
  416. package/lib/modules/tld-document/services/tld-translate-file.service.d.ts +60 -0
  417. package/lib/modules/tld-document/tld-document.module.d.ts +19 -0
  418. package/lib/modules/tld-document/tld-file-translate-base.component.d.ts +29 -0
  419. package/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.d.ts +40 -0
  420. package/lib/modules/tld-term/index.d.ts +6 -0
  421. package/lib/modules/tld-term/models/converted-collection-tooltip-key.model.d.ts +5 -0
  422. package/lib/modules/tld-term/models/converted-collection-type.model.d.ts +7 -0
  423. package/lib/modules/tld-term/models/index.d.ts +6 -0
  424. package/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.d.ts +15 -0
  425. package/lib/modules/tld-term/models/mt-collection-status.model.d.ts +5 -0
  426. package/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.d.ts +11 -0
  427. package/lib/modules/tld-term/models/term-api/tld-term-collection.model.d.ts +46 -0
  428. package/lib/modules/tld-term/models/tld-converted-collection.model.d.ts +43 -0
  429. package/lib/modules/tld-term/services/index.d.ts +3 -0
  430. package/lib/modules/tld-term/services/mt-collections-api.service.d.ts +13 -0
  431. package/lib/modules/tld-term/services/term-api.service.d.ts +15 -0
  432. package/lib/modules/tld-term/services/tld-term-collections.service.d.ts +57 -0
  433. package/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.d.ts +9 -0
  434. package/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.d.ts +39 -0
  435. package/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.d.ts +20 -0
  436. package/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.d.ts +13 -0
  437. package/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.d.ts +17 -0
  438. package/lib/modules/tld-term/tld-term.module.d.ts +22 -0
  439. package/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.d.ts +27 -0
  440. package/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.d.ts +20 -0
  441. package/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.d.ts +40 -0
  442. package/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.d.ts +24 -0
  443. package/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.d.ts +36 -0
  444. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.d.ts +11 -0
  445. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.d.ts +33 -0
  446. package/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.d.ts +24 -0
  447. package/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.d.ts +104 -0
  448. package/lib/modules/tld-text/index.d.ts +8 -0
  449. package/lib/modules/tld-text/models/check-grammar-response-v2.model.d.ts +4 -0
  450. package/lib/modules/tld-text/models/dictionary.model.d.ts +28 -0
  451. package/lib/modules/tld-text/models/get-sentence-v1-response.model.d.ts +5 -0
  452. package/lib/modules/tld-text/models/grammar-check-base.model.d.ts +6 -0
  453. package/lib/modules/tld-text/models/grammar-check-meta.model.d.ts +5 -0
  454. package/lib/modules/tld-text/models/grammar-check-replacement.model.d.ts +5 -0
  455. package/lib/modules/tld-text/models/grammar-correction-v2.model.d.ts +9 -0
  456. package/lib/modules/tld-text/models/highlight-params.model.d.ts +10 -0
  457. package/lib/modules/tld-text/models/highlight-tree-type.model.d.ts +10 -0
  458. package/lib/modules/tld-text/models/highlight-tree.model.d.ts +22 -0
  459. package/lib/modules/tld-text/models/highlight.model.d.ts +10 -0
  460. package/lib/modules/tld-text/models/index.d.ts +10 -0
  461. package/lib/modules/tld-text/models/retranslate-params.model.d.ts +4 -0
  462. package/lib/modules/tld-text/models/source-text-changed.model.d.ts +6 -0
  463. package/lib/modules/tld-text/models/translate-paragraph-params.model.d.ts +6 -0
  464. package/lib/modules/tld-text/models/translate-paragraph-response-v1.model.d.ts +15 -0
  465. package/lib/modules/tld-text/models/translate-paragraph-response-v2.model.d.ts +9 -0
  466. package/lib/modules/tld-text/models/translate-paragraph-response.model.d.ts +7 -0
  467. package/lib/modules/tld-text/models/untranslated-paragraph.model.d.ts +4 -0
  468. package/lib/modules/tld-text/services/api/tld-translate-text-api.service.d.ts +24 -0
  469. package/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.d.ts +17 -0
  470. package/lib/modules/tld-text/services/index.d.ts +1 -0
  471. package/lib/modules/tld-text/services/tld-translate-text.service.d.ts +104 -0
  472. package/lib/modules/tld-text/tld-text.module.d.ts +27 -0
  473. package/lib/modules/tld-text/utils/index.d.ts +1 -0
  474. package/lib/modules/tld-text/utils/models/existing-paragraph-info.model.d.ts +5 -0
  475. package/lib/modules/tld-text/utils/models/index.d.ts +1 -0
  476. package/lib/modules/tld-text/utils/tld-translate-text.utils.d.ts +9 -0
  477. package/lib/modules/tld-tooltip/index.d.ts +4 -0
  478. package/lib/modules/tld-tooltip/models/active-data.model.d.ts +24 -0
  479. package/lib/modules/tld-tooltip/models/domain.model.d.ts +8 -0
  480. package/lib/modules/tld-tooltip/models/index.d.ts +4 -0
  481. package/lib/modules/tld-tooltip/models/switcher-options.model.d.ts +14 -0
  482. package/lib/modules/tld-tooltip/models/system-metadata-keys.model.d.ts +5 -0
  483. package/lib/modules/tld-tooltip/models/vendor.model.d.ts +4 -0
  484. package/lib/modules/tld-tooltip/services/api/models/description.model.d.ts +4 -0
  485. package/lib/modules/tld-tooltip/services/api/models/language.model.d.ts +5 -0
  486. package/lib/modules/tld-tooltip/services/api/models/metadata.model.d.ts +4 -0
  487. package/lib/modules/tld-tooltip/services/api/models/name.model.d.ts +4 -0
  488. package/lib/modules/tld-tooltip/services/api/models/system.model.d.ts +14 -0
  489. package/lib/modules/tld-tooltip/services/api/tld-system-api.service.d.ts +15 -0
  490. package/lib/modules/tld-tooltip/services/api-v2/models/error.model.d.ts +4 -0
  491. package/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.d.ts +6 -0
  492. package/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.d.ts +7 -0
  493. package/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.d.ts +15 -0
  494. package/lib/modules/tld-tooltip/services/index.d.ts +1 -0
  495. package/lib/modules/tld-tooltip/services/tld-system.service.d.ts +57 -0
  496. package/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.d.ts +33 -0
  497. package/lib/modules/tld-tooltip/tld-tooltip.module.d.ts +25 -0
  498. package/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.d.ts +64 -0
  499. package/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.d.ts +44 -0
  500. package/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.d.ts +65 -0
  501. package/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.d.ts +17 -0
  502. package/lib/modules/tld-tooltip/translation-system-picker/index.d.ts +7 -0
  503. package/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.d.ts +14 -0
  504. package/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.d.ts +11 -0
  505. package/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.d.ts +8 -0
  506. package/lib/modules/tld-tooltip/translation-system-picker/models/index.d.ts +5 -0
  507. package/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.d.ts +5 -0
  508. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.d.ts +4 -0
  509. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.d.ts +4 -0
  510. package/lib/modules/tld-tooltip/translation-system-picker/services/index.d.ts +1 -0
  511. package/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.d.ts +24 -0
  512. package/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.d.ts +13 -0
  513. package/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.d.ts +10 -0
  514. package/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.d.ts +34 -0
  515. package/lib/modules/tld-translate-file/tld-translate-file.component.d.ts +37 -0
  516. package/lib/modules/tld-web/index.d.ts +2 -0
  517. package/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.d.ts +85 -0
  518. package/lib/modules/tld-web/tld-translate-web.service.d.ts +7 -0
  519. package/lib/modules/tld-web/tld-web.module.d.ts +14 -0
  520. package/lib/tld-translate-body/tld-translate-body.component.d.ts +23 -0
  521. package/lib/tld-translate.component.d.ts +65 -0
  522. package/lib/tld-translate.module.d.ts +23 -0
  523. package/package.json +40 -0
  524. package/public-api.d.ts +28 -0
  525. package/src/assets/webcomponent/styles.css +1 -0
  526. package/src/assets/webcomponent/tld-translate.js +3 -0
  527. package/src/assets/webtranslate/page-translate-widget.js +4934 -0
  528. package/src/assets/webtranslate/remove.png +0 -0
  529. package/src/assets/webtranslate/tilde_logo.png +0 -0
  530. package/src/assets/webtranslate/translate-website.js +393 -0
  531. package/src/assets/webtranslate/widget.css +139 -0
  532. package/src/styles/colors.scss +15 -0
  533. package/src/styles/fonts.scss +3 -0
  534. package/src/styles/mixin/border-default.scss +10 -0
  535. package/src/styles/mixin/tld-translate-accent-colors.scss +46 -0
  536. package/src/styles/mixin/tld-translate-colors.scss +7 -0
  537. package/src/styles/mixin/tld-translate-placeholders.scss +5 -0
  538. package/src/styles/mixin/tld-translate-primary-colors.scss +5 -0
  539. package/src/styles/styles.scss +377 -0
  540. package/src/styles/translator-borders.scss +28 -0
  541. package/tilde-nlp-ngx-translate-1.0.0.tgz +0 -0
@@ -0,0 +1,188 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../tld-common/services";
6
+ import * as i2 from "../services/tld-system.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/flex-layout/flex";
9
+ import * as i5 from "@angular/flex-layout/extended";
10
+ import * as i6 from "@angular/material/button";
11
+ import * as i7 from "@angular/material/tooltip";
12
+ import * as i8 from "../../tld-common/components/tld-lang-list/tld-lang-list.component";
13
+ import * as i9 from "../../tld-common/components/tld-loader/tld-loader.component";
14
+ import * as i10 from "../../tld-common/components/translate-button/translate-button.component";
15
+ import * as i11 from "../../tld-common/components/tld-list-menu/tld-list-menu.component";
16
+ import * as i12 from "../../tld-term/tld-term-menu/tld-term-menu.component";
17
+ import * as i13 from "../tld-domain-list/tld-domain-list.component";
18
+ import * as i14 from "@ngx-translate/core";
19
+ export class TldTranslateSwitcherComponent {
20
+ constructor(config, tldSystem, elRef) {
21
+ this.config = config;
22
+ this.tldSystem = tldSystem;
23
+ this.elRef = elRef;
24
+ this.buttonDisabled = false;
25
+ this.showTranslateButton = true;
26
+ this.hideOnSmallScreens = true;
27
+ this.hideLangMenuLabels = false;
28
+ this.onDomainChange = new EventEmitter();
29
+ this.onActionClick = new EventEmitter();
30
+ this.onSourceLanguageChange = new EventEmitter();
31
+ this.onTargetLanguageChange = new EventEmitter();
32
+ this.onLanguageSwap = new EventEmitter();
33
+ this.onVendorChange = new EventEmitter();
34
+ this.destroy$ = new Subject();
35
+ this.srcLangTestId = "src-lang-menu";
36
+ this.trgLangTestId = "trg-lang-menu";
37
+ }
38
+ onResize() {
39
+ const pxPerLanguage = 110;
40
+ const componentWidth = this.getElementRefWidth(this.wrapper);
41
+ const parentWidth = this.elRef?.nativeElement?.parentElement.offsetWidth || 0;
42
+ const wrapperWidth = this.useParentWidth ? parentWidth : componentWidth;
43
+ const fromWidth = this.getElementRefWidth(this.fromLabel);
44
+ const sourceAsideWidth = this.getElementRefWidth(this.sourceAside);
45
+ const toWidth = this.getElementRefWidth(this.toLabel);
46
+ const domainsWidth = this.getElementRefWidth(this.domainWrapper);
47
+ const vendorsWidth = this.getElementRefWidth(this.vendorWrapper);
48
+ const collectionsWidth = this.getElementRefWidth(this.collectionWrapper);
49
+ // additional px to distract because swap lang button and dropdown icons.
50
+ const extra = 100;
51
+ const freeWidth = wrapperWidth - fromWidth - sourceAsideWidth - toWidth - domainsWidth - vendorsWidth - collectionsWidth - extra;
52
+ const languageCount = Math.floor(freeWidth / 2 / pxPerLanguage);
53
+ this.languageCountByScreenSize = languageCount > 0 ? languageCount : 1;
54
+ }
55
+ get visibleLanguageCount() {
56
+ if (this.languageCountByScreenSize && this.languageCountByScreenSize < this.maxDisplayedLanguages) {
57
+ return this.languageCountByScreenSize;
58
+ }
59
+ return this.maxDisplayedLanguages;
60
+ }
61
+ get collectionsVisible() {
62
+ return this.isCollectionsActivated
63
+ && this.isTerminologySupported;
64
+ }
65
+ get showVendors() {
66
+ return this.config?.coreConfig.showVendors && this.settings.vendors?.length > 0;
67
+ }
68
+ get showDomains() {
69
+ return this.config?.coreConfig.showDomains &&
70
+ !this.showDomainsWithLanguageName &&
71
+ this.settings?.domains?.domains?.length > 1 &&
72
+ this.settings?.source;
73
+ }
74
+ get isSwapLanguagesDisabled() {
75
+ return this.disabled || !this.settings.swapActive;
76
+ }
77
+ get domainSide() { return this.config.coreConfig.domainSide; }
78
+ get swapIconPosition() { return this.config.coreConfig.swapIconPosition; }
79
+ ngOnInit() {
80
+ this.subscribeToActiveData();
81
+ }
82
+ ngAfterViewInit() {
83
+ this.onResize();
84
+ }
85
+ ngOnDestroy() {
86
+ this.destroy$.next(null);
87
+ this.destroy$.complete();
88
+ }
89
+ actionClick() {
90
+ this.onActionClick.emit();
91
+ }
92
+ domainChange(systemId) {
93
+ this.onDomainChange.emit(systemId);
94
+ }
95
+ sourceLangChange(language) {
96
+ this.onSourceLanguageChange.emit(language);
97
+ }
98
+ swapSourceAndTarget() {
99
+ this.onLanguageSwap.emit();
100
+ }
101
+ targetLangChange(language) {
102
+ this.onTargetLanguageChange.emit(language);
103
+ }
104
+ vendorChange(systemId) {
105
+ this.onVendorChange.emit(systemId);
106
+ }
107
+ getElementRefWidth(element) {
108
+ return element?.nativeElement.offsetWidth || 0;
109
+ }
110
+ subscribeToActiveData() {
111
+ this.tldSystem.getActiveData()
112
+ .pipe(takeUntil(this.destroy$))
113
+ .subscribe((active) => {
114
+ if (!active) {
115
+ this.isTerminologySupported = false;
116
+ return;
117
+ }
118
+ this.isTerminologySupported = this.tldSystem.isTerminologySupported(active.system);
119
+ });
120
+ }
121
+ }
122
+ TldTranslateSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTranslateSwitcherComponent, deps: [{ token: i1.TldTranslateConfigService }, { token: i2.TldSystemService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
123
+ TldTranslateSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TldTranslateSwitcherComponent, selector: "tld-translate-switcher", inputs: { buttonDisabled: "buttonDisabled", showTranslateButton: "showTranslateButton", hideOnSmallScreens: "hideOnSmallScreens", disabled: "disabled", hideLangMenuLabels: "hideLangMenuLabels", maxDisplayedLanguages: "maxDisplayedLanguages", collections: "collections", showDomainsWithLanguageName: "showDomainsWithLanguageName", isCollectionsActivated: "isCollectionsActivated", useParentWidth: "useParentWidth", loader: "loader", settings: "settings" }, outputs: { onDomainChange: "onDomainChange", onActionClick: "onActionClick", onSourceLanguageChange: "onSourceLanguageChange", onTargetLanguageChange: "onTargetLanguageChange", onLanguageSwap: "onLanguageSwap", onVendorChange: "onVendorChange" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "fromLabel", first: true, predicate: ["fromLabel"], descendants: true }, { propertyName: "sourceAside", first: true, predicate: ["sourceAside"], descendants: true }, { propertyName: "toLabel", first: true, predicate: ["toLabel"], descendants: true }, { propertyName: "domainWrapper", first: true, predicate: ["domainWrapper"], descendants: true }, { propertyName: "vendorWrapper", first: true, predicate: ["vendorWrapper"], descendants: true }, { propertyName: "collectionWrapper", first: true, predicate: ["collectionWrapper"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"tld-translate-switcher-container\" #wrapper\r\n [ngClass.lt-md]=\"'tld-translate-switcher-container-tablet'\"\r\n [ngClass.lt-sm]=\"'tld-translate-switcher-container-mobile'\"\r\n [class.tld-switcher-with-collections]='collectionsVisible'>\r\n\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #fromLabel>{{'TLD_TRANSLATE.FROM' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list id=\"tld-source-language-list\" [disabled]=\"disabled\" [testId]=\"srcLangTestId\"\r\n [languages]=\"settings.sourceLanguageList\" (onLanguageChange)=\"sourceLangChange($event)\"\r\n [selected]=\"settings.source\" [maxDisplayedLanguages]=\"visibleLanguageCount\"></tld-lang-list>\r\n <ng-container *ngIf=\"domainSide==='src'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div #sourceAside *ngIf=\"swapIconPosition==='src'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"swapIconPosition==='center'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-sm=\"end center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #toLabel>{{'TLD_TRANSLATE.TO' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list [disabled]=\"disabled\" id=\"tld-target-language-list\" [languages]=\"settings.targetLanguageList\"\r\n (onLanguageChange)=\"targetLangChange($event)\" [selected]=\"settings.target\"\r\n [maxDisplayedLanguages]=\"visibleLanguageCount\" [testId]=\"trgLangTestId\" (onDomainChange)=\"domainChange($event)\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\">\r\n <ng-container *ngIf=\"domainSide==='trg'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"tld-translate-vendor-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showVendors\" #vendorWrapper>\r\n <tld-list-menu (selectionChange)=\"domainChange($event)\" [list]=\"settings.vendors\" [titleKey]=\"'title'\"\r\n [valueKey]=\"'systemId'\" testId=\"tld-vendor-list\" [disabled]=\"disabled\" [showContent]=\"false\"\r\n [ariaLabel]=\"'TLD_TRANSLATE.VENDORS_ARIA_LABEL' | translate\" [selectedValue]=\"settings.systemId\">\r\n </tld-list-menu>\r\n </div>\r\n </tld-lang-list>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap.gt-xs=\"16px\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper>\r\n <tld-term-menu></tld-term-menu>\r\n </div>\r\n <tld-loader *ngIf=\"loader\" fxHide.lt-sm></tld-loader>\r\n <tld-translate-button [enablePulseAnimation]=\"true\" *ngIf=\"showTranslateButton && !loader\" class=\"switcher-translate-button\"\r\n [fxHide.lt-sm]=\"hideOnSmallScreens\" [disabled]=\"buttonDisabled\"></tld-translate-button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #swapButtonTemplate>\r\n <button [disabled]=\"isSwapLanguagesDisabled\" class=\"swap-languages-button\" mat-icon-button\r\n (click)=\"swapSourceAndTarget()\" aria-label=\"swap languages\" color=\"primary\"\r\n 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</ng-template>\r\n\r\n<ng-template #domainTemplate>\r\n <div class=\"tld-translate-domain-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showDomains\" #domainWrapper>\r\n <tld-domain-list fxLayoutAlign=\"center center\" (selectionChange)=\"domainChange($event)\"\r\n [list]=\"settings.domains.domains\" [selected]=\"settings.domains.active\" [selected]=\"settings.domains.active\"\r\n [disabled]=\"disabled\"></tld-domain-list>\r\n </div>\r\n</ng-template>\r\n", styles: [".tld-translate-switcher-container:not(.tld-translate-switcher-container-tablet,.tld-translate-switcher-container-mobile) tld-lang-list{margin:0 10px}.tld-translate-switcher-container-mobile :host ::ng-deep button{padding:0!important}.swap-icon{color:#5a6672}.switcher-translate-button{min-width:100px}mat-select{min-width:75px;max-width:125px}.swap-languages-button[disabled]{cursor:not-allowed}.tld-translate-domain-selection,tld-translate-vendor-selection{height:100%}tld-loader{margin:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.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: i4.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: i4.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.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.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.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.TldLangListComponent, selector: "tld-lang-list", inputs: ["disabled", "pxPerLanguage", "languages", "testId", "selected", "maxDisplayedLanguages", "showDomainsWithLanguageName"], outputs: ["onLanguageChange", "onDomainChange"] }, { kind: "component", type: i9.TldLoaderComponent, selector: "tld-loader" }, { kind: "component", type: i10.TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { kind: "component", type: i11.TldListMenuComponent, selector: "tld-list-menu", inputs: ["titleKey", "list", "showContent", "selectedValue", "disabled", "ariaLabel", "valueKey", "testId"], outputs: ["selectionChange"] }, { kind: "component", type: i12.TldTermMenuComponent, selector: "tld-term-menu" }, { kind: "component", type: i13.TldDomainListComponent, selector: "tld-domain-list", inputs: ["list", "selected", "disabled"], outputs: ["selectionChange"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTranslateSwitcherComponent, decorators: [{
125
+ type: Component,
126
+ args: [{ selector: 'tld-translate-switcher', template: "<div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"tld-translate-switcher-container\" #wrapper\r\n [ngClass.lt-md]=\"'tld-translate-switcher-container-tablet'\"\r\n [ngClass.lt-sm]=\"'tld-translate-switcher-container-mobile'\"\r\n [class.tld-switcher-with-collections]='collectionsVisible'>\r\n\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #fromLabel>{{'TLD_TRANSLATE.FROM' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list id=\"tld-source-language-list\" [disabled]=\"disabled\" [testId]=\"srcLangTestId\"\r\n [languages]=\"settings.sourceLanguageList\" (onLanguageChange)=\"sourceLangChange($event)\"\r\n [selected]=\"settings.source\" [maxDisplayedLanguages]=\"visibleLanguageCount\"></tld-lang-list>\r\n <ng-container *ngIf=\"domainSide==='src'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div #sourceAside *ngIf=\"swapIconPosition==='src'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"swapIconPosition==='center'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-sm=\"end center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #toLabel>{{'TLD_TRANSLATE.TO' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list [disabled]=\"disabled\" id=\"tld-target-language-list\" [languages]=\"settings.targetLanguageList\"\r\n (onLanguageChange)=\"targetLangChange($event)\" [selected]=\"settings.target\"\r\n [maxDisplayedLanguages]=\"visibleLanguageCount\" [testId]=\"trgLangTestId\" (onDomainChange)=\"domainChange($event)\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\">\r\n <ng-container *ngIf=\"domainSide==='trg'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"tld-translate-vendor-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showVendors\" #vendorWrapper>\r\n <tld-list-menu (selectionChange)=\"domainChange($event)\" [list]=\"settings.vendors\" [titleKey]=\"'title'\"\r\n [valueKey]=\"'systemId'\" testId=\"tld-vendor-list\" [disabled]=\"disabled\" [showContent]=\"false\"\r\n [ariaLabel]=\"'TLD_TRANSLATE.VENDORS_ARIA_LABEL' | translate\" [selectedValue]=\"settings.systemId\">\r\n </tld-list-menu>\r\n </div>\r\n </tld-lang-list>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap.gt-xs=\"16px\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper>\r\n <tld-term-menu></tld-term-menu>\r\n </div>\r\n <tld-loader *ngIf=\"loader\" fxHide.lt-sm></tld-loader>\r\n <tld-translate-button [enablePulseAnimation]=\"true\" *ngIf=\"showTranslateButton && !loader\" class=\"switcher-translate-button\"\r\n [fxHide.lt-sm]=\"hideOnSmallScreens\" [disabled]=\"buttonDisabled\"></tld-translate-button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #swapButtonTemplate>\r\n <button [disabled]=\"isSwapLanguagesDisabled\" class=\"swap-languages-button\" mat-icon-button\r\n (click)=\"swapSourceAndTarget()\" aria-label=\"swap languages\" color=\"primary\"\r\n 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</ng-template>\r\n\r\n<ng-template #domainTemplate>\r\n <div class=\"tld-translate-domain-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showDomains\" #domainWrapper>\r\n <tld-domain-list fxLayoutAlign=\"center center\" (selectionChange)=\"domainChange($event)\"\r\n [list]=\"settings.domains.domains\" [selected]=\"settings.domains.active\" [selected]=\"settings.domains.active\"\r\n [disabled]=\"disabled\"></tld-domain-list>\r\n </div>\r\n</ng-template>\r\n", styles: [".tld-translate-switcher-container:not(.tld-translate-switcher-container-tablet,.tld-translate-switcher-container-mobile) tld-lang-list{margin:0 10px}.tld-translate-switcher-container-mobile :host ::ng-deep button{padding:0!important}.swap-icon{color:#5a6672}.switcher-translate-button{min-width:100px}mat-select{min-width:75px;max-width:125px}.swap-languages-button[disabled]{cursor:not-allowed}.tld-translate-domain-selection,tld-translate-vendor-selection{height:100%}tld-loader{margin:auto}\n"] }]
127
+ }], ctorParameters: function () { return [{ type: i1.TldTranslateConfigService }, { type: i2.TldSystemService }, { type: i0.ElementRef }]; }, propDecorators: { wrapper: [{
128
+ type: ViewChild,
129
+ args: ["wrapper"]
130
+ }], fromLabel: [{
131
+ type: ViewChild,
132
+ args: ["fromLabel"]
133
+ }], sourceAside: [{
134
+ type: ViewChild,
135
+ args: ["sourceAside"]
136
+ }], toLabel: [{
137
+ type: ViewChild,
138
+ args: ["toLabel"]
139
+ }], domainWrapper: [{
140
+ type: ViewChild,
141
+ args: ["domainWrapper"]
142
+ }], vendorWrapper: [{
143
+ type: ViewChild,
144
+ args: ["vendorWrapper"]
145
+ }], collectionWrapper: [{
146
+ type: ViewChild,
147
+ args: ["collectionWrapper"]
148
+ }], onResize: [{
149
+ type: HostListener,
150
+ args: ['window:resize']
151
+ }], buttonDisabled: [{
152
+ type: Input
153
+ }], showTranslateButton: [{
154
+ type: Input
155
+ }], hideOnSmallScreens: [{
156
+ type: Input
157
+ }], disabled: [{
158
+ type: Input
159
+ }], hideLangMenuLabels: [{
160
+ type: Input
161
+ }], maxDisplayedLanguages: [{
162
+ type: Input
163
+ }], collections: [{
164
+ type: Input
165
+ }], showDomainsWithLanguageName: [{
166
+ type: Input
167
+ }], isCollectionsActivated: [{
168
+ type: Input
169
+ }], useParentWidth: [{
170
+ type: Input
171
+ }], loader: [{
172
+ type: Input
173
+ }], settings: [{
174
+ type: Input
175
+ }], onDomainChange: [{
176
+ type: Output
177
+ }], onActionClick: [{
178
+ type: Output
179
+ }], onSourceLanguageChange: [{
180
+ type: Output
181
+ }], onTargetLanguageChange: [{
182
+ type: Output
183
+ }], onLanguageSwap: [{
184
+ type: Output
185
+ }], onVendorChange: [{
186
+ type: Output
187
+ }] } });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdG9vbHRpcC90bGQtdHJhbnNsYXRlLXN3aXRjaGVyL3RsZC10cmFuc2xhdGUtc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRvb2x0aXAvdGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci90bGQtdHJhbnNsYXRlLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw2QkFBNkI7SUEyRnhDLFlBQ21CLE1BQWlDLEVBQ2pDLFNBQTJCLEVBQ3BDLEtBQWlCO1FBRlIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDcEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQWpFbEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFZMUIsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3RELDJCQUFzQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9ELDJCQUFzQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9ELG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWtDbkQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFakMsa0JBQWEsR0FBRyxlQUFlLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxlQUFlLENBQUM7SUFRekMsQ0FBQztJQXBGRCxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDOUUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDeEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekUseUVBQXlFO1FBQ3pFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNsQixNQUFNLFNBQVMsR0FBRyxZQUFZLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixHQUFHLE9BQU8sR0FBRyxZQUFZLEdBQUcsWUFBWSxHQUFHLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNqSSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUEyQkQsSUFBSSxvQkFBb0I7UUFDdEIsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNqRyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxzQkFBc0I7ZUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFBO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVc7WUFDeEMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBZ0IxRSxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUFtQjtRQUM1QyxPQUFPLE9BQU8sRUFBRSxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO2FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztnQkFDcEMsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEhBdEpVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLCs4Q0NaMUMsMnFJQXFFQTsyRkR6RGEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3Qjt3S0FNWixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ1EsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNFLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDTSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUc5QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZTtnQkFtQnBCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBJU3dpdGNoZXJUcmFuc2xhdGlvbk9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvc3dpdGNoZXItb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFRsZFN5c3RlbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90bGQtc3lzdGVtLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlLXN3aXRjaGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTd2l0Y2hlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChcIndyYXBwZXJcIikgd3JhcHBlcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZnJvbUxhYmVsXCIpIGZyb21MYWJlbDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwic291cmNlQXNpZGVcIikgc291cmNlQXNpZGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcInRvTGFiZWxcIikgdG9MYWJlbDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZG9tYWluV3JhcHBlclwiKSBkb21haW5XcmFwcGVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJ2ZW5kb3JXcmFwcGVyXCIpIHZlbmRvcldyYXBwZXI6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImNvbGxlY3Rpb25XcmFwcGVyXCIpIGNvbGxlY3Rpb25XcmFwcGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIGNvbnN0IHB4UGVyTGFuZ3VhZ2UgPSAxMTA7XHJcbiAgICBjb25zdCBjb21wb25lbnRXaWR0aCA9IHRoaXMuZ2V0RWxlbWVudFJlZldpZHRoKHRoaXMud3JhcHBlcik7XHJcbiAgICBjb25zdCBwYXJlbnRXaWR0aCA9IHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMDtcclxuICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMudXNlUGFyZW50V2lkdGggPyBwYXJlbnRXaWR0aCA6IGNvbXBvbmVudFdpZHRoO1xyXG4gICAgY29uc3QgZnJvbVdpZHRoID0gdGhpcy5nZXRFbGVtZW50UmVmV2lkdGgodGhpcy5mcm9tTGFiZWwpO1xyXG4gICAgY29uc3Qgc291cmNlQXNpZGVXaWR0aCA9IHRoaXMuZ2V0RWxlbWVudFJlZldpZHRoKHRoaXMuc291cmNlQXNpZGUpO1xyXG4gICAgY29uc3QgdG9XaWR0aCA9IHRoaXMuZ2V0RWxlbWVudFJlZldpZHRoKHRoaXMudG9MYWJlbCk7XHJcbiAgICBjb25zdCBkb21haW5zV2lkdGggPSB0aGlzLmdldEVsZW1lbnRSZWZXaWR0aCh0aGlzLmRvbWFpbldyYXBwZXIpO1xyXG4gICAgY29uc3QgdmVuZG9yc1dpZHRoID0gdGhpcy5nZXRFbGVtZW50UmVmV2lkdGgodGhpcy52ZW5kb3JXcmFwcGVyKTtcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25zV2lkdGggPSB0aGlzLmdldEVsZW1lbnRSZWZXaWR0aCh0aGlzLmNvbGxlY3Rpb25XcmFwcGVyKTtcclxuICAgIC8vIGFkZGl0aW9uYWwgcHggdG8gZGlzdHJhY3QgYmVjYXVzZSBzd2FwIGxhbmcgYnV0dG9uIGFuZCBkcm9wZG93biBpY29ucy5cclxuICAgIGNvbnN0IGV4dHJhID0gMTAwO1xyXG4gICAgY29uc3QgZnJlZVdpZHRoID0gd3JhcHBlcldpZHRoIC0gZnJvbVdpZHRoIC0gc291cmNlQXNpZGVXaWR0aCAtIHRvV2lkdGggLSBkb21haW5zV2lkdGggLSB2ZW5kb3JzV2lkdGggLSBjb2xsZWN0aW9uc1dpZHRoIC0gZXh0cmE7XHJcbiAgICBjb25zdCBsYW5ndWFnZUNvdW50ID0gTWF0aC5mbG9vcihmcmVlV2lkdGggLyAyIC8gcHhQZXJMYW5ndWFnZSk7XHJcbiAgICB0aGlzLmxhbmd1YWdlQ291bnRCeVNjcmVlblNpemUgPSBsYW5ndWFnZUNvdW50ID4gMCA/IGxhbmd1YWdlQ291bnQgOiAxO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93VHJhbnNsYXRlQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRlT25TbWFsbFNjcmVlbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhpZGVMYW5nTWVudUxhYmVscyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heERpc3BsYXllZExhbmd1YWdlczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbGxlY3Rpb25zOiBhbnlbXTtcclxuICBASW5wdXQoKSBzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNDb2xsZWN0aW9uc0FjdGl2YXRlZDogYm9vbGVhbjtcclxuICAvKiogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgY29tcG9uZW50IHBhcmVudCBpcyBjaGVja2VkIGZvciBkaXNwbGF5ZWQgbGFuZ3VhZ2UgY291bnQuICovXHJcbiAgQElucHV0KCkgdXNlUGFyZW50V2lkdGg6IGJvb2xlYW47XHJcbiAgLyoqIFNob3cgbG9hZGVyIGluc3RlYWQgb2YgdHJhbnNsYXRlIGJ1dHRvbiAqL1xyXG4gIEBJbnB1dCgpIGxvYWRlcjogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgc2V0dGluZ3M6IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucztcclxuXHJcbiAgQE91dHB1dCgpIG9uRG9tYWluQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU291cmNlTGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblRhcmdldExhbmd1YWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25MYW5ndWFnZVN3YXA6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblZlbmRvckNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGxhbmd1YWdlQ291bnRCeVNjcmVlblNpemU6IG51bWJlcjtcclxuXHJcbiAgZ2V0IHZpc2libGVMYW5ndWFnZUNvdW50KCkge1xyXG4gICAgaWYgKHRoaXMubGFuZ3VhZ2VDb3VudEJ5U2NyZWVuU2l6ZSAmJiB0aGlzLmxhbmd1YWdlQ291bnRCeVNjcmVlblNpemUgPCB0aGlzLm1heERpc3BsYXllZExhbmd1YWdlcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZUNvdW50QnlTY3JlZW5TaXplO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWF4RGlzcGxheWVkTGFuZ3VhZ2VzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbGxlY3Rpb25zVmlzaWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ29sbGVjdGlvbnNBY3RpdmF0ZWRcclxuICAgICAgJiYgdGhpcy5pc1Rlcm1pbm9sb2d5U3VwcG9ydGVkXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd1ZlbmRvcnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmNvcmVDb25maWcuc2hvd1ZlbmRvcnMgJiYgdGhpcy5zZXR0aW5ncy52ZW5kb3JzPy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dEb21haW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5jb3JlQ29uZmlnLnNob3dEb21haW5zICYmXHJcbiAgICAgICF0aGlzLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSAmJlxyXG4gICAgICB0aGlzLnNldHRpbmdzPy5kb21haW5zPy5kb21haW5zPy5sZW5ndGggPiAxICYmXHJcbiAgICAgIHRoaXMuc2V0dGluZ3M/LnNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldCBpc1N3YXBMYW5ndWFnZXNEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNldHRpbmdzLnN3YXBBY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXQgZG9tYWluU2lkZSgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZG9tYWluU2lkZTsgfVxyXG4gIGdldCBzd2FwSWNvblBvc2l0aW9uKCkgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5zd2FwSWNvblBvc2l0aW9uOyB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICByZWFkb25seSBzcmNMYW5nVGVzdElkID0gXCJzcmMtbGFuZy1tZW51XCI7XHJcbiAgcmVhZG9ubHkgdHJnTGFuZ1Rlc3RJZCA9IFwidHJnLWxhbmctbWVudVwiO1xyXG5cclxuICBwcml2YXRlIGlzVGVybWlub2xvZ3lTdXBwb3J0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9BY3RpdmVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm9uUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dChudWxsKVxyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZG9tYWluQ2hhbmdlKHN5c3RlbUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub25Eb21haW5DaGFuZ2UuZW1pdChzeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBzb3VyY2VMYW5nQ2hhbmdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub25Tb3VyY2VMYW5ndWFnZUNoYW5nZS5lbWl0KGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIHN3YXBTb3VyY2VBbmRUYXJnZXQoKSB7XHJcbiAgICB0aGlzLm9uTGFuZ3VhZ2VTd2FwLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHRhcmdldExhbmdDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5vblRhcmdldExhbmd1YWdlQ2hhbmdlLmVtaXQobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgdmVuZG9yQ2hhbmdlKHN5c3RlbUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub25WZW5kb3JDaGFuZ2UuZW1pdChzeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVsZW1lbnRSZWZXaWR0aChlbGVtZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICByZXR1cm4gZWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0FjdGl2ZURhdGEoKXtcclxuICAgIHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZURhdGEoKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSgoYWN0aXZlKSA9PiB7XHJcbiAgICAgIGlmICghYWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy5pc1Rlcm1pbm9sb2d5U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzVGVybWlub2xvZ3lTdXBwb3J0ZWQgPSB0aGlzLnRsZFN5c3RlbS5pc1Rlcm1pbm9sb2d5U3VwcG9ydGVkKGFjdGl2ZS5zeXN0ZW0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwidGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci1jb250YWluZXJcIiAjd3JhcHBlclxyXG4gIFtuZ0NsYXNzLmx0LW1kXT1cIid0bGQtdHJhbnNsYXRlLXN3aXRjaGVyLWNvbnRhaW5lci10YWJsZXQnXCJcclxuICBbbmdDbGFzcy5sdC1zbV09XCIndGxkLXRyYW5zbGF0ZS1zd2l0Y2hlci1jb250YWluZXItbW9iaWxlJ1wiXHJcbiAgW2NsYXNzLnRsZC1zd2l0Y2hlci13aXRoLWNvbGxlY3Rpb25zXT0nY29sbGVjdGlvbnNWaXNpYmxlJz5cclxuXHJcbiAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICA8ZGl2IGZ4SGlkZS5sdC1tZCAqbmdJZj1cIiFoaWRlTGFuZ01lbnVMYWJlbHNcIiAjZnJvbUxhYmVsPnt7J1RMRF9UUkFOU0xBVEUuRlJPTScgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgIDx0bGQtbGFuZy1saXN0IGlkPVwidGxkLXNvdXJjZS1sYW5ndWFnZS1saXN0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3Rlc3RJZF09XCJzcmNMYW5nVGVzdElkXCJcclxuICAgICAgICBbbGFuZ3VhZ2VzXT1cInNldHRpbmdzLnNvdXJjZUxhbmd1YWdlTGlzdFwiIChvbkxhbmd1YWdlQ2hhbmdlKT1cInNvdXJjZUxhbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3NlbGVjdGVkXT1cInNldHRpbmdzLnNvdXJjZVwiIFttYXhEaXNwbGF5ZWRMYW5ndWFnZXNdPVwidmlzaWJsZUxhbmd1YWdlQ291bnRcIj48L3RsZC1sYW5nLWxpc3Q+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb21haW5TaWRlPT09J3NyYydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9tYWluVGVtcGxhdGU7XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICNzb3VyY2VBc2lkZSAqbmdJZj1cInN3YXBJY29uUG9zaXRpb249PT0nc3JjJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3dhcEJ1dHRvblRlbXBsYXRlO1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInN3YXBJY29uUG9zaXRpb249PT0nY2VudGVyJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN3YXBCdXR0b25UZW1wbGF0ZTtcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGZ4RmxleCBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeExheW91dEFsaWduLmx0LXNtPVwiZW5kIGNlbnRlclwiPlxyXG4gICAgPGRpdiBmeEhpZGUubHQtbWQgKm5nSWY9XCIhaGlkZUxhbmdNZW51TGFiZWxzXCIgI3RvTGFiZWw+e3snVExEX1RSQU5TTEFURS5UTycgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgIDx0bGQtbGFuZy1saXN0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGlkPVwidGxkLXRhcmdldC1sYW5ndWFnZS1saXN0XCIgW2xhbmd1YWdlc109XCJzZXR0aW5ncy50YXJnZXRMYW5ndWFnZUxpc3RcIlxyXG4gICAgICAgIChvbkxhbmd1YWdlQ2hhbmdlKT1cInRhcmdldExhbmdDaGFuZ2UoJGV2ZW50KVwiIFtzZWxlY3RlZF09XCJzZXR0aW5ncy50YXJnZXRcIlxyXG4gICAgICAgIFttYXhEaXNwbGF5ZWRMYW5ndWFnZXNdPVwidmlzaWJsZUxhbmd1YWdlQ291bnRcIiBbdGVzdElkXT1cInRyZ0xhbmdUZXN0SWRcIiAob25Eb21haW5DaGFuZ2UpPVwiZG9tYWluQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWVdPVwic2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvbWFpblNpZGU9PT0ndHJnJ1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRvbWFpblRlbXBsYXRlO1wiPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRsZC10cmFuc2xhdGUtdmVuZG9yLXNlbGVjdGlvblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJzaG93VmVuZG9yc1wiICN2ZW5kb3JXcmFwcGVyPlxyXG4gICAgICAgICAgPHRsZC1saXN0LW1lbnUgKHNlbGVjdGlvbkNoYW5nZSk9XCJkb21haW5DaGFuZ2UoJGV2ZW50KVwiIFtsaXN0XT1cInNldHRpbmdzLnZlbmRvcnNcIiBbdGl0bGVLZXldPVwiJ3RpdGxlJ1wiXHJcbiAgICAgICAgICAgIFt2YWx1ZUtleV09XCInc3lzdGVtSWQnXCIgdGVzdElkPVwidGxkLXZlbmRvci1saXN0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3Nob3dDb250ZW50XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInVExEX1RSQU5TTEFURS5WRU5ET1JTX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCIgW3NlbGVjdGVkVmFsdWVdPVwic2V0dGluZ3Muc3lzdGVtSWRcIj5cclxuICAgICAgICAgIDwvdGxkLWxpc3QtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90bGQtbGFuZy1saXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXAuZ3QteHM9XCIxNnB4XCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb2xsZWN0aW9uc1Zpc2libGVcIiAjY29sbGVjdGlvbldyYXBwZXI+XHJcbiAgICAgICAgPHRsZC10ZXJtLW1lbnU+PC90bGQtdGVybS1tZW51PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHRsZC1sb2FkZXIgKm5nSWY9XCJsb2FkZXJcIiBmeEhpZGUubHQtc20+PC90bGQtbG9hZGVyPlxyXG4gICAgICA8dGxkLXRyYW5zbGF0ZS1idXR0b24gW2VuYWJsZVB1bHNlQW5pbWF0aW9uXT1cInRydWVcIiAqbmdJZj1cInNob3dUcmFuc2xhdGVCdXR0b24gJiYgIWxvYWRlclwiIGNsYXNzPVwic3dpdGNoZXItdHJhbnNsYXRlLWJ1dHRvblwiXHJcbiAgICAgICAgW2Z4SGlkZS5sdC1zbV09XCJoaWRlT25TbWFsbFNjcmVlbnNcIiBbZGlzYWJsZWRdPVwiYnV0dG9uRGlzYWJsZWRcIj48L3RsZC10cmFuc2xhdGUtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNzd2FwQnV0dG9uVGVtcGxhdGU+XHJcbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNTd2FwTGFuZ3VhZ2VzRGlzYWJsZWRcIiBjbGFzcz1cInN3YXAtbGFuZ3VhZ2VzLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgKGNsaWNrKT1cInN3YXBTb3VyY2VBbmRUYXJnZXQoKVwiIGFyaWEtbGFiZWw9XCJzd2FwIGxhbmd1YWdlc1wiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBtYXRUb29sdGlwPVwie3snVE9PTFRJUFMuU1dBUF9MQU5HVUFHRVMnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuU1dBUF9MQU5HVUFHRVMnIHwgdHJhbnNsYXRlXCI+c3dhcF9ob3Jpejwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZG9tYWluVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cInRsZC10cmFuc2xhdGUtZG9tYWluLXNlbGVjdGlvblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgKm5nSWY9XCJzaG93RG9tYWluc1wiICNkb21haW5XcmFwcGVyPlxyXG4gICAgPHRsZC1kb21haW4tbGlzdCBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiZG9tYWluQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbbGlzdF09XCJzZXR0aW5ncy5kb21haW5zLmRvbWFpbnNcIiBbc2VsZWN0ZWRdPVwic2V0dGluZ3MuZG9tYWlucy5hY3RpdmVcIiBbc2VsZWN0ZWRdPVwic2V0dGluZ3MuZG9tYWlucy5hY3RpdmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L3RsZC1kb21haW4tbGlzdD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -0,0 +1,179 @@
1
+ import { Breakpoints } from '@angular/cdk/layout';
2
+ import { Component, HostListener, ViewChild } from '@angular/core';
3
+ import { TranslationSystemPickerDropdownBodyComponent } from '../dropdown-body/translation-system-picker-dropdown-body.component';
4
+ import { TranslationSystemPickerFilterComponent } from '../filter/translation-system-picker-filter.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/translation-system-picker.service";
7
+ import * as i2 from "@angular/cdk/layout";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/material/button";
10
+ import * as i5 from "@angular/material/icon";
11
+ import * as i6 from "@tilde-nlp/ngx-common";
12
+ import * as i7 from "../filter/translation-system-picker-filter.component";
13
+ import * as i8 from "../dropdown-body/translation-system-picker-dropdown-body.component";
14
+ import * as i9 from "@ngx-translate/core";
15
+ export class TranslationSystemPickerDropdownComponent {
16
+ constructor(systemPickerService, breakPointObserver) {
17
+ this.systemPickerService = systemPickerService;
18
+ this.breakPointObserver = breakPointObserver;
19
+ this.currentStep = 0;
20
+ this.mobileTargetConfig = [
21
+ {
22
+ hideLanguages: false,
23
+ hideSystems: true,
24
+ headerTitle: "SYSTEM_PICKER.TARGET",
25
+ },
26
+ {
27
+ hideLanguages: true,
28
+ hideSystems: false,
29
+ headerTitle: "SYSTEM_PICKER.SELECT_DOMAIN",
30
+ hideSystemTitle: true
31
+ }
32
+ ];
33
+ this.mobileSourceConfig = [
34
+ {
35
+ hideLanguages: false,
36
+ hideSystems: false,
37
+ headerTitle: "SYSTEM_PICKER.SOURCE",
38
+ showLanguageTitle: true
39
+ }
40
+ ];
41
+ this.desktopTargetConfig = [
42
+ {
43
+ hideLanguages: false,
44
+ hideSystems: false,
45
+ leaveOpenOnLanguageClick: true
46
+ }
47
+ ];
48
+ }
49
+ onKeydownHandler() {
50
+ this.close();
51
+ }
52
+ get selectedBodyConfig() {
53
+ return this.bodyConfigArr?.[this.currentStep];
54
+ }
55
+ get currentConfig() { return this.bodyConfigArr?.[this.currentStep]; }
56
+ ngOnInit() {
57
+ this.subscribeToBreakpointObserver();
58
+ this.subscribeToMenuToggle();
59
+ }
60
+ onSystemClick() {
61
+ if (!this.selectedBodyConfig?.leaveOpenOnSystemClick) {
62
+ this.nextStep();
63
+ }
64
+ }
65
+ onLanguageClick() {
66
+ if (!this.selectedBodyConfig?.leaveOpenOnLanguageClick) {
67
+ this.nextStep();
68
+ }
69
+ }
70
+ onFilteredLanguageClick() {
71
+ // should not close menu, but only clear the filter
72
+ this.filter.clear(null);
73
+ if (!this.selectedBodyConfig?.leaveOpenOnLanguageClick) {
74
+ this.nextStep();
75
+ }
76
+ }
77
+ close() {
78
+ this.systemPickerService.closeOpened();
79
+ }
80
+ filterChange(filter) {
81
+ this.filterText = filter;
82
+ }
83
+ ngOnDestroy() {
84
+ this.breakpointSubscription.unsubscribe();
85
+ this.menuToggleSubscription.unsubscribe();
86
+ }
87
+ toggleFilter() {
88
+ this.showMobFilter = !this.showMobFilter;
89
+ this.clearFilter();
90
+ }
91
+ clearFilter() {
92
+ this.filterText = "";
93
+ }
94
+ back() {
95
+ if (this.isMobile) {
96
+ if (this.showMobFilter) {
97
+ this.toggleFilter();
98
+ }
99
+ else if (this.currentStep) {
100
+ // if step bigger than zero, then go one step back.
101
+ this.currentStep += -1;
102
+ }
103
+ else {
104
+ // if step is zero, close menu
105
+ this.close();
106
+ }
107
+ }
108
+ }
109
+ nextStep() {
110
+ if (this.bodyConfigArr?.[this.currentStep + 1]) {
111
+ this.currentStep += 1;
112
+ this.clearFilter();
113
+ this.showMobFilter = false;
114
+ // systems visible only. At time of writing, mobile target view after language select.
115
+ if (this.currentConfig.hideLanguages && !this.currentConfig.hideSystems) {
116
+ if (this.dropdownBody.systemList?.length <= 1) {
117
+ this.nextStep();
118
+ }
119
+ }
120
+ }
121
+ else {
122
+ this.close();
123
+ }
124
+ }
125
+ clickOutside() {
126
+ // it shouldn't be possible to click outside on mob because it should be 100vw and 100vh.
127
+ // NOTE that this method gets triggered also on system select, because active system changes, rerenders ui elements and clicked element doesn't exist anymore in this container
128
+ if (this.isMobile) {
129
+ return;
130
+ }
131
+ this.close();
132
+ }
133
+ subscribeToBreakpointObserver() {
134
+ this.breakpointSubscription = this.breakPointObserver.observe([Breakpoints.XSmall]).subscribe((res) => {
135
+ this.isMobile = res.breakpoints[Breakpoints.XSmall];
136
+ this.selectBodyConfig();
137
+ });
138
+ }
139
+ selectBodyConfig() {
140
+ this.currentStep = 0;
141
+ if (this.isMobile) {
142
+ if (this.systemPickerService.isTargetOpened) {
143
+ this.bodyConfigArr = this.mobileTargetConfig;
144
+ }
145
+ else if (this.systemPickerService.isSourceOpened) {
146
+ this.bodyConfigArr = this.mobileSourceConfig;
147
+ }
148
+ }
149
+ else {
150
+ if (this.systemPickerService.isTargetOpened) {
151
+ this.bodyConfigArr = this.desktopTargetConfig;
152
+ }
153
+ else {
154
+ this.bodyConfigArr = null;
155
+ }
156
+ }
157
+ }
158
+ subscribeToMenuToggle() {
159
+ this.menuToggleSubscription = this.systemPickerService.menuToggled().subscribe(() => {
160
+ this.selectBodyConfig();
161
+ });
162
+ }
163
+ }
164
+ TranslationSystemPickerDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslationSystemPickerDropdownComponent, deps: [{ token: i1.TranslationSystemPickerService }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
165
+ TranslationSystemPickerDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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 class=\"dropdown-content-wrapper\" [class.mobile]=\"isMobile\" (clickOutside)=\"clickOutside()\">\r\n <div *ngIf=\"isMobile\" class=\"system-picker-header\">\r\n <button mat-icon-button (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </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 </div>\r\n <div class=\"system-picker-dropdown-content\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n </ng-container>\r\n <tld-translation-system-picker-dropdown-body [config]=\"currentConfig\" [filterText]=\"filterText\"\r\n (onSystemClick)=\"onSystemClick()\" (onLanguageClick)=\"onLanguageClick()\"\r\n (onFilteredLanguageClick)=\"onFilteredLanguageClick()\">\r\n </tld-translation-system-picker-dropdown-body>\r\n </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;height:100%;width:100%;box-sizing:border-box}:host .system-picker-dropdown-content{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:1.25rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i7.TranslationSystemPickerFilterComponent, selector: "tld-translation-system-picker-filter", outputs: ["filterChanged"] }, { kind: "component", type: i8.TranslationSystemPickerDropdownBodyComponent, selector: "tld-translation-system-picker-dropdown-body", inputs: ["filterText", "config"], outputs: ["onSystemClick", "onLanguageClick", "onFilteredLanguageClick"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslationSystemPickerDropdownComponent, decorators: [{
167
+ type: Component,
168
+ args: [{ selector: 'tld-translation-system-picker-dropdown', template: "<div class=\"dropdown-content-wrapper\" [class.mobile]=\"isMobile\" (clickOutside)=\"clickOutside()\">\r\n <div *ngIf=\"isMobile\" class=\"system-picker-header\">\r\n <button mat-icon-button (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </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 </div>\r\n <div class=\"system-picker-dropdown-content\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n </ng-container>\r\n <tld-translation-system-picker-dropdown-body [config]=\"currentConfig\" [filterText]=\"filterText\"\r\n (onSystemClick)=\"onSystemClick()\" (onLanguageClick)=\"onLanguageClick()\"\r\n (onFilteredLanguageClick)=\"onFilteredLanguageClick()\">\r\n </tld-translation-system-picker-dropdown-body>\r\n </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;height:100%;width:100%;box-sizing:border-box}:host .system-picker-dropdown-content{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:1.25rem}\n"] }]
169
+ }], ctorParameters: function () { return [{ type: i1.TranslationSystemPickerService }, { type: i2.BreakpointObserver }]; }, propDecorators: { onKeydownHandler: [{
170
+ type: HostListener,
171
+ args: ['document:keydown.escape', ['$event']]
172
+ }], dropdownBody: [{
173
+ type: ViewChild,
174
+ args: [TranslationSystemPickerDropdownBodyComponent]
175
+ }], filter: [{
176
+ type: ViewChild,
177
+ args: [TranslationSystemPickerFilterComponent]
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdG9vbHRpcC90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyL2Ryb3Bkb3duL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRvb2x0aXAvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci9kcm9wZG93bi90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFTOUcsTUFBTSxPQUFPLHdDQUF3QztJQXNEbkQsWUFBNkIsbUJBQW1ELEVBQzdELGtCQUFzQztRQUQ1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQWdDO1FBQzdELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUEzQ2pELGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBV1AsdUJBQWtCLEdBQXlCO1lBQzFEO2dCQUNFLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztZQUNEO2dC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LENBQUMsa0JBQWtCLENBQUM7YUFDOUM7aUJBQ0ksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzthQUM5QztTQUNGO2FBQ0k7WUFDSCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2FBQy9DO2lCQUNJO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O3FJQXBMVSx3Q0FBd0M7eUhBQXhDLHdDQUF3Qyw0TUFLeEMsNENBQTRDLHlFQUM1QyxzQ0FBc0MsZ0RDbkJuRCx5dkNBMEJjOzJGRGJELHdDQUF3QztrQkFMcEQsU0FBUzsrQkFDRSx3Q0FBd0M7c0pBS0csZ0JBQWdCO3NCQUFwRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlNLFlBQVk7c0JBQXBFLFNBQVM7dUJBQUMsNENBQTRDO2dCQUNKLE1BQU07c0JBQXhELFNBQVM7dUJBQUMsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJEcm9wZG93bkJvZHlDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi1ib2R5L3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24tYm9keS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN5c3RlbVBpY2tlckZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkJvZHlDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24tYm9keS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN5c3RlbVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyRHJvcGRvd25Cb2R5Q29tcG9uZW50KSBkcm9wZG93bkJvZHk6IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyRHJvcGRvd25Cb2R5Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJGaWx0ZXJDb21wb25lbnQpIGZpbHRlcjogVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJGaWx0ZXJDb21wb25lbnQ7XHJcblxyXG4gIGZpbHRlclRleHQ6IHN0cmluZztcclxuICBpc01vYmlsZTogYm9vbGVhbjtcclxuICBzaG93TW9iRmlsdGVyOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGN1cnJlbnRTdGVwID0gMDtcclxuICBwcml2YXRlIGJyZWFrcG9pbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG1lbnVUb2dnbGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IHNlbGVjdGVkQm9keUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmJvZHlDb25maWdBcnI/Llt0aGlzLmN1cnJlbnRTdGVwXTtcclxuICB9XHJcblxyXG4gIGJvZHlDb25maWdBcnI6IERyb3Bkb3duQm9keUNvbmZpZ1tdO1xyXG4gIGdldCBjdXJyZW50Q29uZmlnKCkgeyByZXR1cm4gdGhpcy5ib2R5Q29uZmlnQXJyPy5bdGhpcy5jdXJyZW50U3RlcF07IH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVUYXJnZXRDb25maWc6IERyb3Bkb3duQm9keUNvbmZpZ1tdID0gW1xyXG4gICAge1xyXG4gICAgICBoaWRlTGFuZ3VhZ2VzOiBmYWxzZSxcclxuICAgICAgaGlkZVN5c3RlbXM6IHRydWUsXHJcbiAgICAgIGhlYWRlclRpdGxlOiBcIlNZU1RFTV9QSUNLRVIuVEFSR0VUXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoaWRlTGFuZ3VhZ2VzOiB0cnVlLFxyXG4gICAgICBoaWRlU3lzdGVtczogZmFsc2UsXHJcbiAgICAgIGhlYWRlclRpdGxlOiBcIlNZU1RFTV9QSUNLRVIuU0VMRUNUX0RPTUFJTlwiLFxyXG4gICAgICBoaWRlU3lzdGVtVGl0bGU6IHRydWVcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IG1vYmlsZVNvdXJjZUNvbmZpZzogRHJvcGRvd25Cb2R5Q29uZmlnW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhpZGVMYW5ndWFnZXM6IGZhbHNlLFxyXG4gICAgICBoaWRlU3lzdGVtczogZmFsc2UsXHJcbiAgICAgIGhlYWRlclRpdGxlOiBcIlNZU1RFTV9QSUNLRVIuU09VUkNFXCIsXHJcbiAgICAgIHNob3dMYW5ndWFnZVRpdGxlOiB0cnVlXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXNrdG9wVGFyZ2V0Q29uZmlnOiBEcm9wZG93bkJvZHlDb25maWdbXSA9IFtcclxuICAgIHtcclxuICAgICAgaGlkZUxhbmd1YWdlczogZmFsc2UsXHJcbiAgICAgIGhpZGVTeXN0ZW1zOiBmYWxzZSxcclxuICAgICAgbGVhdmVPcGVuT25MYW5ndWFnZUNsaWNrOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVBpY2tlclNlcnZpY2U6IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWtQb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0JyZWFrcG9pbnRPYnNlcnZlcigpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb01lbnVUb2dnbGUoKTtcclxuICB9XHJcblxyXG5cclxuICBvblN5c3RlbUNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQm9keUNvbmZpZz8ubGVhdmVPcGVuT25TeXN0ZW1DbGljaykge1xyXG4gICAgICB0aGlzLm5leHRTdGVwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxhbmd1YWdlQ2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRCb2R5Q29uZmlnPy5sZWF2ZU9wZW5Pbkxhbmd1YWdlQ2xpY2spIHtcclxuICAgICAgdGhpcy5uZXh0U3RlcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJlZExhbmd1YWdlQ2xpY2soKSB7XHJcbiAgICAvLyBzaG91bGQgbm90IGNsb3NlIG1lbnUsIGJ1dCBvbmx5IGNsZWFyIHRoZSBmaWx0ZXJcclxuICAgIHRoaXMuZmlsdGVyLmNsZWFyKG51bGwpO1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQm9keUNvbmZpZz8ubGVhdmVPcGVuT25MYW5ndWFnZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMubmV4dFN0ZXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmNsb3NlT3BlbmVkKCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDaGFuZ2UoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVyVGV4dCA9IGZpbHRlcjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5icmVha3BvaW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm1lbnVUb2dnbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlcigpIHtcclxuICAgIHRoaXMuc2hvd01vYkZpbHRlciA9ICF0aGlzLnNob3dNb2JGaWx0ZXI7XHJcbiAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcigpIHtcclxuICAgIHRoaXMuZmlsdGVyVGV4dCA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBiYWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd01vYkZpbHRlcikge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5jdXJyZW50U3RlcCkge1xyXG4gICAgICAgIC8vIGlmIHN0ZXAgYmlnZ2VyIHRoYW4gemVybywgdGhlbiBnbyBvbmUgc3RlcCBiYWNrLlxyXG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXAgKz0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gaWYgc3RlcCBpcyB6ZXJvLCBjbG9zZSBtZW51XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0U3RlcCgpIHtcclxuICAgIGlmICh0aGlzLmJvZHlDb25maWdBcnI/Llt0aGlzLmN1cnJlbnRTdGVwICsgMV0pIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3RlcCArPSAxO1xyXG4gICAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XHJcbiAgICAgIHRoaXMuc2hvd01vYkZpbHRlciA9IGZhbHNlO1xyXG5cclxuICAgICAgLy8gc3lzdGVtcyB2aXNpYmxlIG9ubHkuIEF0IHRpbWUgb2Ygd3JpdGluZywgbW9iaWxlIHRhcmdldCB2aWV3IGFmdGVyIGxhbmd1YWdlIHNlbGVjdC5cclxuICAgICAgaWYgKHRoaXMuY3VycmVudENvbmZpZy5oaWRlTGFuZ3VhZ2VzICYmICF0aGlzLmN1cnJlbnRDb25maWcuaGlkZVN5c3RlbXMpIHtcclxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkJvZHkuc3lzdGVtTGlzdD8ubGVuZ3RoIDw9IDEpIHtcclxuICAgICAgICAgIHRoaXMubmV4dFN0ZXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGlja091dHNpZGUoKSB7XHJcbiAgICAvLyBpdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8gY2xpY2sgb3V0c2lkZSBvbiBtb2IgYmVjYXVzZSBpdCBzaG91bGQgYmUgMTAwdncgYW5kIDEwMHZoLlxyXG4gICAgLy8gTk9URSB0aGF0IHRoaXMgbWV0aG9kIGdldHMgdHJpZ2dlcmVkIGFsc28gb24gc3lzdGVtIHNlbGVjdCwgYmVjYXVzZSBhY3RpdmUgc3lzdGVtIGNoYW5nZXMsIHJlcmVuZGVycyB1aSBlbGVtZW50cyBhbmQgY2xpY2tlZCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgYW55bW9yZSBpbiB0aGlzIGNvbnRhaW5lclxyXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0JyZWFrcG9pbnRPYnNlcnZlcigpIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludFN1YnNjcmlwdGlvbiA9IHRoaXMuYnJlYWtQb2ludE9ic2VydmVyLm9ic2VydmUoW0JyZWFrcG9pbnRzLlhTbWFsbF0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSByZXMuYnJlYWtwb2ludHNbQnJlYWtwb2ludHMuWFNtYWxsXTtcclxuICAgICAgdGhpcy5zZWxlY3RCb2R5Q29uZmlnKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RCb2R5Q29uZmlnKCkge1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDA7XHJcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xyXG4gICAgICBpZiAodGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmlzVGFyZ2V0T3BlbmVkKSB7XHJcbiAgICAgICAgdGhpcy5ib2R5Q29uZmlnQXJyID0gdGhpcy5tb2JpbGVUYXJnZXRDb25maWc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmlzU291cmNlT3BlbmVkKSB7XHJcbiAgICAgICAgdGhpcy5ib2R5Q29uZmlnQXJyID0gdGhpcy5tb2JpbGVTb3VyY2VDb25maWc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmlzVGFyZ2V0T3BlbmVkKSB7XHJcbiAgICAgICAgdGhpcy5ib2R5Q29uZmlnQXJyID0gdGhpcy5kZXNrdG9wVGFyZ2V0Q29uZmlnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYm9keUNvbmZpZ0FyciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9NZW51VG9nZ2xlKCkge1xyXG4gICAgdGhpcy5tZW51VG9nZ2xlU3Vic2NyaXB0aW9uID0gdGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLm1lbnVUb2dnbGVkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RCb2R5Q29uZmlnKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQtd3JhcHBlclwiIFtjbGFzcy5tb2JpbGVdPVwiaXNNb2JpbGVcIiAoY2xpY2tPdXRzaWRlKT1cImNsaWNrT3V0c2lkZSgpXCI+XHJcbiAgPGRpdiAqbmdJZj1cImlzTW9iaWxlXCIgY2xhc3M9XCJzeXN0ZW0tcGlja2VyLWhlYWRlclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiPlxyXG4gICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd01vYkZpbHRlcjsgZWxzZSBmaWx0ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwiIHRleHQtbC1zZW1pLWJvbGRcIj57e2N1cnJlbnRDb25maWc/LmhlYWRlclRpdGxlIHwgdHJhbnNsYXRlfX08L2gxPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyKClcIj5cclxuICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3lzdGVtLXBpY2tlci1kcm9wZG93bi1jb250ZW50XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPHRsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHkgW2NvbmZpZ109XCJjdXJyZW50Q29uZmlnXCIgW2ZpbHRlclRleHRdPVwiZmlsdGVyVGV4dFwiXHJcbiAgICAgIChvblN5c3RlbUNsaWNrKT1cIm9uU3lzdGVtQ2xpY2soKVwiIChvbkxhbmd1YWdlQ2xpY2spPVwib25MYW5ndWFnZUNsaWNrKClcIlxyXG4gICAgICAob25GaWx0ZXJlZExhbmd1YWdlQ2xpY2spPVwib25GaWx0ZXJlZExhbmd1YWdlQ2xpY2soKVwiPlxyXG4gICAgPC90bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi1ib2R5PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyPlxyXG4gIDx0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1maWx0ZXIgKGZpbHRlckNoYW5nZWQpPVwiZmlsdGVyQ2hhbmdlKCRldmVudClcIj5cclxuICA8L3RsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWZpbHRlcj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=