@magmamath/students-features 1.3.23-rc.2 → 1.3.23-rc.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/dist/commonjs/features/translation/constants.js +11 -0
  2. package/dist/commonjs/features/translation/constants.js.map +1 -0
  3. package/dist/commonjs/features/translation/helpers.js +60 -0
  4. package/dist/commonjs/features/translation/helpers.js.map +1 -0
  5. package/dist/commonjs/features/translation/index.js +105 -0
  6. package/dist/commonjs/features/translation/index.js.map +1 -0
  7. package/dist/commonjs/features/translation/model/TranslationModel.js +122 -0
  8. package/dist/commonjs/features/translation/model/TranslationModel.js.map +1 -0
  9. package/dist/commonjs/features/translation/model/TranslationPreprocessor.js +142 -0
  10. package/dist/commonjs/features/translation/model/TranslationPreprocessor.js.map +1 -0
  11. package/dist/commonjs/features/translation/model/TranslationService.js +112 -0
  12. package/dist/commonjs/features/translation/model/TranslationService.js.map +1 -0
  13. package/dist/commonjs/features/translation/preserve/wordsToPreserve.js +314 -0
  14. package/dist/commonjs/features/translation/preserve/wordsToPreserve.js.map +1 -0
  15. package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js +50 -0
  16. package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -0
  17. package/dist/commonjs/features/translation/providers/google/supportedLanguages.js +230 -0
  18. package/dist/commonjs/features/translation/providers/google/supportedLanguages.js.map +1 -0
  19. package/dist/commonjs/features/translation/providers/google.types.js +2 -0
  20. package/dist/commonjs/features/translation/providers/google.types.js.map +1 -0
  21. package/dist/commonjs/features/translation/providers/translation.interface.js +49 -0
  22. package/dist/commonjs/features/translation/providers/translation.interface.js.map +1 -0
  23. package/dist/commonjs/features/translation/types.js +2 -0
  24. package/dist/commonjs/features/translation/types.js.map +1 -0
  25. package/dist/commonjs/features/voice/index.js +4 -4
  26. package/dist/commonjs/features/voice/index.js.map +1 -1
  27. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptContent.js +44 -0
  28. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptContent.js.map +1 -0
  29. package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js +107 -0
  30. package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js.map +1 -0
  31. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionCollapsible.js +66 -0
  32. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionCollapsible.js.map +1 -0
  33. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionHeaderActions.js +58 -0
  34. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionHeaderActions.js.map +1 -0
  35. package/dist/commonjs/features/voice/playing/hooks/{useVoiceTranscriptionsDropdown.js → useDropdownAnimation.js} +8 -7
  36. package/dist/commonjs/features/voice/playing/hooks/useDropdownAnimation.js.map +1 -0
  37. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.js +128 -0
  38. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.js.map +1 -0
  39. package/dist/commonjs/features/voice/playing/model/{VoiceTranscriptionsDropdown.model.js → Dropdown.model.js} +4 -4
  40. package/dist/commonjs/features/voice/playing/model/Dropdown.model.js.map +1 -0
  41. package/dist/commonjs/features/voice/playing/model/PlaybackController.js +183 -0
  42. package/dist/commonjs/features/voice/playing/model/PlaybackController.js.map +1 -0
  43. package/dist/commonjs/features/voice/playing/model/Player.model.js +24 -1
  44. package/dist/commonjs/features/voice/playing/model/Player.model.js.map +1 -1
  45. package/dist/commonjs/features/voice/playing/model/{VoiceTranscriptionsCollection.js → TranscriptionsCollection.js} +4 -4
  46. package/dist/commonjs/features/voice/playing/model/TranscriptionsCollection.js.map +1 -0
  47. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloader.model.js +82 -0
  48. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloader.model.js.map +1 -0
  49. package/dist/commonjs/features/voice/playing/model/Translation.model.js +62 -0
  50. package/dist/commonjs/features/voice/playing/model/Translation.model.js.map +1 -0
  51. package/dist/commonjs/features/voice/playing/model/VoiceFileDownloader.model.js +2 -2
  52. package/dist/commonjs/features/voice/playing/model/VoiceFileDownloader.model.js.map +1 -1
  53. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js +46 -172
  54. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js.map +1 -1
  55. package/dist/commonjs/features/voice/types.js.map +1 -1
  56. package/dist/commonjs/index.js +12 -0
  57. package/dist/commonjs/index.js.map +1 -1
  58. package/dist/module/features/translation/constants.js +7 -0
  59. package/dist/module/features/translation/constants.js.map +1 -0
  60. package/dist/module/features/translation/helpers.js +53 -0
  61. package/dist/module/features/translation/helpers.js.map +1 -0
  62. package/dist/module/features/translation/index.js +12 -0
  63. package/dist/module/features/translation/index.js.map +1 -0
  64. package/dist/module/features/translation/model/TranslationModel.js +117 -0
  65. package/dist/module/features/translation/model/TranslationModel.js.map +1 -0
  66. package/dist/module/features/translation/model/TranslationPreprocessor.js +137 -0
  67. package/dist/module/features/translation/model/TranslationPreprocessor.js.map +1 -0
  68. package/dist/module/features/translation/model/TranslationService.js +107 -0
  69. package/dist/module/features/translation/model/TranslationService.js.map +1 -0
  70. package/dist/module/features/translation/preserve/wordsToPreserve.js +310 -0
  71. package/dist/module/features/translation/preserve/wordsToPreserve.js.map +1 -0
  72. package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js +45 -0
  73. package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -0
  74. package/dist/module/features/translation/providers/google/supportedLanguages.js +225 -0
  75. package/dist/module/features/translation/providers/google/supportedLanguages.js.map +1 -0
  76. package/dist/module/features/translation/providers/google.types.js +2 -0
  77. package/dist/module/features/translation/providers/google.types.js.map +1 -0
  78. package/dist/module/features/translation/providers/translation.interface.js +44 -0
  79. package/dist/module/features/translation/providers/translation.interface.js.map +1 -0
  80. package/dist/module/features/translation/types.js +2 -0
  81. package/dist/module/features/translation/types.js.map +1 -0
  82. package/dist/module/features/voice/index.js +1 -1
  83. package/dist/module/features/voice/index.js.map +1 -1
  84. package/dist/module/features/voice/playing/components/VoiceTranscriptContent.js +38 -0
  85. package/dist/module/features/voice/playing/components/VoiceTranscriptContent.js.map +1 -0
  86. package/dist/module/features/voice/playing/components/VoiceTranscription.js +101 -0
  87. package/dist/module/features/voice/playing/components/VoiceTranscription.js.map +1 -0
  88. package/dist/module/features/voice/playing/components/VoiceTranscriptionCollapsible.js +58 -0
  89. package/dist/module/features/voice/playing/components/VoiceTranscriptionCollapsible.js.map +1 -0
  90. package/dist/module/features/voice/playing/components/VoiceTranscriptionHeaderActions.js +52 -0
  91. package/dist/module/features/voice/playing/components/VoiceTranscriptionHeaderActions.js.map +1 -0
  92. package/dist/module/features/voice/playing/hooks/{useVoiceTranscriptionsDropdown.js → useDropdownAnimation.js} +6 -5
  93. package/dist/module/features/voice/playing/hooks/useDropdownAnimation.js.map +1 -0
  94. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionController.js +123 -0
  95. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionController.js.map +1 -0
  96. package/dist/module/features/voice/playing/model/{VoiceTranscriptionsDropdown.model.js → Dropdown.model.js} +2 -2
  97. package/dist/module/features/voice/playing/model/Dropdown.model.js.map +1 -0
  98. package/dist/module/features/voice/playing/model/PlaybackController.js +178 -0
  99. package/dist/module/features/voice/playing/model/PlaybackController.js.map +1 -0
  100. package/dist/module/features/voice/playing/model/Player.model.js +24 -1
  101. package/dist/module/features/voice/playing/model/Player.model.js.map +1 -1
  102. package/dist/module/features/voice/playing/model/{VoiceTranscriptionsCollection.js → TranscriptionsCollection.js} +2 -2
  103. package/dist/module/features/voice/playing/model/TranscriptionsCollection.js.map +1 -0
  104. package/dist/module/features/voice/playing/model/TranscriptionsDownloader.model.js +77 -0
  105. package/dist/module/features/voice/playing/model/TranscriptionsDownloader.model.js.map +1 -0
  106. package/dist/module/features/voice/playing/model/Translation.model.js +57 -0
  107. package/dist/module/features/voice/playing/model/Translation.model.js.map +1 -0
  108. package/dist/module/features/voice/playing/model/VoiceFileDownloader.model.js +2 -2
  109. package/dist/module/features/voice/playing/model/VoiceFileDownloader.model.js.map +1 -1
  110. package/dist/module/features/voice/playing/model/VoicePlayer.model.js +48 -174
  111. package/dist/module/features/voice/playing/model/VoicePlayer.model.js.map +1 -1
  112. package/dist/module/features/voice/types.js.map +1 -1
  113. package/dist/module/index.js +1 -0
  114. package/dist/module/index.js.map +1 -1
  115. package/dist/typescript/commonjs/features/translation/constants.d.ts +5 -0
  116. package/dist/typescript/commonjs/features/translation/constants.d.ts.map +1 -0
  117. package/dist/typescript/commonjs/features/translation/helpers.d.ts +9 -0
  118. package/dist/typescript/commonjs/features/translation/helpers.d.ts.map +1 -0
  119. package/dist/typescript/commonjs/features/translation/index.d.ts +12 -0
  120. package/dist/typescript/commonjs/features/translation/index.d.ts.map +1 -0
  121. package/dist/typescript/commonjs/features/translation/model/TranslationModel.d.ts +33 -0
  122. package/dist/typescript/commonjs/features/translation/model/TranslationModel.d.ts.map +1 -0
  123. package/dist/typescript/commonjs/features/translation/model/TranslationPreprocessor.d.ts +34 -0
  124. package/dist/typescript/commonjs/features/translation/model/TranslationPreprocessor.d.ts.map +1 -0
  125. package/dist/typescript/commonjs/features/translation/model/TranslationService.d.ts +40 -0
  126. package/dist/typescript/commonjs/features/translation/model/TranslationService.d.ts.map +1 -0
  127. package/dist/typescript/commonjs/features/translation/preserve/wordsToPreserve.d.ts +3 -0
  128. package/dist/typescript/commonjs/features/translation/preserve/wordsToPreserve.d.ts.map +1 -0
  129. package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts +17 -0
  130. package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -0
  131. package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts +209 -0
  132. package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts.map +1 -0
  133. package/dist/typescript/commonjs/features/translation/providers/google.types.d.ts +15 -0
  134. package/dist/typescript/commonjs/features/translation/providers/google.types.d.ts.map +1 -0
  135. package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts +30 -0
  136. package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts.map +1 -0
  137. package/dist/typescript/commonjs/features/translation/types.d.ts +27 -0
  138. package/dist/typescript/commonjs/features/translation/types.d.ts.map +1 -0
  139. package/dist/typescript/commonjs/features/voice/index.d.ts +2 -1
  140. package/dist/typescript/commonjs/features/voice/index.d.ts.map +1 -1
  141. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptContent.d.ts +8 -0
  142. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptContent.d.ts.map +1 -0
  143. package/dist/typescript/{module/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts → commonjs/features/voice/playing/components/VoiceTranscription.d.ts} +3 -4
  144. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -0
  145. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionCollapsible.d.ts +10 -0
  146. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionCollapsible.d.ts.map +1 -0
  147. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionHeaderActions.d.ts +12 -0
  148. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionHeaderActions.d.ts.map +1 -0
  149. package/dist/typescript/{module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts → commonjs/features/voice/playing/hooks/useDropdownAnimation.d.ts} +3 -3
  150. package/dist/typescript/commonjs/features/voice/playing/hooks/useDropdownAnimation.d.ts.map +1 -0
  151. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts +30 -0
  152. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts.map +1 -0
  153. package/dist/typescript/{module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts → commonjs/features/voice/playing/model/Dropdown.model.d.ts} +2 -2
  154. package/dist/typescript/commonjs/features/voice/playing/model/Dropdown.model.d.ts.map +1 -0
  155. package/dist/typescript/commonjs/features/voice/playing/model/PlaybackController.d.ts +28 -0
  156. package/dist/typescript/commonjs/features/voice/playing/model/PlaybackController.d.ts.map +1 -0
  157. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts +3 -0
  158. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts.map +1 -1
  159. package/dist/typescript/{module/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts → commonjs/features/voice/playing/model/TranscriptionsCollection.d.ts} +2 -2
  160. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsCollection.d.ts.map +1 -0
  161. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloader.model.d.ts +19 -0
  162. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloader.model.d.ts.map +1 -0
  163. package/dist/typescript/commonjs/features/voice/playing/model/Translation.model.d.ts +25 -0
  164. package/dist/typescript/commonjs/features/voice/playing/model/Translation.model.d.ts.map +1 -0
  165. package/dist/typescript/commonjs/features/voice/playing/model/VoiceFileDownloader.model.d.ts +2 -2
  166. package/dist/typescript/commonjs/features/voice/playing/model/VoiceFileDownloader.model.d.ts.map +1 -1
  167. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts +18 -18
  168. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -1
  169. package/dist/typescript/commonjs/features/voice/types.d.ts +5 -1
  170. package/dist/typescript/commonjs/features/voice/types.d.ts.map +1 -1
  171. package/dist/typescript/commonjs/index.d.ts +1 -0
  172. package/dist/typescript/commonjs/index.d.ts.map +1 -1
  173. package/dist/typescript/module/features/translation/constants.d.ts +5 -0
  174. package/dist/typescript/module/features/translation/constants.d.ts.map +1 -0
  175. package/dist/typescript/module/features/translation/helpers.d.ts +9 -0
  176. package/dist/typescript/module/features/translation/helpers.d.ts.map +1 -0
  177. package/dist/typescript/module/features/translation/index.d.ts +12 -0
  178. package/dist/typescript/module/features/translation/index.d.ts.map +1 -0
  179. package/dist/typescript/module/features/translation/model/TranslationModel.d.ts +33 -0
  180. package/dist/typescript/module/features/translation/model/TranslationModel.d.ts.map +1 -0
  181. package/dist/typescript/module/features/translation/model/TranslationPreprocessor.d.ts +34 -0
  182. package/dist/typescript/module/features/translation/model/TranslationPreprocessor.d.ts.map +1 -0
  183. package/dist/typescript/module/features/translation/model/TranslationService.d.ts +40 -0
  184. package/dist/typescript/module/features/translation/model/TranslationService.d.ts.map +1 -0
  185. package/dist/typescript/module/features/translation/preserve/wordsToPreserve.d.ts +3 -0
  186. package/dist/typescript/module/features/translation/preserve/wordsToPreserve.d.ts.map +1 -0
  187. package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts +17 -0
  188. package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -0
  189. package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts +209 -0
  190. package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts.map +1 -0
  191. package/dist/typescript/module/features/translation/providers/google.types.d.ts +15 -0
  192. package/dist/typescript/module/features/translation/providers/google.types.d.ts.map +1 -0
  193. package/dist/typescript/module/features/translation/providers/translation.interface.d.ts +30 -0
  194. package/dist/typescript/module/features/translation/providers/translation.interface.d.ts.map +1 -0
  195. package/dist/typescript/module/features/translation/types.d.ts +27 -0
  196. package/dist/typescript/module/features/translation/types.d.ts.map +1 -0
  197. package/dist/typescript/module/features/voice/index.d.ts +2 -1
  198. package/dist/typescript/module/features/voice/index.d.ts.map +1 -1
  199. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptContent.d.ts +8 -0
  200. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptContent.d.ts.map +1 -0
  201. package/dist/typescript/{commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts → module/features/voice/playing/components/VoiceTranscription.d.ts} +3 -4
  202. package/dist/typescript/module/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -0
  203. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionCollapsible.d.ts +10 -0
  204. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionCollapsible.d.ts.map +1 -0
  205. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionHeaderActions.d.ts +12 -0
  206. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionHeaderActions.d.ts.map +1 -0
  207. package/dist/typescript/{commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts → module/features/voice/playing/hooks/useDropdownAnimation.d.ts} +3 -3
  208. package/dist/typescript/module/features/voice/playing/hooks/useDropdownAnimation.d.ts.map +1 -0
  209. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts +30 -0
  210. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts.map +1 -0
  211. package/dist/typescript/{commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts → module/features/voice/playing/model/Dropdown.model.d.ts} +2 -2
  212. package/dist/typescript/module/features/voice/playing/model/Dropdown.model.d.ts.map +1 -0
  213. package/dist/typescript/module/features/voice/playing/model/PlaybackController.d.ts +28 -0
  214. package/dist/typescript/module/features/voice/playing/model/PlaybackController.d.ts.map +1 -0
  215. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts +3 -0
  216. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts.map +1 -1
  217. package/dist/typescript/{commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts → module/features/voice/playing/model/TranscriptionsCollection.d.ts} +2 -2
  218. package/dist/typescript/module/features/voice/playing/model/TranscriptionsCollection.d.ts.map +1 -0
  219. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloader.model.d.ts +19 -0
  220. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloader.model.d.ts.map +1 -0
  221. package/dist/typescript/module/features/voice/playing/model/Translation.model.d.ts +25 -0
  222. package/dist/typescript/module/features/voice/playing/model/Translation.model.d.ts.map +1 -0
  223. package/dist/typescript/module/features/voice/playing/model/VoiceFileDownloader.model.d.ts +2 -2
  224. package/dist/typescript/module/features/voice/playing/model/VoiceFileDownloader.model.d.ts.map +1 -1
  225. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts +18 -18
  226. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -1
  227. package/dist/typescript/module/features/voice/types.d.ts +5 -1
  228. package/dist/typescript/module/features/voice/types.d.ts.map +1 -1
  229. package/dist/typescript/module/index.d.ts +1 -0
  230. package/dist/typescript/module/index.d.ts.map +1 -1
  231. package/package.json +28 -1
  232. package/src/features/translation/constants.ts +4 -0
  233. package/src/features/translation/helpers.ts +63 -0
  234. package/src/features/translation/index.ts +30 -0
  235. package/src/features/translation/model/TranslationModel.ts +174 -0
  236. package/src/features/translation/model/TranslationPreprocessor.ts +171 -0
  237. package/src/features/translation/model/TranslationService.ts +148 -0
  238. package/src/features/translation/preserve/wordsToPreserve.ts +87 -0
  239. package/src/features/translation/providers/google/GoogleTranslationProvider.ts +50 -0
  240. package/src/features/translation/providers/google/supportedLanguages.ts +229 -0
  241. package/src/features/translation/providers/google.types.ts +16 -0
  242. package/src/features/translation/providers/translation.interface.ts +63 -0
  243. package/src/features/translation/types.ts +30 -0
  244. package/src/features/voice/index.ts +2 -1
  245. package/src/features/voice/playing/components/VoiceTranscriptContent.tsx +37 -0
  246. package/src/features/voice/playing/components/VoiceTranscription.tsx +117 -0
  247. package/src/features/voice/playing/components/VoiceTranscriptionCollapsible.tsx +59 -0
  248. package/src/features/voice/playing/components/VoiceTranscriptionHeaderActions.tsx +61 -0
  249. package/src/features/voice/playing/hooks/{useVoiceTranscriptionsDropdown.ts → useDropdownAnimation.ts} +5 -5
  250. package/src/features/voice/playing/hooks/useVoiceTranscriptionController.ts +171 -0
  251. package/src/features/voice/playing/model/{VoiceTranscriptionsDropdown.model.ts → Dropdown.model.ts} +2 -2
  252. package/src/features/voice/playing/model/PlaybackController.ts +213 -0
  253. package/src/features/voice/playing/model/Player.model.ts +26 -1
  254. package/src/features/voice/playing/model/{VoiceTranscriptionsCollection.ts → TranscriptionsCollection.ts} +1 -1
  255. package/src/features/voice/playing/model/TranscriptionsDownloader.model.ts +88 -0
  256. package/src/features/voice/playing/model/Translation.model.ts +75 -0
  257. package/src/features/voice/playing/model/VoiceFileDownloader.model.ts +2 -2
  258. package/src/features/voice/playing/model/VoicePlayer.model.ts +57 -194
  259. package/src/features/voice/types.ts +10 -0
  260. package/src/index.ts +1 -0
  261. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.js +0 -251
  262. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.js.map +0 -1
  263. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js +0 -109
  264. package/dist/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js.map +0 -1
  265. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js.map +0 -1
  266. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js +0 -34
  267. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js.map +0 -1
  268. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js +0 -66
  269. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +0 -1
  270. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.js.map +0 -1
  271. package/dist/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js.map +0 -1
  272. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdown.js +0 -244
  273. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdown.js.map +0 -1
  274. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js +0 -103
  275. package/dist/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.js.map +0 -1
  276. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.js.map +0 -1
  277. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js +0 -29
  278. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.js.map +0 -1
  279. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js +0 -61
  280. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +0 -1
  281. package/dist/module/features/voice/playing/model/VoiceTranscriptionsCollection.js.map +0 -1
  282. package/dist/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.js.map +0 -1
  283. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts.map +0 -1
  284. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts +0 -12
  285. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts.map +0 -1
  286. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts.map +0 -1
  287. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts +0 -11
  288. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts.map +0 -1
  289. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +0 -15
  290. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +0 -1
  291. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts.map +0 -1
  292. package/dist/typescript/commonjs/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts.map +0 -1
  293. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdown.d.ts.map +0 -1
  294. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts +0 -12
  295. package/dist/typescript/module/features/voice/playing/components/VoiceTranscriptionsDropdownItem.d.ts.map +0 -1
  296. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdown.d.ts.map +0 -1
  297. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts +0 -11
  298. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.d.ts.map +0 -1
  299. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +0 -15
  300. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +0 -1
  301. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsCollection.d.ts.map +0 -1
  302. package/dist/typescript/module/features/voice/playing/model/VoiceTranscriptionsDropdown.model.d.ts.map +0 -1
  303. package/src/features/voice/playing/components/VoiceTranscriptionsDropdown.tsx +0 -302
  304. package/src/features/voice/playing/components/VoiceTranscriptionsDropdownItem.tsx +0 -128
  305. package/src/features/voice/playing/hooks/useVoiceTranscriptionsDropdownItemAnimation.ts +0 -40
  306. package/src/features/voice/playing/model/TranscriptionsDownloaderModel.ts +0 -80
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ const SUPPORTED_CODES = new Set();
4
+ const NAME_TO_CODE = {};
5
+ const normalizeLanguageName = language => language.trim().toUpperCase().replace(/[\s()-]+/g, '_');
6
+
7
+ /**
8
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
9
+ * Google Translate ISO code. Returns null when the language is not supported.
10
+ *
11
+ * Examples:
12
+ * "en" → "en"
13
+ * "en-SE" → "en" (base fallback)
14
+ * "zh-CN" → "zh-CN" (exact match)
15
+ * "Spanish" → "es" (name lookup)
16
+ * "Chinese Simplified" → "zh-CN"
17
+ */
18
+ export const resolveGoogleLanguageCode = language => {
19
+ if (!language) return null;
20
+ if (SUPPORTED_CODES.has(language)) return language;
21
+ const base = language.split('-')[0];
22
+ if (base !== language && SUPPORTED_CODES.has(base)) return base;
23
+ return NAME_TO_CODE[normalizeLanguageName(language)] ?? null;
24
+ };
25
+ export const GoogleTranslateLanguage = {
26
+ ABKHAZ: 'ab',
27
+ ACEHNESE: 'ace',
28
+ ACHOLI: 'ach',
29
+ AFRIKAANS: 'af',
30
+ ALBANIAN: 'sq',
31
+ ALUR: 'alz',
32
+ AMHARIC: 'am',
33
+ ARABIC: 'ar',
34
+ ARMENIAN: 'hy',
35
+ ASSAMESE: 'as',
36
+ AWADHI: 'awa',
37
+ AYMARA: 'ay',
38
+ AZERBAIJANI: 'az',
39
+ BALINESE: 'ban',
40
+ BAMBARA: 'bm',
41
+ BASHKIR: 'ba',
42
+ BASQUE: 'eu',
43
+ BATAK_KARO: 'btx',
44
+ BATAK_SIMALUNGUN: 'bts',
45
+ BATAK_TOBA: 'bbc',
46
+ BELARUSIAN: 'be',
47
+ BEMBA: 'bem',
48
+ BENGALI: 'bn',
49
+ BETAWI: 'bew',
50
+ BHOJPURI: 'bho',
51
+ BIKOL: 'bik',
52
+ BOSNIAN: 'bs',
53
+ BRETON: 'br',
54
+ BULGARIAN: 'bg',
55
+ BURMESE: 'my',
56
+ BURYAT: 'bua',
57
+ CANTONESE: 'yue',
58
+ CATALAN: 'ca',
59
+ CEBUANO: 'ceb',
60
+ CHICHEWA_NYANJA: 'ny',
61
+ CHINESE_SIMPLIFIED: 'zh-CN',
62
+ CHINESE_TRADITIONAL: 'zh-TW',
63
+ CHUVASH: 'cv',
64
+ CORSICAN: 'co',
65
+ CRIMEAN_TATAR: 'crh',
66
+ CROATIAN: 'hr',
67
+ CZECH: 'cs',
68
+ DANISH: 'da',
69
+ DINKA: 'din',
70
+ DIVEHI: 'dv',
71
+ DOGRI: 'doi',
72
+ DOMBE: 'dov',
73
+ DUTCH: 'nl',
74
+ DZONGKHA: 'dz',
75
+ ENGLISH: 'en',
76
+ ESPERANTO: 'eo',
77
+ ESTONIAN: 'et',
78
+ EWE: 'ee',
79
+ FIJIAN: 'fj',
80
+ FILIPINO_TAGALOG: 'fil',
81
+ FINNISH: 'fi',
82
+ FRENCH: 'fr',
83
+ FRENCH_CANADA: 'fr-CA',
84
+ FRENCH_FRANCE: 'fr-FR',
85
+ FRISIAN: 'fy',
86
+ FULFULDE: 'ff',
87
+ GA: 'gaa',
88
+ GALICIAN: 'gl',
89
+ GANDA_LUGANDA: 'lg',
90
+ GEORGIAN: 'ka',
91
+ GERMAN: 'de',
92
+ GREEK: 'el',
93
+ GUARANI: 'gn',
94
+ GUJARATI: 'gu',
95
+ HAITIAN_CREOLE: 'ht',
96
+ HAKHA_CHIN: 'cnh',
97
+ HAUSA: 'ha',
98
+ HAWAIIAN: 'haw',
99
+ HEBREW: 'he',
100
+ HILIGAYNON: 'hil',
101
+ HINDI: 'hi',
102
+ HMONG: 'hmn',
103
+ HUNGARIAN: 'hu',
104
+ HUNSRIK: 'hrx',
105
+ ICELANDIC: 'is',
106
+ IGBO: 'ig',
107
+ ILOKO: 'ilo',
108
+ INDONESIAN: 'id',
109
+ IRISH: 'ga',
110
+ ITALIAN: 'it',
111
+ JAPANESE: 'ja',
112
+ JAVANESE: 'jw',
113
+ KANNADA: 'kn',
114
+ KAPAMPANGAN: 'pam',
115
+ KAZAKH: 'kk',
116
+ KHMER: 'km',
117
+ KIGA: 'cgg',
118
+ KINYARWANDA: 'rw',
119
+ KITUBA: 'ktu',
120
+ KONKANI: 'gom',
121
+ KOREAN: 'ko',
122
+ KRIO: 'kri',
123
+ KURMANJI: 'ku',
124
+ KYRGYZ: 'ky',
125
+ LAO: 'lo',
126
+ LATGALIAN: 'ltg',
127
+ LATIN: 'la',
128
+ LATVIAN: 'lv',
129
+ LIGURIAN: 'lij',
130
+ LIMBURGAN: 'li',
131
+ LINGALA: 'ln',
132
+ LITHUANIAN: 'lt',
133
+ LOMBARD: 'lmo',
134
+ LUO: 'luo',
135
+ LUXEMBOURGISH: 'lb',
136
+ MACEDONIAN: 'mk',
137
+ MAITHILI: 'mai',
138
+ MAKASSAR: 'mak',
139
+ MALAGASY: 'mg',
140
+ MALAY: 'ms',
141
+ MALAYALAM: 'ml',
142
+ MALAY_JAWI: 'ms-Arab',
143
+ MALTESE: 'mt',
144
+ MAORI: 'mi',
145
+ MARATHI: 'mr',
146
+ MEADOW_MARI: 'chm',
147
+ MEITEILON_MANIPURI: 'mni-Mtei',
148
+ MINANG: 'min',
149
+ MIZO: 'lus',
150
+ MONGOLIAN: 'mn',
151
+ NDEBELE_SOUTH: 'nr',
152
+ NEPALBHASA_NEWARI: 'new',
153
+ NEPALI: 'ne',
154
+ NORTHERN_SOTHO: 'nso',
155
+ NORWEGIAN: 'no',
156
+ NUER: 'nus',
157
+ OCCITAN: 'oc',
158
+ ODIA: 'or',
159
+ OROMO: 'om',
160
+ PANGASINAN: 'pag',
161
+ PAPIAMENTO: 'pap',
162
+ PASHTO: 'ps',
163
+ PERSIAN: 'fa',
164
+ POLISH: 'pl',
165
+ PORTUGUESE: 'pt',
166
+ PORTUGUESE_BRAZIL: 'pt-BR',
167
+ PORTUGUESE_PORTUGAL: 'pt-PT',
168
+ PUNJABI: 'pa',
169
+ PUNJABI_SHAHMUKHI: 'pa-Arab',
170
+ QUECHUA: 'qu',
171
+ ROMANI: 'rom',
172
+ ROMANIAN: 'ro',
173
+ RUNDI: 'rn',
174
+ RUSSIAN: 'ru',
175
+ SAMOAN: 'sm',
176
+ SANGO: 'sg',
177
+ SANSKRIT: 'sa',
178
+ SCOTS_GAELIC: 'gd',
179
+ SERBIAN: 'sr',
180
+ SESOTHO: 'st',
181
+ SEYCHELLOIS_CREOLE: 'crs',
182
+ SHAN: 'shn',
183
+ SHONA: 'sn',
184
+ SICILIAN: 'scn',
185
+ SILESIAN: 'szl',
186
+ SINDHI: 'sd',
187
+ SINHALA: 'si',
188
+ SLOVAK: 'sk',
189
+ SLOVENIAN: 'sl',
190
+ SOMALI: 'so',
191
+ SORANI: 'ckb',
192
+ SPANISH: 'es',
193
+ SUNDANESE: 'su',
194
+ SWAHILI: 'sw',
195
+ SWATI: 'ss',
196
+ SWEDISH: 'sv',
197
+ TAJIK: 'tg',
198
+ TAMIL: 'ta',
199
+ TATAR: 'tt',
200
+ TELUGU: 'te',
201
+ TETUM: 'tet',
202
+ THAI: 'th',
203
+ TIGRINYA: 'ti',
204
+ TSONGA: 'ts',
205
+ TSWANA: 'tn',
206
+ TURKISH: 'tr',
207
+ TURKMEN: 'tk',
208
+ TWI_AKAN: 'ak',
209
+ UKRAINIAN: 'uk',
210
+ URDU: 'ur',
211
+ UYGHUR: 'ug',
212
+ UZBEK: 'uz',
213
+ VIETNAMESE: 'vi',
214
+ WELSH: 'cy',
215
+ XHOSA: 'xh',
216
+ YIDDISH: 'yi',
217
+ YORUBA: 'yo',
218
+ YUCATEC_MAYA: 'yua',
219
+ ZULU: 'zu'
220
+ };
221
+ Object.entries(GoogleTranslateLanguage).forEach(([name, code]) => {
222
+ SUPPORTED_CODES.add(code);
223
+ NAME_TO_CODE[name] = code;
224
+ });
225
+ //# sourceMappingURL=supportedLanguages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SUPPORTED_CODES","Set","NAME_TO_CODE","normalizeLanguageName","language","trim","toUpperCase","replace","resolveGoogleLanguageCode","has","base","split","GoogleTranslateLanguage","ABKHAZ","ACEHNESE","ACHOLI","AFRIKAANS","ALBANIAN","ALUR","AMHARIC","ARABIC","ARMENIAN","ASSAMESE","AWADHI","AYMARA","AZERBAIJANI","BALINESE","BAMBARA","BASHKIR","BASQUE","BATAK_KARO","BATAK_SIMALUNGUN","BATAK_TOBA","BELARUSIAN","BEMBA","BENGALI","BETAWI","BHOJPURI","BIKOL","BOSNIAN","BRETON","BULGARIAN","BURMESE","BURYAT","CANTONESE","CATALAN","CEBUANO","CHICHEWA_NYANJA","CHINESE_SIMPLIFIED","CHINESE_TRADITIONAL","CHUVASH","CORSICAN","CRIMEAN_TATAR","CROATIAN","CZECH","DANISH","DINKA","DIVEHI","DOGRI","DOMBE","DUTCH","DZONGKHA","ENGLISH","ESPERANTO","ESTONIAN","EWE","FIJIAN","FILIPINO_TAGALOG","FINNISH","FRENCH","FRENCH_CANADA","FRENCH_FRANCE","FRISIAN","FULFULDE","GA","GALICIAN","GANDA_LUGANDA","GEORGIAN","GERMAN","GREEK","GUARANI","GUJARATI","HAITIAN_CREOLE","HAKHA_CHIN","HAUSA","HAWAIIAN","HEBREW","HILIGAYNON","HINDI","HMONG","HUNGARIAN","HUNSRIK","ICELANDIC","IGBO","ILOKO","INDONESIAN","IRISH","ITALIAN","JAPANESE","JAVANESE","KANNADA","KAPAMPANGAN","KAZAKH","KHMER","KIGA","KINYARWANDA","KITUBA","KONKANI","KOREAN","KRIO","KURMANJI","KYRGYZ","LAO","LATGALIAN","LATIN","LATVIAN","LIGURIAN","LIMBURGAN","LINGALA","LITHUANIAN","LOMBARD","LUO","LUXEMBOURGISH","MACEDONIAN","MAITHILI","MAKASSAR","MALAGASY","MALAY","MALAYALAM","MALAY_JAWI","MALTESE","MAORI","MARATHI","MEADOW_MARI","MEITEILON_MANIPURI","MINANG","MIZO","MONGOLIAN","NDEBELE_SOUTH","NEPALBHASA_NEWARI","NEPALI","NORTHERN_SOTHO","NORWEGIAN","NUER","OCCITAN","ODIA","OROMO","PANGASINAN","PAPIAMENTO","PASHTO","PERSIAN","POLISH","PORTUGUESE","PORTUGUESE_BRAZIL","PORTUGUESE_PORTUGAL","PUNJABI","PUNJABI_SHAHMUKHI","QUECHUA","ROMANI","ROMANIAN","RUNDI","RUSSIAN","SAMOAN","SANGO","SANSKRIT","SCOTS_GAELIC","SERBIAN","SESOTHO","SEYCHELLOIS_CREOLE","SHAN","SHONA","SICILIAN","SILESIAN","SINDHI","SINHALA","SLOVAK","SLOVENIAN","SOMALI","SORANI","SPANISH","SUNDANESE","SWAHILI","SWATI","SWEDISH","TAJIK","TAMIL","TATAR","TELUGU","TETUM","THAI","TIGRINYA","TSONGA","TSWANA","TURKISH","TURKMEN","TWI_AKAN","UKRAINIAN","URDU","UYGHUR","UZBEK","VIETNAMESE","WELSH","XHOSA","YIDDISH","YORUBA","YUCATEC_MAYA","ZULU","Object","entries","forEach","name","code","add"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/supportedLanguages.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=google.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["features/translation/providers/google.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ import { replaceMappedTokens } from "../helpers.js";
4
+ export class TranslationProvider {
5
+ glossaries = {};
6
+ constructor({
7
+ supportedLanguages,
8
+ glossaries = {}
9
+ }) {
10
+ this.supportedLanguages = new Set(supportedLanguages);
11
+ this.glossaries = glossaries;
12
+ }
13
+ isTargetSupported(language) {
14
+ return this.resolveLanguage(language) !== null;
15
+ }
16
+
17
+ /**
18
+ * Returns the provider-supported variant of `language`, falling back to the base
19
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
20
+ * Subclasses may override to add their own resolution (e.g. language names).
21
+ * Returns null when the language cannot be resolved.
22
+ */
23
+ resolveLanguage(language) {
24
+ if (!language) return null;
25
+ if (this.supportedLanguages.has(language)) return language;
26
+ const base = language.split('-')[0];
27
+ if (base !== language && this.supportedLanguages.has(base)) return base;
28
+ return null;
29
+ }
30
+ getSupportedLanguages() {
31
+ return this.supportedLanguages.values();
32
+ }
33
+
34
+ /**
35
+ * Replaces full standalone words in text using a custom glossary for the target language,
36
+ * matching words like "Hello", or "Hej" regardless of case, but not when they appear inside other words.
37
+ */
38
+ applyGlossary(text, targetLanguage) {
39
+ const glossary = this.glossaries[targetLanguage];
40
+ if (!glossary) return text;
41
+ return replaceMappedTokens(text, glossary);
42
+ }
43
+ }
44
+ //# sourceMappingURL=translation.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["replaceMappedTokens","TranslationProvider","glossaries","constructor","supportedLanguages","Set","isTargetSupported","language","resolveLanguage","has","base","split","getSupportedLanguages","values","applyGlossary","text","targetLanguage","glossary"],"sourceRoot":"../../../../../src","sources":["features/translation/providers/translation.interface.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,eAAY;AAWhD,OAAO,MAAeC,mBAAmB,CAAC;EAErBC,UAAU,GAAqB,CAAC,CAAC;EAE1CC,WAAWA,CAAC;IAAEC,kBAAkB;IAAEF,UAAU,GAAG,CAAC;EAA4B,CAAC,EAAE;IACvF,IAAI,CAACE,kBAAkB,GAAG,IAAIC,GAAG,CAACD,kBAAkB,CAAC;IACrD,IAAI,CAACF,UAAU,GAAGA,UAAU;EAC9B;EAaOI,iBAAiBA,CAACC,QAAgB,EAAE;IACzC,OAAO,IAAI,CAACC,eAAe,CAACD,QAAQ,CAAC,KAAK,IAAI;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACSC,eAAeA,CAACD,QAAgB,EAAiB;IACtD,IAAI,CAACA,QAAQ,EAAE,OAAO,IAAI;IAC1B,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACF,QAAQ,CAAC,EAAE,OAAOA,QAAQ;IAC1D,MAAMG,IAAI,GAAGH,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,IAAID,IAAI,KAAKH,QAAQ,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACC,IAAI,CAAC,EAAE,OAAOA,IAAI;IACvE,OAAO,IAAI;EACb;EAEOE,qBAAqBA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAACR,kBAAkB,CAACS,MAAM,CAAC,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACC,IAAY,EAAEC,cAAsB,EAAU;IACjE,MAAMC,QAAQ,GAAG,IAAI,CAACf,UAAU,CAACc,cAAc,CAAC;IAChD,IAAI,CAACC,QAAQ,EAAE,OAAOF,IAAI;IAC1B,OAAOf,mBAAmB,CAACe,IAAI,EAAEE,QAAQ,CAAC;EAC5C;AACF","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["features/translation/types.ts"],"mappings":"","ignoreList":[]}
@@ -5,7 +5,7 @@ export * from "./recording/model/VoiceRecord.model.js";
5
5
  export * from "./recording/modal/VoiceRecordDeleteModal.js";
