@dxos/plugin-transcription 0.8.1 → 0.8.2-main.10c050d

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 (258) hide show
  1. package/dist/lib/browser/TranscriptContainer-PFKLKRPQ.mjs +11 -0
  2. package/dist/lib/browser/{chunk-YCZISX63.mjs → chunk-4KCUYW2F.mjs} +139 -95
  3. package/dist/lib/browser/chunk-4KCUYW2F.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-6ZR5MDK3.mjs → chunk-GOF7MJNV.mjs} +3 -3
  5. package/dist/lib/browser/{chunk-6ZR5MDK3.mjs.map → chunk-GOF7MJNV.mjs.map} +1 -1
  6. package/dist/lib/browser/{chunk-K7FOYAXO.mjs → chunk-IGEKO7ZU.mjs} +2 -2
  7. package/dist/lib/browser/chunk-NODIXNQP.mjs +54 -0
  8. package/dist/lib/browser/chunk-NODIXNQP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-TJPJBE45.mjs +764 -0
  10. package/dist/lib/browser/chunk-TJPJBE45.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-YEPT334A.mjs → chunk-W2KNYJD6.mjs} +4 -4
  12. package/dist/lib/browser/chunk-W2KNYJD6.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +30 -216
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/{intent-resolver-4R66ZCKT.mjs → intent-resolver-I2LJSQDR.mjs} +7 -11
  16. package/dist/lib/browser/intent-resolver-I2LJSQDR.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-FQUHU5G7.mjs → react-surface-ID2MLJHZ.mjs} +11 -9
  19. package/dist/lib/browser/react-surface-ID2MLJHZ.mjs.map +7 -0
  20. package/dist/lib/browser/transcriber-NA7CIFIT.mjs +56 -0
  21. package/dist/lib/browser/transcriber-NA7CIFIT.mjs.map +7 -0
  22. package/dist/lib/browser/types/index.mjs +4 -8
  23. package/dist/lib/node/{TranscriptContainer-QEYTTT2V.cjs → TranscriptContainer-LHMC7553.cjs} +9 -8
  24. package/dist/lib/node/TranscriptContainer-LHMC7553.cjs.map +7 -0
  25. package/dist/lib/node/chunk-3GS5UNO5.cjs +778 -0
  26. package/dist/lib/node/chunk-3GS5UNO5.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-LP4FG423.cjs → chunk-5J3FBCON.cjs} +5 -5
  28. package/dist/lib/node/{chunk-NVZWGFJL.cjs → chunk-AFUZI63A.cjs} +6 -6
  29. package/dist/lib/node/{chunk-NVZWGFJL.cjs.map → chunk-AFUZI63A.cjs.map} +1 -1
  30. package/dist/lib/node/chunk-EIMUQYCZ.cjs +74 -0
  31. package/dist/lib/node/chunk-EIMUQYCZ.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-CZMLKKWT.cjs → chunk-FKDJNJ57.cjs} +8 -8
  33. package/dist/lib/node/chunk-FKDJNJ57.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-FCCJALOT.cjs → chunk-ZFTXJZXH.cjs} +138 -95
  35. package/dist/lib/node/chunk-ZFTXJZXH.cjs.map +7 -0
  36. package/dist/lib/node/index.cjs +59 -251
  37. package/dist/lib/node/index.cjs.map +4 -4
  38. package/dist/lib/node/{intent-resolver-WMMCOUEH.cjs → intent-resolver-LLMGF5I5.cjs} +10 -11
  39. package/dist/lib/node/intent-resolver-LLMGF5I5.cjs.map +7 -0
  40. package/dist/lib/node/meta.json +1 -1
  41. package/dist/lib/node/{react-surface-WI2MGWCC.cjs → react-surface-SEQLEL4K.cjs} +13 -11
  42. package/dist/lib/node/react-surface-SEQLEL4K.cjs.map +7 -0
  43. package/dist/lib/node/transcriber-RKKN7LDU.cjs +68 -0
  44. package/dist/lib/node/transcriber-RKKN7LDU.cjs.map +7 -0
  45. package/dist/lib/node/types/index.cjs +7 -11
  46. package/dist/lib/node/types/index.cjs.map +2 -2
  47. package/dist/lib/node-esm/{TranscriptContainer-ZXUCOWGY.mjs → TranscriptContainer-DLNRFVTA.mjs} +4 -3
  48. package/dist/lib/node-esm/chunk-BRPFVRAD.mjs +55 -0
  49. package/dist/lib/node-esm/chunk-BRPFVRAD.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-YQYBLFNI.mjs → chunk-EFIWBQDF.mjs} +139 -95
  51. package/dist/lib/node-esm/chunk-EFIWBQDF.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-J4D2RBBH.mjs → chunk-KUWWHMOA.mjs} +2 -2
  53. package/dist/lib/node-esm/{chunk-PTZHDZ36.mjs → chunk-MFJPEIVB.mjs} +4 -4
  54. package/dist/lib/node-esm/chunk-MFJPEIVB.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-PR7EYODX.mjs +765 -0
  56. package/dist/lib/node-esm/chunk-PR7EYODX.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-X4DDJIVL.mjs → chunk-TXMDLLBR.mjs} +3 -3
  58. package/dist/lib/node-esm/{chunk-X4DDJIVL.mjs.map → chunk-TXMDLLBR.mjs.map} +1 -1
  59. package/dist/lib/node-esm/index.mjs +30 -216
  60. package/dist/lib/node-esm/index.mjs.map +4 -4
  61. package/dist/lib/node-esm/{intent-resolver-QN2LO5TX.mjs → intent-resolver-WOZKOEBW.mjs} +7 -11
  62. package/dist/lib/node-esm/intent-resolver-WOZKOEBW.mjs.map +7 -0
  63. package/dist/lib/node-esm/meta.json +1 -1
  64. package/dist/lib/node-esm/{react-surface-PCH6NTVB.mjs → react-surface-7MXUUTAL.mjs} +11 -9
  65. package/dist/lib/node-esm/react-surface-7MXUUTAL.mjs.map +7 -0
  66. package/dist/lib/node-esm/transcriber-5WSI6DYK.mjs +57 -0
  67. package/dist/lib/node-esm/transcriber-5WSI6DYK.mjs.map +7 -0
  68. package/dist/lib/node-esm/types/index.mjs +4 -8
  69. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  70. package/dist/types/src/capabilities/capabilities.d.ts +8 -10
  71. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/index.d.ts +2 -183
  73. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  75. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  76. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/transcriber.d.ts +2 -1
  78. package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
  79. package/dist/types/src/components/Transcript/Transcript.d.ts +14 -4
  80. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  81. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +19 -4
  82. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +27 -0
  84. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -0
  85. package/dist/types/src/components/Transcript/transcript-extension.d.ts +19 -0
  86. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -0
  87. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/stories/FileTranscription.stories.d.ts +17 -0
  89. package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +10 -0
  91. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -0
  92. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +19 -0
  93. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -0
  94. package/dist/types/src/components/stories/TranscriptionStory.d.ts +11 -0
  95. package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -0
  96. package/dist/types/src/components/stories/useIsSpeaking.d.ts +3 -0
  97. package/dist/types/src/components/stories/useIsSpeaking.d.ts.map +1 -0
  98. package/dist/types/src/hooks/index.d.ts +1 -0
  99. package/dist/types/src/hooks/index.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useAudioFile.d.ts +1 -1
  101. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  102. package/dist/types/src/hooks/useAudioTrack.d.ts +1 -1
  103. package/dist/types/src/hooks/useAudioTrack.d.ts.map +1 -1
  104. package/dist/types/src/hooks/useQueueModelAdapter.d.ts +7 -0
  105. package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -0
  106. package/dist/types/src/hooks/useTranscriber.d.ts +1 -1
  107. package/dist/types/src/hooks/useTranscriber.d.ts.map +1 -1
  108. package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
  109. package/dist/types/src/model/index.d.ts +2 -0
  110. package/dist/types/src/model/index.d.ts.map +1 -0
  111. package/dist/types/src/model/model.d.ts +68 -0
  112. package/dist/types/src/model/model.d.ts.map +1 -0
  113. package/dist/types/src/model/model.test.d.ts +2 -0
  114. package/dist/types/src/model/model.test.d.ts.map +1 -0
  115. package/dist/types/src/segments-normalization/index.d.ts +4 -0
  116. package/dist/types/src/segments-normalization/index.d.ts.map +1 -0
  117. package/dist/types/src/segments-normalization/message-normalizer.d.ts +26 -0
  118. package/dist/types/src/segments-normalization/message-normalizer.d.ts.map +1 -0
  119. package/dist/types/src/segments-normalization/normalization.d.ts +520 -0
  120. package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -0
  121. package/dist/types/src/segments-normalization/normalization.test.d.ts +2 -0
  122. package/dist/types/src/segments-normalization/normalization.test.d.ts.map +1 -0
  123. package/dist/types/src/segments-normalization/utils.d.ts +3 -0
  124. package/dist/types/src/segments-normalization/utils.d.ts.map +1 -0
  125. package/dist/types/src/testing/index.d.ts +2 -0
  126. package/dist/types/src/testing/index.d.ts.map +1 -0
  127. package/dist/types/src/testing/testing.d.ts +40 -0
  128. package/dist/types/src/testing/testing.d.ts.map +1 -0
  129. package/dist/types/src/transcriber/media-stream-recorder.d.ts +8 -5
  130. package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +1 -1
  131. package/dist/types/src/transcriber/transcriber.browser.test.d.ts +2 -0
  132. package/dist/types/src/transcriber/transcriber.browser.test.d.ts.map +1 -0
  133. package/dist/types/src/transcriber/transcriber.d.ts +6 -2
  134. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  135. package/dist/types/src/transcriber/transcription-manager.d.ts +19 -15
  136. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  137. package/dist/types/src/translations.d.ts +3 -20
  138. package/dist/types/src/translations.d.ts.map +1 -1
  139. package/dist/types/src/types/schema.d.ts +23 -40
  140. package/dist/types/src/types/schema.d.ts.map +1 -1
  141. package/dist/types/src/types/types.d.ts +15 -8
  142. package/dist/types/src/types/types.d.ts.map +1 -1
  143. package/dist/types/src/util/array.d.ts.map +1 -1
  144. package/dist/types/src/util/get-time-str.d.ts.map +1 -1
  145. package/dist/types/src/util/index.d.ts +0 -1
  146. package/dist/types/src/util/index.d.ts.map +1 -1
  147. package/dist/types/src/util/monitor-audio-level.d.ts.map +1 -1
  148. package/dist/types/tsconfig.tsbuildinfo +1 -1
  149. package/package.json +62 -41
  150. package/src/TranscriptionPlugin.tsx +13 -18
  151. package/src/capabilities/capabilities.ts +15 -8
  152. package/src/capabilities/index.ts +0 -2
  153. package/src/capabilities/intent-resolver.ts +7 -8
  154. package/src/capabilities/react-surface.tsx +5 -4
  155. package/src/capabilities/transcriber.ts +34 -6
  156. package/src/components/Transcript/Transcript.stories.tsx +201 -43
  157. package/src/components/Transcript/Transcript.tsx +83 -208
  158. package/src/components/Transcript/deprecated/OldTranscript.tsx +260 -0
  159. package/src/components/Transcript/transcript-extension.ts +236 -0
  160. package/src/components/TranscriptContainer.tsx +11 -6
  161. package/src/components/stories/FileTranscription.stories.tsx +240 -0
  162. package/src/components/stories/KeyWordRecognition.stories.tsx +128 -0
  163. package/src/components/stories/MicrophoneTranscription.stories.tsx +274 -0
  164. package/src/components/stories/TranscriptionStory.tsx +41 -0
  165. package/src/components/stories/useIsSpeaking.tsx +40 -0
  166. package/src/hooks/index.ts +1 -0
  167. package/src/hooks/useAudioFile.ts +39 -9
  168. package/src/hooks/useAudioTrack.ts +2 -2
  169. package/src/hooks/useQueueModelAdapter.ts +65 -0
  170. package/src/hooks/useTranscriber.ts +4 -2
  171. package/src/meta.ts +2 -2
  172. package/src/model/index.ts +5 -0
  173. package/src/model/model.test.ts +169 -0
  174. package/src/model/model.ts +229 -0
  175. package/src/segments-normalization/index.ts +7 -0
  176. package/src/segments-normalization/message-normalizer.ts +108 -0
  177. package/src/segments-normalization/normalization.test.ts +142 -0
  178. package/src/segments-normalization/normalization.ts +103 -0
  179. package/src/segments-normalization/utils.ts +9 -0
  180. package/src/testing/index.ts +5 -0
  181. package/src/testing/testing.ts +216 -0
  182. package/src/transcriber/media-stream-recorder.ts +14 -7
  183. package/src/transcriber/{transcriber.test.ts → transcriber.browser.test.ts} +7 -7
  184. package/src/transcriber/transcriber.ts +33 -20
  185. package/src/transcriber/transcription-manager.ts +87 -71
  186. package/src/translations.ts +2 -3
  187. package/src/types/schema.ts +11 -33
  188. package/src/types/types.ts +8 -12
  189. package/src/util/index.ts +0 -1
  190. package/dist/lib/browser/TranscriptContainer-JQ3HFHLQ.mjs +0 -10
  191. package/dist/lib/browser/app-graph-builder-VDQOVX7P.mjs +0 -191
  192. package/dist/lib/browser/app-graph-builder-VDQOVX7P.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-G4B6CPC2.mjs +0 -253
  194. package/dist/lib/browser/chunk-G4B6CPC2.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-GU2BNYKZ.mjs +0 -35
  196. package/dist/lib/browser/chunk-GU2BNYKZ.mjs.map +0 -7
  197. package/dist/lib/browser/chunk-OGNXNGJB.mjs +0 -73
  198. package/dist/lib/browser/chunk-OGNXNGJB.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-YCZISX63.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-YEPT334A.mjs.map +0 -7
  201. package/dist/lib/browser/intent-resolver-4R66ZCKT.mjs.map +0 -7
  202. package/dist/lib/browser/meeting-transcription-state-DLFHQK72.mjs +0 -18
  203. package/dist/lib/browser/meeting-transcription-state-DLFHQK72.mjs.map +0 -7
  204. package/dist/lib/browser/react-surface-FQUHU5G7.mjs.map +0 -7
  205. package/dist/lib/browser/transcriber-LGMIWDYI.mjs +0 -36
  206. package/dist/lib/browser/transcriber-LGMIWDYI.mjs.map +0 -7
  207. package/dist/lib/node/TranscriptContainer-QEYTTT2V.cjs.map +0 -7
  208. package/dist/lib/node/app-graph-builder-IFSIVNUR.cjs +0 -200
  209. package/dist/lib/node/app-graph-builder-IFSIVNUR.cjs.map +0 -7
  210. package/dist/lib/node/chunk-3KHUSQNW.cjs +0 -55
  211. package/dist/lib/node/chunk-3KHUSQNW.cjs.map +0 -7
  212. package/dist/lib/node/chunk-CZMLKKWT.cjs.map +0 -7
  213. package/dist/lib/node/chunk-FCCJALOT.cjs.map +0 -7
  214. package/dist/lib/node/chunk-P4VVD6ZO.cjs +0 -95
  215. package/dist/lib/node/chunk-P4VVD6ZO.cjs.map +0 -7
  216. package/dist/lib/node/chunk-UOFHT4GZ.cjs +0 -280
  217. package/dist/lib/node/chunk-UOFHT4GZ.cjs.map +0 -7
  218. package/dist/lib/node/intent-resolver-WMMCOUEH.cjs.map +0 -7
  219. package/dist/lib/node/meeting-transcription-state-URIYILEQ.cjs +0 -34
  220. package/dist/lib/node/meeting-transcription-state-URIYILEQ.cjs.map +0 -7
  221. package/dist/lib/node/react-surface-WI2MGWCC.cjs.map +0 -7
  222. package/dist/lib/node/transcriber-QG5WPKX4.cjs +0 -49
  223. package/dist/lib/node/transcriber-QG5WPKX4.cjs.map +0 -7
  224. package/dist/lib/node-esm/app-graph-builder-UL6XLIZY.mjs +0 -192
  225. package/dist/lib/node-esm/app-graph-builder-UL6XLIZY.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-6X7X2UZF.mjs +0 -254
  227. package/dist/lib/node-esm/chunk-6X7X2UZF.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-GIO6J6FE.mjs +0 -74
  229. package/dist/lib/node-esm/chunk-GIO6J6FE.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-HKATMD34.mjs +0 -37
  231. package/dist/lib/node-esm/chunk-HKATMD34.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-PTZHDZ36.mjs.map +0 -7
  233. package/dist/lib/node-esm/chunk-YQYBLFNI.mjs.map +0 -7
  234. package/dist/lib/node-esm/intent-resolver-QN2LO5TX.mjs.map +0 -7
  235. package/dist/lib/node-esm/meeting-transcription-state-ZYVRAW6Y.mjs +0 -19
  236. package/dist/lib/node-esm/meeting-transcription-state-ZYVRAW6Y.mjs.map +0 -7
  237. package/dist/lib/node-esm/react-surface-PCH6NTVB.mjs.map +0 -7
  238. package/dist/lib/node-esm/transcriber-TMPYZ5L4.mjs +0 -37
  239. package/dist/lib/node-esm/transcriber-TMPYZ5L4.mjs.map +0 -7
  240. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -181
  241. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  242. package/dist/types/src/capabilities/meeting-transcription-state.d.ts +0 -6
  243. package/dist/types/src/capabilities/meeting-transcription-state.d.ts.map +0 -1
  244. package/dist/types/src/components/transcription.stories.d.ts +0 -15
  245. package/dist/types/src/components/transcription.stories.d.ts.map +0 -1
  246. package/dist/types/src/transcriber/transcriber.test.d.ts +0 -2
  247. package/dist/types/src/transcriber/transcriber.test.d.ts.map +0 -1
  248. package/dist/types/src/util/random-queue-dxn.d.ts +0 -3
  249. package/dist/types/src/util/random-queue-dxn.d.ts.map +0 -1
  250. package/src/capabilities/app-graph-builder.ts +0 -152
  251. package/src/capabilities/meeting-transcription-state.ts +0 -16
  252. package/src/components/transcription.stories.tsx +0 -196
  253. package/src/util/random-queue-dxn.ts +0 -9
  254. /package/dist/lib/browser/{TranscriptContainer-JQ3HFHLQ.mjs.map → TranscriptContainer-PFKLKRPQ.mjs.map} +0 -0
  255. /package/dist/lib/browser/{chunk-K7FOYAXO.mjs.map → chunk-IGEKO7ZU.mjs.map} +0 -0
  256. /package/dist/lib/node/{chunk-LP4FG423.cjs.map → chunk-5J3FBCON.cjs.map} +0 -0
  257. /package/dist/lib/node-esm/{TranscriptContainer-ZXUCOWGY.mjs.map → TranscriptContainer-DLNRFVTA.mjs.map} +0 -0
  258. /package/dist/lib/node-esm/{chunk-J4D2RBBH.mjs.map → chunk-KUWWHMOA.mjs.map} +0 -0
