@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,116 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { AudioErrorCase } from '../models/audio-error-case.model';
4
+ import * as i0 from "@angular/core";
5
+ export class AudioRecordService {
6
+ constructor() {
7
+ this.defaultBlobType = "audio/wav";
8
+ this.chunks = [];
9
+ this.recorderEnded = new EventEmitter();
10
+ this._onRecordingStatusChange = new Subject();
11
+ this._onRecordStart = new Subject();
12
+ this._onError = new Subject();
13
+ this.appendToChunks = (event) => {
14
+ this.chunks.push(event.data);
15
+ this.currentFileSizeBytes += event.data.size;
16
+ if (this.recorder.state !== "inactive") {
17
+ if (this.maxFileSizeBytes && this.maxFileSizeBytes < this.currentFileSizeBytes) {
18
+ this.throwError(AudioErrorCase.MAX_SIZE_EXCEEDED);
19
+ }
20
+ }
21
+ };
22
+ this.recordingStopped = () => {
23
+ const blob = new Blob(this.chunks, { type: this.blobType ?? this.defaultBlobType });
24
+ this.blobType = null;
25
+ this.chunks = [];
26
+ this.recorderEnded.emit(blob);
27
+ this.clear();
28
+ };
29
+ }
30
+ get recordTimeDate() { return this._recordTimeDate; }
31
+ get onRecordingStatusChange() { return this._onRecordingStatusChange.asObservable(); }
32
+ get onRecordStart() { return this._onRecordStart.asObservable(); }
33
+ get onError() { return this._onError.asObservable(); }
34
+ get isRecording() { return this._isRecording; }
35
+ static guc() {
36
+ return navigator.mediaDevices.getUserMedia({ audio: true });
37
+ }
38
+ getUserContent() {
39
+ return AudioRecordService.guc();
40
+ }
41
+ startRecording(dataUpdateTimeFrame, maxFileSizeInBytes, type) {
42
+ this.currentFileSizeBytes = 0;
43
+ this.maxFileSizeBytes = maxFileSizeInBytes;
44
+ this._recordTimeDate = new Date(0, 0, 0, 0, 0, 0);
45
+ this.blobType = type;
46
+ if (this._isRecording) {
47
+ this.throwError(AudioErrorCase.ALREADY_RECORDING);
48
+ }
49
+ AudioRecordService.guc().then((mediaStream) => {
50
+ this._onRecordStart.next(null);
51
+ this.recordTimeSeconds = 0;
52
+ this.recorder = new MediaRecorder(mediaStream);
53
+ this.addListeners();
54
+ this.recorder.start(dataUpdateTimeFrame);
55
+ this.timerRef = setInterval(() => {
56
+ this.recordTimeSeconds++;
57
+ // New date every time, so that angular date pipe updates in ui
58
+ this._recordTimeDate = new Date(0, 0, 0, 0, 0, this.recordTimeSeconds);
59
+ }, 1000);
60
+ this.toggleRecordingStatus(true);
61
+ }).catch((error) => {
62
+ if (error.name === "NotAllowedError") {
63
+ this.throwError(AudioErrorCase.MIC_NOT_ALLOWED);
64
+ }
65
+ else {
66
+ this.throwError(AudioErrorCase.CANT_START_RECORDING);
67
+ }
68
+ });
69
+ ;
70
+ }
71
+ stopRecording() {
72
+ return new Promise((resolve, reject) => {
73
+ this.recorderEnded.subscribe((blob) => {
74
+ this.toggleRecordingStatus(false);
75
+ if (this.timerRef) {
76
+ clearInterval(this.timerRef);
77
+ }
78
+ resolve(blob);
79
+ }, _ => {
80
+ this.throwError(AudioErrorCase.RECORDER_TIMEOUT);
81
+ reject(AudioErrorCase.RECORDER_TIMEOUT);
82
+ });
83
+ this.recorder.stop();
84
+ }).catch(() => {
85
+ this.throwError(AudioErrorCase.USER_CONSENT_FAILED);
86
+ });
87
+ }
88
+ addListeners() {
89
+ this.recorder.addEventListener('dataavailable', event => {
90
+ this.appendToChunks(event);
91
+ });
92
+ this.recorder.addEventListener('stop', () => {
93
+ this.recordingStopped();
94
+ });
95
+ }
96
+ clear() {
97
+ this.recorder = null;
98
+ this.chunks = [];
99
+ }
100
+ toggleRecordingStatus(isRecording) {
101
+ this._isRecording = isRecording;
102
+ this._onRecordingStatusChange.next(this._isRecording);
103
+ }
104
+ throwError(code) {
105
+ this._onError.next(code);
106
+ }
107
+ }
108
+ AudioRecordService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AudioRecordService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
109
+ AudioRecordService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AudioRecordService, providedIn: 'root' });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AudioRecordService, decorators: [{
111
+ type: Injectable,
112
+ args: [{
113
+ providedIn: 'root'
114
+ }]
115
+ }] });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcmVjb3JkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtYXVkaW8vc2VydmljZXMvYXVkaW8tcmVjb3JkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBT2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFLbUIsb0JBQWUsR0FBRyxXQUFXLENBQUM7UUFDdkMsV0FBTSxHQUFlLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFVckMsNkJBQXdCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHM0QsbUJBQWMsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUc3QyxhQUFRLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUE2RXZDLG1CQUFjLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRTdDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM5RSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2lCQUNuRDthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBRU0scUJBQWdCLEdBQUcsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDLENBQUM7S0FlSDtJQXJIQyxJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBR3JELElBQUksdUJBQXVCLEtBQUssT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBR3RGLElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFHbEUsSUFBSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RCxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBR3ZDLE1BQU0sQ0FBQyxHQUFHO1FBQ2hCLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBS0QsY0FBYztRQUNaLE9BQU8sa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxtQkFBMkIsRUFBRSxrQkFBMEIsRUFBRSxJQUFhO1FBQ25GLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNuRDtRQUVELGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QiwrREFBK0Q7Z0JBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN6RSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFUixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQy9CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDakQ7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN0RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUI7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFxQk8sS0FBSztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUFvQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQW9CO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7OytHQWhJVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpb0Vycm9yQ2FzZSB9IGZyb20gJy4uL21vZGVscy9hdWRpby1lcnJvci1jYXNlLm1vZGVsJztcclxuXHJcbmRlY2xhcmUgdmFyIE1lZGlhUmVjb3JkZXI6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvUmVjb3JkU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBibG9iVHlwZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEJsb2JUeXBlID0gXCJhdWRpby93YXZcIjtcclxuICBwcml2YXRlIGNodW5rczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHByb3RlY3RlZCByZWNvcmRlckVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHByaXZhdGUgcmVjb3JkZXI6IGFueTtcclxuICAvL05vZGVKcy5UaW1lb3V0P1xyXG4gIHByaXZhdGUgdGltZXJSZWY6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSByZWNvcmRUaW1lU2Vjb25kczogbnVtYmVyO1xyXG5cclxuICBwcml2YXRlIF9yZWNvcmRUaW1lRGF0ZTogRGF0ZTtcclxuICBnZXQgcmVjb3JkVGltZURhdGUoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRUaW1lRGF0ZTsgfVxyXG5cclxuICBwcml2YXRlIF9vblJlY29yZGluZ1N0YXR1c0NoYW5nZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IG9uUmVjb3JkaW5nU3RhdHVzQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fb25SZWNvcmRpbmdTdGF0dXNDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfb25SZWNvcmRTdGFydDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBnZXQgb25SZWNvcmRTdGFydCgpIHsgcmV0dXJuIHRoaXMuX29uUmVjb3JkU3RhcnQuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfb25FcnJvcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBnZXQgb25FcnJvcigpIHsgcmV0dXJuIHRoaXMuX29uRXJyb3IuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgZ2V0IGlzUmVjb3JkaW5nKCkgeyByZXR1cm4gdGhpcy5faXNSZWNvcmRpbmc7IH1cclxuICBwcml2YXRlIF9pc1JlY29yZGluZzogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ3VjKCkge1xyXG4gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1heEZpbGVTaXplQnl0ZXM6IG51bWJlcjtcclxuICBwcml2YXRlIGN1cnJlbnRGaWxlU2l6ZUJ5dGVzOiBudW1iZXI7XHJcblxyXG4gIGdldFVzZXJDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIEF1ZGlvUmVjb3JkU2VydmljZS5ndWMoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0UmVjb3JkaW5nKGRhdGFVcGRhdGVUaW1lRnJhbWU6IG51bWJlciwgbWF4RmlsZVNpemVJbkJ5dGVzOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY3VycmVudEZpbGVTaXplQnl0ZXMgPSAwO1xyXG4gICAgdGhpcy5tYXhGaWxlU2l6ZUJ5dGVzID0gbWF4RmlsZVNpemVJbkJ5dGVzO1xyXG4gICAgdGhpcy5fcmVjb3JkVGltZURhdGUgPSBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwLCAwKTtcclxuICAgIHRoaXMuYmxvYlR5cGUgPSB0eXBlO1xyXG4gICAgaWYgKHRoaXMuX2lzUmVjb3JkaW5nKSB7XHJcbiAgICAgIHRoaXMudGhyb3dFcnJvcihBdWRpb0Vycm9yQ2FzZS5BTFJFQURZX1JFQ09SRElORyk7XHJcbiAgICB9XHJcblxyXG4gICAgQXVkaW9SZWNvcmRTZXJ2aWNlLmd1YygpLnRoZW4oKG1lZGlhU3RyZWFtKSA9PiB7XHJcbiAgICAgIHRoaXMuX29uUmVjb3JkU3RhcnQubmV4dChudWxsKVxyXG4gICAgICB0aGlzLnJlY29yZFRpbWVTZWNvbmRzID0gMDtcclxuICAgICAgdGhpcy5yZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKG1lZGlhU3RyZWFtKTtcclxuICAgICAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcclxuICAgICAgdGhpcy5yZWNvcmRlci5zdGFydChkYXRhVXBkYXRlVGltZUZyYW1lKTtcclxuICAgICAgdGhpcy50aW1lclJlZiA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlY29yZFRpbWVTZWNvbmRzKys7XHJcbiAgICAgICAgLy8gTmV3IGRhdGUgZXZlcnkgdGltZSwgc28gdGhhdCBhbmd1bGFyIGRhdGUgcGlwZSB1cGRhdGVzIGluIHVpXHJcbiAgICAgICAgdGhpcy5fcmVjb3JkVGltZURhdGUgPSBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwLCB0aGlzLnJlY29yZFRpbWVTZWNvbmRzKTtcclxuICAgICAgfSwgMTAwMClcclxuXHJcbiAgICAgIHRoaXMudG9nZ2xlUmVjb3JkaW5nU3RhdHVzKHRydWUpO1xyXG4gICAgfSkuY2F0Y2goKGVycm9yOiBET01FeGNlcHRpb24pID0+IHtcclxuICAgICAgaWYgKGVycm9yLm5hbWUgPT09IFwiTm90QWxsb3dlZEVycm9yXCIpIHtcclxuICAgICAgICB0aGlzLnRocm93RXJyb3IoQXVkaW9FcnJvckNhc2UuTUlDX05PVF9BTExPV0VEKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRocm93RXJyb3IoQXVkaW9FcnJvckNhc2UuQ0FOVF9TVEFSVF9SRUNPUkRJTkcpO1xyXG4gICAgICB9XHJcbiAgICB9KTs7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5yZWNvcmRlckVuZGVkLnN1YnNjcmliZSgoYmxvYikgPT4ge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlUmVjb3JkaW5nU3RhdHVzKGZhbHNlKTtcclxuICAgICAgICBpZiAodGhpcy50aW1lclJlZikge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyUmVmKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShibG9iKTtcclxuICAgICAgfSwgXyA9PiB7XHJcbiAgICAgICAgdGhpcy50aHJvd0Vycm9yKEF1ZGlvRXJyb3JDYXNlLlJFQ09SREVSX1RJTUVPVVQpO1xyXG4gICAgICAgIHJlamVjdChBdWRpb0Vycm9yQ2FzZS5SRUNPUkRFUl9USU1FT1VUKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucmVjb3JkZXIuc3RvcCgpO1xyXG4gICAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICB0aGlzLnRocm93RXJyb3IoQXVkaW9FcnJvckNhc2UuVVNFUl9DT05TRU5UX0ZBSUxFRCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkTGlzdGVuZXJzKCkge1xyXG4gICAgdGhpcy5yZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgZXZlbnQgPT4ge1xyXG4gICAgICB0aGlzLmFwcGVuZFRvQ2h1bmtzKGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RvcCcsICgpID0+IHtcclxuICAgICAgdGhpcy5yZWNvcmRpbmdTdG9wcGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwZW5kVG9DaHVua3MgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdGhpcy5jaHVua3MucHVzaChldmVudC5kYXRhKTtcclxuICAgIHRoaXMuY3VycmVudEZpbGVTaXplQnl0ZXMgKz0gZXZlbnQuZGF0YS5zaXplO1xyXG5cclxuICAgIGlmICh0aGlzLnJlY29yZGVyLnN0YXRlICE9PSBcImluYWN0aXZlXCIpIHtcclxuICAgICAgaWYgKHRoaXMubWF4RmlsZVNpemVCeXRlcyAmJiB0aGlzLm1heEZpbGVTaXplQnl0ZXMgPCB0aGlzLmN1cnJlbnRGaWxlU2l6ZUJ5dGVzKSB7XHJcbiAgICAgICAgdGhpcy50aHJvd0Vycm9yKEF1ZGlvRXJyb3JDYXNlLk1BWF9TSVpFX0VYQ0VFREVEKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgcmVjb3JkaW5nU3RvcHBlZCA9ICgpID0+IHtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYih0aGlzLmNodW5rcywgeyB0eXBlOiB0aGlzLmJsb2JUeXBlID8/IHRoaXMuZGVmYXVsdEJsb2JUeXBlIH0pO1xyXG4gICAgdGhpcy5ibG9iVHlwZSA9IG51bGw7XHJcbiAgICB0aGlzLmNodW5rcyA9IFtdO1xyXG4gICAgdGhpcy5yZWNvcmRlckVuZGVkLmVtaXQoYmxvYik7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjbGVhcigpIHtcclxuICAgIHRoaXMucmVjb3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5jaHVua3MgPSBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlUmVjb3JkaW5nU3RhdHVzKGlzUmVjb3JkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1JlY29yZGluZyA9IGlzUmVjb3JkaW5nO1xyXG4gICAgdGhpcy5fb25SZWNvcmRpbmdTdGF0dXNDaGFuZ2UubmV4dCh0aGlzLl9pc1JlY29yZGluZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRocm93RXJyb3IoY29kZTogQXVkaW9FcnJvckNhc2UpIHtcclxuICAgIHRoaXMuX29uRXJyb3IubmV4dChjb2RlKTtcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './tld-voice-input-api.service';
2
+ export * from './tld-voice-input.service';
3
+ export * from './audio-record.service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtYXVkaW8vc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RsZC12b2ljZS1pbnB1dC1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGxkLXZvaWNlLWlucHV0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLXJlY29yZC5zZXJ2aWNlJzsiXX0=
@@ -0,0 +1,48 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "../../tld-common/services";
6
+ export class TldVoiceInputApiService {
7
+ constructor(http, config) {
8
+ this.http = http;
9
+ this.config = config;
10
+ }
11
+ get audioConfig() { return this.config.audioConfig; }
12
+ startJob(params) {
13
+ if (!this.audioConfig.audioApiUrl) {
14
+ console.error("Speech API url not defined");
15
+ throw null;
16
+ }
17
+ const formData = new FormData();
18
+ formData.append("file", params.file);
19
+ formData.append("langauge", params.language);
20
+ return this.http.post(this.audioConfig.audioApiUrl, formData).pipe(map(response => this.mapJob(response)));
21
+ }
22
+ getJobInfo(jobId) {
23
+ return this.http.get(`${this.audioConfig.audioApiUrl}/${jobId}`).pipe(map(response => this.mapJob(response)));
24
+ }
25
+ mapJob(response) {
26
+ // converts to VoiceToTextState, so it suits enum conventions.
27
+ const state = response.state.toUpperCase().replace(/ /g, "_");
28
+ return {
29
+ createdAt: new Date(response.created_at),
30
+ fileName: response.file_name,
31
+ jobId: response.job_id,
32
+ language: response.language,
33
+ state,
34
+ updatedAt: new Date(response.updated_at),
35
+ errorMessage: response.error_message,
36
+ transcription: response.transcription
37
+ };
38
+ }
39
+ }
40
+ TldVoiceInputApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputApiService, deps: [{ token: i1.HttpClient }, { token: i2.TldTranslateConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
41
+ TldVoiceInputApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputApiService, providedIn: 'root' });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputApiService, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root'
46
+ }]
47
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TldTranslateConfigService }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXZvaWNlLWlucHV0LWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWF1ZGlvL3NlcnZpY2VzL3RsZC12b2ljZS1pbnB1dC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU9yQyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQTZCLElBQWdCLEVBQzFCLE1BQWlDO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7SUFBSSxDQUFDO0lBSHpELElBQVksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBSzdELFFBQVEsQ0FBQyxNQUF5QztRQUVoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sSUFBSSxDQUFDO1NBQ1o7UUFFRCxNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUMvRixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ3ZDLENBQUE7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0MsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDbEcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUdPLE1BQU0sQ0FBQyxRQUF1QztRQUNwRCw4REFBOEQ7UUFDOUQsTUFBTSxLQUFLLEdBQVEsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDNUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixLQUFLO1lBQ0wsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDeEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhO1lBQ3BDLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtTQUN0QyxDQUFDO0lBQ0osQ0FBQzs7b0hBMUNVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElWb2ljZVRvVGV4dEpvYiwgSVZvaWNlVG9UZXh0Sm9iU2VydmVyUmVzcG9uc2UsIElWb2ljZVRvVGV4dFN0YXJ0Sm9iUmVxdWVzdFBhcmFtcyB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVm9pY2VJbnB1dEFwaVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGdldCBhdWRpb0NvbmZpZygpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnOyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlKSB7IH1cclxuXHJcbiAgc3RhcnRKb2IocGFyYW1zOiBJVm9pY2VUb1RleHRTdGFydEpvYlJlcXVlc3RQYXJhbXMpOiBPYnNlcnZhYmxlPElWb2ljZVRvVGV4dEpvYj4ge1xyXG5cclxuICAgIGlmICghdGhpcy5hdWRpb0NvbmZpZy5hdWRpb0FwaVVybCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiU3BlZWNoIEFQSSB1cmwgbm90IGRlZmluZWRcIik7XHJcbiAgICAgIHRocm93IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIHBhcmFtcy5maWxlKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImxhbmdhdWdlXCIsIHBhcmFtcy5sYW5ndWFnZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVZvaWNlVG9UZXh0Sm9iU2VydmVyUmVzcG9uc2U+KHRoaXMuYXVkaW9Db25maWcuYXVkaW9BcGlVcmwsIGZvcm1EYXRhKS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4gdGhpcy5tYXBKb2IocmVzcG9uc2UpKVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0Sm9iSW5mbyhqb2JJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJVm9pY2VUb1RleHRKb2JTZXJ2ZXJSZXNwb25zZT4oYCR7dGhpcy5hdWRpb0NvbmZpZy5hdWRpb0FwaVVybH0vJHtqb2JJZH1gKS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4gdGhpcy5tYXBKb2IocmVzcG9uc2UpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIG1hcEpvYihyZXNwb25zZTogSVZvaWNlVG9UZXh0Sm9iU2VydmVyUmVzcG9uc2UpOiBJVm9pY2VUb1RleHRKb2Ige1xyXG4gICAgLy8gY29udmVydHMgdG8gVm9pY2VUb1RleHRTdGF0ZSwgc28gaXQgc3VpdHMgZW51bSBjb252ZW50aW9ucy5cclxuICAgIGNvbnN0IHN0YXRlOiBhbnkgPSByZXNwb25zZS5zdGF0ZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLyAvZywgXCJfXCIpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShyZXNwb25zZS5jcmVhdGVkX2F0KSxcclxuICAgICAgZmlsZU5hbWU6IHJlc3BvbnNlLmZpbGVfbmFtZSxcclxuICAgICAgam9iSWQ6IHJlc3BvbnNlLmpvYl9pZCxcclxuICAgICAgbGFuZ3VhZ2U6IHJlc3BvbnNlLmxhbmd1YWdlLFxyXG4gICAgICBzdGF0ZSxcclxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZShyZXNwb25zZS51cGRhdGVkX2F0KSxcclxuICAgICAgZXJyb3JNZXNzYWdlOiByZXNwb25zZS5lcnJvcl9tZXNzYWdlLFxyXG4gICAgICB0cmFuc2NyaXB0aW9uOiByZXNwb25zZS50cmFuc2NyaXB0aW9uXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,60 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { VoiceToTextState } from '../../tld-common/models';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./tld-voice-input-api.service";
6
+ export class TldVoiceInputService {
7
+ constructor(api) {
8
+ this.api = api;
9
+ this.timeoutMs = 1000;
10
+ this.transcribtionTextUpdated = new Subject();
11
+ }
12
+ get onTranscribtionTextUpdated() { return this.transcribtionTextUpdated.asObservable(); }
13
+ startTranscribtion(params) {
14
+ this.isProcessing = true;
15
+ this.api.startJob(params).subscribe((job) => {
16
+ this.activeJob = job;
17
+ this.lastTranscribtion = job.transcription;
18
+ this.scheduleProgressCheckIfNecessary();
19
+ });
20
+ }
21
+ stopProcessing() {
22
+ if (this.isProcessing) {
23
+ this.activeJob = null;
24
+ this.isProcessing = false;
25
+ }
26
+ }
27
+ checkProgress() {
28
+ if (!this.activeJob) {
29
+ return;
30
+ }
31
+ this.api.getJobInfo(this.activeJob.jobId).subscribe((response) => {
32
+ this.activeJob = response;
33
+ const isCompleted = VoiceToTextState.COMPLETED === response.state;
34
+ if ((response.transcription && this.lastTranscribtion !== response.transcription) || isCompleted) {
35
+ this.transcribtionTextUpdated.next({ text: response.transcription, completed: isCompleted });
36
+ }
37
+ this.lastTranscribtion = response.transcription;
38
+ this.scheduleProgressCheckIfNecessary();
39
+ });
40
+ }
41
+ scheduleProgressCheckIfNecessary() {
42
+ if (this.activeJob.state === VoiceToTextState.COMPLETED) {
43
+ this.isProcessing = false;
44
+ }
45
+ else {
46
+ setTimeout(() => {
47
+ this.checkProgress();
48
+ }, this.timeoutMs);
49
+ }
50
+ }
51
+ }
52
+ TldVoiceInputService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputService, deps: [{ token: i1.TldVoiceInputApiService }], target: i0.ɵɵFactoryTarget.Injectable });
53
+ TldVoiceInputService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputService, providedIn: 'root' });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldVoiceInputService, decorators: [{
55
+ type: Injectable,
56
+ args: [{
57
+ providedIn: 'root'
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i1.TldVoiceInputApiService }]; } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXZvaWNlLWlucHV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtYXVkaW8vc2VydmljZXMvdGxkLXZvaWNlLWlucHV0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBc0QsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBTy9HLE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsWUFBNkIsR0FBNEI7UUFBNUIsUUFBRyxHQUFILEdBQUcsQ0FBeUI7UUFOeEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQiw2QkFBd0IsR0FBdUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUdqQyxDQUFDO0lBRjlELElBQUksMEJBQTBCLEtBQUssT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBSXpGLGtCQUFrQixDQUFDLE1BQXlDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxFQUFFO2dCQUNoRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7YUFDN0Y7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNoRCxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxnQ0FBZ0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7YUFDSTtZQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEI7SUFDSCxDQUFDOztpSEF0RFUsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElWb2ljZVRvVGV4dEpvYiwgSVZvaWNlVG9UZXh0U3RhcnRKb2JSZXF1ZXN0UGFyYW1zLCBWb2ljZVRvVGV4dFN0YXRlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJVHJhbnNjcmlwdGlvblVwZGF0ZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zY3JpcHRpb24tdXBkYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgVGxkVm9pY2VJbnB1dEFwaVNlcnZpY2UgfSBmcm9tICcuL3RsZC12b2ljZS1pbnB1dC1hcGkuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRWb2ljZUlucHV0U2VydmljZSB7XHJcblxyXG4gIGFjdGl2ZUpvYjogSVZvaWNlVG9UZXh0Sm9iO1xyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lb3V0TXMgPSAxMDAwO1xyXG4gIHByaXZhdGUgbGFzdFRyYW5zY3JpYnRpb246IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2NyaWJ0aW9uVGV4dFVwZGF0ZWQ6IFN1YmplY3Q8SVRyYW5zY3JpcHRpb25VcGRhdGVNb2RlbD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGdldCBvblRyYW5zY3JpYnRpb25UZXh0VXBkYXRlZCgpIHsgcmV0dXJuIHRoaXMudHJhbnNjcmlidGlvblRleHRVcGRhdGVkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBUbGRWb2ljZUlucHV0QXBpU2VydmljZSkgeyB9XHJcblxyXG4gIHN0YXJ0VHJhbnNjcmlidGlvbihwYXJhbXM6IElWb2ljZVRvVGV4dFN0YXJ0Sm9iUmVxdWVzdFBhcmFtcykge1xyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hcGkuc3RhcnRKb2IocGFyYW1zKS5zdWJzY3JpYmUoKGpvYikgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZUpvYiA9IGpvYjtcclxuICAgICAgdGhpcy5sYXN0VHJhbnNjcmlidGlvbiA9IGpvYi50cmFuc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLnNjaGVkdWxlUHJvZ3Jlc3NDaGVja0lmTmVjZXNzYXJ5KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RvcFByb2Nlc3NpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgdGhpcy5hY3RpdmVKb2IgPSBudWxsO1xyXG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1Byb2dyZXNzKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2ZUpvYikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcGkuZ2V0Sm9iSW5mbyh0aGlzLmFjdGl2ZUpvYi5qb2JJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZUpvYiA9IHJlc3BvbnNlO1xyXG4gICAgICBjb25zdCBpc0NvbXBsZXRlZCA9IFZvaWNlVG9UZXh0U3RhdGUuQ09NUExFVEVEID09PSByZXNwb25zZS5zdGF0ZTtcclxuICAgICAgaWYgKChyZXNwb25zZS50cmFuc2NyaXB0aW9uICYmIHRoaXMubGFzdFRyYW5zY3JpYnRpb24gIT09IHJlc3BvbnNlLnRyYW5zY3JpcHRpb24pIHx8IGlzQ29tcGxldGVkKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2NyaWJ0aW9uVGV4dFVwZGF0ZWQubmV4dCh7IHRleHQ6IHJlc3BvbnNlLnRyYW5zY3JpcHRpb24sIGNvbXBsZXRlZDogaXNDb21wbGV0ZWR9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RUcmFuc2NyaWJ0aW9uID0gcmVzcG9uc2UudHJhbnNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5zY2hlZHVsZVByb2dyZXNzQ2hlY2tJZk5lY2Vzc2FyeSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NoZWR1bGVQcm9ncmVzc0NoZWNrSWZOZWNlc3NhcnkoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVKb2Iuc3RhdGUgPT09IFZvaWNlVG9UZXh0U3RhdGUuQ09NUExFVEVEKSB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1Byb2dyZXNzKCk7XHJcbiAgICAgIH0sIHRoaXMudGltZW91dE1zKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,41 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FlexLayoutModule } from '@angular/flex-layout';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { MatTooltipModule } from '@angular/material/tooltip';
7
+ import { TranslateModule } from '@ngx-translate/core';
8
+ import { TldDictateComponent } from './tld-dictate/tld-dictate.component';
9
+ import { TldRecordComponent } from './tld-record/tld-record.component';
10
+ import * as i0 from "@angular/core";
11
+ export class TldAudioModule {
12
+ }
13
+ TldAudioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldAudioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ TldAudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: TldAudioModule, declarations: [TldRecordComponent, TldDictateComponent], imports: [CommonModule,
15
+ TranslateModule,
16
+ MatTooltipModule,
17
+ MatIconModule,
18
+ FlexLayoutModule,
19
+ MatButtonModule], exports: [TldRecordComponent, TldDictateComponent] });
20
+ TldAudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldAudioModule, imports: [CommonModule,
21
+ TranslateModule,
22
+ MatTooltipModule,
23
+ MatIconModule,
24
+ FlexLayoutModule,
25
+ MatButtonModule] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldAudioModule, decorators: [{
27
+ type: NgModule,
28
+ args: [{
29
+ declarations: [TldRecordComponent, TldDictateComponent],
30
+ imports: [
31
+ CommonModule,
32
+ TranslateModule,
33
+ MatTooltipModule,
34
+ MatIconModule,
35
+ FlexLayoutModule,
36
+ MatButtonModule
37
+ ],
38
+ exports: [TldRecordComponent, TldDictateComponent]
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWF1ZGlvLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1hdWRpby90bGQtYXVkaW8ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWV2RSxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQVhWLGtCQUFrQixFQUFFLG1CQUFtQixhQUVwRCxZQUFZO1FBQ1osZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGVBQWUsYUFFUCxrQkFBa0IsRUFBRSxtQkFBbUI7NEdBRXRDLGNBQWMsWUFUdkIsWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixlQUFlOzJGQUlOLGNBQWM7a0JBWjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7aUJBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBUbGREaWN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi90bGQtZGljdGF0ZS90bGQtZGljdGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUbGRSZWNvcmRDb21wb25lbnQgfSBmcm9tICcuL3RsZC1yZWNvcmQvdGxkLXJlY29yZC5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbVGxkUmVjb3JkQ29tcG9uZW50LCBUbGREaWN0YXRlQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtUbGRSZWNvcmRDb21wb25lbnQsIFRsZERpY3RhdGVDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRBdWRpb01vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,151 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { AsrClient, RecognitionStatus } from 'asr-api-client';
3
+ import { AudioErrorCase } from '../models/audio-error-case.model';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/tooltip";
7
+ import * as i3 from "@angular/flex-layout/flex";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@ngx-translate/core";
10
+ export class TldDictateComponent {
11
+ constructor() {
12
+ this.recordLength = new Date(0, 0, 0, 0, 0, 0);
13
+ this.visualizataionId = "dictate-visualization";
14
+ /**
15
+ * Last recognized text
16
+ */
17
+ this.result = new EventEmitter();
18
+ this.partialResult = new EventEmitter();
19
+ this.isDictating = new EventEmitter();
20
+ this.onError = new EventEmitter();
21
+ }
22
+ onResize() {
23
+ this.setCanvasWidth();
24
+ }
25
+ get maxLength() { return this.configuration?.maxLength; }
26
+ ;
27
+ get isRecording() { return this._isRecording; }
28
+ set isRecording(value) {
29
+ const shouldClearSource = !this.isRecording && value;
30
+ // if record ended, dictate text emitted one last time, so it translates automatically.
31
+ this._isRecording = value;
32
+ this.isDictating.emit(this._isRecording);
33
+ if (shouldClearSource) {
34
+ this.dictatedText = "";
35
+ }
36
+ if (!this.isRecording && this.interval) {
37
+ this.recordLength = new Date(0, 0, 0, 0, 0, 0);
38
+ clearInterval(this.interval);
39
+ }
40
+ }
41
+ set dictatedText(value) {
42
+ this._dictatedText = value;
43
+ this.result.emit(this._dictatedText);
44
+ }
45
+ get dictatedText() { return this._dictatedText; }
46
+ set language(value) {
47
+ this._language = value;
48
+ this.asrClient?.changeLanguage(value);
49
+ }
50
+ ngOnInit() {
51
+ const config = {
52
+ appId: this.configuration.appId,
53
+ appSecret: this.configuration.appSecret,
54
+ language: this._language,
55
+ apiUrl: this.configuration.apiUrl,
56
+ visualizerConfig: {
57
+ visualizerId: this.visualizataionId
58
+ },
59
+ onResult: (result) => { this.handleResult(result); },
60
+ onRecordingStartStop: (isRecording) => {
61
+ this.isRecording = isRecording;
62
+ setTimeout(() => {
63
+ this.setCanvasWidth();
64
+ this.asrClient.audioVisualizer?.visualizeAudio();
65
+ }, 1);
66
+ },
67
+ onError: (error) => {
68
+ if (error.name === "NotAllowedError") {
69
+ this.emitError(AudioErrorCase.MIC_NOT_ALLOWED);
70
+ return;
71
+ }
72
+ throw error;
73
+ },
74
+ onMessage: (message) => {
75
+ if (message === RecognitionStatus.NoSpeech) {
76
+ this.emitError(AudioErrorCase.NO_SPEECH);
77
+ }
78
+ }
79
+ };
80
+ this.asrClient = new AsrClient(config);
81
+ this.findMic();
82
+ }
83
+ startRecording() {
84
+ this.asrClient.beginVoiceRecognition();
85
+ this.interval = setInterval(() => {
86
+ const recordTimeInSeconds = this.asrClient?.audioContext?.currentTime ?? 0;
87
+ if (this.maxLength && recordTimeInSeconds > this.maxLength) {
88
+ this.stopRecording();
89
+ this.emitError(AudioErrorCase.MAX_TIME_EXCEEDED);
90
+ return;
91
+ }
92
+ this.recordLength = new Date(0, 0, 0, 0, 0, recordTimeInSeconds);
93
+ }, 1000);
94
+ }
95
+ stopRecording() {
96
+ this.asrClient.endVoiceRecognition();
97
+ }
98
+ setCanvasWidth() {
99
+ this.canvasWidth = this.canvasWrapper?.nativeElement.offsetWidth;
100
+ }
101
+ findMic() {
102
+ navigator.mediaDevices.enumerateDevices().then((devices) => {
103
+ this.hasAnyMicrophone = false;
104
+ for (const device of devices) {
105
+ if (device.kind === "audioinput") {
106
+ this.hasAnyMicrophone = true;
107
+ return;
108
+ }
109
+ }
110
+ });
111
+ }
112
+ handleResult(result) {
113
+ // not necessary to display <unk> tags
114
+ const resultText = result.hypotheses[0].transcript?.replace("<unk>", "");
115
+ if (result.final) {
116
+ let text = (this.dictatedText.length > 0 ? " " : "") + resultText + (resultText.endsWith(".") ? "" : ".");
117
+ this.dictatedText += text;
118
+ }
119
+ else {
120
+ this.partialResult.emit(resultText);
121
+ }
122
+ }
123
+ emitError(error) {
124
+ this.onError.emit(error);
125
+ }
126
+ }
127
+ TldDictateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldDictateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
128
+ TldDictateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TldDictateComponent, selector: "tld-dictate", inputs: { configuration: "configuration", language: "language" }, outputs: { result: "result", partialResult: "partialResult", isDictating: "isDictating", onError: "onError" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "canvasWrapper", first: true, predicate: ["canvasWrapper"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!isRecording\">\r\n <button [disabled]=\"!hasAnyMicrophone\" mat-button mat-icon-button fxLayoutAlign=\"center center\"\r\n (click)=\"startRecording()\" color=\"accent\"\r\n [attr.aria-label]=\"(hasAnyMicrophone?'AUDIO.START':'AUDIO.MIC_NOT_FOUND') | translate\">\r\n <span class=\"material-icons\" *ngIf=\"hasAnyMicrophone\" color=\"accent\" [matTooltip]=\"'AUDIO.START' | translate\">\r\n mic\r\n </span>\r\n <span class=\"material-icons\" [matTooltip]=\"'AUDIO.MIC_NOT_FOUND' | translate\" *ngIf=\"!hasAnyMicrophone\">\r\n mic_off\r\n </span>\r\n </button>\r\n</ng-container>\r\n<ng-container *ngIf=\"isRecording\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\">\r\n <div fxLayout=column>\r\n <button mat-button mat-icon-button fxLayoutAlign=\"center center\" [disabled]=\"!isRecording\"\r\n (click)=\"stopRecording()\" color=\"accent\" [matTooltip]=\"'AUDIO.STOP' | translate\"\r\n [attr.aria-label]=\"'AUDIO.STOP' | translate\">\r\n <span class=\"material-icons\">\r\n stop\r\n </span>\r\n </button>\r\n <div class=\"tld-audio-timer\" fxLayoutAlign=\"center center\">\r\n {{recordLength | date: 'mm:ss'}}\r\n </div>\r\n </div>\r\n <div fxFlex #canvasWrapper>\r\n <canvas [attr.width]=\"canvasWidth\" height=\"60\" [attr.id]=\"visualizataionId\"></canvas>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["button{border:1px solid rgba(0,0,0,.12);min-width:40px}#dictate-visualization{margin-left:1em}.tld-audio-timer{font-size:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "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: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldDictateComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: 'tld-dictate', template: "<ng-container *ngIf=\"!isRecording\">\r\n <button [disabled]=\"!hasAnyMicrophone\" mat-button mat-icon-button fxLayoutAlign=\"center center\"\r\n (click)=\"startRecording()\" color=\"accent\"\r\n [attr.aria-label]=\"(hasAnyMicrophone?'AUDIO.START':'AUDIO.MIC_NOT_FOUND') | translate\">\r\n <span class=\"material-icons\" *ngIf=\"hasAnyMicrophone\" color=\"accent\" [matTooltip]=\"'AUDIO.START' | translate\">\r\n mic\r\n </span>\r\n <span class=\"material-icons\" [matTooltip]=\"'AUDIO.MIC_NOT_FOUND' | translate\" *ngIf=\"!hasAnyMicrophone\">\r\n mic_off\r\n </span>\r\n </button>\r\n</ng-container>\r\n<ng-container *ngIf=\"isRecording\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\">\r\n <div fxLayout=column>\r\n <button mat-button mat-icon-button fxLayoutAlign=\"center center\" [disabled]=\"!isRecording\"\r\n (click)=\"stopRecording()\" color=\"accent\" [matTooltip]=\"'AUDIO.STOP' | translate\"\r\n [attr.aria-label]=\"'AUDIO.STOP' | translate\">\r\n <span class=\"material-icons\">\r\n stop\r\n </span>\r\n </button>\r\n <div class=\"tld-audio-timer\" fxLayoutAlign=\"center center\">\r\n {{recordLength | date: 'mm:ss'}}\r\n </div>\r\n </div>\r\n <div fxFlex #canvasWrapper>\r\n <canvas [attr.width]=\"canvasWidth\" height=\"60\" [attr.id]=\"visualizataionId\"></canvas>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["button{border:1px solid rgba(0,0,0,.12);min-width:40px}#dictate-visualization{margin-left:1em}.tld-audio-timer{font-size:10px}\n"] }]
132
+ }], ctorParameters: function () { return []; }, propDecorators: { onResize: [{
133
+ type: HostListener,
134
+ args: ['window:resize', []]
135
+ }], canvasWrapper: [{
136
+ type: ViewChild,
137
+ args: ["canvasWrapper"]
138
+ }], result: [{
139
+ type: Output
140
+ }], partialResult: [{
141
+ type: Output
142
+ }], isDictating: [{
143
+ type: Output
144
+ }], onError: [{
145
+ type: Output
146
+ }], configuration: [{
147
+ type: Input
148
+ }], language: [{
149
+ type: Input
150
+ }] } });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWRpY3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWF1ZGlvL3RsZC1kaWN0YXRlL3RsZC1kaWN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1hdWRpby90bGQtZGljdGF0ZS90bGQtZGljdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFNBQVMsRUFBMEIsaUJBQWlCLEVBQTJCLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBUWxFLE1BQU0sT0FBTyxtQkFBbUI7SUEyRDlCO1FBbkRBLGlCQUFZLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQWlDdkMscUJBQWdCLEdBQUcsdUJBQXVCLENBQUM7UUFHcEQ7O1dBRUc7UUFDTyxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUQsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRSxnQkFBVyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pFLFlBQU8sR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFVckYsQ0FBQztJQXpERCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFV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QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRSxhQUFhO3NCQUFyQixLQUFLO2dCQUdPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBc3JDbGllbnQsIEFzckNsaWVudENvbmZpZ3VyYXRpb24sIFJlY29nbml0aW9uU3RhdHVzLCBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCB9IGZyb20gJ2Fzci1hcGktY2xpZW50JztcclxuaW1wb3J0IHsgQXVkaW9FcnJvckNhc2UgfSBmcm9tICcuLi9tb2RlbHMvYXVkaW8tZXJyb3ItY2FzZS5tb2RlbCc7XHJcbmltcG9ydCB7IElEaWN0YXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9kaWN0YXRlLWNvbmZpZ3VyYXRpb25pLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGxkLWRpY3RhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtZGljdGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGxkLWRpY3RhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkRGljdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIHRoaXMuc2V0Q2FudmFzV2lkdGgoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJjYW52YXNXcmFwcGVyXCIpIGNhbnZhc1dyYXBwZXI6IEVsZW1lbnRSZWY8YW55PjtcclxuICByZWNvcmRMZW5ndGg6IERhdGUgPSBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwLCAwKTtcclxuICBjYW52YXNXaWR0aDogbnVtYmVyO1xyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcclxuICBoYXNBbnlNaWNyb3Bob25lOiBib29sZWFuO1xyXG4gIC8vIGFzckFwaUNsaWVudDogQVNSQXBpQ2xpZW50O1xyXG4gIGFzckNsaWVudDogQXNyQ2xpZW50O1xyXG5cclxuICBnZXQgbWF4TGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uPy5tYXhMZW5ndGggfTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNSZWNvcmRpbmc6IGJvb2xlYW47XHJcbiAgZ2V0IGlzUmVjb3JkaW5nKCkgeyByZXR1cm4gdGhpcy5faXNSZWNvcmRpbmc7IH1cclxuICBzZXQgaXNSZWNvcmRpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNob3VsZENsZWFyU291cmNlID0gIXRoaXMuaXNSZWNvcmRpbmcgJiYgdmFsdWU7XHJcbiAgICAvLyBpZiByZWNvcmQgZW5kZWQsIGRpY3RhdGUgdGV4dCBlbWl0dGVkIG9uZSBsYXN0IHRpbWUsIHNvIGl0IHRyYW5zbGF0ZXMgYXV0b21hdGljYWxseS5cclxuICAgIHRoaXMuX2lzUmVjb3JkaW5nID0gdmFsdWU7XHJcbiAgICB0aGlzLmlzRGljdGF0aW5nLmVtaXQodGhpcy5faXNSZWNvcmRpbmcpO1xyXG4gICAgaWYgKHNob3VsZENsZWFyU291cmNlKSB7XHJcbiAgICAgIHRoaXMuZGljdGF0ZWRUZXh0ID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaXNSZWNvcmRpbmcgJiYgdGhpcy5pbnRlcnZhbCkge1xyXG4gICAgICB0aGlzLnJlY29yZExlbmd0aCA9IG5ldyBEYXRlKDAsIDAsIDAsIDAsIDAsIDApO1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGljdGF0ZWRUZXh0OiBzdHJpbmc7XHJcbiAgc2V0IGRpY3RhdGVkVGV4dCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kaWN0YXRlZFRleHQgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVzdWx0LmVtaXQodGhpcy5fZGljdGF0ZWRUZXh0KTtcclxuICB9XHJcbiAgZ2V0IGRpY3RhdGVkVGV4dCgpIHsgcmV0dXJuIHRoaXMuX2RpY3RhdGVkVGV4dDsgfVxyXG5cclxuICByZWFkb25seSB2aXN1YWxpemF0YWlvbklkID0gXCJkaWN0YXRlLXZpc3VhbGl6YXRpb25cIjtcclxuICBwcml2YXRlIGludGVydmFsOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhc3QgcmVjb2duaXplZCB0ZXh0XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJlc3VsdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgcGFydGlhbFJlc3VsdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgaXNEaWN0YXRpbmc6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgb25FcnJvcjogRXZlbnRFbWl0dGVyPEF1ZGlvRXJyb3JDYXNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXVkaW9FcnJvckNhc2U+KCk7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogSURpY3RhdGVDb25maWd1cmF0aW9uO1xyXG5cclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5hc3JDbGllbnQ/LmNoYW5nZUxhbmd1YWdlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBjb25maWc6IEFzckNsaWVudENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIGFwcElkOiB0aGlzLmNvbmZpZ3VyYXRpb24uYXBwSWQsXHJcbiAgICAgIGFwcFNlY3JldDogdGhpcy5jb25maWd1cmF0aW9uLmFwcFNlY3JldCxcclxuICAgICAgbGFuZ3VhZ2U6IHRoaXMuX2xhbmd1YWdlLFxyXG4gICAgICBhcGlVcmw6IHRoaXMuY29uZmlndXJhdGlvbi5hcGlVcmwsXHJcbiAgICAgIHZpc3VhbGl6ZXJDb25maWc6IHtcclxuICAgICAgICB2aXN1YWxpemVySWQ6IHRoaXMudmlzdWFsaXphdGFpb25JZFxyXG4gICAgICB9LFxyXG4gICAgICBvblJlc3VsdDogKHJlc3VsdCkgPT4geyB0aGlzLmhhbmRsZVJlc3VsdChyZXN1bHQpIH0sXHJcbiAgICAgIG9uUmVjb3JkaW5nU3RhcnRTdG9wOiAoaXNSZWNvcmRpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gaXNSZWNvcmRpbmc7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldENhbnZhc1dpZHRoKCk7XHJcbiAgICAgICAgICB0aGlzLmFzckNsaWVudC5hdWRpb1Zpc3VhbGl6ZXI/LnZpc3VhbGl6ZUF1ZGlvKCk7XHJcbiAgICAgICAgfSwgMSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSBcIk5vdEFsbG93ZWRFcnJvclwiKSB7XHJcbiAgICAgICAgICB0aGlzLmVtaXRFcnJvcihBdWRpb0Vycm9yQ2FzZS5NSUNfTk9UX0FMTE9XRUQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfSxcclxuICAgICAgb25NZXNzYWdlOiAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlID09PSBSZWNvZ25pdGlvblN0YXR1cy5Ob1NwZWVjaCkge1xyXG4gICAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXVkaW9FcnJvckNhc2UuTk9fU1BFRUNIKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXNyQ2xpZW50ID0gbmV3IEFzckNsaWVudChjb25maWcpO1xyXG5cclxuICAgIHRoaXMuZmluZE1pYygpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRSZWNvcmRpbmcoKSB7XHJcbiAgICB0aGlzLmFzckNsaWVudC5iZWdpblZvaWNlUmVjb2duaXRpb24oKTtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlY29yZFRpbWVJblNlY29uZHMgPSB0aGlzLmFzckNsaWVudD8uYXVkaW9Db250ZXh0Py5jdXJyZW50VGltZSA/PyAwO1xyXG4gICAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgcmVjb3JkVGltZUluU2Vjb25kcyA+IHRoaXMubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XHJcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXVkaW9FcnJvckNhc2UuTUFYX1RJTUVfRVhDRUVERUQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlY29yZExlbmd0aCA9IG5ldyBEYXRlKDAsIDAsIDAsIDAsIDAsIHJlY29yZFRpbWVJblNlY29uZHMpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCkge1xyXG4gICAgdGhpcy5hc3JDbGllbnQuZW5kVm9pY2VSZWNvZ25pdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDYW52YXNXaWR0aCgpIHtcclxuICAgIHRoaXMuY2FudmFzV2lkdGggPSB0aGlzLmNhbnZhc1dyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRNaWMoKSB7XHJcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKS50aGVuKChkZXZpY2VzOiBNZWRpYURldmljZUluZm9bXSkgPT4ge1xyXG4gICAgICB0aGlzLmhhc0FueU1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgZm9yIChjb25zdCBkZXZpY2Ugb2YgZGV2aWNlcykge1xyXG4gICAgICAgIGlmIChkZXZpY2Uua2luZCA9PT0gXCJhdWRpb2lucHV0XCIpIHtcclxuICAgICAgICAgIHRoaXMuaGFzQW55TWljcm9waG9uZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUmVzdWx0KHJlc3VsdDogU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpIHtcclxuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gZGlzcGxheSA8dW5rPiB0YWdzXHJcbiAgICBjb25zdCByZXN1bHRUZXh0ID0gcmVzdWx0Lmh5cG90aGVzZXNbMF0udHJhbnNjcmlwdD8ucmVwbGFjZShcIjx1bms+XCIsIFwiXCIpO1xyXG4gICAgaWYgKHJlc3VsdC5maW5hbCkge1xyXG4gICAgICBsZXQgdGV4dCA9ICh0aGlzLmRpY3RhdGVkVGV4dC5sZW5ndGggPiAwID8gXCIgXCIgOiBcIlwiKSArIHJlc3VsdFRleHQgKyAocmVzdWx0VGV4dC5lbmRzV2l0aChcIi5cIikgPyBcIlwiIDogXCIuXCIpO1xyXG4gICAgICB0aGlzLmRpY3RhdGVkVGV4dCArPSB0ZXh0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucGFydGlhbFJlc3VsdC5lbWl0KHJlc3VsdFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RXJyb3IoZXJyb3I6IEF1ZGlvRXJyb3JDYXNlKSB7XHJcbiAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnJvcik7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSZWNvcmRpbmdcIj5cclxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFoYXNBbnlNaWNyb3Bob25lXCIgbWF0LWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJzdGFydFJlY29yZGluZygpXCIgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGhhc0FueU1pY3JvcGhvbmU/J0FVRElPLlNUQVJUJzonQVVESU8uTUlDX05PVF9GT1VORCcpIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiICpuZ0lmPVwiaGFzQW55TWljcm9waG9uZVwiIGNvbG9yPVwiYWNjZW50XCIgW21hdFRvb2x0aXBdPVwiJ0FVRElPLlNUQVJUJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICBtaWNcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIFttYXRUb29sdGlwXT1cIidBVURJTy5NSUNfTk9UX0ZPVU5EJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiIWhhc0FueU1pY3JvcGhvbmVcIj5cclxuICAgICAgICAgICAgbWljX29mZlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVjb3JkaW5nXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9Y29sdW1uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgW2Rpc2FibGVkXT1cIiFpc1JlY29yZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RvcFJlY29yZGluZygpXCIgY29sb3I9XCJhY2NlbnRcIiBbbWF0VG9vbHRpcF09XCInQVVESU8uU1RPUCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVVESU8uU1RPUCcgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICBzdG9wXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGxkLWF1ZGlvLXRpbWVyXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7cmVjb3JkTGVuZ3RoIHwgZGF0ZTogJ21tOnNzJ319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4ICNjYW52YXNXcmFwcGVyPlxyXG4gICAgICAgICAgICA8Y2FudmFzIFthdHRyLndpZHRoXT1cImNhbnZhc1dpZHRoXCIgaGVpZ2h0PVwiNjBcIiBbYXR0ci5pZF09XCJ2aXN1YWxpemF0YWlvbklkXCI+PC9jYW52YXM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19