6
6
  export * from "./recording/modal/VoiceRecordUndoModal.js";
7
7
  export * from "./playing/model/VoicePlayer.model.js";
8
- export * from "./playing/components/VoiceTranscriptionsDropdown.js";
8
+ export * from "./playing/components/VoiceTranscription.js";
9
9
  export * from "./playing/components/VoiceIcon.js";
10
10
  export * from "./constants.js";
11
11
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["features/voice/index.ts"],"mappings":";;AAAA,cAAc,uCAAoC;AAClD,cAAc,wCAAqC;AACnD,cAAc,6CAA0C;AACxD,cAAc,2CAAwC;AAEtD,cAAc,sCAAmC;AACjD,cAAc,qDAAkD;AAEhE,cAAc,mCAAgC;AAC9C,cAAc,gBAAa;AAC3B,cAAc,YAAS","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["features/voice/index.ts"],"mappings":";;AAAA,cAAc,uCAAoC;AAClD,cAAc,wCAAqC;AACnD,cAAc,6CAA0C;AACxD,cAAc,2CAAwC;AAEtD,cAAc,sCAAmC;AACjD,cAAc,4CAAyC;AAEvD,cAAc,mCAAgC;AAC9C,cAAc,gBAAa;AAC3B,cAAc,YAAS","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { COLORS, Loader, LoaderColor, LoaderSize, Typography } from '@magmamath/react-native-ui';
4
+ import React from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const VoiceTranscriptContent = ({
8
+ text,
9
+ isLoading
10
+ }) => {
11
+ if (isLoading) {
12
+ return /*#__PURE__*/_jsx(View, {
13
+ style: styles.loaderContainer,
14
+ children: /*#__PURE__*/_jsx(Loader, {
15
+ size: LoaderSize.SMALL,
16
+ color: LoaderColor.BLUE
17
+ })
18
+ });
19
+ }
20
+ return /*#__PURE__*/_jsx(Typography, {
21
+ variant: "h8",
22
+ style: styles.text,
23
+ children: text
24
+ });
25
+ };
26
+ const styles = StyleSheet.create({
27
+ text: {
28
+ color: COLORS.NEUTRAL_7,
29
+ paddingHorizontal: 8,
30
+ paddingVertical: 8
31
+ },
32
+ loaderContainer: {
33
+ justifyContent: 'center',
34
+ alignItems: 'center',
35
+ paddingVertical: 8
36
+ }
37
+ });
38
+ //# sourceMappingURL=VoiceTranscriptContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["COLORS","Loader","LoaderColor","LoaderSize","Typography","React","StyleSheet","View","jsx","_jsx","VoiceTranscriptContent","text","isLoading","style","styles","loaderContainer","children","size","SMALL","color","BLUE","variant","create","NEUTRAL_7","paddingHorizontal","paddingVertical","justifyContent","alignItems"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscriptContent.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAEC,UAAU,EAAEC,UAAU,QAAQ,4BAA4B;AAChG,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAO/C,OAAO,MAAMC,sBAAsB,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAAuC,CAAC,KAAK;EAC1F,IAAIA,SAAS,EAAE;IACb,oBACEH,IAAA,CAACF,IAAI;MAACM,KAAK,EAAEC,MAAM,CAACC,eAAgB;MAAAC,QAAA,eAClCP,IAAA,CAACR,MAAM;QAACgB,IAAI,EAAEd,UAAU,CAACe,KAAM;QAACC,KAAK,EAAEjB,WAAW,CAACkB;MAAK,CAAE;IAAC,CACvD,CAAC;EAEX;EAEA,oBACEX,IAAA,CAACL,UAAU;IAACiB,OAAO,EAAC,IAAI;IAACR,KAAK,EAAEC,MAAM,CAACH,IAAK;IAAAK,QAAA,EACzCL;EAAI,CACK,CAAC;AAEjB,CAAC;AAED,MAAMG,MAAM,GAAGR,UAAU,CAACgB,MAAM,CAAC;EAC/BX,IAAI,EAAE;IACJQ,KAAK,EAAEnB,MAAM,CAACuB,SAAS;IACvBC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE;EACnB,CAAC;EACDV,eAAe,EAAE;IACfW,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBF,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ import { Typography, COLORS, SPACING } from '@magmamath/react-native-ui';
4
+ import React from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import Animated from 'react-native-reanimated';
7
+ import { VoiceTranscriptionVariant } from "../../types.js";
8
+ import { useText } from "../../../../i18n/i18n.js";
9
+ import { useVoiceTranscriptionController } from "../hooks/useVoiceTranscriptionController.js";
10
+ import { VoiceTranscriptContent } from "./VoiceTranscriptContent.js";
11
+ import { VoiceTranscriptionCollapsible } from "./VoiceTranscriptionCollapsible.js";
12
+ import { VoiceTranscriptionHeaderActions } from "./VoiceTranscriptionHeaderActions.js";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ export const VoiceTranscription = ({
15
+ style,
16
+ model,
17
+ answers,
18
+ attemptOffset,
19
+ attemptsCount,
20
+ problemId,
21
+ variant = VoiceTranscriptionVariant.SMALL
22
+ }) => {
23
+ const t = useText();
24
+ const {
25
+ display,
26
+ flags,
27
+ actions
28
+ } = useVoiceTranscriptionController({
29
+ model,
30
+ answers,
31
+ attemptOffset,
32
+ attemptsCount,
33
+ problemId
34
+ });
35
+ const isLargeVariant = variant === VoiceTranscriptionVariant.LARGE;
36
+ return /*#__PURE__*/_jsxs(Animated.View, {
37
+ style: [styles.container, isLargeVariant ? styles.largeContainer : styles.smallContainer, style],
38
+ children: [/*#__PURE__*/_jsxs(View, {
39
+ style: styles.header,
40
+ children: [/*#__PURE__*/_jsx(Typography, {
41
+ style: styles.title,
42
+ variant: "h7",
43
+ children: t('voice.transcriptions')
44
+ }), flags.anyAttemptHasAudio && /*#__PURE__*/_jsx(VoiceTranscriptionHeaderActions, {
45
+ playerState: flags.playerState,
46
+ isTranslationActive: flags.isTranslationActive,
47
+ canTranslate: flags.canTranslate,
48
+ onPlayPress: actions.onPlayPress,
49
+ onTranslationPress: actions.onTranslationToggle
50
+ })]
51
+ }), isLargeVariant ? /*#__PURE__*/_jsx(VoiceTranscriptContent, {
52
+ text: display.text,
53
+ isLoading: display.isLoading
54
+ }) : /*#__PURE__*/_jsx(VoiceTranscriptionCollapsible, {
55
+ text: display.text,
56
+ isLoading: display.isLoading,
57
+ dropdown: model.dropdown
58
+ })]
59
+ });
60
+ };
61
+ const styles = StyleSheet.create({
62
+ container: {
63
+ padding: 4,
64
+ boxShadow: '0px 1px 3px 0px rgba(51, 51, 51, 0.25)',
65
+ borderRadius: 12,
66
+ backgroundColor: COLORS.NEUTRAL_1,
67
+ overflow: 'hidden'
68
+ },
69
+ // SMALL: floats over the drawing area; consumer-positioned siblings sit
70
+ // beneath it. Absolute positioning is intentional here.
71
+ smallContainer: {
72
+ position: 'absolute',
73
+ top: 56,
74
+ left: SPACING[200],
75
+ width: 222,
76
+ maxHeight: 405,
77
+ minHeight: 51
78
+ },
79
+ // LARGE: rendered as a flex child of the SolutionCard's column flow,
80
+ // between the header and footer. Auto-sizes to whatever space the footer
81
+ // (with or without the playable timeline) leaves — no magic numbers.
82
+ largeContainer: {
83
+ flex: 1,
84
+ marginHorizontal: SPACING[200],
85
+ marginTop: SPACING[200],
86
+ marginBottom: SPACING[200]
87
+ },
88
+ header: {
89
+ flexDirection: 'row',
90
+ justifyContent: 'space-between',
91
+ alignItems: 'center',
92
+ padding: 4,
93
+ marginBottom: 4,
94
+ height: 32
95
+ },
96
+ title: {
97
+ color: COLORS.NEUTRAL_9,
98
+ marginLeft: 4
99
+ }
100
+ });
101
+ //# sourceMappingURL=VoiceTranscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Typography","COLORS","SPACING","React","StyleSheet","View","Animated","VoiceTranscriptionVariant","useText","useVoiceTranscriptionController","VoiceTranscriptContent","VoiceTranscriptionCollapsible","VoiceTranscriptionHeaderActions","jsx","_jsx","jsxs","_jsxs","VoiceTranscription","style","model","answers","attemptOffset","attemptsCount","problemId","variant","SMALL","t","display","flags","actions","isLargeVariant","LARGE","styles","container","largeContainer","smallContainer","children","header","title","anyAttemptHasAudio","playerState","isTranslationActive","canTranslate","onPlayPress","onTranslationPress","onTranslationToggle","text","isLoading","dropdown","create","padding","boxShadow","borderRadius","backgroundColor","NEUTRAL_1","overflow","position","top","left","width","maxHeight","minHeight","flex","marginHorizontal","marginTop","marginBottom","flexDirection","justifyContent","alignItems","height","color","NEUTRAL_9","marginLeft"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscription.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,EAAEC,OAAO,QAAQ,4BAA4B;AACxE,OAAOC,KAAK,MAAM,OAAO;AACzB,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AACrE,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAAsBC,yBAAyB,QAAQ,gBAAa;AACpE,SAASC,OAAO,QAAQ,0BAAuB;AAC/C,SAASC,+BAA+B,QAAQ,6CAA0C;AAE1F,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,6BAA6B,QAAQ,oCAAiC;AAC/E,SAASC,+BAA+B,QAAQ,sCAAmC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYnF,OAAO,MAAMC,kBAAkB,GAAGA,CAAC;EACjCC,KAAK;EACLC,KAAK;EACLC,OAAO;EACPC,aAAa;EACbC,aAAa;EACbC,SAAS;EACTC,OAAO,GAAGjB,yBAAyB,CAACkB;AACb,CAAC,KAAK;EAC7B,MAAMC,CAAC,GAAGlB,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEmB,OAAO;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGpB,+BAA+B,CAAC;IAClEU,KAAK;IACLC,OAAO;IACPC,aAAa;IACbC,aAAa;IACbC;EACF,CAAC,CAAC;EACF,MAAMO,cAAc,GAAGN,OAAO,KAAKjB,yBAAyB,CAACwB,KAAK;EAElE,oBACEf,KAAA,CAACV,QAAQ,CAACD,IAAI;IACZa,KAAK,EAAE,CACLc,MAAM,CAACC,SAAS,EAChBH,cAAc,GAAGE,MAAM,CAACE,cAAc,GAAGF,MAAM,CAACG,cAAc,EAC9DjB,KAAK,CACL;IAAAkB,QAAA,gBAEFpB,KAAA,CAACX,IAAI;MAACa,KAAK,EAAEc,MAAM,CAACK,MAAO;MAAAD,QAAA,gBACzBtB,IAAA,CAACd,UAAU;QAACkB,KAAK,EAAEc,MAAM,CAACM,KAAM;QAACd,OAAO,EAAC,IAAI;QAAAY,QAAA,EAC1CV,CAAC,CAAC,sBAAsB;MAAC,CAChB,CAAC,EACZE,KAAK,CAACW,kBAAkB,iBACvBzB,IAAA,CAACF,+BAA+B;QAC9B4B,WAAW,EAAEZ,KAAK,CAACY,WAAY;QAC/BC,mBAAmB,EAAEb,KAAK,CAACa,mBAAoB;QAC/CC,YAAY,EAAEd,KAAK,CAACc,YAAa;QACjCC,WAAW,EAAEd,OAAO,CAACc,WAAY;QACjCC,kBAAkB,EAAEf,OAAO,CAACgB;MAAoB,CACjD,CACF;IAAA,CACG,CAAC,EAENf,cAAc,gBACbhB,IAAA,CAACJ,sBAAsB;MAACoC,IAAI,EAAEnB,OAAO,CAACmB,IAAK;MAACC,SAAS,EAAEpB,OAAO,CAACoB;IAAU,CAAE,CAAC,gBAE5EjC,IAAA,CAACH,6BAA6B;MAC5BmC,IAAI,EAAEnB,OAAO,CAACmB,IAAK;MACnBC,SAAS,EAAEpB,OAAO,CAACoB,SAAU;MAC7BC,QAAQ,EAAE7B,KAAK,CAAC6B;IAAS,CAC1B,CACF;EAAA,CACY,CAAC;AAEpB,CAAC;AAED,MAAMhB,MAAM,GAAG5B,UAAU,CAAC6C,MAAM,CAAC;EAC/BhB,SAAS,EAAE;IACTiB,OAAO,EAAE,CAAC;IACVC,SAAS,EAAE,wCAAwC;IACnDC,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAEpD,MAAM,CAACqD,SAAS;IACjCC,QAAQ,EAAE;EACZ,CAAC;EACD;EACA;EACApB,cAAc,EAAE;IACdqB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,EAAE;IACPC,IAAI,EAAExD,OAAO,CAAC,GAAG,CAAC;IAClByD,KAAK,EAAE,GAAG;IACVC,SAAS,EAAE,GAAG;IACdC,SAAS,EAAE;EACb,CAAC;EACD;EACA;EACA;EACA3B,cAAc,EAAE;IACd4B,IAAI,EAAE,CAAC;IACPC,gBAAgB,EAAE7D,OAAO,CAAC,GAAG,CAAC;IAC9B8D,SAAS,EAAE9D,OAAO,CAAC,GAAG,CAAC;IACvB+D,YAAY,EAAE/D,OAAO,CAAC,GAAG;EAC3B,CAAC;EACDmC,MAAM,EAAE;IACN6B,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBlB,OAAO,EAAE,CAAC;IACVe,YAAY,EAAE,CAAC;IACfI,MAAM,EAAE;EACV,CAAC;EACD/B,KAAK,EAAE;IACLgC,KAAK,EAAErE,MAAM,CAACsE,SAAS;IACvBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import { CaretDownIcon } from '@magmamath/react-native-ui';
4
+ import React, { useCallback } from 'react';
5
+ import { StyleSheet, TouchableOpacity, View } from 'react-native';
6
+ import Animated from 'react-native-reanimated';
7
+ import { useDropdownAnimation } from "../hooks/useDropdownAnimation.js";
8
+ import { VoiceTranscriptContent } from "./VoiceTranscriptContent.js";
9
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity);
11
+ export const VoiceTranscriptionCollapsible = ({
12
+ text,
13
+ isLoading,
14
+ dropdown
15
+ }) => {
16
+ const {
17
+ listAnimatedStyle,
18
+ iconAnimatedStyle,
19
+ onListLayout
20
+ } = useDropdownAnimation(dropdown);
21
+ const handleToggle = useCallback(() => {
22
+ dropdown.toggleExpand();
23
+ }, [dropdown]);
24
+ return /*#__PURE__*/_jsxs(_Fragment, {
25
+ children: [/*#__PURE__*/_jsx(Animated.View, {
26
+ style: [listAnimatedStyle, styles.collapsibleContent],
27
+ children: /*#__PURE__*/_jsx(View, {
28
+ onLayout: onListLayout,
29
+ style: styles.transcriptContainer,
30
+ children: /*#__PURE__*/_jsx(VoiceTranscriptContent, {
31
+ text: text,
32
+ isLoading: isLoading
33
+ })
34
+ })
35
+ }), /*#__PURE__*/_jsx(AnimatedTouchableOpacity, {
36
+ style: [styles.expandButton, iconAnimatedStyle],
37
+ onPress: handleToggle,
38
+ children: /*#__PURE__*/_jsx(CaretDownIcon, {
39
+ size: 22
40
+ })
41
+ })]
42
+ });
43
+ };
44
+ const styles = StyleSheet.create({
45
+ collapsibleContent: {
46
+ overflow: 'hidden'
47
+ },
48
+ transcriptContainer: {
49
+ position: 'absolute',
50
+ width: '100%',
51
+ paddingHorizontal: 4
52
+ },
53
+ expandButton: {
54
+ justifyContent: 'center',
55
+ alignItems: 'center'
56
+ }
57
+ });
58
+ //# sourceMappingURL=VoiceTranscriptionCollapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CaretDownIcon","React","useCallback","StyleSheet","TouchableOpacity","View","Animated","useDropdownAnimation","VoiceTranscriptContent","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedTouchableOpacity","createAnimatedComponent","VoiceTranscriptionCollapsible","text","isLoading","dropdown","listAnimatedStyle","iconAnimatedStyle","onListLayout","handleToggle","toggleExpand","children","style","styles","collapsibleContent","onLayout","transcriptContainer","expandButton","onPress","size","create","overflow","position","width","paddingHorizontal","justifyContent","alignItems"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscriptionCollapsible.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,UAAU,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AACjE,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,oBAAoB,QAAQ,kCAA+B;AAEpE,SAASC,sBAAsB,QAAQ,6BAA0B;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjE,MAAMC,wBAAwB,GAAGT,QAAQ,CAACU,uBAAuB,CAACZ,gBAAgB,CAAC;AAQnF,OAAO,MAAMa,6BAA6B,GAAGA,CAAC;EAC5CC,IAAI;EACJC,SAAS;EACTC;AACkC,CAAC,KAAK;EACxC,MAAM;IAAEC,iBAAiB;IAAEC,iBAAiB;IAAEC;EAAa,CAAC,GAC1DhB,oBAAoB,CAACa,QAAQ,CAAC;EAEhC,MAAMI,YAAY,GAAGtB,WAAW,CAAC,MAAM;IACrCkB,QAAQ,CAACK,YAAY,CAAC,CAAC;EACzB,CAAC,EAAE,CAACL,QAAQ,CAAC,CAAC;EAEd,oBACEN,KAAA,CAAAF,SAAA;IAAAc,QAAA,gBACEhB,IAAA,CAACJ,QAAQ,CAACD,IAAI;MAACsB,KAAK,EAAE,CAACN,iBAAiB,EAAEO,MAAM,CAACC,kBAAkB,CAAE;MAAAH,QAAA,eACnEhB,IAAA,CAACL,IAAI;QAACyB,QAAQ,EAAEP,YAAa;QAACI,KAAK,EAAEC,MAAM,CAACG,mBAAoB;QAAAL,QAAA,eAC9DhB,IAAA,CAACF,sBAAsB;UAACU,IAAI,EAAEA,IAAK;UAACC,SAAS,EAAEA;QAAU,CAAE;MAAC,CACxD;IAAC,CACM,CAAC,eAChBT,IAAA,CAACK,wBAAwB;MACvBY,KAAK,EAAE,CAACC,MAAM,CAACI,YAAY,EAAEV,iBAAiB,CAAE;MAChDW,OAAO,EAAET,YAAa;MAAAE,QAAA,eAEtBhB,IAAA,CAACV,aAAa;QAACkC,IAAI,EAAE;MAAG,CAAE;IAAC,CACH,CAAC;EAAA,CAC3B,CAAC;AAEP,CAAC;AAED,MAAMN,MAAM,GAAGzB,UAAU,CAACgC,MAAM,CAAC;EAC/BN,kBAAkB,EAAE;IAClBO,QAAQ,EAAE;EACZ,CAAC;EACDL,mBAAmB,EAAE;IACnBM,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE,MAAM;IACbC,iBAAiB,EAAE;EACrB,CAAC;EACDP,YAAY,EAAE;IACZQ,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import { Button, COLORS, GlobeIcon, SPACING } from '@magmamath/react-native-ui';
4
+ import React from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { ColorScheme } from "../../../chatbot/types/style.types.js";
7
+ import { PlayButton } from "../../../../shared/components/PlayButton.js";
8
+ import { PlayerState } from "../model/index.js";
9
+ import { getAudioStatus } from "../../helpers.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export const VoiceTranscriptionHeaderActions = ({
12
+ playerState,
13
+ isTranslationActive,
14
+ canTranslate,
15
+ onPlayPress,
16
+ onTranslationPress
17
+ }) => {
18
+ const playButtonState = {
19
+ isActive: playerState !== PlayerState.IDLE,
20
+ isLoading: playerState === PlayerState.LOADING,
21
+ status: getAudioStatus(playerState)
22
+ };
23
+ return /*#__PURE__*/_jsxs(View, {
24
+ style: styles.container,
25
+ children: [/*#__PURE__*/_jsx(PlayButton, {
26
+ state: playButtonState,
27
+ onPress: onPlayPress,
28
+ activityIndicatorColor: COLORS.NEUTRAL_1,
29
+ colorScheme: ColorScheme.Yellow
30
+ }), canTranslate && /*#__PURE__*/_jsx(Button, {
31
+ variant: "secondary",
32
+ size: "small",
33
+ colorScheme: ColorScheme.Yellow,
34
+ isActive: isTranslationActive,
35
+ onPress: onTranslationPress,
36
+ icon: /*#__PURE__*/_jsx(GlobeIcon, {
37
+ color: isTranslationActive ? COLORS.NEUTRAL_1 : COLORS.NEUTRAL_9
38
+ })
39
+ })]
40
+ });
41
+ };
42
+ const styles = StyleSheet.create({
43
+ container: {
44
+ flexDirection: 'row',
45
+ alignItems: 'center',
46
+ gap: SPACING[200]
47
+ },
48
+ hidden: {
49
+ opacity: 0
50
+ }
51
+ });
52
+ //# sourceMappingURL=VoiceTranscriptionHeaderActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Button","COLORS","GlobeIcon","SPACING","React","StyleSheet","View","ColorScheme","PlayButton","PlayerState","getAudioStatus","jsx","_jsx","jsxs","_jsxs","VoiceTranscriptionHeaderActions","playerState","isTranslationActive","canTranslate","onPlayPress","onTranslationPress","playButtonState","isActive","IDLE","isLoading","LOADING","status","style","styles","container","children","state","onPress","activityIndicatorColor","NEUTRAL_1","colorScheme","Yellow","variant","size","icon","color","NEUTRAL_9","create","flexDirection","alignItems","gap","hidden","opacity"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscriptionHeaderActions.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAEC,OAAO,QAAQ,4BAA4B;AAC/E,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,WAAW,QAAQ,uCAAoC;AAChE,SAASC,UAAU,QAAQ,6CAA0C;AACrE,SAASC,WAAW,QAAQ,mBAAU;AACtC,SAASC,cAAc,QAAQ,kBAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAU9C,OAAO,MAAMC,+BAA+B,GAAGA,CAAC;EAC9CC,WAAW;EACXC,mBAAmB;EACnBC,YAAY;EACZC,WAAW;EACXC;AACqC,CAAC,KAAK;EAC3C,MAAMC,eAAe,GAAG;IACtBC,QAAQ,EAAEN,WAAW,KAAKP,WAAW,CAACc,IAAI;IAC1CC,SAAS,EAAER,WAAW,KAAKP,WAAW,CAACgB,OAAO;IAC9CC,MAAM,EAAEhB,cAAc,CAACM,WAAW;EACpC,CAAC;EAED,oBACEF,KAAA,CAACR,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBAC5BlB,IAAA,CAACJ,UAAU;MACTuB,KAAK,EAAEV,eAAgB;MACvBW,OAAO,EAAEb,WAAY;MACrBc,sBAAsB,EAAEhC,MAAM,CAACiC,SAAU;MACzCC,WAAW,EAAE5B,WAAW,CAAC6B;IAAO,CACjC,CAAC,EACDlB,YAAY,iBACXN,IAAA,CAACZ,MAAM;MACLqC,OAAO,EAAC,WAAW;MACnBC,IAAI,EAAC,OAAO;MACZH,WAAW,EAAE5B,WAAW,CAAC6B,MAAO;MAChCd,QAAQ,EAAEL,mBAAoB;MAC9Be,OAAO,EAAEZ,kBAAmB;MAC5BmB,IAAI,eAAE3B,IAAA,CAACV,SAAS;QAACsC,KAAK,EAAEvB,mBAAmB,GAAGhB,MAAM,CAACiC,SAAS,GAAGjC,MAAM,CAACwC;MAAU,CAAE;IAAE,CACvF,CACF;EAAA,CACG,CAAC;AAEX,CAAC;AAED,MAAMb,MAAM,GAAGvB,UAAU,CAACqC,MAAM,CAAC;EAC/Bb,SAAS,EAAE;IACTc,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE1C,OAAO,CAAC,GAAG;EAClB,CAAC;EACD2C,MAAM,EAAE;IACNC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -4,15 +4,16 @@ import { useEffect } from 'react';
4
4
  import { useUnit } from 'effector-react';