@@ -1,280 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_UOFHT4GZ_exports = {};
30
- __export(chunk_UOFHT4GZ_exports, {
31
- Transcript: () => Transcript,
32
- TranscriptContainer_default: () => TranscriptContainer_default,
33
- TranscriptionContainer: () => TranscriptionContainer
34
- });
35
- module.exports = __toCommonJS(chunk_UOFHT4GZ_exports);
36
- var import_chunk_NVZWGFJL = require("./chunk-NVZWGFJL.cjs");
37
- var import_react = __toESM(require("react"));
38
- var import_echo = require("@dxos/client/echo");
39
- var import_echo2 = require("@dxos/react-client/echo");
40
- var import_react_ui_stack = require("@dxos/react-ui-stack");
41
- var import_intervalToDuration = require("date-fns/intervalToDuration");
42
- var import_main_thread_scheduling = require("main-thread-scheduling");
43
- var import_react2 = __toESM(require("react"));
44
- var import_react_resize_detector = require("react-resize-detector");
45
- var import_react_ui = require("@dxos/react-ui");
46
- var import_react_ui_attention = require("@dxos/react-ui-attention");
47
- var import_react_ui_grid = require("@dxos/react-ui-grid");
48
- var import_react_ui_theme = require("@dxos/react-ui-theme");
49
- var lineHeight = 20;
50
- var cellSpacing = 8 + 2;
51
- var timestampColumnWidth = 68;
52
- var authorClasses = "font-medium text-base leading-[20px]";
53
- var timestampClasses = "text-xs leading-[20px] text-description pie-0 tabular-nums";
54
- var segmentTextClasses = "text-sm whitespace-normal hyphens-auto";
55
- var measureClasses = (0, import_react_ui_theme.mx)(
56
- // NOTE(thure): The `inline-start` value must equal `timestampColumnWidth` plus grid’s gap (1px)
57
- "absolute inline-start-[69px] inline-end-0 invisible z-[-1] border",
58
- "pli-[--dx-grid-cell-padding-inline] plb-[--dx-grid-cell-padding-block] leading-[20px]",
59
- segmentTextClasses
60
- );
61
- var rowDefault = {
62
- grid: {
63
- size: lineHeight + cellSpacing
64
- }
65
- };
66
- var mapTranscriptQueue = (blocks) => {
67
- if (!blocks || !Array.isArray(blocks) || blocks.length === 0) {
68
- return [];
69
- } else {
70
- return blocks.flatMap((block, blockIndex) => {
71
- return [
72
- [
73
- blockIndex,
74
- -1
75
- ],
76
- ...block.segments.map((segment, segmentIndex) => {
77
- return [
78
- blockIndex,
79
- segmentIndex
80
- ];
81
- })
82
- ];
83
- });
84
- }
85
- };
86
- var pad = (n = 0) => String(n).padStart(2, "0");
87
- var formatTimestamp = (start, end) => {
88
- const { hours, minutes, seconds } = (0, import_intervalToDuration.intervalToDuration)({
89
- start,
90
- end
91
- });
92
- return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
93
- };
94
- var measureRows = async (host, blocks, queueMap, signal) => {
95
- const result = {
96
- grid: {}
97
- };
98
- for (let row = 0; row < queueMap.length; row++) {
99
- await (0, import_main_thread_scheduling.yieldOrContinue)("smooth", signal);
100
- const [blockIndex, segmentIndex] = queueMap[row];
101
- if (segmentIndex < 0) {
102
- result.grid[row] = {
103
- size: lineHeight + cellSpacing
104
- };
105
- } else {
106
- host.textContent = blocks[blockIndex].segments[segmentIndex].text;
107
- result.grid[row] = {
108
- size: host.offsetHeight
109
- };
110
- }
111
- }
112
- return result;
113
- };
114
- var Transcript = ({ classNames, blocks, attendableId, ignoreAttention }) => {
115
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_NVZWGFJL.TRANSCRIPTION_PLUGIN);
116
- const { hasAttention } = (0, import_react_ui_attention.useAttention)(attendableId);
117
- const [dxGrid, setDxGrid] = (0, import_react2.useState)(null);
118
- const [rows, setRows] = (0, import_react2.useState)(void 0);
119
- const [columns, setColumns] = (0, import_react2.useState)(void 0);
120
- const [autoScroll, setAutoScroll] = (0, import_react2.useState)(true);
121
- const queueMap = (0, import_react2.useMemo)(() => mapTranscriptQueue(blocks), [
122
- blocks
123
- ]);
124
- const handleWheel = (0, import_react2.useCallback)((event) => {
125
- setAutoScroll(false);
126
- if (!ignoreAttention && !hasAttention) {
127
- event.stopPropagation();
128
- }
129
- }, [
130
- hasAttention,
131
- ignoreAttention
132
- ]);
133
- const abortControllerRef = (0, import_react2.useRef)();
134
- const handleResize = (0, import_react2.useCallback)(async ({ entry }) => {
135
- if (entry?.target && Array.isArray(blocks) && blocks[0] && queueMap) {
136
- abortControllerRef.current?.abort();
137
- abortControllerRef.current = new AbortController();
138
- setColumns({
139
- grid: {
140
- 0: {
141
- size: timestampColumnWidth
142
- },
143
- 1: {
144
- size: entry.target.offsetWidth
145
- }
146
- }
147
- });
148
- return measureRows(entry.target, blocks, queueMap, abortControllerRef.current.signal).then(setRows).catch(() => {
149
- });
150
- }
151
- }, [
152
- blocks,
153
- queueMap
154
- ]);
155
- const { width, ref: measureRef } = (0, import_react_resize_detector.useResizeDetector)({
156
- onResize: handleResize,
157
- refreshOptions: {
158
- leading: true
159
- }
160
- });
161
- (0, import_react2.useEffect)(() => {
162
- if (queueMap.length !== Object.keys(rows?.grid ?? {}).length) {
163
- void handleResize({
164
- entry: {
165
- target: measureRef.current
166
- }
167
- }).then(() => {
168
- if (autoScroll) {
169
- setTimeout(() => dxGrid?.scrollToEndRow(), 50);
170
- }
171
- });
172
- }
173
- }, [
174
- blocks,
175
- queueMap,
176
- width,
177
- autoScroll
178
- ]);
179
- (0, import_react2.useEffect)(() => {
180
- if (dxGrid && Array.isArray(blocks) && blocks[0]) {
181
- const transcriptStart = blocks[0].segments[0].started;
182
- dxGrid.getCells = (range, plane) => {
183
- switch (plane) {
184
- case "grid": {
185
- const cells = {};
186
- for (let row = range.start.row; row <= range.end.row && row < queueMap.length; row++) {
187
- const [blockIndex, segmentIndex] = queueMap[row];
188
- cells[(0, import_react_ui_grid.toPlaneCellIndex)({
189
- col: 0,
190
- row
191
- })] = {
192
- readonly: true,
193
- value: segmentIndex < 0 ? formatTimestamp(transcriptStart, blocks[blockIndex].segments[Math.max(0, segmentIndex)].started) : "",
194
- className: timestampClasses
195
- };
196
- cells[(0, import_react_ui_grid.toPlaneCellIndex)({
197
- col: 1,
198
- row
199
- })] = segmentIndex < 0 ? {
200
- readonly: true,
201
- accessoryHtml: `<span data-hue="${blocks[blockIndex].authorHue}" class="dx-text-hue">${blocks[blockIndex].authorName}</span>`,
202
- className: authorClasses
203
- } : {
204
- readonly: true,
205
- value: blocks[blockIndex].segments[segmentIndex].text,
206
- className: segmentTextClasses
207
- };
208
- }
209
- return cells;
210
- }
211
- default:
212
- return {};
213
- }
214
- };
215
- }
216
- }, [
217
- dxGrid,
218
- blocks
219
- ]);
220
- const handleScrollToEnd = (0, import_react2.useCallback)(() => {
221
- setAutoScroll(true);
222
- dxGrid?.scrollToEndRow();
223
- }, [
224
- dxGrid,
225
- autoScroll
226
- ]);
227
- return /* @__PURE__ */ import_react2.default.createElement("div", {
228
- role: "none",
229
- className: (0, import_react_ui_theme.mx)("relative min-bs-0", classNames)
230
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_grid.Grid.Root, {
231
- id: `${attendableId}--transcript`
232
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_grid.Grid.Content, {
233
- limitColumns: 2,
234
- limitRows: queueMap.length,
235
- columns,
236
- rows,
237
- rowDefault,
238
- onWheel: handleWheel,
239
- className: "[--dx-grid-base:var(--dx-baseSurface)] [--dx-grid-lines:var(--dx-baseSurface)] [&_.dx-grid]:min-bs-0 [&_.dx-grid]:min-is-0 [&_.dx-grid]:select-auto",
240
- ref: setDxGrid
241
- })), /* @__PURE__ */ import_react2.default.createElement("div", {
242
- role: "none",
243
- inert: "",
244
- "aria-hidden": true,
245
- className: measureClasses,
246
- ref: measureRef
247
- }), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.IconButton, {
248
- icon: "ph--arrow-line-down--regular",
249
- iconOnly: true,
250
- label: t("scroll to end label"),
251
- tooltipSide: "left",
252
- "data-state": autoScroll ? "invisible" : "visible",
253
- classNames: [
254
- "absolute inline-end-2 block-end-2 opacity-0 pointer-events-none",
255
- 'data-[state="visible"]:pointer-events-auto data-[state="visible"]:opacity-100 transition-opacity'
256
- ],
257
- onClick: handleScrollToEnd
258
- }));
259
- };
260
- var TranscriptionContainer = ({ role, transcript }) => {
261
- const attendableId = (0, import_echo.fullyQualifiedId)(transcript);
262
- const queue = (0, import_echo2.useQueue)(transcript.queue.dxn, {
263
- pollInterval: 1e3
264
- });
265
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
266
- role,
267
- classNames: "container-max-width pli-2"
268
- }, /* @__PURE__ */ import_react.default.createElement(Transcript, {
269
- attendableId,
270
- blocks: queue?.items
271
- }));
272
- };
273
- var TranscriptContainer_default = TranscriptionContainer;
274
- // Annotate the CommonJS export names for ESM import in node:
275
- 0 && (module.exports = {
276
- Transcript,
277
- TranscriptContainer_default,
278
- TranscriptionContainer
279
- });
280
- //# sourceMappingURL=chunk-UOFHT4GZ.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TranscriptContainer.tsx", "../../../src/components/Transcript/Transcript.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { fullyQualifiedId } from '@dxos/client/echo';\nimport { useQueue } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { Transcript } from './Transcript';\nimport { type TranscriptBlock, type TranscriptType } from '../types';\n\nexport const TranscriptionContainer: FC<{ role: string; transcript: TranscriptType }> = ({ role, transcript }) => {\n const attendableId = fullyQualifiedId(transcript);\n const queue = useQueue<TranscriptBlock>(transcript.queue.dxn, { pollInterval: 1_000 });\n\n return (\n <StackItem.Content role={role} classNames='container-max-width pli-2'>\n <Transcript attendableId={attendableId} blocks={queue?.items} />\n </StackItem.Content>\n );\n};\n\nexport default TranscriptionContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { intervalToDuration } from 'date-fns/intervalToDuration';\nimport { yieldOrContinue } from 'main-thread-scheduling';\nimport React, { type FC, useCallback, useEffect, useMemo, useRef, useState, type WheelEvent } from 'react';\nimport { type OnResizeCallback, useResizeDetector } from 'react-resize-detector';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n type DxGridCellValue,\n type DxGridElement,\n type DxGridAxisMeta,\n type DxGridPlaneCells,\n Grid,\n toPlaneCellIndex,\n} from '@dxos/react-ui-grid';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { TRANSCRIPTION_PLUGIN } from '../../meta';\nimport { type TranscriptBlock } from '../../types';\n\n// TODO(burdon): Actions (e.g., mark, summarize, translate, label, delete).\n\nconst lineHeight = 20;\nconst cellSpacing = 8 + 2;\nconst timestampColumnWidth = 68;\n\nconst authorClasses = 'font-medium text-base leading-[20px]';\nconst timestampClasses = 'text-xs leading-[20px] text-description pie-0 tabular-nums';\nconst segmentTextClasses = 'text-sm whitespace-normal hyphens-auto';\nconst measureClasses = mx(\n // NOTE(thure): The `inline-start` value must equal `timestampColumnWidth` plus grid’s gap (1px)\n 'absolute inline-start-[69px] inline-end-0 invisible z-[-1] border',\n 'pli-[--dx-grid-cell-padding-inline] plb-[--dx-grid-cell-padding-block] leading-[20px]',\n segmentTextClasses,\n);\n\nconst rowDefault = {\n grid: { size: lineHeight + cellSpacing },\n};\n\ntype QueueRows = [number, number][];\n\nconst mapTranscriptQueue = (blocks?: TranscriptBlock[]): QueueRows => {\n if (!blocks || !Array.isArray(blocks) || blocks.length === 0) {\n return [];\n } else {\n return blocks.flatMap((block, blockIndex) => {\n return [\n [blockIndex, -1],\n ...block.segments.map((segment, segmentIndex) => {\n return [blockIndex, segmentIndex] as [number, number];\n }),\n ];\n });\n }\n};\n\nconst pad = (n = 0) => String(n).padStart(2, '0');\n\nconst formatTimestamp = (start: Date, end: Date) => {\n const { hours, minutes, seconds } = intervalToDuration({ start, end });\n return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;\n};\n\nconst measureRows = async (\n host: HTMLDivElement,\n blocks: TranscriptBlock[],\n queueMap: QueueRows,\n signal: AbortSignal,\n) => {\n const result: DxGridAxisMeta = { grid: {} };\n for (let row = 0; row < queueMap.length; row++) {\n await yieldOrContinue('smooth', signal);\n const [blockIndex, segmentIndex] = queueMap[row];\n if (segmentIndex < 0) {\n result.grid[row] = { size: lineHeight + cellSpacing };\n } else {\n host.textContent = blocks[blockIndex]!.segments[segmentIndex]!.text;\n result.grid[row] = { size: host.offsetHeight };\n }\n }\n return result;\n};\n\nexport type TranscriptProps = ThemedClassName<{\n blocks?: TranscriptBlock[];\n attendableId?: string;\n ignoreAttention?: boolean;\n}>;\n\nexport const Transcript: FC<TranscriptProps> = ({ classNames, blocks, attendableId, ignoreAttention }) => {\n const { t } = useTranslation(TRANSCRIPTION_PLUGIN);\n const { hasAttention } = useAttention(attendableId);\n const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);\n const [rows, setRows] = useState<DxGridAxisMeta | undefined>(undefined);\n const [columns, setColumns] = useState<DxGridAxisMeta | undefined>(undefined);\n const [autoScroll, setAutoScroll] = useState(true);\n\n const queueMap = useMemo(() => mapTranscriptQueue(blocks), [blocks]);\n\n const handleWheel = useCallback(\n (event: WheelEvent) => {\n setAutoScroll(false);\n if (!ignoreAttention && !hasAttention) {\n event.stopPropagation();\n }\n },\n [hasAttention, ignoreAttention],\n );\n\n const abortControllerRef = useRef<AbortController>();\n\n const handleResize = useCallback(\n async ({ entry }: { entry: { target: HTMLDivElement } | null }) => {\n if (entry?.target && Array.isArray(blocks) && blocks[0] && queueMap) {\n abortControllerRef.current?.abort();\n abortControllerRef.current = new AbortController();\n setColumns({ grid: { 0: { size: timestampColumnWidth }, 1: { size: entry.target.offsetWidth } } });\n return measureRows(entry.target, blocks, queueMap, abortControllerRef.current.signal)\n .then(setRows)\n .catch(() => {\n // Aborted mid-measurement by new size.\n });\n }\n },\n [blocks, queueMap],\n );\n\n const { width, ref: measureRef } = useResizeDetector({\n onResize: handleResize as OnResizeCallback,\n refreshOptions: { leading: true },\n });\n\n useEffect(() => {\n if (queueMap.length !== Object.keys(rows?.grid ?? {}).length) {\n void handleResize({ entry: { target: measureRef.current } }).then(() => {\n if (autoScroll) {\n // TODO(thure): Implement a deterministic way to do this when `rows` has fully settled and grid has a new `maxPosBlock`.\n setTimeout(() => dxGrid?.scrollToEndRow(), 50);\n }\n });\n }\n }, [blocks, queueMap, width, autoScroll]);\n\n useEffect(() => {\n if (dxGrid && Array.isArray(blocks) && blocks[0]) {\n const transcriptStart = blocks[0]!.segments[0]!.started;\n dxGrid.getCells = (range, plane) => {\n switch (plane) {\n case 'grid': {\n const cells: DxGridPlaneCells = {};\n for (let row = range.start.row; row <= range.end.row && row < queueMap.length; row++) {\n const [blockIndex, segmentIndex] = queueMap[row];\n\n cells[toPlaneCellIndex({ col: 0, row })] = {\n readonly: true,\n value:\n segmentIndex < 0\n ? formatTimestamp(transcriptStart, blocks[blockIndex]!.segments[Math.max(0, segmentIndex)]!.started)\n : '',\n className: timestampClasses,\n } satisfies DxGridCellValue;\n\n cells[toPlaneCellIndex({ col: 1, row })] = (\n segmentIndex < 0\n ? {\n readonly: true,\n accessoryHtml: `<span data-hue=\"${blocks[blockIndex]!.authorHue}\" class=\"dx-text-hue\">${blocks[blockIndex]!.authorName}</span>`,\n className: authorClasses,\n }\n : {\n readonly: true,\n value: blocks[blockIndex]!.segments[segmentIndex]!.text,\n className: segmentTextClasses,\n }\n ) satisfies DxGridCellValue;\n }\n return cells;\n }\n default:\n return {};\n }\n };\n }\n }, [dxGrid, blocks]);\n\n const handleScrollToEnd = useCallback(() => {\n setAutoScroll(true);\n dxGrid?.scrollToEndRow();\n }, [dxGrid, autoScroll]);\n\n return (\n <div role='none' className={mx('relative min-bs-0', classNames)}>\n <Grid.Root id={`${attendableId}--transcript`}>\n <Grid.Content\n limitColumns={2}\n limitRows={queueMap.length}\n columns={columns}\n rows={rows}\n rowDefault={rowDefault}\n onWheel={handleWheel}\n className='[--dx-grid-base:var(--dx-baseSurface)] [--dx-grid-lines:var(--dx-baseSurface)] [&_.dx-grid]:min-bs-0 [&_.dx-grid]:min-is-0 [&_.dx-grid]:select-auto'\n ref={setDxGrid}\n />\n </Grid.Root>\n <div role='none' {...{ inert: '' }} aria-hidden className={measureClasses} ref={measureRef} />\n <IconButton\n icon='ph--arrow-line-down--regular'\n iconOnly\n label={t('scroll to end label')}\n tooltipSide='left'\n data-state={autoScroll ? 'invisible' : 'visible'}\n classNames={[\n 'absolute inline-end-2 block-end-2 opacity-0 pointer-events-none',\n 'data-[state=\"visible\"]:pointer-events-auto data-[state=\"visible\"]:opacity-100 transition-opacity',\n ]}\n onClick={handleScrollToEnd}\n />\n </div>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "import_react", "lineHeight", "cellSpacing", "timestampColumnWidth", "authorClasses", "timestampClasses", "segmentTextClasses", "measureClasses", "mx", "rowDefault", "grid", "size", "mapTranscriptQueue", "blocks", "Array", "isArray", "length", "flatMap", "block", "blockIndex", "segments", "map", "segment", "segmentIndex", "pad", "n", "String", "padStart", "formatTimestamp", "start", "end", "hours", "minutes", "seconds", "intervalToDuration", "measureRows", "host", "queueMap", "signal", "result", "row", "yieldOrContinue", "textContent", "text", "offsetHeight", "Transcript", "classNames", "attendableId", "ignoreAttention", "t", "useTranslation", "TRANSCRIPTION_PLUGIN", "hasAttention", "useAttention", "dxGrid", "setDxGrid", "useState", "rows", "setRows", "undefined", "columns", "setColumns", "autoScroll", "setAutoScroll", "useMemo", "handleWheel", "useCallback", "event", "stopPropagation", "abortControllerRef", "useRef", "handleResize", "entry", "target", "current", "abort", "AbortController", "offsetWidth", "then", "catch", "width", "ref", "measureRef", "useResizeDetector", "onResize", "refreshOptions", "leading", "useEffect", "Object", "keys", "setTimeout", "scrollToEndRow", "transcriptStart", "started", "getCells", "range", "plane", "cells", "toPlaneCellIndex", "col", "readonly", "value", "Math", "max", "className", "accessoryHtml", "authorHue", "authorName", "handleScrollToEnd", "React", "div", "role", "Grid", "Root", "id", "Content", "limitColumns", "limitRows", "onWheel", "inert", "aria-hidden", "IconButton", "icon", "iconOnly", "label", "tooltipSide", "data-state", "onClick", "TranscriptionContainer", "transcript", "fullyQualifiedId", "queue", "useQueue", "dxn", "pollInterval", "StackItem", "items"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';\nimport { create, refFromDXN } from '@dxos/live-object';\nimport { type SpaceId } from '@dxos/react-client/echo';\n\nimport { TranscriptionAction, TranscriptType } from '../types';\nimport { getTimeStr, randomQueueDxn } from '../util';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: TranscriptionAction.Create,\n resolve: ({ name, spaceId }) => {\n const transcript = create(TranscriptType, {\n queue: refFromDXN(randomQueueDxn(spaceId as SpaceId)),\n name: name ?? `Transcript ${getTimeStr(Date.now())}`,\n });\n\n return { data: { object: transcript } };\n },\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA+E;AAC/E,yBAAmC;AAMnC,IAAA,0BAAe,CAACA,gBACdC,kCAAYC,kCAAaC,gBAAgB;MACvCC,qCAAe;IACbC,QAAQC,0CAAoBC;IAC5BC,SAAS,CAAC,EAAEC,MAAMC,QAAO,MAAE;AACzB,YAAMC,iBAAaC,2BAAOC,sCAAgB;QACxCC,WAAOC,mCAAWC,sCAAeN,OAAAA,CAAAA;QACjCD,MAAMA,QAAQ,kBAAcQ,kCAAWC,KAAKC,IAAG,CAAA,CAAA;MACjD,CAAA;AAEA,aAAO;QAAEC,MAAM;UAAEC,QAAQV;QAAW;MAAE;IACxC;EACF,CAAA;CACD;",
6
- "names": ["context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "TranscriptionAction", "Create", "resolve", "name", "spaceId", "transcript", "create", "TranscriptType", "queue", "refFromDXN", "randomQueueDxn", "getTimeStr", "Date", "now", "data", "object"]
7
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var meeting_transcription_state_URIYILEQ_exports = {};
20
- __export(meeting_transcription_state_URIYILEQ_exports, {
21
- default: () => meeting_transcription_state_default
22
- });
23
- module.exports = __toCommonJS(meeting_transcription_state_URIYILEQ_exports);
24
- var import_chunk_CZMLKKWT = require("./chunk-CZMLKKWT.cjs");
25
- var import_chunk_NVZWGFJL = require("./chunk-NVZWGFJL.cjs");
26
- var import_app_framework = require("@dxos/app-framework");
27
- var import_live_object = require("@dxos/live-object");
28
- var meeting_transcription_state_default = () => {
29
- const state = (0, import_live_object.create)({
30
- enabled: false
31
- });
32
- return (0, import_app_framework.contributes)(import_chunk_CZMLKKWT.TranscriptionCapabilities.MeetingTranscriptionState, state);
33
- };
34
- //# sourceMappingURL=meeting-transcription-state-URIYILEQ.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/meeting-transcription-state.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { TranscriptionCapabilities } from './capabilities';\n\nexport default () => {\n const state = create<TranscriptionCapabilities.MeetingTranscriptionState>({\n enabled: false,\n });\n\n return contributes(TranscriptionCapabilities.MeetingTranscriptionState, state);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA4B;AAC5B,yBAAuB;AAIvB,IAAA,sCAAe,MAAA;AACb,QAAMA,YAAQC,2BAA4D;IACxEC,SAAS;EACX,CAAA;AAEA,aAAOC,kCAAYC,gDAA0BC,2BAA2BL,KAAAA;AAC1E;",
6
- "names": ["state", "create", "enabled", "contributes", "TranscriptionCapabilities", "MeetingTranscriptionState"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\n\nimport { TranscriptionContainer } from '../components';\nimport { TRANSCRIPTION_PLUGIN } from '../meta';\nimport { isTranscript, type TranscriptType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${TRANSCRIPTION_PLUGIN}/article/transcript`,\n role: ['article', 'section'],\n filter: (data): data is { subject: TranscriptType } => isTranscript(data.subject),\n component: ({ data, role }) => <TranscriptionContainer transcript={data.subject} role={role} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAyD;AAMzD,IAAA,wBAAe,UACbA,kCAAYC,kCAAaC,cAAc;MACrCC,oCAAc;IACZC,IAAI,GAAGC,0CAAAA;IACPC,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,aAA8CC,oCAAaD,KAAKE,OAAO;IAChFC,WAAW,CAAC,EAAEH,MAAMF,KAAI,MAAO,6BAAAM,QAAA,cAACC,8CAAAA;MAAuBC,YAAYN,KAAKE;MAASJ;;EACnF,CAAA;CACD;",
6
- "names": ["contributes", "Capabilities", "ReactSurface", "createSurface", "id", "TRANSCRIPTION_PLUGIN", "role", "filter", "data", "isTranscript", "subject", "component", "React", "TranscriptionContainer", "transcript"]
7
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var transcriber_QG5WPKX4_exports = {};
20
- __export(transcriber_QG5WPKX4_exports, {
21
- default: () => transcriber_default
22
- });
23
- module.exports = __toCommonJS(transcriber_QG5WPKX4_exports);
24
- var import_chunk_FCCJALOT = require("./chunk-FCCJALOT.cjs");
25
- var import_chunk_3KHUSQNW = require("./chunk-3KHUSQNW.cjs");
26
- var import_chunk_CZMLKKWT = require("./chunk-CZMLKKWT.cjs");
27
- var import_chunk_P4VVD6ZO = require("./chunk-P4VVD6ZO.cjs");
28
- var import_chunk_NVZWGFJL = require("./chunk-NVZWGFJL.cjs");
29
- var import_app_framework = require("@dxos/app-framework");
30
- var RECORD_INTERVAL = 200;
31
- var PREFIXED_CHUNKS_AMOUNT = 10;
32
- var TRANSCRIBE_AFTER_CHUNKS_AMOUNT = 50;
33
- var transcriber_default = () => {
34
- const getTranscriber = ({ audioStreamTrack, onSegments }) => {
35
- return new import_chunk_FCCJALOT.Transcriber({
36
- config: {
37
- transcribeAfterChunksAmount: TRANSCRIBE_AFTER_CHUNKS_AMOUNT,
38
- prefixBufferChunksAmount: PREFIXED_CHUNKS_AMOUNT
39
- },
40
- recorder: new import_chunk_FCCJALOT.MediaStreamRecorder({
41
- mediaStreamTrack: audioStreamTrack,
42
- interval: RECORD_INTERVAL
43
- }),
44
- onSegments
45
- });
46
- };
47
- return (0, import_app_framework.contributes)(import_chunk_CZMLKKWT.TranscriptionCapabilities.Transcriber, getTranscriber);
48
- };
49
- //# sourceMappingURL=transcriber-QG5WPKX4.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/transcriber.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\n\nimport { TranscriptionCapabilities } from './capabilities';\nimport { MediaStreamRecorder, Transcriber } from '../transcriber';\n\n// TODO(burdon): Move to config?\n\n/**\n * Length of the chunk in ms.\n */\nconst RECORD_INTERVAL = 200;\n\n/**\n * Number of chunks to save before the user starts speaking.\n */\nconst PREFIXED_CHUNKS_AMOUNT = 10;\n\n/**\n * Number of chunks to transcribe automatically after.\n * Combined should be mess than 25MB or whisper would fail.\n */\nconst TRANSCRIBE_AFTER_CHUNKS_AMOUNT = 50;\n\n/**\n * Records audio while user is speaking and transcribes it after user is done speaking.\n */\nexport default () => {\n const getTranscriber: TranscriptionCapabilities.GetTranscriber = ({ audioStreamTrack, onSegments }) => {\n // Initialize audio transcription.\n return new Transcriber({\n config: {\n transcribeAfterChunksAmount: TRANSCRIBE_AFTER_CHUNKS_AMOUNT,\n prefixBufferChunksAmount: PREFIXED_CHUNKS_AMOUNT,\n },\n recorder: new MediaStreamRecorder({\n mediaStreamTrack: audioStreamTrack,\n interval: RECORD_INTERVAL,\n }),\n onSegments,\n });\n };\n\n return contributes(TranscriptionCapabilities.Transcriber, getTranscriber);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA4B;AAU5B,IAAMA,kBAAkB;AAKxB,IAAMC,yBAAyB;AAM/B,IAAMC,iCAAiC;AAKvC,IAAA,sBAAe,MAAA;AACb,QAAMC,iBAA2D,CAAC,EAAEC,kBAAkBC,WAAU,MAAE;AAEhG,WAAO,IAAIC,kCAAY;MACrBC,QAAQ;QACNC,6BAA6BN;QAC7BO,0BAA0BR;MAC5B;MACAS,UAAU,IAAIC,0CAAoB;QAChCC,kBAAkBR;QAClBS,UAAUb;MACZ,CAAA;MACAK;IACF,CAAA;EACF;AAEA,aAAOS,kCAAYC,gDAA0BT,aAAaH,cAAAA;AAC5D;",
6
- "names": ["RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "getTranscriber", "audioStreamTrack", "onSegments", "Transcriber", "config", "transcribeAfterChunksAmount", "prefixBufferChunksAmount", "recorder", "MediaStreamRecorder", "mediaStreamTrack", "interval", "contributes", "TranscriptionCapabilities"]
7
- }
@@ -1,192 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- TranscriptionManager
4
- } from "./chunk-YQYBLFNI.mjs";
5
- import "./chunk-HKATMD34.mjs";
6
- import {
7
- TranscriptionCapabilities
8
- } from "./chunk-PTZHDZ36.mjs";
9
- import {
10
- TranscriptType,
11
- TranscriptionAction
12
- } from "./chunk-GIO6J6FE.mjs";
13
- import {
14
- TRANSCRIPTION_PLUGIN
15
- } from "./chunk-X4DDJIVL.mjs";
16
-
17
- // packages/plugins/plugin-transcription/src/capabilities/app-graph-builder.ts
18
- import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
19
- import { fullyQualifiedId, getSpace, makeRef } from "@dxos/client/echo";
20
- import { generateName } from "@dxos/display-name";
21
- import { getSchemaTypename, isInstanceOf } from "@dxos/echo-schema";
22
- import { invariant } from "@dxos/invariant";
23
- import { ClientCapabilities } from "@dxos/plugin-client";
24
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
25
- import { createExtension } from "@dxos/plugin-graph";
26
- import { MeetingCapabilities } from "@dxos/plugin-meeting";
27
- import { MeetingType } from "@dxos/plugin-meeting/types";
28
- import { buf } from "@dxos/protocols/buf";
29
- import { TranscriptionPayloadSchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
30
- import { keyToFallback } from "@dxos/util";
31
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/capabilities/app-graph-builder.ts";
32
- var codec = {
33
- encode: (message) => {
34
- return buf.toBinary(TranscriptionPayloadSchema, buf.create(TranscriptionPayloadSchema, message));
35
- },
36
- decode: (message) => {
37
- return buf.fromBinary(TranscriptionPayloadSchema, message);
38
- }
39
- };
40
- var getMeetingTranscript = async (context, meeting) => {
41
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
42
- const typename = getSchemaTypename(TranscriptType);
43
- const existing = await meeting.artifacts[typename]?.load();
44
- if (existing instanceof TranscriptType) {
45
- return existing;
46
- }
47
- const space = getSpace(meeting);
48
- invariant(space, void 0, {
49
- F: __dxlog_file,
50
- L: 52,
51
- S: void 0,
52
- A: [
53
- "space",
54
- ""
55
- ]
56
- });
57
- const { data } = await dispatch(createIntent(TranscriptionAction.Create, {
58
- spaceId: space.id
59
- }));
60
- meeting.artifacts[typename] = makeRef(data.object);
61
- return data?.object;
62
- };
63
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
64
- createExtension({
65
- id: `${TRANSCRIPTION_PLUGIN}/meeting-transcript`,
66
- filter: (node) => isInstanceOf(MeetingType, node.data) && node.type !== PLANK_COMPANION_TYPE,
67
- actions: ({ node }) => {
68
- const meeting = node.data;
69
- const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
70
- return [
71
- {
72
- id: `${fullyQualifiedId(meeting)}/action/start-stop-transcription`,
73
- data: async () => {
74
- const call = context.requestCapability(MeetingCapabilities.CallManager);
75
- invariant(state.transcriptionManager, void 0, {
76
- F: __dxlog_file,
77
- L: 73,
78
- S: void 0,
79
- A: [
80
- "state.transcriptionManager",
81
- ""
82
- ]
83
- });
84
- state.enabled = !state.enabled;
85
- void state.transcriptionManager.setEnabled(state.enabled);
86
- const transcript = await getMeetingTranscript(context, meeting);
87
- invariant(transcript, "Failed to create transcript", {
88
- F: __dxlog_file,
89
- L: 77,
90
- S: void 0,
91
- A: [
92
- "transcript",
93
- "'Failed to create transcript'"
94
- ]
95
- });
96
- call.setActivity(getSchemaTypename(TranscriptType), {
97
- value: codec.encode({
98
- enabled: state.enabled,
99
- queueDxn: transcript.queue.dxn.toString()
100
- })
101
- });
102
- },
103
- properties: {
104
- label: state.enabled ? [
105
- "stop transcription label",
106
- {
107
- ns: TRANSCRIPTION_PLUGIN
108
- }
109
- ] : [
110
- "start transcription label",
111
- {
112
- ns: TRANSCRIPTION_PLUGIN
113
- }
114
- ],
115
- icon: "ph--record--regular",
116
- disposition: "toolbar",
117
- classNames: state.enabled ? "text-activeInCall" : ""
118
- }
119
- }
120
- ];
121
- },
122
- connector: ({ node }) => {
123
- const meeting = node.data;
124
- const client = context.requestCapability(ClientCapabilities.Client);
125
- const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
126
- return [
127
- {
128
- id: `${fullyQualifiedId(meeting)}${ATTENDABLE_PATH_SEPARATOR}${getSchemaTypename(TranscriptType)}`,
129
- type: PLANK_COMPANION_TYPE,
130
- data: meeting.artifacts[getSchemaTypename(TranscriptType)]?.target,
131
- properties: {
132
- label: [
133
- "transcript companion label",
134
- {
135
- ns: TRANSCRIPTION_PLUGIN
136
- }
137
- ],
138
- icon: "ph--subtitles--regular",
139
- disposition: "hidden",
140
- schema: TranscriptType,
141
- getIntent: ({ space }) => createIntent(TranscriptionAction.Create, {
142
- spaceId: space.id
143
- }),
144
- onJoin: () => {
145
- const transcriptionManager = new TranscriptionManager(client.edge);
146
- const identity = client.halo.identity.get();
147
- invariant(identity, void 0, {
148
- F: __dxlog_file,
149
- L: 116,
150
- S: void 0,
151
- A: [
152
- "identity",
153
- ""
154
- ]
155
- });
156
- transcriptionManager.setName(identity.profile?.displayName ?? generateName(identity.identityKey.toHex()));
157
- const fallbackValue = keyToFallback(identity.identityKey);
158
- const userHue = identity.profile?.data?.hue || fallbackValue.hue;
159
- transcriptionManager.setHue(userHue);
160
- void transcriptionManager.open();
161
- state.transcriptionManager = transcriptionManager;
162
- },
163
- onLeave: () => {
164
- void state.transcriptionManager?.close();
165
- state.transcriptionManager = void 0;
166
- state.enabled = false;
167
- },
168
- onCallStateUpdated: (callState) => {
169
- const typename = getSchemaTypename(TranscriptType);
170
- const transcription = typename ? callState.activities?.[typename] : void 0;
171
- if (!transcription?.payload?.value) {
172
- return;
173
- }
174
- const payload = codec.decode(transcription.payload.value);
175
- state.enabled = payload.enabled;
176
- void state.transcriptionManager?.setEnabled(payload.enabled);
177
- void state.transcriptionManager?.setQueue(payload.queueDxn);
178
- },
179
- onMediaStateUpdated: ([mediaState, isSpeaking]) => {
180
- void state.transcriptionManager?.setAudioTrack(mediaState.audioTrack);
181
- void state.transcriptionManager?.setRecording(isSpeaking);
182
- }
183
- }
184
- }
185
- ];
186
- }
187
- })
188
- ]);
189
- export {
190
- app_graph_builder_default as default
191
- };
192
- //# sourceMappingURL=app-graph-builder-UL6XLIZY.mjs.map