@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.
- package/README.md +2 -4
- package/dist/modules/css/CssScoper.d.ts +21 -1
- package/dist/modules/css/CssScoper.d.ts.map +1 -1
- package/dist/modules/css/CssScoper.js +129 -56
- package/dist/modules/css/CssScoper.js.map +1 -1
- package/dist/modules/css/CssVarReferenceScanner.d.ts +13 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.js +20 -0
- package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
- package/dist/modules/css/index.d.ts +1 -0
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/index.js +1 -0
- package/dist/modules/css/index.js.map +1 -1
- package/dist/modules/document/CssVariable.d.ts +24 -3
- package/dist/modules/document/CssVariable.d.ts.map +1 -1
- package/dist/modules/document/CssVariable.js +30 -2
- package/dist/modules/document/CssVariable.js.map +1 -1
- package/dist/modules/document/Decoration.d.ts +42 -0
- package/dist/modules/document/Decoration.d.ts.map +1 -0
- package/dist/modules/document/Decoration.js +52 -0
- package/dist/modules/document/Decoration.js.map +1 -0
- package/dist/modules/document/Document.d.ts.map +1 -1
- package/dist/modules/document/Document.js +0 -3
- package/dist/modules/document/Document.js.map +1 -1
- package/dist/modules/document/DocumentEditor.d.ts +11 -0
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
- package/dist/modules/document/DocumentEditor.js +49 -9
- package/dist/modules/document/DocumentEditor.js.map +1 -1
- package/dist/modules/document/Line.d.ts +9 -6
- package/dist/modules/document/Line.d.ts.map +1 -1
- package/dist/modules/document/Line.js +11 -24
- package/dist/modules/document/Line.js.map +1 -1
- package/dist/modules/document/Section.d.ts +0 -4
- package/dist/modules/document/Section.d.ts.map +1 -1
- package/dist/modules/document/Section.js +2 -18
- package/dist/modules/document/Section.js.map +1 -1
- package/dist/modules/document/Segment.d.ts +10 -7
- package/dist/modules/document/Segment.d.ts.map +1 -1
- package/dist/modules/document/Segment.js +15 -22
- package/dist/modules/document/Segment.js.map +1 -1
- package/dist/modules/document/Tag.d.ts +3 -0
- package/dist/modules/document/Tag.d.ts.map +1 -1
- package/dist/modules/document/Tag.js +3 -0
- package/dist/modules/document/Tag.js.map +1 -1
- package/dist/modules/document/Word.d.ts +20 -7
- package/dist/modules/document/Word.d.ts.map +1 -1
- package/dist/modules/document/Word.js +32 -34
- package/dist/modules/document/Word.js.map +1 -1
- package/dist/modules/document/index.d.ts +1 -0
- package/dist/modules/document/index.d.ts.map +1 -1
- package/dist/modules/document/index.js +1 -0
- package/dist/modules/document/index.js.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.d.ts +1 -7
- package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.js +17 -30
- package/dist/modules/effect/CarryQuotesEffect.js.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.d.ts +10 -2
- package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.js +26 -6
- package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.d.ts +7 -6
- package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.js +11 -7
- package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +3 -3
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.js +11 -6
- package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +19 -25
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +40 -717
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +8 -5
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/index.d.ts +13 -8
- package/dist/modules/rendering/index.d.ts.map +1 -1
- package/dist/modules/rendering/index.js +5 -2
- package/dist/modules/rendering/index.js.map +1 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +23 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js +40 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts +7 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +34 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +27 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js +53 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts +15 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js +33 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts +13 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js +2 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts +20 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js +31 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +19 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +41 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +25 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js +198 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts +15 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js +26 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts +32 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js +2 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +31 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js +91 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +35 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js +2 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts +31 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +91 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts +13 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js +24 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js.map +1 -0
- package/dist/modules/rendering/{SegmentPaintRegionResolver.d.ts → subtitle/SegmentPaintRegionResolver.d.ts} +1 -1
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js +50 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +80 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +188 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +141 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +46 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +134 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts +17 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js +58 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +27 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +40 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts +42 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +112 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts +12 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.js +2 -0
- package/dist/modules/rendering/types/BehindActorRequirement.js.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.d.ts.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.js.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts +8 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js +2 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js.map +1 -0
- package/dist/modules/rendering/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts} +1 -1
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.d.ts.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.js.map +1 -0
- package/dist/modules/rendering/{RenderingConfig.d.ts → types/RenderingConfig.d.ts} +3 -1
- package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/RenderingConfig.js.map +1 -0
- package/dist/modules/rendering/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts} +2 -2
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -0
- package/dist/modules/rendering/types/ScopedRenderOverride.js.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.d.ts.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.js.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts +33 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js +100 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts +29 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js +43 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js.map +1 -0
- package/dist/modules/splitting/index.d.ts +4 -0
- package/dist/modules/splitting/index.d.ts.map +1 -1
- package/dist/modules/splitting/index.js +2 -0
- package/dist/modules/splitting/index.js.map +1 -1
- package/dist/modules/tagging/PauseTagger.d.ts +24 -0
- package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
- package/dist/modules/tagging/PauseTagger.js +41 -0
- package/dist/modules/tagging/PauseTagger.js.map +1 -0
- package/dist/modules/tagging/StructureTagger.d.ts +1 -1
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
- package/dist/modules/tagging/StructureTagger.js +11 -5
- package/dist/modules/tagging/StructureTagger.js.map +1 -1
- package/dist/modules/tagging/index.d.ts +2 -0
- package/dist/modules/tagging/index.d.ts.map +1 -1
- package/dist/modules/tagging/index.js +1 -0
- package/dist/modules/tagging/index.js.map +1 -1
- package/dist/modules/transcription/VttTranscriber.d.ts +28 -0
- package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/VttTranscriber.js +59 -0
- package/dist/modules/transcription/VttTranscriber.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +1 -0
- package/dist/modules/transcription/index.d.ts.map +1 -1
- package/dist/modules/transcription/index.js +1 -0
- package/dist/modules/transcription/index.js.map +1 -1
- package/dist/modules/video/RenderJob.d.ts +17 -0
- package/dist/modules/video/RenderJob.d.ts.map +1 -1
- package/dist/modules/video/RenderTimeMap.d.ts +50 -0
- package/dist/modules/video/RenderTimeMap.d.ts.map +1 -0
- package/dist/modules/video/RenderTimeMap.js +90 -0
- package/dist/modules/video/RenderTimeMap.js.map +1 -0
- package/dist/modules/video/index.d.ts +8 -1
- package/dist/modules/video/index.d.ts.map +1 -1
- package/dist/modules/video/index.js +4 -0
- package/dist/modules/video/index.js.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts +102 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +199 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +12 -52
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +25 -190
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +7 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +2 -2
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +2 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +8 -2
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +3 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +9 -2
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +7 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +9 -2
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +5 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +8 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -1
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts +35 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +69 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts +46 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js +2 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +25 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js +2 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js.map +1 -0
- package/package.json +1 -1
- package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
- package/dist/modules/rendering/AlignmentConfig.js.map +0 -1
- package/dist/modules/rendering/BoxEdges.d.ts.map +0 -1
- package/dist/modules/rendering/BoxEdges.js.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.js.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.d.ts.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.js.map +0 -1
- package/dist/modules/rendering/RenderingConfig.d.ts.map +0 -1
- package/dist/modules/rendering/RenderingConfig.js.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.js.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +0 -58
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +0 -132
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.js.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.js.map +0 -1
- /package/dist/modules/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerClass.d.ts} +0 -0
- /package/dist/modules/rendering/{VideoFrameLayerClass.js → styles/VideoFrameLayerClass.js} +0 -0
- /package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.d.ts → types/AlignmentConfig.d.ts} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.js → types/AlignmentConfig.js} +0 -0
- /package/dist/modules/rendering/{BoxEdges.d.ts → types/BoxEdges.d.ts} +0 -0
- /package/dist/modules/rendering/{BoxEdges.js → types/BoxEdges.js} +0 -0
- /package/dist/modules/rendering/{ElementRenderOverrides.js → types/ElementRenderOverrides.js} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.d.ts → types/InlineStyleMap.d.ts} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.js → types/InlineStyleMap.js} +0 -0
- /package/dist/modules/rendering/{RenderingConfig.js → types/RenderingConfig.js} +0 -0
- /package/dist/modules/rendering/{ScopedRenderOverride.js → types/ScopedRenderOverride.js} +0 -0
- /package/dist/modules/rendering/{VideoFrameSource.d.ts → types/VideoFrameSource.d.ts} +0 -0
- /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;
|
|
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
|
-
|
|
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 (
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IACzC,GAAG,CAAC,QAAkB;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACtD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAClD,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,UAAU,CAAC,OAAgB,EAAE,MAAc,EAAE,aAAqB;QACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAO,CAAC;QAC5B,
|
|
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;
|
|
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;
|
|
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;
|
|
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"}
|