@tscaps/engine 0.1.1 → 0.2.1

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 (321) hide show
  1. package/README.md +2 -4
  2. package/dist/modules/css/CssScoper.d.ts +21 -1
  3. package/dist/modules/css/CssScoper.d.ts.map +1 -1
  4. package/dist/modules/css/CssScoper.js +129 -56
  5. package/dist/modules/css/CssScoper.js.map +1 -1
  6. package/dist/modules/css/CssVarReferenceScanner.d.ts +13 -0
  7. package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
  8. package/dist/modules/css/CssVarReferenceScanner.js +20 -0
  9. package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
  10. package/dist/modules/css/index.d.ts +1 -0
  11. package/dist/modules/css/index.d.ts.map +1 -1
  12. package/dist/modules/css/index.js +1 -0
  13. package/dist/modules/css/index.js.map +1 -1
  14. package/dist/modules/document/CssVariable.d.ts +24 -3
  15. package/dist/modules/document/CssVariable.d.ts.map +1 -1
  16. package/dist/modules/document/CssVariable.js +30 -2
  17. package/dist/modules/document/CssVariable.js.map +1 -1
  18. package/dist/modules/document/Decoration.d.ts +42 -0
  19. package/dist/modules/document/Decoration.d.ts.map +1 -0
  20. package/dist/modules/document/Decoration.js +52 -0
  21. package/dist/modules/document/Decoration.js.map +1 -0
  22. package/dist/modules/document/Document.d.ts.map +1 -1
  23. package/dist/modules/document/Document.js +0 -3
  24. package/dist/modules/document/Document.js.map +1 -1
  25. package/dist/modules/document/DocumentEditor.d.ts +11 -0
  26. package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
  27. package/dist/modules/document/DocumentEditor.js +49 -9
  28. package/dist/modules/document/DocumentEditor.js.map +1 -1
  29. package/dist/modules/document/Line.d.ts +9 -6
  30. package/dist/modules/document/Line.d.ts.map +1 -1
  31. package/dist/modules/document/Line.js +11 -24
  32. package/dist/modules/document/Line.js.map +1 -1
  33. package/dist/modules/document/Section.d.ts +0 -4
  34. package/dist/modules/document/Section.d.ts.map +1 -1
  35. package/dist/modules/document/Section.js +2 -18
  36. package/dist/modules/document/Section.js.map +1 -1
  37. package/dist/modules/document/Segment.d.ts +10 -7
  38. package/dist/modules/document/Segment.d.ts.map +1 -1
  39. package/dist/modules/document/Segment.js +15 -22
  40. package/dist/modules/document/Segment.js.map +1 -1
  41. package/dist/modules/document/Tag.d.ts +3 -0
  42. package/dist/modules/document/Tag.d.ts.map +1 -1
  43. package/dist/modules/document/Tag.js +3 -0
  44. package/dist/modules/document/Tag.js.map +1 -1
  45. package/dist/modules/document/Word.d.ts +20 -7
  46. package/dist/modules/document/Word.d.ts.map +1 -1
  47. package/dist/modules/document/Word.js +32 -34
  48. package/dist/modules/document/Word.js.map +1 -1
  49. package/dist/modules/document/index.d.ts +1 -0
  50. package/dist/modules/document/index.d.ts.map +1 -1
  51. package/dist/modules/document/index.js +1 -0
  52. package/dist/modules/document/index.js.map +1 -1
  53. package/dist/modules/effect/CarryQuotesEffect.d.ts +1 -7
  54. package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -1
  55. package/dist/modules/effect/CarryQuotesEffect.js +17 -30
  56. package/dist/modules/effect/CarryQuotesEffect.js.map +1 -1
  57. package/dist/modules/effect/RemovePunctuationEffect.d.ts +10 -2
  58. package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -1
  59. package/dist/modules/effect/RemovePunctuationEffect.js +26 -6
  60. package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -1
  61. package/dist/modules/effect/SmartLowercaseEffect.d.ts +7 -6
  62. package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -1
  63. package/dist/modules/effect/SmartLowercaseEffect.js +11 -7
  64. package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -1
  65. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +3 -3
  66. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -1
  67. package/dist/modules/pipeline/RenderPipelineBuilder.js +11 -6
  68. package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
  69. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +19 -25
  70. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
  71. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +40 -717
  72. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
  73. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +8 -5
  74. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
  75. package/dist/modules/rendering/index.d.ts +13 -8
  76. package/dist/modules/rendering/index.d.ts.map +1 -1
  77. package/dist/modules/rendering/index.js +5 -2
  78. package/dist/modules/rendering/index.js.map +1 -1
  79. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +23 -0
  80. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
  81. package/dist/modules/rendering/styles/BaselineCssComposer.js +40 -0
  82. package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
  83. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +19 -0
  84. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +1 -0
  85. package/dist/modules/rendering/styles/BehindActorBaselineCss.js +19 -0
  86. package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +1 -0
  87. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts +7 -0
  88. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -0
  89. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +34 -0
  90. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
  91. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +27 -0
  92. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
  93. package/dist/modules/rendering/styles/InlineStyleEmitter.js +53 -0
  94. package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -0
  95. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts +15 -0
  96. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts.map +1 -0
  97. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js +33 -0
  98. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js.map +1 -0
  99. package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +1 -0
  100. package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +1 -0
  101. package/dist/modules/rendering/subtitle/AbstractAnim.d.ts +13 -0
  102. package/dist/modules/rendering/subtitle/AbstractAnim.d.ts.map +1 -0
  103. package/dist/modules/rendering/subtitle/AbstractAnim.js +2 -0
  104. package/dist/modules/rendering/subtitle/AbstractAnim.js.map +1 -0
  105. package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts +20 -0
  106. package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts.map +1 -0
  107. package/dist/modules/rendering/subtitle/ActiveRenderSession.js +31 -0
  108. package/dist/modules/rendering/subtitle/ActiveRenderSession.js.map +1 -0
  109. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +19 -0
  110. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
  111. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +41 -0
  112. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
  113. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +25 -0
  114. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
  115. package/dist/modules/rendering/subtitle/AnimationProbe.js +198 -0
  116. package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -0
  117. package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts +15 -0
  118. package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts.map +1 -0
  119. package/dist/modules/rendering/subtitle/AssetGroupBuilder.js +26 -0
  120. package/dist/modules/rendering/subtitle/AssetGroupBuilder.js.map +1 -0
  121. package/dist/modules/rendering/subtitle/BatchPlan.d.ts +32 -0
  122. package/dist/modules/rendering/subtitle/BatchPlan.d.ts.map +1 -0
  123. package/dist/modules/rendering/subtitle/BatchPlan.js +2 -0
  124. package/dist/modules/rendering/subtitle/BatchPlan.js.map +1 -0
  125. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +31 -0
  126. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
  127. package/dist/modules/rendering/subtitle/BatchPlanner.js +91 -0
  128. package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
  129. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +35 -0
  130. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -0
  131. package/dist/modules/rendering/subtitle/PreparedStyle.js +2 -0
  132. package/dist/modules/rendering/subtitle/PreparedStyle.js.map +1 -0
  133. package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts +31 -0
  134. package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts.map +1 -0
  135. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +91 -0
  136. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -0
  137. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts +13 -0
  138. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts.map +1 -0
  139. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js +24 -0
  140. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js.map +1 -0
  141. package/dist/modules/rendering/{SegmentPaintRegionResolver.d.ts → subtitle/SegmentPaintRegionResolver.d.ts} +1 -1
  142. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -0
  143. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -0
  144. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts +45 -0
  145. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts.map +1 -0
  146. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js +50 -0
  147. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js.map +1 -0
  148. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +80 -0
  149. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
  150. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +188 -0
  151. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
  152. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +45 -0
  153. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
  154. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +141 -0
  155. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
  156. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +46 -0
  157. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
  158. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +134 -0
  159. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -0
  160. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts +17 -0
  161. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts.map +1 -0
  162. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js +58 -0
  163. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js.map +1 -0
  164. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +27 -0
  165. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
  166. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +40 -0
  167. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -0
  168. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts +42 -0
  169. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -0
  170. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +112 -0
  171. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
  172. package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
  173. package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
  174. package/dist/modules/rendering/types/BehindActorRequirement.d.ts +12 -0
  175. package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +1 -0
  176. package/dist/modules/rendering/types/BehindActorRequirement.js +2 -0
  177. package/dist/modules/rendering/types/BehindActorRequirement.js.map +1 -0
  178. package/dist/modules/rendering/types/BoxEdges.d.ts.map +1 -0
  179. package/dist/modules/rendering/types/BoxEdges.js.map +1 -0
  180. package/dist/modules/rendering/types/DecorationPlacementSide.d.ts +8 -0
  181. package/dist/modules/rendering/types/DecorationPlacementSide.d.ts.map +1 -0
  182. package/dist/modules/rendering/types/DecorationPlacementSide.js +2 -0
  183. package/dist/modules/rendering/types/DecorationPlacementSide.js.map +1 -0
  184. package/dist/modules/rendering/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts} +1 -1
  185. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -0
  186. package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -0
  187. package/dist/modules/rendering/types/InlineStyleMap.d.ts.map +1 -0
  188. package/dist/modules/rendering/types/InlineStyleMap.js.map +1 -0
  189. package/dist/modules/rendering/{RenderingConfig.d.ts → types/RenderingConfig.d.ts} +3 -1
  190. package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -0
  191. package/dist/modules/rendering/types/RenderingConfig.js.map +1 -0
  192. package/dist/modules/rendering/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts} +2 -2
  193. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -0
  194. package/dist/modules/rendering/types/ScopedRenderOverride.js.map +1 -0
  195. package/dist/modules/rendering/types/VideoFrameSource.d.ts.map +1 -0
  196. package/dist/modules/rendering/types/VideoFrameSource.js.map +1 -0
  197. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts +33 -0
  198. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map +1 -0
  199. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js +100 -0
  200. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js.map +1 -0
  201. package/dist/modules/splitting/FixedTailLineSplitter.d.ts +29 -0
  202. package/dist/modules/splitting/FixedTailLineSplitter.d.ts.map +1 -0
  203. package/dist/modules/splitting/FixedTailLineSplitter.js +43 -0
  204. package/dist/modules/splitting/FixedTailLineSplitter.js.map +1 -0
  205. package/dist/modules/splitting/index.d.ts +4 -0
  206. package/dist/modules/splitting/index.d.ts.map +1 -1
  207. package/dist/modules/splitting/index.js +2 -0
  208. package/dist/modules/splitting/index.js.map +1 -1
  209. package/dist/modules/tagging/PauseTagger.d.ts +24 -0
  210. package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
  211. package/dist/modules/tagging/PauseTagger.js +41 -0
  212. package/dist/modules/tagging/PauseTagger.js.map +1 -0
  213. package/dist/modules/tagging/StructureTagger.d.ts +1 -1
  214. package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
  215. package/dist/modules/tagging/StructureTagger.js +11 -5
  216. package/dist/modules/tagging/StructureTagger.js.map +1 -1
  217. package/dist/modules/tagging/index.d.ts +2 -0
  218. package/dist/modules/tagging/index.d.ts.map +1 -1
  219. package/dist/modules/tagging/index.js +1 -0
  220. package/dist/modules/tagging/index.js.map +1 -1
  221. package/dist/modules/transcription/VttTranscriber.d.ts +28 -0
  222. package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
  223. package/dist/modules/transcription/VttTranscriber.js +59 -0
  224. package/dist/modules/transcription/VttTranscriber.js.map +1 -0
  225. package/dist/modules/transcription/index.d.ts +1 -0
  226. package/dist/modules/transcription/index.d.ts.map +1 -1
  227. package/dist/modules/transcription/index.js +1 -0
  228. package/dist/modules/transcription/index.js.map +1 -1
  229. package/dist/modules/video/RenderJob.d.ts +17 -0
  230. package/dist/modules/video/RenderJob.d.ts.map +1 -1
  231. package/dist/modules/video/RenderTimeMap.d.ts +50 -0
  232. package/dist/modules/video/RenderTimeMap.d.ts.map +1 -0
  233. package/dist/modules/video/RenderTimeMap.js +90 -0
  234. package/dist/modules/video/RenderTimeMap.js.map +1 -0
  235. package/dist/modules/video/index.d.ts +8 -1
  236. package/dist/modules/video/index.d.ts.map +1 -1
  237. package/dist/modules/video/index.js +4 -0
  238. package/dist/modules/video/index.js.map +1 -1
  239. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts +102 -0
  240. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -0
  241. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +199 -0
  242. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -0
  243. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +12 -52
  244. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -1
  245. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +25 -190
  246. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -1
  247. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +7 -0
  248. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -1
  249. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +2 -2
  250. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -1
  251. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +2 -0
  252. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -1
  253. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +8 -2
  254. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -1
  255. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +3 -0
  256. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -1
  257. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +9 -2
  258. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -1
  259. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +7 -0
  260. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -1
  261. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +1 -1
  262. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
  263. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +9 -2
  264. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -1
  265. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +5 -2
  266. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -1
  267. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +8 -2
  268. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -1
  269. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts +35 -0
  270. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts.map +1 -0
  271. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +69 -0
  272. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -0
  273. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts +23 -0
  274. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts.map +1 -0
  275. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js +23 -0
  276. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js.map +1 -0
  277. package/dist/modules/video/mediabunny/painter/FramePainter.d.ts +46 -0
  278. package/dist/modules/video/mediabunny/painter/FramePainter.d.ts.map +1 -0
  279. package/dist/modules/video/mediabunny/painter/FramePainter.js +2 -0
  280. package/dist/modules/video/mediabunny/painter/FramePainter.js.map +1 -0
  281. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +25 -0
  282. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -0
  283. package/dist/modules/video/mediabunny/painter/TopLayerSource.js +2 -0
  284. package/dist/modules/video/mediabunny/painter/TopLayerSource.js.map +1 -0
  285. package/package.json +1 -1
  286. package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
  287. package/dist/modules/rendering/AlignmentConfig.js.map +0 -1
  288. package/dist/modules/rendering/BoxEdges.d.ts.map +0 -1
  289. package/dist/modules/rendering/BoxEdges.js.map +0 -1
  290. package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +0 -1
  291. package/dist/modules/rendering/ElementRenderOverrides.js.map +0 -1
  292. package/dist/modules/rendering/InlineStyleMap.d.ts.map +0 -1
  293. package/dist/modules/rendering/InlineStyleMap.js.map +0 -1
  294. package/dist/modules/rendering/RenderingConfig.d.ts.map +0 -1
  295. package/dist/modules/rendering/RenderingConfig.js.map +0 -1
  296. package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +0 -1
  297. package/dist/modules/rendering/ScopedRenderOverride.js.map +0 -1
  298. package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +0 -1
  299. package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +0 -1
  300. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +0 -58
  301. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +0 -1
  302. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +0 -132
  303. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +0 -1
  304. package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +0 -1
  305. package/dist/modules/rendering/VideoFrameLayerClass.js.map +0 -1
  306. package/dist/modules/rendering/VideoFrameSource.d.ts.map +0 -1
  307. package/dist/modules/rendering/VideoFrameSource.js.map +0 -1
  308. /package/dist/modules/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerClass.d.ts} +0 -0
  309. /package/dist/modules/rendering/{VideoFrameLayerClass.js → styles/VideoFrameLayerClass.js} +0 -0
  310. /package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +0 -0
  311. /package/dist/modules/rendering/{AlignmentConfig.d.ts → types/AlignmentConfig.d.ts} +0 -0
  312. /package/dist/modules/rendering/{AlignmentConfig.js → types/AlignmentConfig.js} +0 -0
  313. /package/dist/modules/rendering/{BoxEdges.d.ts → types/BoxEdges.d.ts} +0 -0
  314. /package/dist/modules/rendering/{BoxEdges.js → types/BoxEdges.js} +0 -0
  315. /package/dist/modules/rendering/{ElementRenderOverrides.js → types/ElementRenderOverrides.js} +0 -0
  316. /package/dist/modules/rendering/{InlineStyleMap.d.ts → types/InlineStyleMap.d.ts} +0 -0
  317. /package/dist/modules/rendering/{InlineStyleMap.js → types/InlineStyleMap.js} +0 -0
  318. /package/dist/modules/rendering/{RenderingConfig.js → types/RenderingConfig.js} +0 -0
  319. /package/dist/modules/rendering/{ScopedRenderOverride.js → types/ScopedRenderOverride.js} +0 -0
  320. /package/dist/modules/rendering/{VideoFrameSource.d.ts → types/VideoFrameSource.d.ts} +0 -0
  321. /package/dist/modules/rendering/{VideoFrameSource.js → types/VideoFrameSource.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"StructureTagger.d.ts","sourceRoot":"","sources":["../../../src/modules/tagging/StructureTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,MAAM;IACzC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAQjC,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,OAAO;IAuBf,OAAO,CAAC,OAAO;CAqBhB"}
1
+ {"version":3,"file":"StructureTagger.d.ts","sourceRoot":"","sources":["../../../src/modules/tagging/StructureTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,MAAM;IACzC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAQjC,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,OAAO;IAuBf,OAAO,CAAC,OAAO;CAqBhB"}
@@ -4,7 +4,7 @@ import { Tag, StructureTag } from '../document/Tag';
4
4
  /**
5
5
  * Assigns positional structure tags across the Document hierarchy:
6
6
  * - Section-level: FIRST/LAST_SECTION_IN_DOCUMENT
7
- * - Segment-level: FIRST/LAST_SEGMENT_IN_SECTION
7
+ * - Segment-level: FIRST/LAST_SEGMENT_IN_SECTION, FIRST/LAST_SEGMENT_IN_DOCUMENT
8
8
  * - Line-level: FIRST/LAST_LINE_IN_SECTION, FIRST/LAST_LINE_IN_SEGMENT
9
9
  * - Word-level: FIRST/LAST_WORD_IN_SECTION, FIRST/LAST_WORD_IN_SEGMENT,
10
10
  * FIRST/LAST_WORD_IN_LINE
@@ -19,21 +19,27 @@ export class StructureTagger extends Tagger {
19
19
  }
20
20
  tagSection(section, secIdx, totalSections) {
21
21
  const tags = new Set();
22
- if (secIdx === 0)
22
+ const isFirstSection = secIdx === 0;
23
+ const isLastSection = secIdx === totalSections - 1;
24
+ if (isFirstSection)
23
25
  tags.add(Tag.of(StructureTag.FIRST_SECTION_IN_DOCUMENT));
24
- if (secIdx === totalSections - 1)
26
+ if (isLastSection)
25
27
  tags.add(Tag.of(StructureTag.LAST_SECTION_IN_DOCUMENT));
26
28
  const sectionWords = section.getWords();
27
29
  const sectionLines = section.getLines();
28
- const taggedSegments = section.segments.map((segment, segIdx) => this.tagSegment(segment, segIdx, section.segments.length, sectionWords, sectionLines));
30
+ const taggedSegments = section.segments.map((segment, segIdx) => this.tagSegment(segment, segIdx, section.segments.length, isFirstSection, isLastSection, sectionWords, sectionLines));
29
31
  return section.with({ segments: taggedSegments, structureTags: tags });
30
32
  }
31
- tagSegment(segment, segIdx, totalSegments, sectionWords, sectionLines) {
33
+ tagSegment(segment, segIdx, totalSegments, isFirstSection, isLastSection, sectionWords, sectionLines) {
32
34
  const tags = new Set();
33
35
  if (segIdx === 0)
34
36
  tags.add(Tag.of(StructureTag.FIRST_SEGMENT_IN_SECTION));
35
37
  if (segIdx === totalSegments - 1)
36
38
  tags.add(Tag.of(StructureTag.LAST_SEGMENT_IN_SECTION));
39
+ if (isFirstSection && segIdx === 0)
40
+ tags.add(Tag.of(StructureTag.FIRST_SEGMENT_IN_DOCUMENT));
41
+ if (isLastSection && segIdx === totalSegments - 1)
42
+ tags.add(Tag.of(StructureTag.LAST_SEGMENT_IN_DOCUMENT));
37
43
  const segmentWords = segment.getWords();
38
44
  const taggedLines = segment.lines.map((line, lineIdx) => this.tagLine(line, lineIdx, segment.lines.length, segmentWords, sectionWords, sectionLines));
39
45
  return segment.with({ lines: taggedLines, structureTags: tags });
@@ -1 +1 @@
1
- {"version":3,"file":"StructureTagger.js","sourceRoot":"","sources":["../../../src/modules/tagging/StructureTagger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StructureTagger.js","sourceRoot":"","sources":["../../../src/modules/tagging/StructureTagger.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export { Tagger } from '../tagging/Tagger';
2
2
  export { StructureTagger } from '../tagging/StructureTagger';
3
+ export { PauseTagger } from '../tagging/PauseTagger';
4
+ export type { PauseTaggerConfig } from '../tagging/PauseTagger';
3
5
  export { RegexTagger } from '../tagging/RegexTagger';
4
6
  export { WordlistTagger } from '../tagging/WordlistTagger';
5
7
  export { SpanTagger } from '../tagging/SpanTagger';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/tagging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/tagging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { Tagger } from '../tagging/Tagger';
2
2
  export { StructureTagger } from '../tagging/StructureTagger';
3
+ export { PauseTagger } from '../tagging/PauseTagger';
3
4
  export { RegexTagger } from '../tagging/RegexTagger';
4
5
  export { WordlistTagger } from '../tagging/WordlistTagger';
5
6
  export { SpanTagger } from '../tagging/SpanTagger';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/tagging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/tagging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Document } from '../document/Document';
2
+ import type { Transcriber, TranscriberOptions, TranscriberProgressEvent } from '../transcription/Transcriber';
3
+ /**
4
+ * Builds a Document by parsing a WebVTT (`.vtt`) caption file. Skips
5
+ * the mandatory `WEBVTT` header block and any `NOTE`, `STYLE`, or
6
+ * `REGION` blocks, then hands the remaining cue blocks to
7
+ * `SrtTranscriber` — the underlying timecode grammar, tag stripping,
8
+ * and word-timing distribution are compatible between the two
9
+ * formats.
10
+ *
11
+ * The audio Blob passed to `transcribe` is ignored. Useful when
12
+ * caption text and timing are already known — burning a hand-authored
13
+ * VTT into a video, replaying captions from a subtitle-authoring
14
+ * tool, etc.
15
+ *
16
+ * Throws when a cue block is malformed; returns an empty Document
17
+ * when the source has no parseable cues.
18
+ */
19
+ export declare class VttTranscriber implements Transcriber {
20
+ private readonly source;
21
+ onProgress?: (event: TranscriberProgressEvent) => void;
22
+ constructor(source: string);
23
+ transcribe(audio: Blob, options?: TranscriberOptions): Promise<Document>;
24
+ private extractCueBlocks;
25
+ private stripWebVttHeader;
26
+ private isCueBlock;
27
+ }
28
+ //# sourceMappingURL=VttTranscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VttTranscriber.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/VttTranscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,oCAAoC,CAAC;AAI5C;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,YAAW,WAAW;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;gBAE1B,MAAM,EAAE,MAAM;IAErC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO9E,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;CAOnB"}
@@ -0,0 +1,59 @@
1
+ import { SrtTranscriber } from '../transcription/SrtTranscriber';
2
+ const BOM_RE = /^\uFEFF/;
3
+ /**
4
+ * Builds a Document by parsing a WebVTT (`.vtt`) caption file. Skips
5
+ * the mandatory `WEBVTT` header block and any `NOTE`, `STYLE`, or
6
+ * `REGION` blocks, then hands the remaining cue blocks to
7
+ * `SrtTranscriber` — the underlying timecode grammar, tag stripping,
8
+ * and word-timing distribution are compatible between the two
9
+ * formats.
10
+ *
11
+ * The audio Blob passed to `transcribe` is ignored. Useful when
12
+ * caption text and timing are already known — burning a hand-authored
13
+ * VTT into a video, replaying captions from a subtitle-authoring
14
+ * tool, etc.
15
+ *
16
+ * Throws when a cue block is malformed; returns an empty Document
17
+ * when the source has no parseable cues.
18
+ */
19
+ export class VttTranscriber {
20
+ source;
21
+ onProgress;
22
+ constructor(source) {
23
+ this.source = source;
24
+ }
25
+ async transcribe(audio, options) {
26
+ const cueOnlySource = this.extractCueBlocks(this.source);
27
+ const inner = new SrtTranscriber(cueOnlySource);
28
+ if (this.onProgress)
29
+ inner.onProgress = this.onProgress;
30
+ return inner.transcribe(audio, options);
31
+ }
32
+ extractCueBlocks(source) {
33
+ const normalized = source.replace(BOM_RE, '').replace(/\r\n?/g, '\n');
34
+ const withoutHeader = this.stripWebVttHeader(normalized);
35
+ return withoutHeader
36
+ .split(/\n{2,}/)
37
+ .filter((block) => this.isCueBlock(block))
38
+ .join('\n\n');
39
+ }
40
+ stripWebVttHeader(source) {
41
+ if (!/^WEBVTT(?:\s|$)/.test(source))
42
+ return source;
43
+ const firstBlockEnd = source.indexOf('\n\n');
44
+ if (firstBlockEnd === -1)
45
+ return '';
46
+ return source.slice(firstBlockEnd + 2);
47
+ }
48
+ isCueBlock(block) {
49
+ const firstLine = block.trim().split('\n')[0]?.trim() ?? '';
50
+ if (firstLine.length === 0)
51
+ return false;
52
+ if (firstLine === 'STYLE' || firstLine === 'REGION')
53
+ return false;
54
+ if (firstLine === 'NOTE' || firstLine.startsWith('NOTE ') || firstLine.startsWith('NOTE\t'))
55
+ return false;
56
+ return true;
57
+ }
58
+ }
59
+ //# sourceMappingURL=VttTranscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VttTranscriber.js","sourceRoot":"","sources":["../../../src/modules/transcription/VttTranscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAOvE,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,cAAc;IAGI;IAF7B,UAAU,CAA6C;IAEvD,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,UAAU,CAAC,KAAW,EAAE,OAA4B;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,UAAU;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACxD,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzD,OAAO,aAAa;aACjB,KAAK,CAAC,QAAQ,CAAC;aACf,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACzC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,aAAa,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -4,5 +4,6 @@ export { PreDecodedAudioDecoder } from '../transcription/PreDecodedAudioDecoder'
4
4
  export { BrowserAudioDecoder } from '../transcription/BrowserAudioDecoder';
5
5
  export { PassthroughTranscriber } from '../transcription/PassthroughTranscriber';
6
6
  export { SrtTranscriber } from '../transcription/SrtTranscriber';
7
+ export { VttTranscriber } from '../transcription/VttTranscriber';
7
8
  export { WhisperTranscriber, WHISPER_SAMPLE_RATE, type WhisperModel, type WhisperDevice, type WhisperTranscriberConfig, } from '../transcription/WhisperTranscriber';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,wBAAwB,GAC9B,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,wBAAwB,GAC9B,MAAM,2CAA2C,CAAC"}
@@ -2,5 +2,6 @@ export { PreDecodedAudioDecoder } from '../transcription/PreDecodedAudioDecoder'
2
2
  export { BrowserAudioDecoder } from '../transcription/BrowserAudioDecoder';
3
3
  export { PassthroughTranscriber } from '../transcription/PassthroughTranscriber';
4
4
  export { SrtTranscriber } from '../transcription/SrtTranscriber';
5
+ export { VttTranscriber } from '../transcription/VttTranscriber';
5
6
  export { WhisperTranscriber, WHISPER_SAMPLE_RATE, } from '../transcription/WhisperTranscriber';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/transcription/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAIpB,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/transcription/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAIpB,MAAM,2CAA2C,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import type { Document } from '../document/Document';
2
2
  import type { SubtitleStyle } from '../rendering/SubtitleFrameRenderer';
3
+ import type { TimeRange } from '../video/RenderTimeMap';
4
+ import type { TopLayerSource } from '../video/mediabunny/painter/TopLayerSource';
3
5
  export type OutputFormat = 'mp4' | 'webm';
4
6
  export type RenderQuality = 'low' | 'medium' | 'high' | 'very-high';
5
7
  /**
@@ -44,6 +46,12 @@ export interface RenderJob {
44
46
  * SVG `foreignObject`. Self-contained: any styling must be inline.
45
47
  */
46
48
  overlayHtml?: string;
49
+ /**
50
+ * Optional per-frame layer painted on top of the captions. Used by
51
+ * effects that must occlude the caption raster (e.g. a person
52
+ * cutout). When unset, no top layer is drawn.
53
+ */
54
+ topLayer?: TopLayerSource;
47
55
  outputFormat?: OutputFormat;
48
56
  quality?: RenderQuality;
49
57
  /**
@@ -67,6 +75,15 @@ export interface RenderJob {
67
75
  * via `RenderResult.blob`.
68
76
  */
69
77
  outputStream?: WritableStream<RenderOutputChunk>;
78
+ /**
79
+ * Time windows (in seconds, source-time) to exclude from the
80
+ * output. Each excluded window collapses to a single point in the
81
+ * output timeline: video frames and audio inside the window are
82
+ * dropped, and everything after the window is shifted earlier by
83
+ * the window's duration. Ranges should be non-overlapping; the
84
+ * renderer sorts them internally.
85
+ */
86
+ skipRanges?: ReadonlyArray<TimeRange>;
70
87
  /**
71
88
  * Called when the input had an audio track but the renderer has to
72
89
  * drop it. Not invoked when the input has no audio at all.
@@ -1 +1 @@
1
- {"version":3,"file":"RenderJob.d.ts","sourceRoot":"","sources":["../../../src/modules/video/RenderJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAE9E,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB;AAC5B,0EAA0E;AACxE,sBAAsB;AACxB,4EAA4E;GAC1E,2BAA2B,CAAC;AAEhC;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAChD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"RenderJob.d.ts","sourceRoot":"","sources":["../../../src/modules/video/RenderJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAEvF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB;AAC5B,0EAA0E;AACxE,sBAAsB;AACxB,4EAA4E;GAC1E,2BAA2B,CAAC;AAEhC;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAChD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * A half-open time window in seconds. The end is exclusive: a sample
3
+ * at `endSec` is considered outside the range.
4
+ */
5
+ export interface TimeRange {
6
+ readonly startSec: number;
7
+ readonly endSec: number;
8
+ }
9
+ /**
10
+ * Maps source timestamps to output timestamps for a render that
11
+ * excludes one or more time windows. Source positions inside an
12
+ * excluded window collapse to the window's start in output time;
13
+ * positions past a window are shifted earlier by the cumulative
14
+ * skipped duration.
15
+ *
16
+ * Constructed once per render and queried per video frame and per
17
+ * audio packet/sample. Ranges are sorted internally and assumed
18
+ * non-overlapping (callers should merge touching/overlapping
19
+ * intervals before passing them in).
20
+ *
21
+ * An empty mapper is the identity: `isSkipped` is always false and
22
+ * `toOutputTime` returns the input unchanged.
23
+ */
24
+ export declare class RenderTimeMap {
25
+ private readonly sortedRanges;
26
+ constructor(ranges: ReadonlyArray<TimeRange>);
27
+ isEmpty(): boolean;
28
+ isSkipped(sourceTimeSec: number): boolean;
29
+ /**
30
+ * Returns the skipped range that contains the given source-time
31
+ * position, or `null` when the position lies outside every range.
32
+ */
33
+ findContainingRange(sourceTimeSec: number): TimeRange | null;
34
+ /**
35
+ * Returns the first skipped range whose start lies strictly after
36
+ * the given source-time position, or `null` when no such range
37
+ * exists.
38
+ */
39
+ findFirstRangeStartingAfter(sourceTimeSec: number): TimeRange | null;
40
+ toOutputTime(sourceTimeSec: number): number;
41
+ /**
42
+ * Inverse of {@link toOutputTime}. An output position that lands
43
+ * exactly on a collapsed window — the multiple source positions
44
+ * mapping to the same output value — resolves to the window's
45
+ * right-hand source side so playback continues past the skip.
46
+ */
47
+ toSourceTime(outputTimeSec: number): number;
48
+ totalSkipDuration(): number;
49
+ }
50
+ //# sourceMappingURL=RenderTimeMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTimeMap.d.ts","sourceRoot":"","sources":["../../../src/modules/video/RenderTimeMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;gBAE5C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC;IAI5C,OAAO,IAAI,OAAO;IAIlB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAQzC;;;OAGG;IACH,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQ5D;;;;OAIG;IACH,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAOpE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAU3C;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAS3C,iBAAiB,IAAI,MAAM;CAK5B"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Maps source timestamps to output timestamps for a render that
3
+ * excludes one or more time windows. Source positions inside an
4
+ * excluded window collapse to the window's start in output time;
5
+ * positions past a window are shifted earlier by the cumulative
6
+ * skipped duration.
7
+ *
8
+ * Constructed once per render and queried per video frame and per
9
+ * audio packet/sample. Ranges are sorted internally and assumed
10
+ * non-overlapping (callers should merge touching/overlapping
11
+ * intervals before passing them in).
12
+ *
13
+ * An empty mapper is the identity: `isSkipped` is always false and
14
+ * `toOutputTime` returns the input unchanged.
15
+ */
16
+ export class RenderTimeMap {
17
+ sortedRanges;
18
+ constructor(ranges) {
19
+ this.sortedRanges = [...ranges].sort((a, b) => a.startSec - b.startSec);
20
+ }
21
+ isEmpty() {
22
+ return this.sortedRanges.length === 0;
23
+ }
24
+ isSkipped(sourceTimeSec) {
25
+ for (const range of this.sortedRanges) {
26
+ if (sourceTimeSec < range.startSec)
27
+ return false;
28
+ if (sourceTimeSec < range.endSec)
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+ /**
34
+ * Returns the skipped range that contains the given source-time
35
+ * position, or `null` when the position lies outside every range.
36
+ */
37
+ findContainingRange(sourceTimeSec) {
38
+ for (const range of this.sortedRanges) {
39
+ if (sourceTimeSec < range.startSec)
40
+ return null;
41
+ if (sourceTimeSec < range.endSec)
42
+ return range;
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Returns the first skipped range whose start lies strictly after
48
+ * the given source-time position, or `null` when no such range
49
+ * exists.
50
+ */
51
+ findFirstRangeStartingAfter(sourceTimeSec) {
52
+ for (const range of this.sortedRanges) {
53
+ if (range.startSec > sourceTimeSec)
54
+ return range;
55
+ }
56
+ return null;
57
+ }
58
+ toOutputTime(sourceTimeSec) {
59
+ let skipped = 0;
60
+ for (const range of this.sortedRanges) {
61
+ if (sourceTimeSec < range.startSec)
62
+ break;
63
+ const end = Math.min(sourceTimeSec, range.endSec);
64
+ skipped += end - range.startSec;
65
+ }
66
+ return sourceTimeSec - skipped;
67
+ }
68
+ /**
69
+ * Inverse of {@link toOutputTime}. An output position that lands
70
+ * exactly on a collapsed window — the multiple source positions
71
+ * mapping to the same output value — resolves to the window's
72
+ * right-hand source side so playback continues past the skip.
73
+ */
74
+ toSourceTime(outputTimeSec) {
75
+ let sourceTime = outputTimeSec;
76
+ for (const range of this.sortedRanges) {
77
+ if (sourceTime < range.startSec)
78
+ break;
79
+ sourceTime += range.endSec - range.startSec;
80
+ }
81
+ return sourceTime;
82
+ }
83
+ totalSkipDuration() {
84
+ let total = 0;
85
+ for (const range of this.sortedRanges)
86
+ total += range.endSec - range.startSec;
87
+ return total;
88
+ }
89
+ }
90
+ //# sourceMappingURL=RenderTimeMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTimeMap.js","sourceRoot":"","sources":["../../../src/modules/video/RenderTimeMap.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAa;IAEP,YAAY,CAA2B;IAExD,YAAY,MAAgC;QAC1C,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,aAAqB;QAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACjD,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,aAAqB;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAChD,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,2BAA2B,CAAC,aAAqB;QAC/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,QAAQ,GAAG,aAAa;gBAAE,OAAO,KAAK,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;gBAAE,MAAM;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClC,CAAC;QACD,OAAO,aAAa,GAAG,OAAO,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,aAAqB;QAChC,IAAI,UAAU,GAAG,aAAa,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ;gBAAE,MAAM;YACvC,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iBAAiB;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY;YAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -2,6 +2,12 @@ export type { VideoRenderer } from '../video/VideoRenderer';
2
2
  export type { RenderJob, RenderResult, RenderProgress, RenderOutputChunk, OutputFormat, RenderQuality, AudioDiscardReason, FallbackDecoderInfo, } from '../video/RenderJob';
3
3
  export { MediaBunnyVideoRenderer } from '../video/mediabunny/MediaBunnyVideoRenderer';
4
4
  export type { MediaBunnyVideoRendererConfig } from '../video/mediabunny/MediaBunnyVideoRenderer';
5
+ export { MediaBunnyTranscodeCoordinator } from '../video/mediabunny/MediaBunnyTranscodeCoordinator';
6
+ export type { MediaBunnyTranscodeCoordinatorConfig, MediaBunnyTranscodeRequest, MediaBunnyTranscodeResult, } from '../video/mediabunny/MediaBunnyTranscodeCoordinator';
7
+ export type { FramePainter } from '../video/mediabunny/painter/FramePainter';
8
+ export { CaptionsOverlayFramePainter } from '../video/mediabunny/painter/CaptionsOverlayFramePainter';
9
+ export { CaptionsOverlayFramePainterFactory } from '../video/mediabunny/painter/CaptionsOverlayFramePainterFactory';
10
+ export { RenderTimeMap } from '../video/RenderTimeMap';
5
11
  export type { CodecPolicy, VideoCodecResolution, VideoCodecResolutionRequest, } from '../video/mediabunny/codec/CodecPolicy';
6
12
  export { DefaultCodecPolicy } from '../video/mediabunny/codec/DefaultCodecPolicy';
7
13
  export type { VideoFrameDecoder, DecodedVideoFrame, } from '../video/mediabunny/frame/VideoFrameDecoder';
@@ -9,7 +15,7 @@ export type { VideoFrameDecoderFactory, VideoFrameDecoderRequest, } from '../vid
9
15
  export { DefaultVideoFrameDecoderFactory } from '../video/mediabunny/frame/DefaultVideoFrameDecoderFactory';
10
16
  export { WebCodecsVideoFrameDecoder } from '../video/mediabunny/frame/WebCodecsVideoFrameDecoder';
11
17
  export { HtmlVideoElementVideoFrameDecoder } from '../video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder';
12
- export type { VideoTrackEncoder } from '../video/mediabunny/encoder/VideoTrackEncoder';
18
+ export type { VideoTrackEncoder, PaintFrame } from '../video/mediabunny/encoder/VideoTrackEncoder';
13
19
  export type { VideoTrackEncoderFactory, VideoTrackEncoderFactoryRequest, } from '../video/mediabunny/encoder/VideoTrackEncoderFactory';
14
20
  export { MediaBunnyCanvasVideoTrackEncoder, } from '../video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder';
15
21
  export type { MediaBunnyCanvasVideoTrackEncoderConfig, } from '../video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder';
@@ -20,6 +26,7 @@ export type { SubtitleLayerSource } from '../video/mediabunny/caption/SubtitleLa
20
26
  export { BatchedSubtitleLayerSource } from '../video/mediabunny/caption/BatchedSubtitleLayerSource';
21
27
  export { VideoBoundSubtitleLayerSource } from '../video/mediabunny/caption/VideoBoundSubtitleLayerSource';
22
28
  export { ComposedSubtitleLayerSource } from '../video/mediabunny/caption/ComposedSubtitleLayerSource';
29
+ export type { TopLayerSource } from '../video/mediabunny/painter/TopLayerSource';
23
30
  export type { AudioTrackBridge } from '../video/mediabunny/audio/AudioTrackBridge';
24
31
  export type { AudioTrackBridgeFactory, AudioTrackBridgeRequest, } from '../video/mediabunny/audio/AudioTrackBridgeFactory';
25
32
  export { DefaultAudioTrackBridgeFactory } from '../video/mediabunny/audio/DefaultAudioTrackBridgeFactory';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/video/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EACV,SAAS,EACT,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,YAAY,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAEvG,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,YAAY,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACV,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AAEtH,YAAY,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,YAAY,EACV,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,4DAA4D,CAAC;AACpE,OAAO,EACL,iCAAiC,GAClC,MAAM,qEAAqE,CAAC;AAC7E,YAAY,EACV,uCAAuC,GACxC,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EACL,wCAAwC,GACzC,MAAM,4EAA4E,CAAC;AAEpF,YAAY,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG,YAAY,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAE5G,YAAY,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACzF,YAAY,EACV,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,YAAY,EACV,iCAAiC,GAClC,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACtG,YAAY,EACV,+BAA+B,GAChC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAElG,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/video/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EACV,SAAS,EACT,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,YAAY,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAEvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;AAC1G,YAAY,EACV,oCAAoC,EACpC,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,0DAA0D,CAAC;AAElE,YAAY,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAC5G,OAAO,EAAE,kCAAkC,EAAE,MAAM,sEAAsE,CAAC;AAE1H,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,YAAY,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACV,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AAEtH,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACzG,YAAY,EACV,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,4DAA4D,CAAC;AACpE,OAAO,EACL,iCAAiC,GAClC,MAAM,qEAAqE,CAAC;AAC7E,YAAY,EACV,uCAAuC,GACxC,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EACL,wCAAwC,GACzC,MAAM,4EAA4E,CAAC;AAEpF,YAAY,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG,YAAY,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAC5G,YAAY,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAEvF,YAAY,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACzF,YAAY,EACV,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,YAAY,EACV,iCAAiC,GAClC,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACtG,YAAY,EACV,+BAA+B,GAChC,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAElG,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC"}
@@ -1,4 +1,8 @@
1
1
  export { MediaBunnyVideoRenderer } from '../video/mediabunny/MediaBunnyVideoRenderer';
2
+ export { MediaBunnyTranscodeCoordinator } from '../video/mediabunny/MediaBunnyTranscodeCoordinator';
3
+ export { CaptionsOverlayFramePainter } from '../video/mediabunny/painter/CaptionsOverlayFramePainter';
4
+ export { CaptionsOverlayFramePainterFactory } from '../video/mediabunny/painter/CaptionsOverlayFramePainterFactory';
5
+ export { RenderTimeMap } from '../video/RenderTimeMap';
2
6
  export { DefaultCodecPolicy } from '../video/mediabunny/codec/DefaultCodecPolicy';
3
7
  export { DefaultVideoFrameDecoderFactory } from '../video/mediabunny/frame/DefaultVideoFrameDecoderFactory';
4
8
  export { WebCodecsVideoFrameDecoder } from '../video/mediabunny/frame/WebCodecsVideoFrameDecoder';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/video/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAQ5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAUxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AAOtH,OAAO,EACL,iCAAiC,GAClC,MAAM,qEAAqE,CAAC;AAI7E,OAAO,EACL,wCAAwC,GACzC,MAAM,4EAA4E,CAAC;AAGpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAGhG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAO5G,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAI1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAItG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAOlG,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/video/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAG5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;AAQ1G,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAC5G,OAAO,EAAE,kCAAkC,EAAE,MAAM,sEAAsE,CAAC;AAE1H,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAO7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAUxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AAOtH,OAAO,EACL,iCAAiC,GAClC,MAAM,qEAAqE,CAAC;AAI7E,OAAO,EACL,wCAAwC,GACzC,MAAM,4EAA4E,CAAC;AAGpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAGhG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAQ5G,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAI1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAItG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAOlG,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { RenderTimeMap } from '../../video/RenderTimeMap';
2
+ import type { OutputFormat, RenderOutputChunk, RenderProgress, RenderQuality, AudioDiscardReason, FallbackDecoderInfo } from '../../video/RenderJob';
3
+ import type { CodecPolicy } from '../../video/mediabunny/codec/CodecPolicy';
4
+ import type { VideoFrameDecoderFactory } from '../../video/mediabunny/frame/VideoFrameDecoderFactory';
5
+ import type { AudioTrackBridgeFactory } from '../../video/mediabunny/audio/AudioTrackBridgeFactory';
6
+ import type { OutputTargetBuilder } from '../../video/mediabunny/output/OutputTargetBuilder';
7
+ import type { VideoTrackEncoderFactory } from '../../video/mediabunny/encoder/VideoTrackEncoderFactory';
8
+ import type { FramePainter } from '../../video/mediabunny/painter/FramePainter';
9
+ export interface MediaBunnyTranscodeCoordinatorConfig {
10
+ videoFrameDecoderFactory: VideoFrameDecoderFactory;
11
+ videoTrackEncoderFactory: VideoTrackEncoderFactory;
12
+ audioTrackBridgeFactory: AudioTrackBridgeFactory;
13
+ outputTargetBuilder: OutputTargetBuilder;
14
+ }
15
+ export interface MediaBunnyTranscodeRequest {
16
+ source: File;
17
+ /**
18
+ * Resolves the codec, bitrate, and encoder knobs for this run. Per-request
19
+ * so consumers can supply a fixed policy (e.g. a proxy generator that
20
+ * always wants low-bitrate AVC) without swapping the coordinator instance.
21
+ */
22
+ codecPolicy: CodecPolicy;
23
+ /**
24
+ * Owns the per-frame pixel work. See {@link FramePainter} for the
25
+ * lifecycle contract.
26
+ */
27
+ painter: FramePainter;
28
+ /**
29
+ * Target output dimensions. When omitted, the coordinator keeps the
30
+ * input track's intrinsic display dimensions. When set, the source
31
+ * frames are painted at these dimensions; the coordinator never
32
+ * upscales beyond the source and snaps both axes to even numbers,
33
+ * which most hardware video encoders require. Callers are
34
+ * responsible for keeping the aspect ratio consistent — the
35
+ * coordinator does not letterbox or crop.
36
+ */
37
+ outputResolution?: {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ outputFormat?: OutputFormat;
42
+ quality?: RenderQuality;
43
+ /**
44
+ * Sink for the encoded bytes. When set, the coordinator writes chunks
45
+ * to it as the encoder produces them and the result's `blob` is
46
+ * `null`. When unset, the encoded file accumulates in memory and is
47
+ * returned via the result's `blob`.
48
+ */
49
+ outputStream?: WritableStream<RenderOutputChunk>;
50
+ /**
51
+ * Time windows to exclude from the output. Frames and audio inside
52
+ * each window are dropped, and everything after is shifted earlier by
53
+ * the window's duration. Defaults to an empty map (nothing skipped).
54
+ */
55
+ timeMap?: RenderTimeMap;
56
+ onProgress?: (progress: RenderProgress) => void;
57
+ onAudioDiscarded?: (reason: AudioDiscardReason) => void;
58
+ confirmFallbackDecoder?: (info: FallbackDecoderInfo) => Promise<boolean>;
59
+ }
60
+ export interface MediaBunnyTranscodeResult {
61
+ /** Encoded file in memory, or `null` when the request supplied `outputStream`. */
62
+ blob: Blob | null;
63
+ mimeType: string;
64
+ /** Final output width, after clamping to the source and snapping to even. */
65
+ width: number;
66
+ /** Final output height, after clamping to the source and snapping to even. */
67
+ height: number;
68
+ }
69
+ /**
70
+ * Runs one mediabunny transcode: opens the source input, resolves the
71
+ * output dimensions / frame rate / duration, wires the encoder and the
72
+ * audio bridge, and drives the decode → paint → encode loop.
73
+ *
74
+ * Consumer-specific per-frame composition (captions, overlay, raw-frame
75
+ * passthrough) lives behind the request's {@link FramePainter}; codec
76
+ * choice, container format, time-range skipping, and audio-loss and
77
+ * fallback-decoder notifications are per-request inputs. The coordinator
78
+ * itself knows nothing about documents, styles, or overlays — those
79
+ * live inside the painter.
80
+ *
81
+ * One run at a time per instance; concurrent {@link execute} calls on
82
+ * the same instance are not supported.
83
+ */
84
+ export declare class MediaBunnyTranscodeCoordinator {
85
+ private readonly videoFrameDecoderFactory;
86
+ private readonly videoTrackEncoderFactory;
87
+ private readonly audioTrackBridgeFactory;
88
+ private readonly outputTargetBuilder;
89
+ constructor(config: MediaBunnyTranscodeCoordinatorConfig);
90
+ execute(request: MediaBunnyTranscodeRequest): Promise<MediaBunnyTranscodeResult>;
91
+ private runEncodeLoop;
92
+ private toEncoderConfig;
93
+ private computeDuration;
94
+ private resolveOutputDimensions;
95
+ private toEven;
96
+ private readFrameRate;
97
+ private toProgress;
98
+ private safeCancel;
99
+ private assertWebCodecsAvailable;
100
+ private buildResult;
101
+ }
102
+ //# sourceMappingURL=MediaBunnyTranscodeCoordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaBunnyTranscodeCoordinator.d.ts","sourceRoot":"","sources":["../../../../src/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,6CAA6C,CAAC;AACrG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AAEzG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAEvG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAEhG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAEnF,MAAM,WAAW,oCAAoC;IACnD,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,IAAI,CAAC;IACb;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;;OAGG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACjD;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,yBAAyB;IACxC,kFAAkF;IAClF,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,8BAA8B;IAEzC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA2B;IACpE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA2B;IACpE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;gBAE9C,MAAM,EAAE,oCAAoC;IAOlD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;YAmFxE,aAAa;IAsB3B,OAAO,CAAC,eAAe;YAYT,eAAe;IAQ7B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,MAAM;YAKA,aAAa;IAe3B,OAAO,CAAC,UAAU;YAKJ,UAAU;IASxB,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,WAAW;CAepB"}