5
5
  import { useAnimatedStyle, useSharedValue, withTiming, interpolate } from 'react-native-reanimated';
6
6
  import { DROPDOWN_MAX_CONTENT_HEIGHT } from "../../constants.js";
7
- export const useVoiceTranscriptionsDropdown = model => {
7
+ export const useDropdownAnimation = model => {
8
8
  const isExpanded = useUnit(model.$isExpanded);
9
9
  const contentHeight = useSharedValue(0);
10
10
  const animationProgress = useSharedValue(isExpanded ? 1 : 0);
11
11
  const onListLayout = event => {
12
12
  const measuredHeight = event.nativeEvent.layout.height;
13
- if (measuredHeight > 0) {
14
- contentHeight.value = measuredHeight;
15
- }
13
+ if (measuredHeight <= 0) return;
14
+ contentHeight.value = contentHeight.value === 0 ? measuredHeight : withTiming(measuredHeight, {
15
+ duration: 180
16
+ });
16
17
  };
17
18
  const listAnimatedStyle = useAnimatedStyle(() => {
18
19
  const height = interpolate(animationProgress.value, [0, 1], [0, contentHeight.value || DROPDOWN_MAX_CONTENT_HEIGHT]);
@@ -42,4 +43,4 @@ export const useVoiceTranscriptionsDropdown = model => {
42
43
  onListLayout
43
44
  };
44
45
  };
45
- //# sourceMappingURL=useVoiceTranscriptionsDropdown.js.map
46
+ //# sourceMappingURL=useDropdownAnimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useUnit","useAnimatedStyle","useSharedValue","withTiming","interpolate","DROPDOWN_MAX_CONTENT_HEIGHT","useDropdownAnimation","model","isExpanded","$isExpanded","contentHeight","animationProgress","onListLayout","event","measuredHeight","nativeEvent","layout","height","value","duration","listAnimatedStyle","opacity","iconAnimatedStyle","rotation","transform","rotate"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/hooks/useDropdownAnimation.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,gBAAgB,EAAEC,cAAc,EAAEC,UAAU,EAAEC,WAAW,QAAQ,yBAAyB;AAEnG,SAASC,2BAA2B,QAAQ,oBAAiB;AAG7D,OAAO,MAAMC,oBAAoB,GAAIC,KAAoB,IAAK;EAC5D,MAAMC,UAAU,GAAGR,OAAO,CAACO,KAAK,CAACE,WAAW,CAAC;EAE7C,MAAMC,aAAa,GAAGR,cAAc,CAAC,CAAC,CAAC;EACvC,MAAMS,iBAAiB,GAAGT,cAAc,CAACM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;EAE5D,MAAMI,YAAY,GAAIC,KAAwB,IAAK;IACjD,MAAMC,cAAc,GAAGD,KAAK,CAACE,WAAW,CAACC,MAAM,CAACC,MAAM;IACtD,IAAIH,cAAc,IAAI,CAAC,EAAE;IACzBJ,aAAa,CAACQ,KAAK,GACjBR,aAAa,CAACQ,KAAK,KAAK,CAAC,GAAGJ,cAAc,GAAGX,UAAU,CAACW,cAAc,EAAE;MAAEK,QAAQ,EAAE;IAAI,CAAC,CAAC;EAC9F,CAAC;EAED,MAAMC,iBAAiB,GAAGnB,gBAAgB,CAAC,MAAM;IAC/C,MAAMgB,MAAM,GAAGb,WAAW,CACxBO,iBAAiB,CAACO,KAAK,EACvB,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAER,aAAa,CAACQ,KAAK,IAAIb,2BAA2B,CACxD,CAAC;IAED,MAAMgB,OAAO,GAAGjB,WAAW,CAACO,iBAAiB,CAACO,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;MACLD,MAAM;MACNI;IACF,CAAC;EACH,CAAC,EAAE,CAACV,iBAAiB,EAAED,aAAa,CAAC,CAAC;EAEtC,MAAMY,iBAAiB,GAAGrB,gBAAgB,CAAC,MAAM;IAC/C,MAAMsB,QAAQ,GAAGnB,WAAW,CAACO,iBAAiB,CAACO,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEvE,OAAO;MACLM,SAAS,EAAE,CAAC;QAAEC,MAAM,EAAE,GAAGF,QAAQ;MAAM,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,CAACZ,iBAAiB,CAAC,CAAC;EAEvBZ,SAAS,CAAC,MAAM;IACdY,iBAAiB,CAACO,KAAK,GAAGf,UAAU,CAACK,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE;MAAEW,QAAQ,EAAE;IAAI,CAAC,CAAC;EAC7E,CAAC,EAAE,CAACX,UAAU,EAAEG,iBAAiB,CAAC,CAAC;EAEnC,OAAO;IACLH,UAAU;IACVY,iBAAiB;IACjBE,iBAAiB;IACjBV;EACF,CAAC;AACH,CAAC","ignoreList":[]}